{"version":3,"file":"static/js/application.async.landing~f038c584.cab32ad7.chunk.js","mappings":"mZAAaA,EAAmBC,OAAOC,OAAO,CAC5CC,qBAAsB,oBACtBC,kBAAmB,oBAGRC,EAA0BJ,OAAOC,QAAMI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACnDN,EAAiBG,qBAAuBI,+CACxCP,EAAiBI,kBAAoBG,0EAG3BC,EAAgB,CAC3B,CAAEC,GAAIT,EAAiBG,qBAAsBO,KAAML,EAAwBL,EAAiBG,uBAC5F,CAAEM,GAAIT,EAAiBI,kBAAmBM,KAAML,EAAwBL,EAAiBI,qB,YCF9EO,EAAsB,SAAHC,GAA0C,IAApCC,EAAKD,EAALC,MAAOC,EAAKF,EAALE,MAAOC,EAAcH,EAAdG,eAC5CC,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB,OACEC,EAAAA,EAAAA,KAAA,OAAKC,UAAU,cAAaC,UAC1BC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,GAAIJ,SAAA,EAChCF,EAAAA,EAAAA,KAACO,EAAAA,eAAc,CACbC,gBAAiB,CAAEb,MAAAA,EAAOc,KAAMf,GAChCA,MAAOA,EAAMQ,SAEZb,EAAcqB,KAAI,SAAAC,GAAM,OACvBX,EAAAA,EAAAA,KAACY,EAAAA,EAAK,CAAiBlB,MAAOiB,EAAOrB,GAAIuB,MAAOhB,EAAKiB,UAAUH,EAAOpB,MAAOwB,SAAUnB,GAA3Ee,EAAOrB,GAAsF,OAI7GU,EAAAA,EAAAA,KAACgB,EAAAA,EAAU,CAACC,OAAO,OAAOC,OAAO,OAAMhB,UACrCF,EAAAA,EAAAA,KAACmB,EAAAA,EAAc,CAAAjB,SACZL,EAAKiB,UAAU1B,0JAM5B,EAQAI,EAAoB4B,aAAe,CACjC1B,MAAOb,EAAiBG,qBACxBY,gBAAgB,G,iHCnCLyB,EAAoB,SAAH5B,GAA2C,IAArCgB,EAAIhB,EAAJgB,KAAMb,EAAcH,EAAdG,eAAmB0B,GAAIC,EAAAA,EAAAA,GAAA9B,EAAA+B,GACzD3B,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB,OACEI,EAAAA,EAAAA,MAACsB,EAAAA,IAAcC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAEbC,OACE3B,EAAAA,EAAAA,KAAC4B,EAAAA,GAAS,CACRC,SAAUzC,cACV0C,QAASrB,GAAQvB,EAAwBuB,EAAKsB,YAC9CC,KAAMC,EACNC,WAAY,CAAEC,MAAO,IACrBC,SAAS,6BAEbC,qBAAsB,CAAEC,cAAeC,EAAAA,KACnCjB,GAAI,IAAApB,SAAA,EAERF,EAAAA,EAAAA,KAAA,QAAMC,UAAU,2BAA0BC,SACvCL,EAAKiB,UAAU1B,oCAGhBqB,IACAT,EAAAA,EAAAA,KAACR,EAAmB,CAClBG,MAAM,aACND,MAAOe,EAAKsB,WACZnC,eAAgBA,OApBhB,cAyBV,EASAyB,EAAkBD,aAAe,CAC/BxB,gBAAgB,E,6OClCL4C,EAAc,SAAH/C,GAoBjB,IAnBLgD,EAAWhD,EAAXgD,YACAC,EAAOjD,EAAPiD,QACAC,EAAYlD,EAAZkD,aACA9C,EAAIJ,EAAJI,KACA+C,EAAUnD,EAAVmD,WACAC,EAAqBpD,EAArBoD,sBACAC,EAAcrD,EAAdqD,eACAC,EAAatD,EAAbsD,cACArD,EAAKD,EAALC,MACAc,EAAef,EAAfe,gBACAwC,EAAUvD,EAAVuD,WACAC,EAAMxD,EAANwD,OACAC,EAAkBzD,EAAlByD,mBACAC,EAAgB1D,EAAhB0D,iBACAC,EAAoB3D,EAApB2D,qBACAC,EAAU5D,EAAV4D,WACAC,EAAkB7D,EAAlB6D,mBACAC,EAAwB9D,EAAxB8D,yBACAC,EAAc/D,EAAd+D,eAEMC,GAAmBC,EAAAA,EAAAA,UAAQ,kBAC/B1D,EAAAA,EAAAA,KAAA,OAAKC,UAAW0D,IAAW,wBAAyBjB,EAAQkB,cAAc1D,SACvEkD,GACG,GAAG,CAACV,EAASU,IAEfS,GAA2BH,EAAAA,EAAAA,UAC/B,kBACE1D,EAAAA,EAAAA,KAAA,OAAKC,UAAWyC,EAAQoB,kBAAkB5D,UACxCF,EAAAA,EAAAA,KAAA,OAAKC,UAAWyC,EAAQqB,OAAO7D,UAC7BC,EAAAA,EAAAA,MAAC6D,EAAAA,SAAQ,CACP1E,GAAG,gBACHyB,SAAUmC,EACVe,SAAUd,EAAiBjD,SAAA,EAE3BF,EAAAA,EAAAA,KAACkE,EAAAA,eAAc,CAAAhE,SAAEkD,KACjBpD,EAAAA,EAAAA,KAACmE,EAAAA,aAAY,CAAAjE,SAETkE,IAAAA,IAAMf,GAAY,SAAAgB,GAAS,OACzBrE,EAAAA,EAAAA,KAACsE,EAAAA,SAAQ,CAACrE,UAAU,qBAA8CsE,SAAUF,EAAUG,SAAStE,SAC5FmE,EAAUI,yBADiCJ,EAAUG,SAE7C,YAMjB,GAER,CAAC9B,EAAQoB,kBAAmBpB,EAAQqB,OAAQb,EAAoBC,EAAkBC,EAAsBC,IAE1G,OACElD,EAAAA,EAAAA,MAAAuE,EAAAA,SAAA,CAAAxE,SAAA,EACEF,EAAAA,EAAAA,KAAA,OAAKC,UAAWyC,EAAQD,YAAYvC,UAClCC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACuE,YAAU,EAAAzE,SAAA,EAGbF,EAAAA,EAAAA,KAAA,SAAO4E,QAAQ,SAAS3E,UAAU,eAAcC,SAE5CuC,GACA5C,EAAKiB,UAAU1B,8CAIpBkE,GAAsBA,UAG3BnD,EAAAA,EAAAA,MAAA,OAAKF,UAAWyC,EAAQmC,uBAAuB3E,SAAA,EAC7CF,EAAAA,EAAAA,KAAA,OAAKC,UAAW0D,IAAWjB,EAAQoC,qBAAsB,0BAA0B5E,UACjFF,EAAAA,EAAAA,KAAC+E,EAAAA,gBAAe,CAEdvE,gBAAiB,CACfyC,OAAAA,EACApD,KAAM+C,EACNoC,WAAYnC,GACZ3C,UAEFF,EAAAA,EAAAA,KAACiF,EAAAA,MAAK,CACJ3F,GAAG,SACH4F,KAAK,SACLC,KAAMnC,EACNtD,MAAOA,EACPc,gBAAiBA,EACjBP,UAAW0D,IAAWjB,EAAQ0C,UAAW5B,GACzC6B,SAAUvC,KAdPC,KAqBPJ,EAAgBY,EAA2BA,EAAyB,CAAEJ,iBAAAA,IAAsBU,EAA4BJ,OAKlI,EAiCAjB,EAAYpB,aAAe,CACzBuB,cAAc,EACdF,iBAAa6C,EACb5C,QAAS,CAAC,EACVY,mBAAoB,KACpBC,yBAA0B,KAC1BC,eAAgB,MCjJX,IAAM+B,EAAyB,SAAH9F,GAAA,IACjCiD,EAAOjD,EAAPiD,QAAS7C,EAAIJ,EAAJI,KAAMH,EAAKD,EAALC,MAAO0D,EAAoB3D,EAApB2D,qBAAoB,OAE1CpD,EAAAA,EAAAA,KAAA,OAAKC,UAAW0D,IAAW,iBAAkBjB,EAAQ8C,eAAetF,SACjEL,EAAKiB,UACA1B,mDACA,CACEM,MAAAA,EACA8E,SAAUpB,KAGd,E,YCcKqC,GAAuBC,EAAAA,EAAAA,OAAK,SAACC,GACxC,IACEC,EAGED,EAHFC,iBACAlD,EAEEiD,EAFFjD,QACAY,EACEqC,EADFrC,mBAGAuC,EAEED,EAFFC,2BACAC,EACEF,EADFE,2BAGIjG,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAIxB,IAF0BqE,IAAAA,QAAUyB,KAAgCzB,IAAAA,QAAU0B,GAExD,CACpB,IAKIC,EALEC,EAxCgB,SAACJ,GACzB,IACEK,EAIEL,EAJFK,cACAJ,EAGED,EAHFC,2BACAC,EAEEF,EAFFE,2BACAI,EACEN,EADFM,cAGF,OAAUJ,EAA2BK,YACnCN,EAA2BM,cAC1BD,EAAcC,YAAcF,EAAcE,aAAgB,GAC/D,CA6BqBC,CAAkBR,GAC7BS,EA5BmB,SAACT,GAC5B,IACEK,EAGEL,EAHFK,cACAJ,EAEED,EAFFC,2BACAK,EACEN,EADFM,cAGF,OAAUL,EAA2BM,YAAcF,EAAcE,cAC9DD,EAAcC,YAAcF,EAAcE,aAAgB,GAC/D,CAmBoBG,CAAqBV,GAC/BzD,EAAK,GAAAoE,OAAMP,EAAQ,KACnBQ,EAAI,GAAAD,OAAMF,EAAO,KAkBvB,OAXEN,EAJsBM,EAAU,GAEZ,IAEF,CAChBlE,MAAO,OACPsE,UAAW,SAGK,CAChBD,KAAAA,EACAC,UAAW,SAKbtG,EAAAA,EAAAA,MAACuG,EAAAA,SAAc,CAAAxG,SAAA,EACbF,EAAAA,EAAAA,KAAA,OACEC,UAAWyC,EAAQiE,cAEnBC,MAAO,CAAEzE,MAAAA,EAAOqE,KAAAA,IADZ,YAGNxG,EAAAA,EAAAA,KAAA,OACEC,UAAS,GAAAsG,OAAK7D,EAAQmE,wBAAuB,mBAE7CD,MAAO,CAAEzE,MAAAA,EAAOqE,KAAAA,IADZ,cAGNrG,EAAAA,EAAAA,MAAA,OACEF,UAAWyC,EAAQoE,mBAEnBF,MAAOb,EAAgB7F,SAAA,CAEtBL,EAAKiB,UAAU1B,6CACfkE,GAAsBA,MAJnB,UAOZ,CAEA,OAAO,IACT,G,sUCtFMyD,EAAmB,CACvBC,KAAM,CACJC,MAAO,UACPC,WAAY,OACZC,UAAW,MACXC,YAAa,QAIXC,EAAa,CAAEC,SAAU,UAElBC,EAAkB,SAAH9H,GAAA,IAAM+H,EAAoB/H,EAApB+H,qBAAsBC,EAAOhI,EAAPgI,QAAO,OAC7DzH,EAAAA,EAAAA,KAAC0H,EAAAA,WAAU,CACTC,OAAQZ,EACRa,UAAWP,EACXQ,UAAWL,EACXC,QAASA,GACT,EChBEK,GAAmBC,EAAAA,EAAAA,aAAY,CACnCC,UAAW,SACXC,WAAY,IACZC,SAAU,GACVC,WAAY,KAGDC,EAAS,SAAH3I,GAAA,IAAMF,EAAIE,EAAJF,KAAM8I,EAAkB5I,EAAlB4I,mBAAoBxI,EAAIJ,EAAJI,KAAI,OACrDM,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,gBAAgBC,cAAc,SAASZ,OAAQ,CAAEX,KAAM,CAAEwB,aAAc,IAAMtI,SAAA,EAC7GF,EAAAA,EAAAA,KAAA,OAAKC,UAAW6H,EAAiB5H,SAC9BX,IAEF8I,IAAsBrI,EAAAA,EAAAA,KAACuH,EAAe,CAACC,qBAAsB3H,EAAKiB,UAAU,mBAAoB2G,QAASY,MACpG,EAWVD,EAAOhH,aAAe,CACpBiH,mBAAoB,M,qCCzBhBI,GAAeV,EAAAA,EAAAA,aAAY,CAC/BW,OAAQ,KAGJC,EAAkB,SAACC,GACvB,IAAMC,EAAsB,SAAClD,GAC3B,IAAQ1F,EAAc0F,EAAd1F,UACR,OACED,EAAAA,EAAAA,KAAA0E,EAAAA,SAAA,CAAAxE,UACEF,EAAAA,EAAAA,KAAC4I,GAASlH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKiE,GAAK,IAAE1F,UAAW0D,IAAW1D,EAAWwI,OAG7D,EAUA,OAJAI,EAAoBzH,aAAe,CACjCnB,UAAW,MAGN4I,CACT,EAEaC,EAAgBH,EAAgBI,EAAAA,eAChCC,EAAgBL,EAAgBM,EAAAA,eC1BvCC,ICDmBnB,EAAAA,EAAAA,aAAY,CACnCoB,SAAU,WACVC,gBAAiB,2BACjBC,OAAQ,KACRC,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRhD,KAAM,EACNrE,MAAO,OACPuG,OAAQ,OACRe,OAAQ,UAGa1B,EAAAA,EAAAA,aAAY,CACjC5F,MAAO,OACPuG,OAAQ,UAGWX,EAAAA,EAAAA,aAAY,CAC/BoB,SAAU,WACVO,UAAW,SDnBgB3B,EAAAA,EAAAA,aAAY,CACvC5F,MAAO,OAGHD,GAAa6F,EAAAA,EAAAA,aAAY,CAC7BW,OAAQ,IACRF,aAAc,KAGVmB,GAAa5B,EAAAA,EAAAA,aAAY,CAC7BE,WAAY,SAGD2B,EAAiB,SAAHnK,GAAA,IACzBoK,EAAUpK,EAAVoK,WAAY7H,EAAIvC,EAAJuC,KAAM8H,EAAWrK,EAAXqK,YAAajK,EAAIJ,EAAJI,KAAI,OAEnCM,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACH,UAAW0D,IAAW,oBAAqBuF,GAAsBhJ,SAAA,EACtEF,EAAAA,EAAAA,KAACI,EAAAA,MAAK,CAACkI,gBAAgB,SAAQpI,UAC7BF,EAAAA,EAAAA,KAAA,OACEC,UAAW0D,IAAW,yBAA0BzB,GAChD6H,IAAI,GACJC,IAAKhI,OAGT7B,EAAAA,EAAAA,MAAA,QAAMF,UAAU,gCAA+BC,SAAA,EAC7CF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0D,IAAW,2BAA4BgG,GAAYzJ,SACjEL,EAAKiB,UAAU,+BAAgC,CAAE+I,WAAAA,MAC7C,IAAEC,OAEL,EE9BJG,GAAuBlC,E,UAAAA,aAAY,CACvCE,WAAY,SAGDiC,EAAgB,SAAHzK,GAAA,IAAMI,EAAIJ,EAAJI,KAAMsK,EAAQ1K,EAAR0K,SAAQ,OAE1CnK,EAAAA,EAAAA,KAAA,QAAMC,UAAWgK,EAAqB/J,SACtB,IAAbiK,EACCtK,EAAKiB,UAAU,6CACfjB,EAAKiB,UAAU,qCAAsC,CAAEqJ,SAAAA,KACpD,ECdEC,EAAsB,SAACC,GAClC,IAAMC,EAAiBC,KAAKC,MAAMH,GAC5BI,EAAQF,KAAKG,MACbC,EAAOC,KAAKC,IAAIP,EAAiBG,GACvC,OAAOG,KAAKE,KAAKH,EAAI,MACvB,ECGMI,GAAwBhD,EAAAA,EAAAA,aAAY,CACxCZ,UAAW,GACXqB,aAAc,KAGVwC,GAAoBjD,EAAAA,EAAAA,aAAY,CACpCS,aAAc,KAGHyC,EAAoB,SAAHxL,GAAiC,IAA3ByL,EAAMzL,EAANyL,OAAQrL,EAAIJ,EAAJI,KAAMsL,EAAK1L,EAAL0L,MAC1CC,GAAmB1H,EAAAA,EAAAA,UAAQ,kBAAM0G,EAAoBc,EAAOZ,eAAe,GAAE,CAACY,EAAOZ,iBACrFe,GAAkB3H,EAAAA,EAAAA,UAAQ,kBAAM0H,GAAoB,EAAE,GAAE,CAACA,IAE/D,OACEjL,EAAAA,EAAAA,MAAAuE,EAAAA,SAAA,CAAAxE,SAAA,EACEF,EAAAA,EAAAA,KAACI,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,gBAAgBrI,UAAW8K,EAAsB7K,SAChFiL,EAAMzK,KAAI,SAAAyE,GAAI,OACbnF,EAAAA,EAAAA,KAAC4J,EAAc,CAAsBC,WAAY1E,EAAKmG,UAAWtJ,KAAMmD,EAAKnD,KAAM8H,YAAa3E,EAAK2E,YAAajK,KAAMA,GAAlGsF,EAAKmG,UAAqG,OAGnInL,EAAAA,EAAAA,MAAA,OAAKF,UAAW0D,IAAW,eAAgBqH,GAAmB9K,SAAA,EAC5DF,EAAAA,EAAAA,KAAA,QAAAE,SAAOL,EAAKiB,UAAU,yCAA0CoK,KAC/D,IACAG,IAAmBrL,EAAAA,EAAAA,KAACkK,EAAa,CAACrK,KAAMA,EAAMsK,SAAUiB,SAIjE,EC7BMG,EAA8B,CAClCjL,YAAa,GAGFkL,EAAY,SAAH/L,GAEf,IADLyL,EAAMzL,EAANyL,OAAQO,EAAehM,EAAfgM,gBAAiBC,EAASjM,EAATiM,UAAWC,EAAUlM,EAAVkM,WAAYC,EAAanM,EAAbmM,cAAe/L,EAAIJ,EAAJI,KAAMsL,EAAK1L,EAAL0L,MAE/DxJ,EAAQ9B,EAAKiB,UACjBoK,EAAOW,qBAAuB,0BAC9BX,GAGIE,GAAmB1H,EAAAA,EAAAA,UAAQ,kBAAM0G,EAAoBc,EAAOZ,eAAe,GAAE,CAACY,EAAOZ,iBACrFwB,GAAqBpI,EAAAA,EAAAA,UAAQ,kBAAM0H,GAAoB,CAAC,GAAE,CAACA,IAEjE,OACEjL,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACEF,EAAAA,EAAAA,KAACoI,EAAM,CAAC7I,KAAMoC,EAAO9B,KAAMA,EAAMwI,mBAAoBqD,KACrD1L,EAAAA,EAAAA,KAACiL,EAAiB,CAACC,OAAQA,EAAQrL,KAAMA,EAAMsL,MAAOA,KACtDhL,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,gBAAgBC,cAAc,SAAQrI,SAAA,EACtEF,EAAAA,EAAAA,KAAC8I,EAAa,CAACvJ,KAAMM,EAAKiB,UAAU,wBAAyB2G,QAASgE,EAAiBxL,UAAU,2BACjGE,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAACtE,OAAQkL,EAA4BrL,SAAA,EACpDF,EAAAA,EAAAA,KAACgJ,EAAa,CAACzJ,KAAMM,EAAKiB,UAAU,sBAAuB2G,QAASkE,EAAY1L,UAAU,oBACzF6L,IAAsB9L,EAAAA,EAAAA,KAAC8I,EAAa,CAACvJ,KAAMM,EAAKiB,UAAU,wBAAyB2G,QAASmE,EAAe3L,UAAU,gCAIhI,EC3BM8L,GAAoBhE,EAAAA,EAAAA,aAAY,CACpC2B,UAAW,GACXvC,UAAW,GACXqB,aAAc,KAGHwD,EAAgB,SAAHvM,GAAA,IAAMI,EAAIJ,EAAJI,KAAM6L,EAASjM,EAATiM,UAAWO,EAAgBxM,EAAhBwM,iBAAgB,OAC/D9L,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACEF,EAAAA,EAAAA,KAACoI,EAAM,CAAC7I,KAAMM,EAAKiB,UAAU,wBAAyBjB,KAAMA,EAAMwI,mBAAoBqD,KACtFvL,EAAAA,EAAAA,MAAA,OAAKF,UAAW0D,IAAW,qBAAsBoI,GAAmB7L,SAAA,CACjEL,EAAKiB,UAAU,8BACf,IACAmL,GAAmBjM,EAAAA,EAAAA,KAACkM,EAAAA,KAAI,CAACC,KAAMF,EAAiB/L,SAAEL,EAAKiB,UAAU,iBAAyBjB,EAAKiB,UAAU,mBAE5Gd,EAAAA,EAAAA,KAACI,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,MAAMC,cAAc,SAAQrI,UAC5DF,EAAAA,EAAAA,KAAC8I,EAAa,CAACvJ,KAAMM,EAAKiB,UAAU,gBAAiB2G,QAASiE,EAAWzL,UAAU,qBAEjF,ECfF8L,GAAoBhE,EAAAA,EAAAA,aAAY,CACpC2B,UAAW,GACXvC,UAAW,GACXqB,aAAc,KAGV4D,GAA2BrE,EAAAA,EAAAA,aAAY,CAC3CX,YAAa,IAGFiF,EAAc,SAAH5M,GAEjB,IADLyL,EAAMzL,EAANyL,OAAQO,EAAehM,EAAfgM,gBAAiBE,EAAUlM,EAAVkM,WAAYW,EAAS7M,EAAT6M,UAAWZ,EAASjM,EAATiM,UAAW7L,EAAIJ,EAAJI,KAErDsK,GAAWzG,EAAAA,EAAAA,UAAQ,kBAAM0G,EAAoBc,EAAOZ,eAAe,GAAE,CAACY,EAAOZ,iBAEnF,OACEnK,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACEF,EAAAA,EAAAA,KAACoI,EAAM,CAAC7I,KAAMM,EAAKiB,UAAU,qBAAsBjB,KAAMA,EAAMwI,mBAAoBqD,KACnFvL,EAAAA,EAAAA,MAAA,OAAKF,UAAW0D,IAAW,qBAAsBoI,GAAmB7L,SAAA,EAClEF,EAAAA,EAAAA,KAACkK,EAAa,CAACrK,KAAMA,EAAMsK,SAAUA,IACpC,IACAtK,EAAKiB,UAAU,+CACf,KACDd,EAAAA,EAAAA,KAACkM,EAAAA,KAAI,CAACzE,QAASkE,EAAWzL,SAAEL,EAAKiB,UAAU,mDAC1C,IACAjB,EAAKiB,UAAU,mDAElBX,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,gBAAgBC,cAAc,SAAQrI,SAAA,EACtEF,EAAAA,EAAAA,KAAC8I,EAAa,CAACvJ,KAAMM,EAAKiB,UAAU,wBAAyB2G,QAASgE,EAAiBxL,UAAU,kBACjGE,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,MAAMC,cAAc,SAAQrI,SAAA,EAC5DF,EAAAA,EAAAA,KAACgJ,EAAa,CAACzJ,KAAMM,EAAKiB,UAAU,uBAAwB2G,QAAS6E,EAAWrM,UAAW0D,IAAWyI,EAA0B,0BAChIpM,EAAAA,EAAAA,KAAC8I,EAAa,CAACvJ,KAAMM,EAAKiB,UAAU,gBAAiB2G,QAASiE,EAAWzL,UAAU,yBAI7F,ECrCMmM,GAA2BrE,EAAAA,EAAAA,aAAY,CAC3CX,YAAa,IAGFmF,EAAU,SAAH9M,GAAA,IAClByL,EAAMzL,EAANyL,OAAQrL,EAAIJ,EAAJI,KAAMyM,EAAS7M,EAAT6M,UAAWZ,EAASjM,EAATiM,UAAWP,EAAK1L,EAAL0L,MAAK,OAEzChL,EAAAA,EAAAA,MAAA,OAAAD,SAAA,EACEF,EAAAA,EAAAA,KAACoI,EAAM,CAAC7I,KAAMM,EAAKiB,UAAU,iBAAkBjB,KAAMA,EAAMwI,mBAAoBqD,KAC/E1L,EAAAA,EAAAA,KAACiL,EAAiB,CAACC,OAAQA,EAAQrL,KAAMA,EAAMsL,MAAOA,KACtDhL,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAAC2D,gBAAgB,MAAMC,cAAc,SAAQrI,SAAA,EAC5DF,EAAAA,EAAAA,KAACgJ,EAAa,CAACzJ,KAAMM,EAAKiB,UAAU,8BAA+B2G,QAAS6E,EAAWrM,UAAW0D,IAAWyI,EAA0B,0BACvIpM,EAAAA,EAAAA,KAAC8I,EAAa,CAACvJ,KAAMM,EAAKiB,UAAU,yBAA0B2G,QAASiE,EAAWzL,UAAU,gCAE1F,E,wBCZFuM,EAA6B,SAACC,EAAUC,GAAG,8BAAAnG,OAA6BkG,EAAQ,KAAAlG,OAAImG,EAAG,EAEvFC,EAAiB,SAACC,GACtB,IAAMC,EAAO,IAAItC,KAAKA,KAAKG,OAG3B,OAFAmC,EAAKC,QAAQD,EAAKE,UAAYH,GAEvBC,CACT,E,kGCIMG,EAAoBC,EAAAA,UAAcC,6BAA6BC,OAE/DC,GAAiBtO,OAAOC,OAAO,CACnCsO,UAAW,EACXC,eAAgB,EAChBC,aAAc,EACdC,QAAS,IAGLC,IAAc1F,EAAAA,EAAAA,aAAY,CAC9B5F,MAAO,IACPuL,QAAS,KAGLC,GAAgB,CACpB3G,KAAM,CACJoC,gBAAiB,6BAIRwE,GAAqB,SAAHnO,GAIxB,IAHLyL,EAAMzL,EAANyL,OAAQS,EAAUlM,EAAVkM,WAAYkC,EAAqBpO,EAArBoO,sBAAuBhO,EAAIJ,EAAJI,KAAMiO,EAAOrO,EAAPqO,QAAS3C,EAAK1L,EAAL0L,MAC1D4C,EAAWtO,EAAXsO,YAAaC,EAAqBvO,EAArBuO,sBAAuBC,EAAYxO,EAAZwO,aAAcC,EAA2BzO,EAA3ByO,4BAA2BC,EAAA1O,EAC7E2O,8BAAAA,OAA6B,IAAAD,GAAQA,EAErCE,GAAmEC,EAAAA,EAAAA,IAAW,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7EI,EAAWF,EAAA,GAAAG,EAAAH,EAAA,GAAaI,EAASD,EAAlBE,QAA8BC,EAASH,EAAnBI,SAC1CC,GAAsCC,EAAAA,EAAAA,UAAS5B,GAAeC,WAAU4B,GAAAT,EAAAA,EAAAA,GAAAO,EAAA,GAAjEG,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAE5BG,GAAgBC,EAAAA,EAAAA,cAAY,SAAAC,GAAG,OAAKrB,EAAY,IAAA1H,OAAO0H,EAAY,OAAA1H,OAAM+I,GAAQA,CAAG,GAAG,CAACrB,IACxFsB,GAAc7L,EAAAA,EAAAA,UAAQ,WAC1B,OAAIU,IAAAA,QAAU+G,GACL,CAAC,CACNG,UAAW,EACXtJ,KAAMwN,EACN1F,YAAajK,EAAKiB,UAAU,kCAAmCoK,IAC9D,CACDI,UAAW,EACXtJ,KAAMyN,EACN3F,YAAajK,EAAKiB,UAAU,kCAAmCoK,KAG5DC,CACT,GAAG,CAACA,EAAOD,EAAQrL,IAEX6P,IAAU5P,EAAAA,EAAAA,YAAW6P,EAAAA,eAAiB,CAAC,GAAvCD,MACFE,GAAalM,EAAAA,EAAAA,UAAQ,kBAAMgM,GAAS3B,CAAW,GAAE,CAAC2B,EAAO3B,IAE/D8B,EAA0BD,EAAWE,OAA7BC,EAAGF,EAAHE,IAAKC,EAAGH,EAAHG,IAAKtD,EAAGmD,EAAHnD,IAEZT,GAAmBvI,EAAAA,EAAAA,UAAQ,WAC/B,IACE,OAAO,IAAIuM,IAAJ,EAAQC,EAAAA,EAAAA,kBAAiBpC,EAAS,WAAWqC,OAAO,CAAEJ,IAAAA,EAAKC,IAAAA,EAAKtD,IAAAA,IAAOP,MAChF,CAAE,MAAOiE,GACP,OAAO,IACT,CACF,GAAG,CAAC1D,EAAKsD,EAAKlC,EAASiC,KAEvBM,EAAAA,EAAAA,YAAU,WACJnF,EAAOoF,QAAQC,SAAWvD,GAC5BmC,EAAe/B,GAAeI,QAElC,GAAG,CAACtC,EAAOoF,QAAQC,SAEnB,IAAAC,GDjEsC,SAAH/Q,GAE9B,IADLyL,EAAMzL,EAANyL,OAAQ2C,EAAqBpO,EAArBoO,sBAAqB4C,EAAAhR,EAAEiQ,MAAAA,OAAK,IAAAe,EAAG,CAAC,EAACA,EAAEzC,EAAqBvO,EAArBuO,sBAAuBC,EAAYxO,EAAZwO,aAAYyC,EAAAjR,EAAEyO,4BAAAA,OAA2B,IAAAwC,EAAG,KAAIA,EAElH3B,GAA0DC,EAAAA,EAAAA,WAAS,GAAMC,GAAAT,EAAAA,EAAAA,GAAAO,EAAA,GAAlE4B,EAAqB1B,EAAA,GAAE2B,EAAwB3B,EAAA,GACtD4B,GAA0D7B,EAAAA,EAAAA,UAAS,CAAC,GAAE8B,GAAAtC,EAAAA,EAAAA,GAAAqC,EAAA,GAA/DE,EAAqBD,EAAA,GAAEE,EAAwBF,EAAA,GAEtDG,EAAqBvB,EAAMI,OAAnBC,EAAGkB,EAAHlB,IAAKrD,EAAGuE,EAAHvE,IAEPwE,GAAkBpR,EAAAA,EAAAA,YAAWqR,EAAAA,wBAE3BC,GAAa1N,EAAAA,EAAAA,UAAQ,WAG3B,OAF6BU,IAAAA,QAAU8M,GAAmBlD,EAAwBkD,GAEtDG,0BAA0B,CACpDpD,aAAcA,GAAe,oBAC7BqD,aAAc,uBAElB,GAAG,CAACJ,EAAiBlD,EAAuBC,IAPpCmD,UASRf,EAAAA,EAAAA,YAAU,WACJnF,GACF2C,EACG0D,QAAQ,CAAExB,IAAAA,IACVyB,MAAK,SAAC/Q,GACL,GAAIA,GAAQA,EAAKgR,OAAQ,CACvBb,GAAyB,GACzB,IACE,IAAMc,EAAkBtN,IAAAA,KAAO3D,GAAM,SAAAkR,GAAc,OAxCrC,QAwCyCA,EAAeC,KAA6B,IACnG,GAAIF,GAAmBA,EAAgBG,mBAAoB,CACzD,IAAMC,EAAiBC,KAAKvH,MAAMwH,mBAAmBN,EAAgBG,qBAC/DI,EAAoBzF,EAA2BtB,EAAO5L,GAAIoN,GAChEsE,EAAyBc,EAAeG,GAAqBF,KAAKvH,MAAMsH,EAAeG,IAAsB,CAAC,EAChH,CACF,CAAE,MAAO7B,GACP,KAAIA,aAAa8B,aAGf,MAAM9B,EAFNgB,EAASe,MAAM,4DAAD5L,OAA6D6J,GAI/E,CACF,CACF,GAEN,GAAG,CAACgB,EAAU1E,EAAKxB,EAAQ6E,EAAKlC,IAEhC,IAAMuE,GAAkB/C,EAAAA,EAAAA,cAAY,SAACgD,GACnC,IAAMC,EAAwB9F,EAA2BtB,EAAO5L,GAAIoN,GAChEwB,GACFA,IAEF,IAAMzN,EAAO,CAAEmR,MA/DS,MA+DmBnR,KAAMsR,KAAKQ,WAASpT,EAAAA,EAAAA,GAAC,CAAC,EAAEmT,EAAwBP,KAAKQ,UAAUF,MAC1G,OAAOxE,EAAsB2E,OAAO/R,EACtC,GAAG,CAACiM,EAAKxB,EAAO5L,GAAIuO,EAAuBK,IAErCuE,GAAgBpD,EAAAA,EAAAA,cAAY,WAChC,IAAMqD,EAA2B,CAC/BjG,SAAUvB,GAAUA,EAAO5L,GAC3BoN,IAAAA,EACAiG,MAAM,EACNC,QAAS,MAGX,OAAOR,EAAgBM,EACzB,GAAG,CAAChG,EAAKxB,EAAQkH,IAEXS,GAAcxD,EAAAA,EAAAA,cAAY,SAACuD,GAC/B,IAAME,EAAwB,CAC5BrG,SAAUvB,GAAUA,EAAO5L,GAC3BoN,IAAAA,EACAiG,MAAM,EACNC,QAAAA,GAGF,OAAOR,EAAgBU,EACzB,GAAG,CAACpG,EAAKxB,EAAQkH,IAEXW,GAAqB1D,EAAAA,EAAAA,cAAY,kBAAMwD,EAAY,KAAK,GAAE,CAACA,IAE3DG,GAAsB3D,EAAAA,EAAAA,cAAY,kBAAMwD,EAAYlG,EAAe,GAAG,GAAE,CAACkG,IAEzEI,GAAuB5D,EAAAA,EAAAA,cAAY,kBAAMwD,EAAYlG,EAAe,IAAI,GAAE,CAACkG,IAE3EK,GAA0BxP,EAAAA,EAAAA,UAC9B,kBAAqC,IAA/BqN,EAAsB4B,IAAa,GACzC,CAAC5B,IAGGoC,GAAwBzP,EAAAA,EAAAA,UAC5B,kBAAMqN,EAAsB6B,SAAWrI,KAAKC,MAAMuG,EAAsB6B,SAAWrI,KAAKG,KAAK,GAC7F,CAACqG,IAGGqC,GAAwB1P,EAAAA,EAAAA,UAAQ,WACpC,IAAM2P,EAAsB3D,EAAMI,OAA4B,eAC9D,OAA+B,IAAxBuD,GAAqD,SAAxBA,CACtC,GAAG,CAAC3D,EAAMI,SAEJwD,GAAmB5P,EAAAA,EAAAA,UACvB,kBAAM0P,GAA0BzC,KAA2BuC,GAA4BA,GAA2BC,EAAwB,GAC1I,CAACA,EAAuBD,EAAyBE,EAAuBzC,IAS1E,OANAN,EAAAA,EAAAA,YAAU,WACJ6C,GAA2BE,GAC7BX,GAEJ,GAAG,CAACA,EAAeW,EAAuBF,IAEnC,CACLK,iBAAkBD,EAClB3C,sBAAAA,EACAI,sBAAAA,EACAgC,mBAAAA,EACAC,oBAAAA,EACAC,qBAAAA,EACA7B,SAAAA,EAEJ,CC9CMoC,CAAyB,CAC3BtI,OAAQA,EAAOoF,QACfzC,sBAAAA,EACA6B,MAAOE,EACP5B,sBAAAA,EACAC,aAAAA,EACAC,4BAAAA,IAXA6E,GAAkBvC,GAAlBuC,mBACAC,GAAmBxC,GAAnBwC,oBACAC,GAAoBzC,GAApByC,qBACAM,GAAe/C,GAAf+C,gBACAnC,GAAQZ,GAARY,SAUIhG,IAAmB1H,EAAAA,EAAAA,UAAQ,kBAAM0G,EAAoBc,EAAOZ,eAAe,GAAE,CAACY,EAAOZ,iBAErFmJ,IAAcpE,EAAAA,EAAAA,cAAY,WAC9B+B,GAASe,MAAM/C,EAAc,yBAC7BP,IACAkE,IACF,GAAG,CAACA,GAAoBlE,EAAWuC,GAAUhC,IAEvCsE,IAAgCrE,EAAAA,EAAAA,cAAY,WAChD+B,GAASe,MAAM/C,EAAc,0CAC7B2D,KACA5D,EAAe/B,GAAeE,eAChC,GAAG,CAACyF,GAAoB3B,GAAUhC,IAE5BuE,IAAgCtE,EAAAA,EAAAA,cAAY,WAC5CjE,GAAmB,IACrBgG,GAASe,MAAM/C,EAAc,yDAC7BD,EAAe/B,GAAeG,gBAE9B6D,GAASe,MAAM/C,EAAc,4EAC7BP,IACAmE,KAEJ,GAAG,CAAC5H,GAAkB4H,GAAqBnE,EAAWuC,GAAUhC,IAE1DwE,IAAuBvE,EAAAA,EAAAA,cAAY,WACvC+B,GAASe,MAAM/C,EAAc,6CAC7BP,IACAmE,IACF,GAAG,CAACA,GAAqBnE,EAAWuC,GAAUhC,IAExCyE,IAAkBxE,EAAAA,EAAAA,cAAY,WAClC+B,GAASe,MAAM/C,EAAc,yCAC7BP,IACAoE,KAAuBzB,KAAK7F,EAC9B,GAAG,CAACsH,GAAsBpE,EAAWlD,EAAYyF,GAAUhC,IAErD0E,IAAwBzE,EAAAA,EAAAA,cAAY,WACxC+B,GAASe,MAAM/C,EAAc,+CAC7BP,IACAoE,IACF,GAAG,CAACA,GAAsBpE,EAAWuC,GAAUhC,IAEzC2E,IAAiB1E,EAAAA,EAAAA,cAAY,WACjCR,IACIT,GACFgD,GAASe,MAAM/C,EAAc,uCAC7B4D,MAEA5B,GAASe,MAAM/C,EAAc,kBAEjC,GAAG,CAACP,EAAWuC,GAAUhC,EAAe4D,GAAqB5E,KAE7DiC,EAAAA,EAAAA,YAAU,WACHkD,GAIH1E,KAHAF,IACAyC,GAASe,MAAM/C,EAAc,qBAIjC,GAAG,CAACT,EAAWE,EAAW0E,GAAiBnC,GAAUhC,IAErD,IAAM4E,IAAetQ,EAAAA,EAAAA,UAAQ,WAC3B,OAAQwL,GACN,KAAK9B,GAAeC,UAClB,OAAQrN,EAAAA,EAAAA,KAACwL,EAAS,CAChBN,OAAQA,EACRrL,KAAMA,EACN4L,gBAAiBiI,GACjBhI,UAAWqI,GACXpI,WAAYkI,GACZjI,cAAe+H,GACfxI,MAAOoE,IAEX,KAAKnC,GAAeE,eAClB,OAAQtN,EAAAA,EAAAA,KAACgM,EAAa,CACpBnM,KAAMA,EACN6L,UAAWmD,EACX5C,iBAAkBA,IAEtB,KAAKmB,GAAeG,aAClB,OAAQvN,EAAAA,EAAAA,KAACqM,EAAW,CAClBnB,OAAQA,EACRrL,KAAMA,EACN4L,gBAAiBgI,GACjB9H,WAAYkI,GACZvH,UAAWsH,GACXlI,UAAWqI,KAEf,KAAK3G,GAAeI,QAClB,OAAQxN,EAAAA,EAAAA,KAACuM,EAAO,CACdrB,OAAQA,EACRrL,KAAMA,EACNyM,UAAWwH,GACXpI,UAAW+H,GACXtI,MAAOoE,IAEX,QACE,OAAO,KAEb,GAAG,CAACL,EAAahE,EAAQrL,EAAM6T,GAA+BG,GAC5DF,GAA+B1H,EAAkBwH,GAAaG,GAC9DE,GAAuBvE,EAAawE,KAEhCE,IAAU5E,EAAAA,EAAAA,cAAY,kBAC1BrP,EAAAA,EAAAA,KAACkU,EAAAA,MAAK,CACJjU,UAAU,cACVkU,OAAQ1F,EACR2F,QAAS,CAAEzM,OAAQgG,IACnB0G,YAAU,EAAAnU,UAEVF,EAAAA,EAAAA,KAAA,OAAKC,UAAWwN,GAAYvN,SACzB8T,MAEG,GACP,CAACvF,EAAauF,KAEXM,IAAkBC,EAAAA,EAAAA,UAASN,GAAS,CAAEO,OAAO,IAEnD,OACExU,EAAAA,EAAAA,KAAA0E,EAAAA,SAAA,CAAAxE,SACGuO,IACCzO,EAAAA,EAAAA,KAACsU,GAAe,KAIxB,EAiCA1G,GAAmBxM,aAAe,CAChC2M,YAAa,KACbC,sBAAuB,KACvBC,aAAc,KACdC,4BAA6B,KAC7BE,+BAA+B,GAG1B,IAAMqG,IAAaC,EAAAA,EAAAA,aAAY9G,GAAoB+G,EAAAA,aAAaC,OCxQ1DC,GAA4B,CACvCC,wBAAyB1V,sBACzB2V,0BAA2B3V,4BAC3B4V,aAAc5V,QACd6V,eAAgB7V,UAChB8V,cAAe9V,SACf+V,aAAc/V,UACdgW,qBAAsBhW,kBACtBiW,wBAAyBjW,oGACzBkW,kCAAmClW,oCACnCmW,wBAAyBnW,qGACzBoW,6BAA8BpW,uBAC9BqW,0BAA2BrW,sBAC3BsW,gCAAiCtW,mFACjCuW,mCAAoCvW,wHACpCwW,iCAAkCxW,iDAClCyW,uCAAwCzW,sDACxC0W,oCAAqC1W,sNACrC2W,wBAAyB3W,yDACzB4W,qBAAsB5W,iBACtB6W,mBAAoB7W,eACpB8W,qBAAsB9W,kBACtB+W,qBAAsB/W,gCACtBgX,2BAA4BhX,4DAC5BiX,YAAajX,gBACbkX,kBAAmBlX,8CACnBmX,mCAAoCnX,2CACpCoX,0CAA2CpX,+BAC3CqX,4CAA6CrX,UAC7CsX,8CAA+CtX,sBAC/CuX,4CAA6CvX,yCAC7CwX,oBAAqBxX,gBACrByX,cAAezX,qCACf0X,2BAA4B1X,SAC5B2X,sBAAuB3X,wBACvB4X,gBAAiB5X,wBAGN6X,IAA2BvV,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnCmT,IAAyB,IAC5BU,wBAAyBnW,8DACzB8X,0CAA2C9X,8DAC3C+X,4CAA6C/X,6BAC7CgY,wDAAyDhY,6BACzDiY,kDAAmDjY,6BACnDkY,kDAAmDlY,6BACnDmY,kDAAmDnY,yFACnDoY,kDAAmDpY,8DACnDqY,kDAAmDrY,iDAGxCsY,IAAqChW,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC7CmT,IAAyB,IAC5B8C,8CAA+CvY,6CAC/CwY,0DAA2DxY,6CAC3DyY,oDAAqDzY,6CACrD0Y,oDAAqD1Y,6CAErD2Y,gCAAiC3Y,6CACjC4Y,gCAAiC5Y,iD,oFCrD7B6Y,GAAkB,GAAA1R,OAAM2R,SAASC,OAAM,kCAAA5R,OAAiC2R,SAAS/H,QAE1EiI,GAA8B,SAACvY,GAAI,MAAM,CACpD,CACEyL,UAAW,EACXtJ,KAAMwN,EACN1F,aAAa9J,EAAAA,EAAAA,KAACqY,GAAAA,cAAa,CACzBC,MAAO,CAAEC,KAAM,SAAAhZ,GAAI,OAAIS,EAAAA,EAAAA,KAAA,KAAGmM,KAAM8L,GAAmB/X,SAAEX,GAAS,GAC9DiZ,SAAU3Y,EAAKiB,UAAU,wDAE1B,CACDwK,UAAW,EACXtJ,KAAMyW,GACN3O,YAAajK,EAAKiB,UAAU,sDAC3B,CACDwK,UAAW,EACXtJ,KAAMyN,EACN3F,YAAajK,EAAKiB,UAAU,sDAE/B,E,sGCpBY4X,GAAc,SAAAC,GAAA,SAAAD,IAAA,OAAAE,EAAAA,GAAAA,GAAA,KAAAF,IAAAG,EAAAA,GAAAA,GAAA,KAAAH,EAAAI,UAAA,QAAAC,EAAAA,GAAAA,GAAAL,EAAAC,IAAAK,EAAAA,GAAAA,GAAAN,EAAA,EAAAO,IAAA,aAAAvZ,MACzB,SAAUD,GAYN,IAXFyL,EAAMzL,EAANyL,OACArL,EAAIJ,EAAJI,KACA8L,EAAUlM,EAAVkM,WACAkC,EAAqBpO,EAArBoO,sBACAC,EAAOrO,EAAPqO,QACAC,EAAWtO,EAAXsO,YACAC,EAAqBvO,EAArBuO,sBACA7C,EAAK1L,EAAL0L,MACA8C,EAAYxO,EAAZwO,aACAC,EAA2BzO,EAA3ByO,4BACAE,EAA6B3O,EAA7B2O,8BAEA8K,KAAKhO,OAASA,EACdgO,KAAKrZ,KAAOA,EACZqZ,KAAKvN,WAAaA,EAClBuN,KAAKrL,sBAAwBA,EAC7BqL,KAAKpL,QAAUA,EACfoL,KAAKnL,YAAcA,EACnBmL,KAAKlL,sBAAwBA,EAC7BkL,KAAK/N,MAAQA,EACb+N,KAAKjL,aAAeA,EACpBiL,KAAKhL,4BAA8BA,EACnCgL,KAAK9K,8BAAgCA,CACvC,GAAC,CAAA6K,IAAA,SAAAvZ,MAED,WAiBE,OAhBAyZ,GAAAA,QACEnZ,EAAAA,EAAAA,KAAC4N,GAAkB,CACjB/N,KAAMqZ,KAAKrZ,KACXqL,OAAQgO,KAAKhO,OACbS,WAAYuN,KAAKvN,WACjBkC,sBAAuBqL,KAAKrL,sBAC5BC,QAASoL,KAAKpL,QACdC,YAAamL,KAAKnL,YAClBC,sBAAuBkL,KAAKlL,sBAC5B7C,MAAO+N,KAAK/N,MACZ8C,aAAciL,KAAKjL,aACnBC,4BAA6BgL,KAAKhL,4BAClCE,8BAA+B8K,KAAK9K,gCAEtC8K,KAAKE,IAEAF,IACT,GAAC,CAAAD,IAAA,SAAAvZ,MAED,WAEE,OADAyZ,GAAAA,uBAAgCD,KAAKE,KACrCC,EAAAA,GAAAA,GAAAX,EAAA,gBAAAW,CAAA,GACF,IAAC,CAlDwB,CAASC,KAAAA,K,yBCLpC,IAAQC,EAAQC,EAAQ,QAAhBD,IACAE,EAAiBD,EAAQ,QAAzBC,aACAC,EAAwBF,EAAQ,QAAhCE,oBAEAC,EAAiBH,EAAQ,OAAzBG,aACAC,EAAuBJ,EAAQ,QAA/BI,mBACAC,EAAmBL,EAAQ,QAA3BK,eAEAC,EAAwBN,EAAQ,QAAhCM,oBAERC,EAAOC,QAAU,CACfT,IAAAA,EACAE,aAAAA,EACAC,oBAAAA,EAEAC,aAAAA,EACAC,mBAAAA,EACAC,eAAAA,EAEAC,oBAAAA,E,qEChBIG,EAAcT,EAAQ,QACtBU,EAAeV,EAAQ,QAEvBD,EAAGP,GACP,SAAAO,EAAYY,GAAU,aAADvB,EAAA,KAAAW,GACnBU,EAAYf,MACRiB,GACFD,EAAahB,KAAMiB,EAEvB,IAGFJ,EAAOC,QAAU,CACfT,IAAAA,E,yBChBF,IAAMnV,EAAIoV,EAAQ,QAkClBO,EAAOC,QAAU,CACfI,IArBF,SAAaC,EAAQC,EAAMC,GACzB,IAAIC,EACAC,EACEC,EAfR,SAAkBhb,EAAO2a,GACvB,OAAIjW,EAAEuW,QAAQjb,GACLA,EAGL0E,EAAEwW,IAAIP,EAAQ3a,GACT,CAACA,GAGH0E,EAAEyW,QAAQnb,EAAMob,MAAM,UAC/B,CAKkBC,CAAST,EAAMD,GAE/B,IAAKI,EAAI,EAAGD,EAAMH,EAAQI,EAAIC,EAAQjJ,OAAQgJ,GAAK,EAAG,CACpD,IAAKrW,EAAE4W,SAASR,GACd,OAAOD,EAKT,GAFAC,EAAMA,EAAIE,EAAQD,IAEdrW,EAAE6W,YAAYT,GAChB,OAAOD,CAEX,CAEA,OAAOC,CACT,E,yBC7BA,IAAMpW,EAAIoV,EAAQ,QASlB,SAASE,EAAoBwB,EAAKhW,EAAMxF,GACtC,OAAOZ,OAAOqc,eAAeD,EAAKhW,EAAM,CACtCxF,MAAAA,EACA0b,YAAY,EACZC,UAAU,GAEd,CASA,SAASC,EAAuBJ,EAAKhW,EAAMqW,GACzC,OAAOzc,OAAOqc,eAAeD,EAAKhW,EAAM,CACtCkV,IAAG,WACD,IAAM1a,EAAQ6b,EAAQC,MAAMN,GAG5B,OADAxB,EAAoBwB,EAAKhW,EAAMxF,GACxBA,CACT,EACA0b,YAAY,EACZK,cAAc,GAElB,CASA,SAASC,EAA8BC,EAAOzW,EAAMqW,GAClD,IACMtb,EAAY0b,EAAMzW,MAAI,QAAAqB,OAAYnC,EAAEwX,OAAO,EADhC,QAEXC,EAAM,KAAAtV,OAAQtG,EAAS,KAAAsG,OAAIrB,GAYjC,OAVApG,OAAOqc,eAAeQ,EAAMG,UAAW5W,EAAM,CAC3CkV,IAAG,WAID,OAHKtb,OAAOgd,UAAUC,eAAeC,KAAK9C,KAAM2C,IAC9CnC,EAAoBR,KAAM2C,EAAQN,EAAQC,MAAMtC,OAE3CA,KAAK2C,EACd,EACAT,YAAY,IAGPO,CACT,CASA,SAASM,EAAuBf,EAAKhW,EAAMgX,GACzC,OAAOpd,OAAOqc,eAAeD,EAAKhW,EAAM,CACtCkV,IAAK8B,EACLd,YAAY,GAEhB,CAGAhX,EAAE+X,MAAM,CACNzC,oBAAAA,EACA4B,uBAAAA,EACAI,8BAAAA,EACAO,uBAAAA,IAaFlC,EAAOC,QAAU,CACfN,oBAAAA,EACA4B,uBAAAA,EACAI,8BAAAA,EACAO,uBAAAA,EACAF,eATF,SAAwBb,EAAKhW,GAC3B,QAASpG,OAAOsd,yBAAyBlB,EAAKhW,EAChD,E,qEC5FMd,EAAIoV,EAAQ,QAGZ6C,EAAS,wBAKb,SAAAA,EAAYC,GAAQ1D,EAAA,KAAAyD,GAClBnD,KAAKxY,IAAM,CAAC,EACZwY,KAAKoD,OAASA,CAChB,CAEA,OAAAtD,EAAAqD,EAAA,EAAApD,IAAA,UAAAvZ,MAKA,SAAQ6c,GAQN,OAAOnY,EAAEoY,OAAOD,GAPC,SAACE,EAAIC,GACpB,OAAID,GAAMA,aAAcJ,EACfI,EAAG/b,IAAIgc,GAETD,CACT,GAEoCvD,OAC/BA,KAAKoD,QAAUpD,KAAKoD,OAAOK,QAAQJ,EAC1C,GAEA,CAAAtD,IAAA,WAAAvZ,MAMA,SAASwb,EAAKqB,GACZ,IAAMtD,EAAMsD,EAASK,MAWJxY,EAAEoY,OAAOD,GAVT,SAACE,EAAIC,GACpB,GAAID,aAAcJ,EAIhB,OAHIjY,EAAE6W,YAAYwB,EAAG/b,IAAIgc,MACvBD,EAAG/b,IAAIgc,GAAO,IAAIL,EAAUI,IAEvBA,EAAG/b,IAAIgc,GAEhB,MAAM,IAAIG,MAAM,kDAADtW,OAAmDgW,EAASO,KAAK,MAClF,GAE8C5D,MAErCxY,IAAIuY,GAAOiC,CACtB,GAEA,CAAAjC,IAAA,OAAAvZ,MAKA,SAAKqd,GACH3Y,EAAE4Y,KAAK9D,KAAKxY,KAAK,SAAAwa,GACXA,aAAemB,EACjBnB,EAAI8B,KAAKD,GAETA,EAAO7B,EAEX,GACF,IAAC,CA/DY,GAsEgC,IACzC+B,EAAQ,wBAUZ,OAAAjE,GANA,SAAAiE,IAAcrE,EAAA,KAAAqE,GACZ/D,KAAKgE,cAAgB,IAAIb,EAAU,MAEnCnD,KAAKiE,eAAiB,IAAIC,GAC5B,GAEA,EAAAnE,IAAA,UAAAvZ,MAMA,SAAQwF,EAAMmY,GACZ,IAAMZ,EAAKY,EACPnE,KAAKgE,cAAcP,QAAQU,EAAUvC,MAAM,MAC3C5B,KAAKgE,cAGT,OAFYT,aAAcJ,EAAYI,EAAGE,QAAQzX,EAAK4V,MAAM,MAAQ,OAEtD,IAChB,GAAC,CAAA7B,IAAA,uBAAAvZ,MAED,SAAqBwF,EAAMmY,GACzB,IAAMnC,EAAMhC,KAAKyD,QAAQzX,EAAMmY,GAC/B,OAAInC,aAAemB,IAAcnB,EACxB,KAGFhC,KAAKiE,eAAe/C,IAAIc,IAAQ,IACzC,GAEA,CAAAjC,IAAA,WAAAvZ,MAMA,SAASwb,EAAKhW,GACZ,IAAMoY,GAAYpY,GA9CtB,SAA0BgW,GACxB,MAA2B,kBAAbA,EAAIhW,IACpB,CA4C8BqY,CAAiBrC,GAAOA,EAAIhW,KAAOA,EAC7D,GAAwB,qBAAboY,EACT,MAAM,IAAIT,MAAM,8BAADtW,OAA+BwL,KAAKQ,UAAU2I,GAAI,gCAEnEhC,KAAKgE,cAAcM,SAAStC,EAAKoC,EAASxC,MAAM,MAChD5B,KAAKiE,eAAeM,IAAIvC,EAAKoC,EAC/B,GAEA,CAAArE,IAAA,OAAAvZ,MAKA,SAAKqd,GACH7D,KAAKgE,cAAcF,KAAKD,EAC1B,IAEA,EAAA9D,IAAA,eAAAvZ,MAKA,SAAoBwF,GAClB,IAAMqX,EAAWrX,EAAK4V,MAAM,KAG5B,OADAyB,EAASK,MACFL,EAASO,KAAK,IACvB,GAEA,CAAA7D,IAAA,eAAAvZ,MAKA,SAAoBwF,GAClB,OAAOd,EAAEsZ,KAAKxY,EAAK4V,MAAM,KAC3B,GAAC,CAAA7B,IAAA,mBAAAvZ,MAED,SAAwBwF,EAAMmY,GAC5B,OAAOA,EAAS,GAAA9W,OAAM8W,EAAS,KAAA9W,OAAIrB,GAASA,CAC9C,IAAC,CAjFW,GAoFd6U,EAAOC,QAAU,CACfiD,SAAAA,E,gIChKI7Y,EAAIoV,EAAQ,QAEVyD,EAAazD,EAAQ,QAArByD,SACRU,EAGInE,EAAQ,QAFVE,EAAmBiE,EAAnBjE,oBACAgC,EAA6BiC,EAA7BjC,8BAGIkC,EAAMpE,EAAQ,QAkhBpBO,EAAOC,QAAU,CACfP,aA7gBF,SAAsBoE,GAChBA,EAAIC,qBAgBRpE,EAAoBmE,EAAK,sBAAwB,WAC/C,IAAMC,EAAsB,IAAIb,EAM1Bc,EAAU,wBAKb,OAAA/E,GAJD,SAAA+E,EAAAte,GAEI,IADFue,EAAMve,EAANue,OAAMpF,EAAA,KAAAmF,GAENrE,EAAoBR,KAAM,SAAU8E,EACtC,GAAC,EAAA/E,IAAA,SAAAvZ,MAED,WACE,MAAM,GAAN6G,OAAA0X,EAAW/E,KAAK8E,OAAOE,UAAQ,CAAEhF,KAAKiF,cACxC,GAEA,CAAAlF,IAAA,aAAAvZ,MACA,WACE,MAAM,IAAImd,MAAM,eAClB,IAAC,CAda,GAsBVuB,EAAkB,SAAAC,GAAA,aACtB,SAAAD,EAAAE,GAII,IAADC,EAHDP,EAAMM,EAANN,OACAQ,EAAQF,EAARE,SACAtZ,EAAIoZ,EAAJpZ,KAO+D,OAP3D0T,EAAA,KAAAwF,GAEJG,EAAA1F,EAAA,KAAAuF,EAAA,CAAM,CACJJ,OAAAA,KAEFtE,EAAmB6E,EAAO,WAAYC,GACtC9E,EAAmB6E,EAAO,OAAQrZ,GAClCwU,EAAmB6E,EAAO,OAAQX,EAAId,KAAKkB,EAAO1D,KAAMpV,IAAOqZ,CACjE,CAAC,OAAAxF,EAAAqF,EAAAC,GAAArF,EAAAoF,EAAA,EAAAnF,IAAA,aAAAvZ,MAED,WACE,MAAO,CACL+e,KAAM,WACNvZ,KAAMgU,KAAKhU,KAEf,IAAC,EAAA+T,IAAA,WAAAvZ,MAED,SAAgBgf,EAAWC,GACzBva,EAAE4Y,KAAK2B,GAAsB,SAACH,EAAUtZ,GAatCwW,EAA8BgD,EAAWxZ,GANzC,WACE,OAAO,IAAIsZ,EAASC,KAAKG,mBAAmB,CAC1CC,WAAY,IAAIT,EAAmB,CAAEJ,OAAQ9E,KAAMsF,SAAAA,EAAUtZ,KAAAA,KAEjE,GAGF,GACF,IAAC,CArCqB,CAAS6Y,GAwC3Be,EAAkB,SAAAC,GAAA,aACtB,SAAAD,EAAAE,GAGI,IAADC,EAFDjB,EAAMgB,EAANhB,OACA9Y,EAAI8Z,EAAJ9Z,KAM+D,OAN3D0T,EAAA,KAAAkG,GAEJG,EAAApG,EAAA,KAAAiG,EAAA,CAAM,CACJd,OAAAA,KAEFtE,EAAmBuF,EAAO,OAAQ/Z,GAClCwU,EAAmBuF,EAAO,OAAQrB,EAAId,KAAKkB,EAAO1D,KAAMpV,IAAO+Z,CACjE,CAAC,OAAAlG,EAAA+F,EAAAC,GAAA/F,EAAA8F,EAAA,OAAA7F,IAAA,WAAAvZ,MAED,SAAgBgf,EAAWQ,GACzB,SAASC,EAAiBC,EAAOC,GAC/Bjb,EAAE4Y,KAAKqC,GAAe,SAAAZ,GAapB/C,EAA8B0D,EAAOX,EAAKa,cAN1C,WACE,OAAO,IAAIb,EAAKG,mBAAmB,CACjCC,WAAY,IAAIC,EAAmB,CAAEd,OAAQ9E,KAAMhU,KAAMuZ,EAAKa,gBAElE,GAGF,GACF,CACAH,EAAiBT,EAAWQ,EAASK,SACrCJ,EAAiBT,EAAWQ,EAASM,UACvC,IAAC,CAhCqB,CAASzB,GAyC3B0B,EAAc,SAAAC,GAAA,aAClB,SAAAD,EAAAE,GAII,IAADC,EAHD5B,EAAM2B,EAAN3B,OACAS,EAAIkB,EAAJlB,KAAIoB,EAAAF,EACJza,KAAAA,OAAI,IAAA2a,EAAGpB,EAAKvZ,KAAI2a,EAW+C,OAX/CjH,EAAA,KAAA6G,GAEhBG,EAAA/G,EAAA,KAAA4G,EAAA,CAAM,CACJzB,OAAAA,KAGF5Z,EAAE0b,MAAKF,GACJlG,oBAAoB,OAAQ+E,GAC5B/E,oBAAoB,OAAQxU,GAC5BxF,QAEHga,EAAmBkG,EAAO,OAAQhC,EAAId,KAAKkB,EAAO1D,KAAMpV,IAAO0a,CACjE,CAAC,OAAA7G,EAAA0G,EAAAC,GAAA1G,EAAAyG,EAAA,EAAAxG,IAAA,aAAAvZ,MAED,WACE,MAAO,CACL+e,KAAM,WACNvZ,KAAMua,EAAeM,eACrBC,WAAY,CAAC9G,KAAKhU,MAEtB,IAAC,EAAA+T,IAAA,iBAAAmB,IAED,WACE,MAAO,OACT,GAAC,CAAAnB,IAAA,WAAAvZ,MAED,SAAgBgf,GAkBdhF,EAAoBgF,EAAU5C,UAAW2D,EAAeM,gBAVxD,SAAuB7a,GACrB,IAAM+a,EAAapC,EAAIqC,MAAMvD,QAAQzX,EAAMgU,KAAKuF,KAAKpB,WAC/CoB,EAAOC,EAAU5C,UAAU2C,gBAAgBZ,EAAIqC,MAAMC,eACvDF,EAAWG,eACXH,EACEpB,EAAa,IAAIY,EAAe,CAAEzB,OAAQ9E,KAAMuF,KAAMwB,EAAY/a,KAAAA,IAExE,OAAO,IAAIuZ,EAAKG,mBAAmB,CAAEC,WAAAA,GACvC,GAGF,IAAC,CAjDiB,CAASd,GAyDvBsC,EAAiB,SAAAC,GAAA,aACrB,SAAAD,EAAAE,GAGI,IAADC,EAFDxC,EAAMuC,EAANvC,OACA/E,EAAGsH,EAAHtH,IA8BM,OA9BHL,EAAA,KAAAyH,GAEHG,EAAA3H,EAAA,KAAAwH,EAAA,CAAM,CACJrC,OAAAA,KAGFtE,EAAmB8G,EAAO,MAAOvH,GACjCS,EAAmB8G,EAAO,OAAS,WAIjC,GAAIpc,EAAEqc,SAASxH,GAAM,CACnB,IAAMyH,EAAUtc,EAAE0b,MAAM9B,GACrB2C,OAAO,QACPA,OAAO,eACPA,OAAO,eACPA,OAAO,YACPjhB,QAEH,GAAgB,YAAZghB,GACEzH,EAAI2H,MAAM,0BACZ,MAAM,GAANra,OAAUyX,EAAO1D,KAAI,KAAA/T,OAAI0S,EAAG,KAGhC,GAAgB,WAAZyH,EACF,MAAM,GAANna,OAAUyX,EAAO1D,KAAI,MAAA/T,OAAK0S,EAAG,KAEjC,CAEA,MAAM,GAAN1S,OAAUyX,EAAO1D,KAAI,KAAA/T,OAAIwL,KAAKQ,UAAU0G,GAAI,IAC9C,CAvBmC,IAuB7BuH,CACR,CAAC,OAAAzH,EAAAsH,EAAAC,GAAAtH,EAAAqH,EAAA,EAAApH,IAAA,aAAAvZ,MAED,WACE,MAAO,CACL+e,KAAM,WACNvZ,KAAMmb,EAAkBN,eACxBC,WAAY,CAAC9G,KAAKD,KAEtB,IAAC,EAAAA,IAAA,iBAAAmB,IAED,WACE,MAAO,UACT,GAAC,CAAAnB,IAAA,WAAAvZ,MAED,SAAgBgf,GAedhF,EACEgF,EAAU5C,UACVuE,EAAkBN,gBARpB,SAA0B9G,GACxB,IAAM4F,EAAa,IAAIwB,EAAkB,CAAErC,OAAQ9E,KAAMD,IAAAA,IAEzD,OAAO,IAAIC,KAAKuF,KAAKoC,YAAYjC,mBAAmB,CAAEC,WAAAA,GACxD,GAOF,IAAC,CApEoB,CAASd,GA4E1B+C,EAAc,SAAAC,GAAA,aAClB,SAAAD,EAAAE,GAGI,IAADC,EAFDjD,EAAMgD,EAANhD,OAAMkD,EAAAF,EACNhB,WAAAA,OAAU,IAAAkB,EAAG,CAAC,EAACA,EAAAtI,EAAA,KAAAkI,GAEfG,EAAApI,EAAA,KAAAiI,EAAA,CAAM,CACJ9C,OAAAA,KAEFtE,EAAmBuH,EAAO,aAAcjB,GAExC,IAAM1F,EAAO0D,EAAOS,gBAAgBZ,EAAIqC,MAAMiB,WAC1CnD,EAAO1D,KAAI,GAAA/T,OAAMyX,EAAO1D,KAAI,KAAA/T,OAAInC,EAAE1D,IAAIsf,GAAY,SAACtgB,EAAOwF,GAAI,SAAAqB,OAAQrB,EAAI,KAAAqB,OAAI7G,EAAK,IAAIod,KAAK,KAAI,KAE5D,OAAxCpD,EAAmBuH,EAAO,OAAQ3G,GAAM2G,CAC1C,CAAC,OAAAlI,EAAA+H,EAAAC,GAAA/H,EAAA8H,EAAA,EAAA7H,IAAA,aAAAvZ,MAED,WACE,MAAO,CACL+e,KAAM,WACNvZ,KAAM4b,EAAef,eAErBC,WAAY,CAAC9G,KAAK8G,YAEtB,IAAC,EAAA/G,IAAA,iBAAAmB,IAED,WACE,MAAO,OACT,GAAC,CAAAnB,IAAA,WAAAvZ,MAED,SAAgBgf,GAedhF,EAAoBgF,EAAU5C,UAAWgF,EAAef,gBANxD,SAAuBC,GACrB,IAAMnB,EAAa,IAAIiC,EAAe,CAAE9C,OAAQ9E,KAAM8G,WAAAA,IAEtD,OAAO,IAAI9G,KAAKuF,KAAK2C,WAAWxC,mBAAmB,CAAEC,WAAAA,GACvD,GAGF,IAAC,CA7CiB,CAASd,GAqDvBa,EAAkB,wBAiBrB,OAAA5F,GATD,SAAA4F,IAES,IADPC,GACM/F,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAJ,CAAC,GADH+F,WAAUjG,EAAA,KAAAgG,GAENC,GACFnF,EAAoBR,KAAM,aAAc2F,GACxCnF,EAAoBR,KAAM,OAAQ2F,EAAWvE,OAE7CZ,EAAoBR,KAAM,OAAQ,GAEtC,GAAC,EAAAD,IAAA,SAAAvZ,MAED,WACE,OAAIwZ,KAAK2F,WACA3F,KAAK2F,WAAWX,SAGlB,EACT,GAAC,CAAAjF,IAAA,oBAAAvZ,MAED,SAAkB2hB,GAEhB,IAAIC,EAAYpI,KAIhB,IAAK,IAAMuB,KAAK4G,EAAM,CACpB,IAAME,EAAOF,EAAK5G,GAElB,GAAkB,aAAd8G,EAAK9C,KACP6C,EAAYA,EAAUC,EAAKrc,WACtB,GAAkB,aAAdqc,EAAK9C,KAAqB,CAAC,IAAD+C,EACnCF,GAAYE,EAAAF,GAAUC,EAAKrc,MAAKsW,MAAAgG,EAAAvD,EAAIsD,EAAKvB,YAC3C,CAEA,IAAKsB,EACH,OAAO,IAEX,CAEA,OAAOA,CACT,IAAC,CAhDqB,GAuDlBG,EAA4B,SAAAC,GAAA,aAQhC,SAAAD,IAES,IADP5C,GACM/F,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAJ,CAAC,GADH+F,WAAU,OAAAjG,EAAA,KAAA6I,GAAA5I,EAAA,KAAA4I,EAAC,CAEL,CAAE5C,WAAAA,IACV,CAAC,OAAA9F,EAAA0I,EAAAC,GAAA1I,EAAAyI,EAAA,CAZ+B,CAAS7C,GAoB3C,SAAS+C,EAA0BlD,GAEjC,IAAMmD,EAAcnD,aAAgBZ,EAAIqC,MAAMC,eAC1CsB,EACA7C,EAGEiD,EAAY,SAAAC,GAAA,sBAAAD,IAAA,OAAAjJ,EAAA,KAAAiJ,GAAAhJ,EAAA,KAAAgJ,EAAA/I,UAAA,QAAAC,EAAA8I,EAAAC,GAAA9I,EAAA6I,EAAA,EAFLpD,EAAKsD,SAAWtD,EAAKsD,SAASnD,mBAAqBgD,GAchE,OAJAlI,EAAoBmI,EAAa/F,UAAW,OAAQ2C,GAEpDX,EAAoBN,SAASqE,EAAcpD,EAAKvZ,MAEzC2c,CACT,CAgHA,OA5GAzd,EAAE4Y,KAAK,CAKLgF,cAAe,CAQbzG,QAAO,WAGL,OAF2BoG,EAA0BzI,KAGvD,GAGF+I,WAAY,CAQV1G,QAAO,WACL,IAAM2G,EAAkBP,EAA0BzI,MAOlD,OALAuG,EAAe0C,SAASD,GACxB9D,EAAmB+D,SAASD,EAAiBhJ,KAAKyF,sBAC9CzF,KAAKgG,UACPJ,EAAmBqD,SAASD,EAAiBhJ,KAAKgG,UAE7CgD,CACT,GASF/B,eAAgB,CAQd5E,QAAO,WACL,IAAM6G,EAAsBT,EAA0BzI,MAYtD,OAVAuG,EAAe0C,SAASC,GAEpBlJ,KAAK2H,uBAAuBhD,EAAIqC,MAAMmC,YACxChC,EAAkB8B,SAASC,GAE7BhE,EAAmB+D,SAASC,EAAqBlJ,KAAKyF,sBAClDzF,KAAKgG,UACPJ,EAAmBqD,SAASC,EAAqBlJ,KAAKgG,UAGjDkD,CACT,GAGFE,aAAc,CAQZ/G,QAAO,WACL,IAAMgH,EAAoBZ,EAA0BzI,MAIpD,OAFA4H,EAAeqB,SAASI,GAEjBA,CACT,KAGD,SAACC,EAAKC,GAMP/G,EAA8BmC,EAAIqC,MAAMuC,GAAW,qBAAsBD,EAAIjH,QAC/E,IAEAnX,EAAE0b,MAAMhC,GACLpE,oBAAoB,qBAAsBkF,GAC1ClF,oBAAoB,+BAAgC+H,GACpD/H,oBAAoB,aAAcqE,GAClCrE,oBAAoB,qBAAsB0E,GAC1C1E,oBAAoB,iBAAkB+F,GACtC/F,oBAAoB,oBAAqB2G,GACzC3G,oBAAoB,iBAAkBoH,GACtCpH,oBAAoB,qBAAsBoF,GAC1Cpf,QAEIoe,CACT,CAxfiD,GAyfnD,E,yBCthBA,IAAM1Z,EAAIoV,EAAQ,QACVY,EAAQZ,EAAQ,QAAhBY,IACA6C,EAAazD,EAAQ,QAArByD,SACRyF,EAGIlJ,EAAQ,QAFVE,EAAmBgJ,EAAnBhJ,oBACAqC,EAAc2G,EAAd3G,eAGI9B,EAAcT,EAAQ,QAgB5B,SAASmJ,EAAsB1f,GAC7B,IAAQ2f,EAAkC3f,EAAlC2f,iBAAkBC,EAAgB5f,EAAhB4f,YAC1B,OAAID,EACKA,EAAiBE,UAAYF,EAAiBE,SAASC,KAQzDF,CACT,CAEA,SAASG,EAAa/f,GACpB,IAAQ2f,EAA0B3f,EAA1B2f,iBAAkB3J,EAAQhW,EAARgW,IAC1B,OAAI2J,EACKA,EAAiBK,IAQnBhK,CACT,CAEA,SAASiK,EAAiCjgB,GACxC,IAAQ2f,EAAqB3f,EAArB2f,iBACR,OAAIA,EACKA,EAAiBO,mBAGnB,EACT,CAEApJ,EAAOC,QAAU,SAAC6D,GAKN,IAADpe,EAAAqZ,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAP,CAAC,EAACsK,EAAA3jB,EAJJ4jB,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAAE,EAAA7jB,EAGZ4d,UAAAA,OAAS,IAAAiG,EAAG,KAAIA,EAEhB,IAAIvH,EAAe8B,EAAK,UAAxB,CAIA5D,EAAY4D,GAEZ,IAAA0F,EAQI1F,EAAIqC,MAPNC,EAAcoD,EAAdpD,eACAkC,EAAUkB,EAAVlB,WACAL,EAAauB,EAAbvB,cACAwB,EAAWD,EAAXC,YACAC,EAASF,EAATE,UACAtC,EAAUoC,EAAVpC,WACAuC,EAAYH,EAAZG,aAGFhK,EAAoBmE,EAAK,SAAW,WAClC,SAAS8F,EAAkB1gB,EAAQqX,GAEjC,IAAMsJ,EAAgBxf,EAAEqc,SAASnG,IAASA,GAASrX,EAAO4gB,OAAS5gB,EAAO8f,KAC1E,OAAOa,EACHA,EAAaE,QAAQ,MAAO,KAC5B7G,EAAS8G,iBA/EnB,SAAuB9gB,GACrB,IAAQ2f,EAA2B3f,EAA3B2f,iBAAkB1d,EAASjC,EAATiC,KAC1B,OAAI0d,EACKA,EAAiBoB,KAQnB9e,CACT,CAmEoC+e,CAAchhB,GAASoa,EACvD,CAQA,SAAS6G,EAAYC,EAAcC,GACjC,IAAInhB,EAAS,KACTwf,EAAW,KAEf,OAAK2B,EAIiB,UAAlBA,EAAS3F,KACJ0B,EAAekE,mBAAmBH,EAAYC,EAAcC,EAASE,QACxEF,EAASG,MACNd,EAAUe,cAAcJ,EAASG,MAAM7jB,KAAI,SAAA6gB,GAAI,OAAI2C,EAAYC,EAAc5C,EAAK,MAIzFkB,EAHsB,WAAlB2B,EAAS3F,KAGFkF,GAFR1gB,EAAWmhB,EAAXnhB,SAEoCmhB,GACZ,WAAlBA,EAAS3F,MAAqB2F,EAASK,MAGpCL,EAASP,OAAS,UAAU/I,MAAM,KAAKgC,KAAK,KAG7CsH,EAAS3F,KAGlBxb,GACFkhB,EAAaO,KAAKzhB,GAGbwf,GAxBE,IAyBX,CAEA,SAASkC,EAAqBC,EAAMC,EAAOpG,EAAMqG,GAAsC,IAAvBC,IAAajM,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,KAAAA,UAAA,GACrEyG,EAAU,GACVC,EAAY,GAElB,SAASwF,EAAoB/L,GAC3B,MAAM,GAAN1S,OAAU0S,EAAG,MAAA1S,OAAKue,GAAave,OAAGwe,EAAgB,GAAK,SACzD,CAEA3gB,EAAE4Y,KAAK5Y,EAAE6gB,KAAKL,IAAO,SAAA3L,GACnB,IAAMwJ,EAAWuC,EAAoB/L,GAC/B+G,EAAa5b,EAAE8gB,UACnBN,EAAK3L,GAAKkM,WACV,SAAAC,GAAS,OAAIlB,EAAY,GAAIkB,EAAU,IAGzC7F,EAAQmF,KAAK,IAAIvD,EAAW,CAC1Bjc,KAAMud,EACNnD,aAAcrG,EACd+G,WAAAA,EACAqF,eAAgBnB,EAAY,GAAIU,EAAK3L,GAAKqM,cAE9C,IAEAlhB,EAAE4Y,KAAK5Y,EAAE6gB,KAAKJ,IAAQ,SAAA5L,GACpB,IAAMwJ,EAAWuC,EAAoB/L,GAC/B+G,EAAa5b,EAAE8gB,UACnBL,EAAM5L,GAAKkM,WACX,SAAAC,GAAS,OAAIlB,EAAY,GAAIkB,EAAU,IAGzC5F,EAAUkF,KAAK,IAAIhB,EAAa,CAC9Bxe,KAAMud,EACNnD,aAAcrG,EACd+G,WAAAA,EACAqF,eAAgBnB,EAAY,GAAIW,EAAM5L,GAAKqM,cAE/C,IAEA5L,EAAoB+E,EAAM,WAAY,CACpCc,QAAAA,EACAC,UAAAA,GAEJ,CASA,SAAS+F,EAAiBtiB,EAAQqX,GAChC,IAAMwK,EAAgBnB,EAAkB1gB,EAAQqX,GAEhD,IAAKuD,EAAIqC,MAAMvD,QAAQmI,GAAgB,CACrC,IAAMX,EAAe,GACfqB,EAAaphB,EAAE8gB,UAAUjiB,EAAOuiB,YAAY,SAAApB,GAAQ,MAAK,CAC7D3B,SAAUyB,EAAYC,EAAcC,GACrC,IAEK3F,EAAO,IAAI4D,EAAW,CAC1Bnd,KAAM4f,EACNW,aAAc9C,EAAsB1f,IAAW,SAC/CgW,IAAK+J,EAAa/f,GAClBuiB,WAAAA,EACAE,wBAAyBxC,EAAiCjgB,KAG5DyW,EAAoB+E,EAAM,SAAUxb,GAEpCmB,EAAE4Y,KAAKmH,EAAcoB,GAErB,IAAMI,EAAgBvL,EAAInX,EAAQ,0BAA2B,MACvD2iB,EAAkBxL,EAAInX,EAAQ,4BAA6B,OAE7D0iB,GAAiBC,IACnBjB,EAAqBgB,EAAeC,EAAiBnH,EAAMqG,GAG7D,IAAMe,EAAezL,EAAInX,EAAQ,8BAA+B,MAE5D4iB,GACFlB,EACEkB,EAAaC,OACbD,EAAaE,SACbtH,EAAK2B,eACL0E,GACA,EAGN,CACF,CA2BA,OAxBA1gB,EAAE4Y,KAAK,CACLgJ,OAAQC,OACRC,QAASC,OACTC,OAAQD,OACRE,SAAU9b,KACV+b,QAASC,QACTC,KAAM,OACL,SAACC,EAAQvhB,GAAI,OAAK,IAAI8c,EAAc,CAAE9c,KAAAA,EAAMuhB,OAAAA,GAAS,IAIxD,IAAIjD,EAAY,CACdte,KAAM,SACNsgB,WAAY,CAAC,IAGfphB,EAAE4Y,KAAKqG,GAAS,SAACpgB,EAAQyjB,GACnBtiB,EAAEqc,SAASiG,GACbnB,EAAiBtiB,EAAQyjB,GAEzBnB,EAAiBtiB,EAErB,IAEOmB,EAAE0b,MAAM,CAAC,GACbpG,oBAAoB,UAAW2J,GAC/B3J,oBAAoB,YAAa2D,GACjC3d,OACL,CAzKoC,GAdpC,CAwLF,C,gIC/PM0E,EAAIoV,EAAQ,QACVyD,EAAazD,EAAQ,QAArByD,SACRU,EAIInE,EAAQ,QAHVE,EAAmBiE,EAAnBjE,oBACA4B,EAAsBqC,EAAtBrC,uBACAI,EAA6BiC,EAA7BjC,8BAGIiL,EAAoB,SACpBC,EAA0B,QAkBhC7M,EAAOC,QAAU,SAAA6D,GACf,IAAIA,EAAIqC,MAAR,CAKA,IAAM2G,EAAa,IAAIzJ,IAcvB1D,EAAoBmE,EAAK,QAAU,WACjC,IAAMqC,EAAQ,IAAIjD,EAElB,SAAS6J,EAAY5hB,EAAMmY,GACzB,GApCmB0J,EAoCEH,EAAN1hB,EAnCR8hB,OAAOD,EAAQtV,UAAYsV,EAoChC,OAAOD,EAjCf,SAAuBG,EAAKF,GAC1B,OAAOE,EAAID,MAAM,GAAID,EAAQtV,OAC/B,CA+B2ByV,CAAchiB,EAAM0hB,GAA0BvJ,GAAW+C,eArCpF,IAAyB2G,EAwCnB,GA3C2C,IA2C3B7hB,EA3CJiiB,QAAQR,GA2CG,CACrB,IAAKE,EAAWjM,IAAI1V,GAAO,CACzB,IACMkiB,EAAYliB,EAAKmiB,OADFV,EACuBzhB,EAAKuM,OAD5BkV,EACoD,GAAG7L,MAAM,KAElF+L,EAAWpJ,IAAIvY,EAAM,IAAIue,EAAU,CAAE2D,UAAAA,IACvC,CAEA,OAAOP,EAAWzM,IAAIlV,EACxB,CAEA,OAAOgb,EAAMvD,QAAQzX,EAAMmY,EAC7B,CAEA,IAMMiK,EAAQ,wBAiBX,OAAAtO,GARD,SAAAsO,EAAA7nB,GAII,IAHFyF,EAAIzF,EAAJyF,KACAud,EAAQhjB,EAARgjB,SACApF,EAAS5d,EAAT4d,UAASzE,EAAA,KAAA0O,GAET5N,EAAoBR,KAAM,OAAQhU,GAClCwU,EAAoBR,KAAM,WAAYuJ,GACtCnH,EAAuBpC,KAAM,QAAQ,kBAAM4N,EAAYrE,EAAUpF,EAAU,GAC7E,GAAC,CAjBW,GA0BR8H,EAAS,wBAiBZ,OAAAnM,GARD,SAAAmM,EAAA7G,GAII,IAHFpZ,EAAIoZ,EAAJpZ,KACAud,EAAQnE,EAARmE,SACApF,EAASiB,EAATjB,UAASzE,EAAA,KAAAuM,GAETzL,EAAoBR,KAAM,OAAQhU,GAClCwU,EAAoBR,KAAM,WAAYuJ,GACtCnH,EAAuBpC,KAAM,QAAQ,kBAAM4N,EAAYrE,EAAUpF,EAAU,GAC7E,GAAC,CAjBY,GA0BTkK,EAAI,wBAeP,OAAAvO,GAPD,SAAAuO,EAAAvI,GAEI,IADF9Z,EAAI8Z,EAAJ9Z,KAAI0T,EAAA,KAAA2O,GAEJ7N,EAAoBR,KAAM,OAAQhU,GAClCwU,EAAoBR,KAAM,YAAa+D,EAASuK,aAAatiB,IAC7DwU,EAAoBR,KAAM,YAAa+D,EAASwK,aAAaviB,IAC7Dgb,EAAM1C,SAAStE,KACjB,GAAC,CAfO,GAuBJ8I,EAAa,SAAA0F,GAAA,aAQjB,SAAA1F,EAAArC,GAGI,IAADpB,EAFDrZ,EAAIya,EAAJza,KACAuhB,EAAM9G,EAAN8G,OAG4C,OAHtC7N,EAAA,KAAAoJ,GAENzD,EAAA1F,EAAA,KAAAmJ,EAAA,CAAM,CAAE9c,KAAAA,KACRwU,EAAmB6E,EAAO,SAAUkI,GAAQlI,CAC9C,CAAC,OAAAxF,EAAAiJ,EAAA0F,GAAA1O,EAAAgJ,EAAA,CAdgB,CAASuF,GAuBtB9D,EAAS,SAAAkE,GAAA,aAQb,SAAAlE,EAAAlD,GAEI,IAADtB,EADDmI,EAAS7G,EAAT6G,UAOqG,OAP5FxO,EAAA,KAAA6K,GAETxE,EAAApG,EAAA,KAAA4K,EAAA,CAAM,CACJve,KAAMue,EAAUe,cAAc4C,MAGhC1N,EAAmBuF,EAAO,YAAamI,GACvC1N,EAAmBuF,EAAO,QAASmI,EAAU1mB,KAAI,SAAA+hB,GAAQ,OAAIqE,EAAYrE,EAAUxD,EAAK5B,UAAU,KAAG4B,CACvG,CAEA,OAAAlG,EAAA0K,EAAAkE,GAAA3O,EAAAyK,EAAA,OAAAxK,IAAA,gBAAAvZ,MAKA,SAAqB0nB,GAAY,IAADxH,EAAA,KAExBgI,EAAcR,EACjB1mB,KAAI,SAAAwE,GAAI,OAAIgb,EAAM2H,qBAAqB3iB,EAAM0a,EAAKvC,UAAU,IAC5DyK,OAEH,MAAM,GAANvhB,OAAUogB,EAAiB,KAAApgB,OAAIqhB,EAAY9K,KAAK,KAAI,IACtD,IAAC,CA/BY,CAASyK,GA2CxB,SAASQ,EAAkBvC,GACzB,IAAQnI,EAAcnE,KAAdmE,UAER,OAAOjZ,EAAE8gB,UAAUM,GAAY,SAAAxE,EAE5B9b,GAAI,IADLud,EAAQzB,EAARyB,SAAQ,OACE,IAAI6E,EAAS,CACvBpiB,KAAAA,EACAud,SAAAA,EACApF,UAAAA,GACA,GACJ,CAEA,IAOM4E,EAAU,SAAA+F,GAAA,aAUd,SAAA/F,EAAAgG,GAKI,IAADzH,EAJDtb,EAAI+iB,EAAJ/iB,KACAsgB,EAAUyC,EAAVzC,WAAU0C,EAAAD,EACVvC,wBAAAA,OAAuB,IAAAwC,EAAG,GAAEA,EAC5BzC,EAAYwC,EAAZxC,aAUC,OAVW7M,EAAA,KAAAqJ,GAEZzB,EAAA3H,EAAA,KAAAoJ,EAAA,CAAM,CAAE/c,KAAAA,KAERwU,EAAmB8G,EAAO,aAAcuH,EAAkB/L,KAAIwE,EAAOgF,IACrE9L,EAAmB8G,EAAO,0BAA2BkF,EAAwBsB,SAC7E1L,EAAsBkF,EAAO,wBAAwB,kBAAMpc,EAAE+jB,KAAK3H,EAAKgF,YAAY,SAAChH,EAAU4J,GAAY,OAAKhkB,EAAEikB,SAAS7H,EAAKkF,wBAAyB0C,EAAa,GAAC,IAClK3C,IACF/L,EAAmB8G,EAAO,eAAgBiF,GAC1CnK,EAAsBkF,EAAO,YAAY,kBAAMsG,EAAYtG,EAAKiF,aAAcjF,EAAKnD,UAAU,KAC9FmD,CACH,CAAC,OAAAzH,EAAAkJ,EAAA+F,GAAAhP,EAAAiJ,EAAA,EAAAhJ,IAAA,gBAAAvZ,MAED,SAAc8lB,GAAa,IAAD8C,EACxBlkB,EAAEmkB,OAAOrP,KAAKsM,WAAYuC,EAAkB/L,KAAK9C,KAAMsM,KAEvD8C,EAAApP,KAAKwM,yBAAwBhB,KAAIlJ,MAAA8M,EAAArK,EAAI7Z,EAAE6gB,KAAKO,IAC9C,GAAC,CAAAvM,IAAA,0BAAAvZ,MAED,SAAwB8lB,GACtBtM,KAAKsP,cAAchD,EACrB,IAAC,CAnCa,CAAS+B,GA0CnB/D,EAAW,SAAAiF,GAAA,sBAAAjF,IAAA,OAAA5K,EAAA,KAAA4K,GAAA3K,EAAA,KAAA2K,EAAA1K,UAAA,QAAAC,EAAAyK,EAAAiF,GAAAzP,EAAAwK,EAAA,EAASvB,GAWpBI,EAAU,SAAAqG,GAAA,aAUd,SAAArG,EAAAsG,GAMI,IAAD1H,EALD/b,EAAIyjB,EAAJzjB,KACAsgB,EAAUmD,EAAVnD,WACAE,EAAuBiD,EAAvBjD,wBACAD,EAAYkD,EAAZlD,aACAxM,EAAG0P,EAAH1P,IASA,GATGL,EAAA,KAAAyJ,GAEHpB,EAAApI,EAAA,KAAAwJ,EAAA,CAAM,CACJnd,KAAAA,EACAsgB,WAAAA,EACAE,wBAAAA,EACAD,aAAAA,KAGExM,EACFS,EAAmBuH,EAAO,MAAOhI,GACjCS,EAAmBuH,EAAO,cAAeA,EAAKuE,WAAWvE,EAAKhI,UACzD,KAAIwM,EAKT,MAAM,IAAI5I,MAAM,oDAHhBvB,EAAsB2F,EAAO,OAAO,kBAAMA,EAAKc,SAAS9I,GAAG,IAC3DqC,EAAsB2F,EAAO,eAAe,kBAAMA,EAAKc,SAAS6G,WAAW,GAG7E,CAAC,OAAA3H,CACH,CAAC,OAAAlI,EAAAsJ,EAAAqG,GAAA1P,EAAAqJ,EAAA,CAlCa,CAASJ,GA2CnB9B,EAAc,SAAA0I,GAAA,aASlB,SAAA1I,EAAA2I,GAII,IAADC,EAHDvD,EAAUsD,EAAVtD,WACAC,EAAYqD,EAAZrD,aACAuD,EAAeF,EAAfE,gBAQqG,OARtFpQ,EAAA,KAAAuH,GAEf4I,EAAAlQ,EAAA,KAAAsH,EAAA,CAAM,CACJjb,KAAMib,EAAekE,mBAAmB2E,GACxCxD,WAAAA,EACAC,aAAAA,KAEF/L,EAAmBqP,EAAO,kBAAmBC,GAC7C1N,EAAsByN,EAAO,eAAe,kBAAMjC,EAAYiC,EAAKC,gBAAiBD,EAAK1L,UAAU,IAAE0L,CACvG,CAEA,OAAAhQ,EAAAoH,EAAA0I,GAAA7P,EAAAmH,EAAA,OAAAlH,IAAA,qBAAAvZ,MAKA,SAA0B+iB,GACxB,MAAM,GAANlc,OAAUkc,GAAQlc,OAAGqgB,EACvB,IAAC,CA9BiB,CAAS3E,GA0D7B,SAASgH,EAAkBjJ,GACzB,IAAQ3C,EAAcnE,KAAdmE,UAER,OAAOjZ,EAAE8gB,UACPlF,GACA,SAAAkJ,EAAehkB,GAAI,IAAhBud,EAAQyG,EAARzG,SAAQ,OAAa,IAAI0C,EAAU,CAAEjgB,KAAAA,EAAMmY,UAAAA,EAAWoF,SAAAA,GAAW,GAExE,CAlBA/G,EAA8B6L,EAAM,kBATpC,WACE,OAAO,IAAIpH,EAAe,CAAE6I,gBAAiB9P,KAAKhU,MACpD,IA2BA,IAMMod,EAAY,SAAA6G,GAAA,aAShB,SAAA7G,EAAA8G,GAKI,IAADC,EAJDnkB,EAAIkkB,EAAJlkB,KACAoa,EAAY8J,EAAZ9J,aACAU,EAAUoJ,EAAVpJ,WACAqF,EAAc+D,EAAd/D,eAO8F,OAPhFzM,EAAA,KAAA0J,GAEd+G,EAAAxQ,EAAA,KAAAyJ,EAAA,CAAM,CAAEpd,KAAAA,KAERwU,EAAmB2P,EAAO,eAAgB/J,GAC1C5F,EAAmB2P,EAAO,aAAcJ,EAAkBjN,KAAIqN,EAAOrJ,IACrEtG,EAAmB2P,EAAO,iBAAkBhE,GAC5C/J,EAAsB+N,EAAO,cAAc,kBAAMvC,EAAYzB,EAAgBgE,EAAKhM,UAAU,IAAEgM,CAChG,CAAC,OAAAtQ,EAAAuJ,EAAA6G,GAAAnQ,EAAAsJ,EAAA,CArBe,CAASiF,GA8BrBpG,EAAU,SAAAmI,GAAA,aASd,SAAAnI,EAAAoI,GAKI,IAJFrkB,EAAIqkB,EAAJrkB,KACAoa,EAAYiK,EAAZjK,aACAU,EAAUuJ,EAAVvJ,WACAqF,EAAckE,EAAdlE,eAAc,OAAAzM,EAAA,KAAAuI,GAAAtI,EAAA,KAAAsI,EAAC,CAET,CACJjc,KAAAA,EACAoa,aAAAA,EACAU,WAAAA,EACAqF,eAAAA,IAEJ,CAAC,OAAAtM,EAAAoI,EAAAmI,GAAAtQ,EAAAmI,EAAA,CArBa,CAASmB,GA8BnBoB,EAAY,SAAA8F,GAAA,aAShB,SAAA9F,EAAA+F,GAKI,IAJFvkB,EAAIukB,EAAJvkB,KACAoa,EAAYmK,EAAZnK,aACAU,EAAUyJ,EAAVzJ,WACAqF,EAAcoE,EAAdpE,eAAc,OAAAzM,EAAA,KAAA8K,GAAA7K,EAAA,KAAA6K,EAAC,CAET,CACJxe,KAAAA,EACAoa,aAAAA,EACAU,WAAAA,EACAqF,eAAAA,IAEJ,CAAC,OAAAtM,EAAA2K,EAAA8F,GAAAxQ,EAAA0K,EAAA,CArBe,CAASpB,GAuC3B,OAbA5I,EAAoBwG,EAAO,WAAYoH,GACvC5N,EAAoBwG,EAAO,YAAaiF,GACxCzL,EAAoBwG,EAAO,OAAQqH,GACnC7N,EAAoBwG,EAAO,gBAAiB8B,GAC5CtI,EAAoBwG,EAAO,YAAauD,GACxC/J,EAAoBwG,EAAO,aAAc+B,GACzCvI,EAAoBwG,EAAO,cAAesD,GAC1C9J,EAAoBwG,EAAO,aAAcmC,GACzC3I,EAAoBwG,EAAO,iBAAkBC,GAC7CzG,EAAoBwG,EAAO,eAAgBoC,GAC3C5I,EAAoBwG,EAAO,aAAciB,GACzCzH,EAAoBwG,EAAO,eAAgBwD,GAEpCxD,CACT,CAzcmC,GAjBnC,CA2dF,C,yBC3fA,IAAM9b,EAAIoV,EAAQ,QAoBlBO,EAAOC,QAAU,CACf8C,KAnBF,SAAc4M,GAAkB,IAAD,IAAAC,EAAA7Q,UAAArH,OAAPmY,EAAK,IAAAC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAALF,EAAKE,EAAA,GAAAhR,UAAAgR,GAC3B,OAAOF,EAAMpN,QAAO,SAAC9W,EAAMqkB,GACzB,GAAI3lB,EAAE4lB,QAAQD,GACZ,OAAOrkB,EAET,IAAMukB,EAAS,MAAMC,KAAKxkB,GACpBykB,EAAS,MAAMD,KAAKH,GAE1B,OAAKE,GAAWE,EAGZF,GAAUE,EACLzkB,EAAOqkB,EAAKK,UAAU,GAExB1kB,EAAOqkB,EALN,GAANxjB,OAAUb,EAAI,KAAAa,OAAIwjB,EAMtB,GAAGL,EACL,E,gDClBMtlB,EAAIoV,EAAQ,QACZ6Q,EAAc7Q,EAAQ,QAEpB8Q,EAAgB9Q,EAAQ,QAAxB8Q,YA0BRvQ,EAAOC,QAAU,CACfF,oBAvBF,SAA6ByQ,EAAWC,GAA2B,IAAhBC,IAAM3R,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,KAAAA,UAAA,GAC/C4R,EAAgBH,EAAhBG,YACFC,EAAgBvmB,EAAEwmB,KAAKL,EAAW,CAAC,UAAW,cAAe,OAAQ,YACvEpa,EAAMzO,EAAA,CACR4H,IANsB,GAOtBuhB,OAAO,EACPC,KAAMJ,GACHC,GAGAF,IAEHta,EAAS/L,EAAEwmB,KAAKza,EAAQ,CAAC,SAAU,UAAW,QAAS,OAAQ,SAGjE,IAAM4a,EAAeT,EAAYna,EAAQqa,GACnCQ,EAAgB5mB,EAAEwmB,KAAKG,GAAc,SAAAE,GAAC,OAAI7mB,EAAE8mB,OAAOD,IAAM7mB,EAAE6W,YAAYgQ,EAAE,IAG/E,OAFqB7mB,EAAE4lB,QAAQgB,GAAiB,GAAE,IAAAzkB,OAAO8jB,EAAY9X,UAAUyY,GAGjF,E,kIC3BM5mB,EAAIoV,EAAQ,QAGlB,SAAS2R,EAAaC,GAKpB,OAAIhnB,EAAE4lB,QAAQoB,GACL,CAAC,EAUH,CACLC,SAPEjnB,EAAEuW,QAAQyQ,GACDhnB,EAAE1D,IAAI0qB,GAAS,SAAA1rB,GAAK,OAVjC,SAA6BA,GAC3B,OAAO0E,EAAE1D,IAAIhB,GAAO,SAAC4rB,EAAG5E,GAAK,OAAgB,IAAVA,EAAc4E,EAAEC,cAAgBD,CAAC,GACtE,CAQqCE,CAAoB9rB,GAAOod,KAAK,IAAI,IAAEA,KAAK,KAEnE1Y,EAAE1D,IAAI0qB,GAAS,SAAC1rB,EAAOuZ,GAAG,SAAA1S,OAAQ0S,EAAG,KAAA1S,OAAI7G,EAAQ,EAAI,MAAQ,OAAM,IAAIod,KAAK,KAM3F,CA+FA/C,EAAOC,QAAU,CACfsQ,YAzBF,SAAqBna,EAAQsb,GAC3B,IACEL,EAQEjb,EARFib,QACAM,EAOEvb,EAPFub,OACApiB,EAME6G,EANF7G,IACAwhB,EAKE3a,EALF2a,KACAD,EAIE1a,EAJF0a,MACAc,EAGExb,EAHFwb,OACQC,EAENzb,EAFFA,OACG0b,EAActqB,EACf4O,EAAM3O,GAEV,OAAAE,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,GACKypB,EAAaC,IAlFpB,SAAqBM,GACnB,OAAItnB,EAAE4lB,QAAQ0B,IAAWtnB,EAAE4lB,QAAQ0B,EAAOI,OACjC,CAAC,EAGH,CACLC,QAASL,EAAOI,MAEpB,CA2EOE,CAAYN,IAzEnB,SAAkBpiB,GAChB,OAAKA,EAIE,CACL2iB,KAAM3iB,GAJC,CAAC,CAMZ,CAkEO4iB,CAAS5iB,IAhEhB,SAAmBwhB,GACjB,OAAKA,EAIE,CACLqB,MAAOrB,GAJA,CAAC,CAMZ,CAyDOsB,CAAUtB,IAvDjB,SAAoBD,GAClB,YAAcvlB,IAAVulB,EACK,CAAC,EAGH,CACLwB,OAAQxB,EAEZ,CAgDOyB,CAAWzB,IA9ClB,SAAqBc,EAAQY,GAC3B,IAAKZ,EAAQ,MAAO,CAAC,EACrB,IAAMa,EAAS,CAAC,EAER9G,GADY6G,EAAS9N,KAAKoC,YAAc0L,EAAS9N,KAAKoC,YAAc0L,EAAS9N,MAC7EiH,wBACF+G,EAAUd,EAAOD,QAAO,SAAAnK,GAAI,OAAKnd,EAAEikB,SAAS3C,EAAyBnE,EAAK,IAAEzE,KAAK,KACjF4P,EAAUf,EAAOD,QAAO,SAAAnK,GAAI,OAAInd,EAAEikB,SAAS3C,EAAyBnE,EAAK,IAAEzE,KAAK,KAUtF,OARI2P,EAAQhb,SACV+a,EAAOC,QAAUA,GAGfC,EAAQjb,SACV+a,EAAOE,QAAUA,GAGZF,CACT,CA8BOG,CAAYhB,EAAQF,IA5B3B,SAA2Btb,GACzB,OAAKA,EAIE,CACLyc,QAASzc,GAJF,CAAC,CAMZ,CAqBO0c,CAAkBjB,IAClBC,EAEP,E,wBCnHA,IAAAiB,EAGItT,EAAQ,QAFVuT,EAAQD,EAARC,SACAC,EAAYF,EAAZE,aAGMC,EAAazT,EAAQ,QAArByT,SASRlT,EAAOC,QAAU,CACfL,aARF,SAAsBuT,EAAO5S,EAAM6S,EAAc5C,GAC/C,IAAM6C,EAAYJ,IACVK,EAAeJ,EAASC,EAAO5S,GAA/B+S,WAER,OAAON,EAASK,EAAWC,EAAY9C,EACzC,E,oECZAuC,EAAiCtT,EAAQ,QAAjCnK,EAAWyd,EAAXzd,YAAa3L,EAAOopB,EAAPppB,QACrBia,EAAqDnE,EAAQ,QAArDwT,EAAYrP,EAAZqP,aAAcM,EAAa3P,EAAb2P,cAAeC,EAAW5P,EAAX4P,YAE7BN,EAAazT,EAAQ,QAArByT,SAoDRlT,EAAOC,QAAU,CACfJ,mBAnDF,SAA4BsT,EAAO5S,EAAMiQ,EAAWiD,GAClD,IAAMJ,EAAYJ,IACVS,EAAcR,EAASC,EAAO5S,GAA9BmT,UAGCC,EAILD,EAJFE,MACUC,EAGRH,EAHFI,SACSC,EAEPL,EAFFM,QACKC,EACHP,EADFQ,IAIIC,EAAmBxqB,GAAQ,kBAAAhC,EAAC,CAChCysB,eAAczsB,EAAA,GACT6oB,IAEFiD,EAAM,GACP,CAACA,EAAQjD,IAEb6D,EAAwBd,EAAcF,EAAWM,EAAWQ,GAAiBG,EAAA7f,EAAA4f,EAAA,GAAtE3tB,EAAI4tB,EAAA,GAAEC,EAAOD,EAAA,GAEdE,EAAWhB,EAAYH,EAAWQ,EAAcJ,GAChDgB,EAAYjB,EAAYH,EAAWU,EAAaN,GAChDiB,EAAWlB,EAAYH,EAAWY,EAASR,GAE3CkB,EAASrf,GAAY,SAACsf,GAAsB,IAAD,IAAAhF,EAAA7Q,UAAArH,OAATnQ,EAAI,IAAAuoB,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJxoB,EAAIwoB,EAAA,GAAAhR,UAAAgR,GAC1CyE,EAAQ/S,WAAC,EAAD,CAAC+O,EAAWoE,GAAOpoB,OAAKjF,GAClC,GAAG,CAACitB,EAAUhE,IAGRwD,EAAU1e,GAAY,SAACsf,GAAsB,IAAD,IAAAC,EAAA9V,UAAArH,OAATnQ,EAAI,IAAAuoB,MAAA+E,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvtB,EAAIutB,EAAA,GAAA/V,UAAA+V,GAC3CL,EAAShT,WAAC,EAAD,CAAC+O,EAAWoE,GAAOpoB,OAAKjF,GACnC,GAAG,CAACktB,EAAWjE,IAET/X,EAASnD,GAAY,SAACsf,GAAsB,IAAD,IAAAG,EAAAhW,UAAArH,OAATnQ,EAAI,IAAAuoB,MAAAiF,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJztB,EAAIytB,EAAA,GAAAjW,UAAAiW,GAC1CN,EAAQjT,WAAC,EAAD,CAAC+O,EAAWoE,GAAOpoB,OAAKjF,GAClC,GAAG,CAACmtB,EAAUlE,IAId,MAAO,CAAC9pB,EAAM,CACZuuB,SAHuCV,EAAjCU,SAINC,QAJuCX,EAAvBW,QAKhBC,UALuCZ,EAAdY,UAMzB1c,OAAAA,EACAkc,OAAAA,EACAX,QAAAA,GAEJ,E,iDCrDQ1e,EAAgBmK,EAAQ,QAAxBnK,YAERsO,EAAgDnE,EAAQ,QAAhDwT,EAAYrP,EAAZqP,aAAcD,EAAQpP,EAARoP,SAAUQ,EAAW5P,EAAX4P,YACxBN,EAAazT,EAAQ,QAArByT,SA4BRlT,EAAOC,QAAU,CACfH,eA3BF,SAAwBqT,EAAO5S,EAAMiQ,GAAyB,IAAdiD,EAAM1U,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAG,CAAC,EAClDsU,EAAYJ,IACVmC,EAAgBlC,EAASC,EAAO5S,GAAhC6U,YAGCzB,EAGLyB,EAHFxB,MACUC,EAERuB,EAFFtB,SACSC,EACPqB,EADFpB,QAGFqB,EAAsBrC,EAASK,EAAWM,EAAWnD,EAAWiD,GAAO6B,EAAA7gB,EAAA4gB,EAAA,GAAhE3uB,EAAI4uB,EAAA,GAAEC,EAAKD,EAAA,GACZd,EAAWhB,EAAYH,EAAWQ,EAAcJ,GAChDgB,EAAYjB,EAAYH,EAAWU,EAAaN,GAEhDkB,EAASrf,GAAY,SAACsf,GAAsB,IAAD,IAAAhF,EAAA7Q,UAAArH,OAATnQ,EAAI,IAAAuoB,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJxoB,EAAIwoB,EAAA,GAAAhR,UAAAgR,GAC1CyE,EAAQ/S,WAAC,EAAD,CAAC+O,EAAWoE,GAAOpoB,OAAKjF,GAClC,GAAG,CAACitB,EAAUhE,IAGRwD,EAAU1e,GAAY,SAACsf,GAAsB,IAAD,IAAAC,EAAA9V,UAAArH,OAATnQ,EAAI,IAAAuoB,MAAA+E,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvtB,EAAIutB,EAAA,GAAA/V,UAAA+V,GAC3CL,EAAShT,WAAC,EAAD,CAAC+O,EAAWoE,GAAOpoB,OAAKjF,GACnC,GAAG,CAACktB,EAAWjE,IAEf,MAAO,CAAC,CAAE9pB,KAAAA,EAAM6uB,MAAAA,GAAS,CAAEZ,OAAAA,EAAQX,QAAAA,GACrC,E,yBC7BA,IAAQrqB,EAAY8V,EAAQ,QAApB9V,QAeRqW,EAAOC,QAAU,CACfiT,SAdF,SAAkBC,EAAO5S,GAEvB,OAAO5W,GAAQ,WACb,IAAM6rB,EAAgBrC,EAAM5S,GAE5B,OAAKiV,GACI,CAAC,CAAED,MAAM,kBAAD/oB,OAAoB+T,EAAI,eAI3C,GAAG,CAACA,EAAM4S,GACZ,E,89CCXasC,EAAqB9oB,EAAAA,gB,YCK5B+oB,EAAyB,GACzBC,EAAiB,GACjBC,EAAyB,CAAEC,qBAAqB,GAkDtD,SAASC,EAAcC,EAAaC,GAKlC,IADA,IAAMC,EAAW,GACVA,EAASve,OAASse,GAAW,CAClC,IAAME,EAAUH,EAAYI,gBAC5BF,EAAStL,KAAKuL,EAChB,EAxDF,SAAyBH,EAAaE,GAIpC,IAHA,IAAMG,GAAelS,EAAAA,EAAAA,GAChB+R,GACHI,EAAA,WAEA,IAAMC,EAAMF,EAAgBG,QAG1BC,EAMEF,EANFE,gBACAC,EAKEH,EALFG,KACAjG,EAIE8F,EAJF9F,UACA9pB,EAGE4vB,EAHF5vB,KACAnB,EAEE+wB,EAFF/wB,GACAmxB,EACEJ,EADFI,cAGFJ,EAAIK,kBAAgBhvB,EAAAA,EAAAA,GAAA,GACfiuB,GAGL,IAAQgB,EAAqBH,EAArBG,iBAENC,EACEL,EADFK,KAAMC,EACJN,EADIM,aAAcC,EAClBP,EADkBO,gBAAiBC,EACnCR,EADmCQ,iBAGjCC,EAAMH,EAAa,CAAEN,gBAAAA,EAAiBhG,UAAAA,EAAW9pB,KAAAA,IACjDwwB,EAASH,GAAmBA,EAAgB,CAAEP,gBAAAA,EAAiBhG,UAAAA,EAAW9pB,KAAAA,IAC1EywB,EAAUH,GAAoBA,EAAiB,CAAER,gBAAAA,EAAiBhG,UAAAA,EAAW9pB,KAAAA,IAEjEqvB,EAAYqB,aAC5B7xB,EACAkxB,EACAjG,EACA8F,EAAIK,iBACJ,CAAED,cAAAA,GAGJW,CAAUJ,EAAKJ,EAAMK,EAAQC,GAASG,QAAQ,CAC5CC,WAAY,SAAAC,GACVZ,EAAiBa,cAAc1B,EAAayB,EAAUlB,EACxD,EACAoB,QAAS,SAAAnC,GACPqB,EAAiBe,WAAW5B,EAAaO,EAAKf,EAChD,GAEJ,EAzCOa,EAAgB1e,OAAS,GAAC2e,GA0CnC,CAYEuB,CAAgB7B,EAAaE,EAC/B,CAEO,SAAS4B,EAA6B9B,GAE3C,IAAM+B,GAAQC,EAAAA,EAAAA,QAAO,MAIrBhC,EAAYiC,WAAU,WACfF,EAAMG,SACTC,aAAaJ,EAAMG,SAGjBlC,EAAYoC,gBAAkBzC,EAEhCI,EAAcC,EAAaL,GAG3BoC,EAAMG,QAAUG,YAAW,WACzBtC,EAAcC,EAAaA,EAAYoC,eACzC,GAAGxC,EAEP,GACF,CAGO,IAAM0C,GAAc1sB,EAAAA,EAAAA,OAAK,SAAAC,GAC9B,IACEmqB,EAGEnqB,EAHFmqB,YACAuC,EAEE1sB,EAFF0sB,aACAnyB,EACEyF,EADFzF,SAKF,OAHA0xB,EAA6B9B,GAC7B1rB,IAAAA,KAAOiuB,GAAc,SAAAC,GAAG,OAAIV,EAA6BU,EAAI,KAG3DtyB,EAAAA,EAAAA,KAACwvB,EAAmB+C,SAAQ,CAAC7yB,MAAO,CAACowB,EAAauC,GAAcnyB,SAC7DA,GAGP,IAYAkyB,EAAYhxB,aAAe,CACzBixB,aAAc,M,0GCvHHG,EAAO,WAMlB,OAAAxZ,EAAAA,EAAAA,IALA,SAAAwZ,KAAc5Z,EAAAA,EAAAA,GAAA,KAAA4Z,GAEZtZ,KAAKuZ,UAAY,IAAIC,GACvB,GAEA,EAAAzZ,IAAA,YAAAvZ,MAKA,SAAUizB,GACR,KAAMA,aAAoB7zB,QACxB,MAAM,IAAI+d,MAAM,oBAElB3D,KAAKuZ,UAAUxE,IAAI0E,EACrB,GAEA,CAAA1Z,IAAA,cAAAvZ,MAKA,SAAYizB,GACVzZ,KAAKuZ,UAAUG,OAAOD,EACxB,GAEA,CAAA1Z,IAAA,SAAAvZ,MAOA,SAAOmzB,GAAiB,IAAC,IAADtU,EAAA,KAAAoL,EAAA7Q,UAAArH,OAANqhB,EAAI,IAAAjJ,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJgJ,EAAIhJ,EAAA,GAAAhR,UAAAgR,GACpB5Q,KAAKuZ,UAAUM,SAAQ,SAAAJ,GACW,oBAArBA,EAASE,IAClBF,EAASE,GAAOrX,MAAhBmX,EAAQ,CAASpU,GAAIhY,OAAKusB,GAE9B,GACF,IAAC,CAxCiB,GCDPE,EAAO,SAAAC,GAClB,SAAAD,EAAY/Z,GAAM,IAADsF,EAyBQ,OAzBR3F,EAAAA,EAAAA,GAAA,KAAAoa,IACfzU,GAAA1F,EAAAA,EAAAA,GAAA,KAAAma,IACK/Z,IAAMA,EACXsF,EAAK2U,OAAS,GACd3U,EAAK4U,OAAS,CACZC,uBAAmB9tB,EACnB+tB,oBAAqB9oB,KAAKG,MAC1B4kB,WAAOhqB,GAGTiZ,EAAK+U,SAAW/U,EAAK+U,SAASC,KAAIhV,GAClCA,EAAKmG,KAAOnG,EAAKmG,KAAK6O,KAAIhV,GAC1BA,EAAK0P,IAAM1P,EAAK0P,IAAIsF,KAAIhV,GACxBA,EAAKqU,OAASrU,EAAKqU,OAAOW,KAAIhV,GAC9BA,EAAKiV,SAAWjV,EAAKiV,SAASD,KAAIhV,GAClCA,EAAKkV,aAAelV,EAAKkV,aAAaF,KAAIhV,GAC1CA,EAAKkT,QAAUlT,EAAKkT,QAAQ8B,KAAIhV,GAChCA,EAAKmV,WAAanV,EAAKmV,WAAWH,KAAIhV,GACtCA,EAAKoV,kBAAoBpV,EAAKoV,kBAAkBJ,KAAIhV,GACpDA,EAAKqV,kBAAoBrV,EAAKqV,kBAAkBL,KAAIhV,GACpDA,EAAKsV,MAAQtV,EAAKsV,MAAMN,KAAIhV,GAG5BA,EAAK9U,OAAS,CAAC,EAEf8U,EAAKuV,aAAe,GAAGvV,CACzB,CAAC,OAAAxF,EAAAA,EAAAA,GAAAia,EAAAC,IAAAja,EAAAA,EAAAA,GAAAga,EAAA,EAAA/Z,IAAA,oBAAAvZ,MAED,SAAiBD,GAEb,IADFgxB,EAAahxB,EAAbgxB,cAEAvX,KAAK4a,aAAe1vB,IAAAA,KAAO,GAADmC,QAAA0X,EAAAA,EAAAA,GAAK/E,KAAK4a,cAAY,CAAErD,KAClDvX,KAAK6a,gBACP,GAAC,CAAA9a,IAAA,sBAAAvZ,MAED,SAAmB4e,GAEf,IADFmS,EAAanS,EAAbmS,cAEAvX,KAAK4a,aAAe1vB,IAAAA,QAAU8U,KAAK4a,aAAcrD,GACjDvX,KAAK6a,gBACP,GAAC,CAAA9a,IAAA,iBAAAvZ,MAED,WACMs0B,OAAOC,yBAETC,EAD4BF,OAAOC,uBAA3BC,iBACQ,CACdC,WAAYjb,KAAK4a,aACjB7a,IAAKC,KAAKD,IACVia,OAAQha,KAAKga,QAGnB,GAAC,CAAAja,IAAA,WAAAvZ,MAED,SAASJ,GACP,OAAO4Z,KAAKga,OAAOI,SAASh0B,EAC9B,GAAC,CAAA2Z,IAAA,OAAAvZ,MAED,SAAKJ,GAGH,OAFY4Z,KAAKga,OAAOxO,KAAKplB,EAG/B,GAAC,CAAA2Z,IAAA,MAAAvZ,MAED,SAAIJ,GAEE4Z,KAAKoa,SAASh0B,IAIlB4Z,KAAKwL,KAAKplB,EACZ,GAAC,CAAA2Z,IAAA,SAAAvZ,MAED,SAAO00B,GACDhwB,IAAAA,aAAe8U,KAAKga,OAAQkB,GAAK3iB,OAAS,IAC5CyH,KAAKga,OAAS9uB,IAAAA,WAAa8U,KAAKga,OAAQkB,GAE5C,GAAC,CAAAnb,IAAA,UAAAvZ,MAED,SAAQ4vB,GACNpW,KAAKia,OAAO7D,MAAQA,EAAM,QAAA3F,EAAA7Q,UAAArH,OADVqhB,EAAI,IAAAjJ,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJgJ,EAAIhJ,EAAA,GAAAhR,UAAAgR,GAEpB5Q,KAAKmb,OAAM7Y,MAAXtC,KAAI,CAAQ,UAAWoW,GAAK/oB,OAAKusB,GACnC,GAAC,CAAA7Z,IAAA,aAAAvZ,MAED,WACEwZ,KAAKuY,aAAQnsB,EACf,GAIA,CAAA2T,IAAA,QAAAvZ,MACA,WACEwZ,KAAKga,OAAS,GACdha,KAAKwa,YACP,GAAC,CAAAza,IAAA,QAAAvZ,MAED,SAAM00B,GACJlb,KAAKga,OAASkB,EACdlb,KAAKmb,OAAO,SAAUD,EACxB,GAAC,CAAAnb,IAAA,eAAAvZ,MAED,SAAa40B,GACXpb,KAAKia,QAAMzxB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACNwX,KAAKia,QACLmB,EAEP,GAAC,CAAArb,IAAA,WAAAvZ,MAED,SAAS60B,EAAYtE,GACf7rB,IAAAA,aAAe8U,KAAKga,OAAQqB,GAAY9iB,OAAS,GACnDyH,KAAKmb,OAAO,SAAUE,EAAYtE,EAEtC,GAAC,CAAAhX,IAAA,oBAAAvZ,MAED,SAAkB00B,GACXhwB,IAAAA,QAAUgwB,IACblb,KAAKmb,OAAO,oBAAqBD,EAErC,GAAC,CAAAnb,IAAA,oBAAAvZ,MAED,SAAkB00B,GACZhwB,IAAAA,aAAe8U,KAAKga,OAAQkB,GAAK3iB,OAAS,IAC5CyH,KAAK0Z,OAAOwB,GACZlb,KAAKmb,OAAO,SAAUnb,KAAKga,QAE/B,GAAC,CAAAja,IAAA,SAAAvZ,MAED,WACE,MAAQ,CACNuZ,IAAKC,KAAKD,IACVia,OAAQha,KAAKga,OACbC,OAAQja,KAAKia,OAEjB,IAAC,CArIiB,CAASX,GCGhBgC,EAAQ,WAQlB,OAAAxb,EAAAA,EAAAA,IAPD,SAAAwb,KAAc5b,EAAAA,EAAAA,GAAA,KAAA4b,GACZtb,KAAKub,SAAW,CAAC,EAEjBvb,KAAKwb,WAAaxb,KAAKwb,WAAWnB,KAAKra,MACvCA,KAAKyb,iBAAmBzb,KAAKyb,iBAAiBpB,KAAKra,MACnDA,KAAK0b,gBAAkB1b,KAAK0b,gBAAgBrB,KAAKra,MACjDA,KAAK2b,gBAAkB3b,KAAK2b,gBAAgBtB,KAAKra,KACnD,GAAC,EAAAD,IAAA,aAAAvZ,MAED,SAAWuZ,GAKT,OAJKC,KAAKub,SAASxb,KACjBC,KAAKub,SAASxb,GAAO,IAAI+Z,EAAQ/Z,IAG5BC,KAAKub,SAASxb,EACvB,GAAC,CAAAA,IAAA,mBAAAvZ,MAED,SAAiBo1B,EAAaP,EAAYtE,GAAU,IAAD1R,EAAA,KACjDzf,OAAOmmB,KAAK/L,KAAKub,UAAU1B,SAAQ,SAAA9Z,GAAG,OAAIsF,EAAKkW,SAASxb,GAAKua,SAASe,EAAYtE,EAAQ,GAC5F,GAAC,CAAAhX,IAAA,kBAAAvZ,MAED,SAAgBo1B,EAAaV,GAAM,IAADnV,EAAA,KAChCngB,OAAOmmB,KAAK/L,KAAKub,UAAU1B,SAAQ,SAAA9Z,GAAG,OAAIgG,EAAKwV,SAASxb,GAAK0a,kBAAkBS,EAAI,GACrF,GAAC,CAAAnb,IAAA,kBAAAvZ,MAED,SAAgBo1B,EAAaV,GAAM,IAADxU,EAAA,KAChC9gB,OAAOmmB,KAAK/L,KAAKub,UAAU1B,SAAQ,SAAA9Z,GAAG,OAAI2G,EAAK6U,SAASxb,GAAK2a,kBAAkBQ,EAAI,GACrF,GAAC,CAAAnb,IAAA,SAAAvZ,MAED,WAAU,IAAD8gB,EAAA,KACP,MAAQ,CACNiU,SAAU31B,OAAOmmB,KAAK/L,KAAKub,UAAU/zB,KAAI,SAAAq0B,GAAC,OAAIvU,EAAKiU,SAASM,GAAGC,QAAQ,IAE3E,IAAC,CAlCkB,GCJfC,EAAiB,OAEhB,SAASC,EAAeC,EAAYC,GACzC,IAAKD,EACH,MAAM,IAAItY,MAAM,uBAGlB,IAAMwY,EAAW,IAAIb,EAKrB,OAJAY,EAAME,eAAeH,EAAWI,WAAWxD,UAAUsD,GAErDF,EAAWK,aAAaP,EAAgBI,GAEjCA,CACT,CAEO,SAASI,EAAYN,GAC1B,OAAKA,EAIEA,EAAWO,aAAaT,GAHtB,IAIX,C,gBCvBaU,EAAM,WAUhB,OAAA3c,EAAAA,EAAAA,IATD,SAAA2c,EAAYr2B,EAAImf,EAAMhe,IAAMmY,EAAAA,EAAAA,GAAA,KAAA+c,GAC1Bzc,KAAK5Z,GAAKA,EACV4Z,KAAKuF,KAAOA,EACZvF,KAAKzY,KAAOA,EAEZyY,KAAK0c,SAAW1c,KAAK0c,SAASrC,KAAKra,MACnCA,KAAK2c,SAAW3c,KAAK2c,SAAStC,KAAKra,MACnCA,KAAK4c,QAAU5c,KAAK4c,QAAQvC,KAAKra,MACjCA,KAAK6c,QAAU7c,KAAK6c,QAAQxC,KAAKra,KACnC,GAAC,EAAAD,IAAA,WAAAvZ,MAED,SAASuZ,EAAKvZ,GACZwZ,KAAKzY,MAAIiB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACJwX,KAAKzY,MAAI,IAAAtB,EAAAA,EAAAA,GAAA,GACX8Z,EAAMvZ,GAEX,GAAC,CAAAuZ,IAAA,WAAAvZ,MAED,SAASuZ,GACP,OAAOC,KAAKzY,KAAKwY,EACnB,GAAC,CAAAA,IAAA,UAAAvZ,MAED,SAAQe,GACNyY,KAAKzY,MAAIiB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACJwX,KAAKzY,MACLA,EAEP,GAAC,CAAAwY,IAAA,UAAAvZ,MAED,WACE,OAAOwZ,KAAKzY,IACd,IAAC,CAhCgB,GCANu1B,EAA0B,gBAEhC,SAASC,EAAkB32B,EAAI42B,EAAUC,GAC9C,MAAM,GAAN5vB,OAAU4vB,EAAU,KAAA5vB,OAAI2vB,EAAQ,KAAA3vB,OAAIjH,EACtC,CCCO,IAAM82B,EAAW,SAAAnD,GACtB,SAAAmD,EAAA32B,GAGI,IAAD8e,EAFD8X,EAAU52B,EAAV42B,WACAjB,EAAK31B,EAAL21B,MAcqE,OAdhExc,EAAAA,EAAAA,GAAA,KAAAwd,IAEL7X,GAAA1F,EAAAA,EAAAA,GAAA,KAAAud,IAEKC,WAAaA,EAClB9X,EAAK6W,MAAQA,EAIb7W,EAAK+X,QAAU,GAEf/X,EAAKgY,mBAAqBhY,EAAKgY,mBAAmBhD,KAAIhV,GAEtDA,EAAKiY,WAAajY,EAAKiY,WAAWjD,KAAIhV,GACtCA,EAAKkY,uBAAyBlY,EAAKkY,uBAAuBlD,KAAIhV,GAAOA,CACvE,CAAC,OAAAxF,EAAAA,EAAAA,GAAAqd,EAAAnD,IAAAja,EAAAA,EAAAA,GAAAod,EAAA,EAAAnd,IAAA,YAAAvZ,MAED,SAAUg3B,GACR,OAAOxd,KAAKod,QAAQK,WAAU,SAAAC,GAAC,OAAIA,EAAEt3B,KAAOo3B,CAAM,GACpD,GAAC,CAAAzd,IAAA,4BAAAvZ,MAED,SAA0Be,GACxB,IAAMi2B,EAASj2B,EAAKu1B,GACda,EAAW3d,KAAKyd,UAAUD,GAEhC,GAAIG,GAAY,EAEd3d,KAAKod,QAAQO,GAAUf,QAAQr1B,EAAK6P,aAC/B,CAEL,IAAMwmB,EAAY,IAAInB,EAAOe,EAAQxd,KAAKmd,WAAY51B,EAAK6P,SAC3D4I,KAAKod,QAAQ5R,KAAKoS,EACpB,CAEA,OAAOJ,CACT,GAAC,CAAAzd,IAAA,qBAAAvZ,MAED,SAAmBq3B,EAAW9G,GAAU,IAADhR,EAAA,KAC/B+X,EAAiBD,EAAUr2B,KAAI,SAAAD,GAAI,OAAIwe,EAAKgY,0BAA0Bx2B,EAAK,IACjFyY,KAAKmb,OAAO,mBAAoB2C,EAAgB/G,GAChD/W,KAAKge,cACP,GAAC,CAAAje,IAAA,gBAAAvZ,MAED,SAAc00B,GACZlb,KAAKod,QAAUpd,KAAKod,QAAQ5K,QAAO,SAAAyL,GAAM,OAAK/yB,IAAAA,SAAWgwB,EAAK+C,EAAO73B,GAAG,IACxE4Z,KAAKge,cACP,GAAC,CAAAje,IAAA,aAAAvZ,MAED,SAAW00B,GAAM,IAADxU,EAAA,KACd,OAAOwU,EAAI1zB,KAAI,SAAApB,GAAE,OAAIsgB,EAAK0W,QAAQc,MAAK,SAAAR,GAAC,OAAIA,EAAEt3B,KAAOA,CAAE,GAAC,GAC1D,GAAC,CAAA2Z,IAAA,yBAAAvZ,MAED,SAAuB23B,EAAapS,GAAO,IAADzE,EAAA,KACxC,OAAOpc,IAAAA,MAAQ6gB,GACZvkB,KAAI,SAAAuY,GAAG,OAAIuH,EAAK8V,QAAQc,MAAK,SAAAR,GAAC,OAAIS,EAAYT,EAAEb,aAAe9c,CAAG,GAAC,IACnE4B,UACAnb,OACL,GAAC,CAAAuZ,IAAA,eAAAvZ,MAED,WACMs0B,OAAOC,yBAETqD,EADgCtD,OAAOC,uBAA/BqD,qBACY,CAClBC,QAASre,KAAKkc,MAAMoC,SACpBnB,WAAYnd,KAAKmd,WACjBC,QAASvkB,KAAKvH,MAAMuH,KAAKQ,UAAU2G,KAAKod,WAG9C,IAAC,CAvEqB,CAAS9D,GCApBiF,EAAK,WAaf,OAAAze,EAAAA,EAAAA,IAZD,SAAAye,EAAYD,IAAU5e,EAAAA,EAAAA,GAAA,KAAA6e,GACpBve,KAAKse,SAAWA,GAAYpzB,IAAAA,SAAW,oBACvC8U,KAAKwe,aAAe,CAAC,EAErBxe,KAAKye,kBAAoB,IAAIva,IAE7BlE,KAAKoc,eAAiBpc,KAAKoc,eAAe/B,KAAKra,MAE3C8a,OAAOC,yBACTD,OAAOC,uBAAuBmB,MAAQlc,KACtC8a,OAAOC,uBAAuB2D,SAAS1e,MAE3C,GAAC,EAAAD,IAAA,iBAAAvZ,MAED,SAAe61B,GAOb,OANKrc,KAAKwe,aAAanC,KACrBrc,KAAKwe,aAAanC,GAAa,IAAIa,EAAY,CAC7CC,WAAYd,EACZH,MAAOlc,QAGJA,KAAKwe,aAAanC,EAC3B,GAAC,CAAAtc,IAAA,uBAAAvZ,MAED,SAAqBuZ,EAAKqd,GACxBpd,KAAKye,kBAAkBla,IAAIxE,EAAKqd,EAClC,GAAC,CAAArd,IAAA,0BAAAvZ,MAED,SAAwBuZ,GACtB,IAAMqd,EAAUpd,KAAKye,kBAAkBvd,IAAInB,GAE3C,OADAC,KAAKye,kBAAkB/E,OAAO3Z,GACvBqd,CACT,IAAC,CAjCe,GCFX,SAAShB,EAAeF,EAAO7E,GACpC,GAAI6E,EAAO,CACT,IAAMD,EAAa5E,EAAgBsH,gBAGnC,OAFoBzC,EAAME,eAAeH,EAAWI,UAGtD,CACA,OAAO,IACT,CAEO,SAASuC,EAAe1C,EAAO7E,EAAiB6D,GAErD,OADoBkB,EAAeF,EAAO7E,GACvBiG,WAAWpC,EAChC,CAEO,SAAS2D,EAAsB3C,EAAO5E,EAAMvL,GACjD,IAAQsL,EAAsCC,EAAtCD,gBAAiBI,EAAqBH,EAArBG,iBACnBmE,EAAcQ,EAAeF,EAAO7E,GAClC8G,EAAgB1G,EAAhB0G,YACR,OAAOvC,EAAY2B,uBAAuBY,EAAapS,EACzD,CAEO,SAAS+S,EAAgC5C,EAAO5E,EAAMyH,GAC3D,IACQZ,EADqB7G,EAArBG,iBACA0G,YAER,OAAOU,EAAsB3C,EAAO5E,EADjBpsB,IAAAA,IAAM6zB,GAAW,SAAAC,GAAC,OAAIb,EAAYa,EAAE,IAEzD,CAEO,SAAS1B,EAAWpB,EAAO7E,EAAiBtX,GACjD,GAAImc,EAAO,CACT,IAAMD,EAAa5E,EAAgBsH,gBAG7BM,GAFW1C,EAAYN,IAAeD,EAAeC,EAAYC,IAE9CV,WAAWzb,GAAKia,OAGzC,OAFoBoC,EAAeF,EAAO7E,GAEvBiG,WAAW2B,EAChC,CACA,OAAO,IACT,CAEO,SAASzD,EAAWU,EAAO7E,EAAiBnD,GACjD,GAAIgI,EAAO,CACT,IAAMD,EAAa5E,EAAgBsH,gBAC7BxC,EAAWI,EAAYN,IAAeD,EAAeC,EAAYC,GACvE,OAAOC,GAAYA,EAASX,WAAWtH,EACzC,CACA,OAAO,IACT,CAEO,SAASgL,EAAqBC,EAASjE,GAC5CiE,EAAQC,QACRl0B,IAAAA,IAAMgwB,GAAK,SAAA90B,GACT+4B,EAAQpK,IAAI3uB,EACd,IACA+4B,EAAQ7E,SAASY,EACnB,CC5DO,IAAMmE,EAAY,CACvBC,IAAK,MACLC,OAAQ,SACRC,MAAO,QACPC,SAAU,WACVC,WAAY,aACZC,QAAS,WCNEC,EAAgB,CAC3BC,OAAQ,SACRC,KAAM,OACNC,KAAM,QCIKC,EAAoC,IAEpCC,EAAc,CACzBC,UAAW,YACXC,YAAa,cACbC,eAAgB,iBAChBC,eAAgB,kBAGX,SAASC,EAAgBC,GAC9B,OAAOA,IAAgBN,EAAYE,aAC9BI,IAAgBN,EAAYI,gBAC5BE,IAAgBN,EAAYG,cACnC,CAEO,SAASI,EAAcD,GAC5B,OAAOA,IAAgBN,EAAYC,WAC9BK,IAAgBN,EAAYG,gBAC5BG,IAAgBN,EAAYI,cACnC,CAEO,SAASI,EAAuBF,GACrC,OAAOA,IAAgBN,EAAYI,cACrC,CAYO,SAASK,EAAiBxE,EAAO5E,EAAMpD,GAC5C,IACMkJ,EAAUE,EAAWpB,EADC5E,EAApBD,gBAC2CnD,GAE7CyM,EAAcz1B,IAAAA,IAAMkyB,GAAS,SAAAa,GAAM,OAAIA,EAAOpB,SAAS,IAC7D,OAAIvF,EAAKG,iBAAiBmJ,eAAiBhB,EAAcC,SACnD30B,IAAAA,QAAUy1B,IAAgBz1B,IAAAA,QAAUy1B,GACjCA,EAAY,GAEdA,CACT,CAEO,SAASE,EAAkBt6B,GAE9B,IADF21B,EAAK31B,EAAL21B,MAAO5E,EAAI/wB,EAAJ+wB,KAAMpD,EAAS3tB,EAAT2tB,UAAW7C,EAAS9qB,EAAT8qB,UAAWyP,EAAuBv6B,EAAvBu6B,wBAAyBC,EAAgBx6B,EAAhBw6B,iBAAkBC,EAAkBz6B,EAAlBy6B,mBAEtE3J,EAA8BC,EAA9BD,gBAAiB4J,EAAa3J,EAAb2J,SAORC,GAND1F,EAAWU,EAAO7E,EAAiBnD,IAMpC,CAAC,GAJd+F,OAAMkH,OAAA,IAAAD,EAGF,CAAC,EAACA,EAFJhH,EAAiBiH,EAAjBjH,kBACAC,EAAmBgH,EAAnBhH,oBAIJ,OAAO6G,IAAuBf,EAAYC,YACpC7mB,IAAUgY,KAAehY,IAAU6gB,IACpC6G,EAAmB5G,EAAsB2G,GACzCG,IAAa5B,EAAUC,KACvB2B,IAAa5B,EAAUE,QACvB0B,IAAa5B,EAAUI,SAC9B,CAEO,SAAS2B,EAAmBtb,GAE/B,IADFoW,EAAKpW,EAALoW,MAAO5E,EAAIxR,EAAJwR,KAAMpD,EAASpO,EAAToO,UAAW7C,EAASvL,EAATuL,UAAW0P,EAAgBjb,EAAhBib,iBAG7B5B,EAAU3D,EAAWU,EADC5E,EAApBD,gBAC2CnD,GAC/CiL,GACFA,EAAQ5E,aAAa,CACnBL,kBAAmB7I,EACnB8I,oBAAqB4G,GAG3B,CCvEO,SAASM,EAA4BC,GAC1C,IAAA/6B,EAGI+6B,GAAgC,CAAC,EAACC,EAAAh7B,EAFpCg6B,YAAAA,OAAW,IAAAgB,EAAGtB,EAAYG,eAAcmB,EAAAC,EAAAj7B,EACxCk7B,wBAAAA,OAAuB,IAAAD,EAAGxB,EAAiCwB,EAG7D,OAAO,SAAAE,GAAI,sBAAAtc,GAAAuc,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAI,SAAAC,EAAM3K,GAAG,IAAA4K,EAAAf,EAAAgB,EAAArB,EAAAsB,EAAAC,EAAAnB,EAAAoB,EAAAC,EAAA,OAAAR,EAAAA,EAAAA,KAAAS,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAZ,MAAA,OAqBnB,GApBGK,EAAoB5K,EAAI9F,WACzB8F,EAAI9F,UAAUpQ,SACdkW,EAAI9F,UAAUpQ,QAAQsf,aACtBpJ,EAAIG,KAAKD,gBAAgBkJ,YDQHU,ECPe9J,EAAIG,KAAK2J,SDOduB,ECPwBT,EDOLU,ECPuBlC,EAAzES,GDQJC,IAAa5B,EAAUG,OACtByB,IAAa5B,EAAUK,YACvB8C,IAAsBvC,EAAYC,YAC9BsC,GAGFC,ECZCT,EAAyBvB,EAAuBO,GAClDL,EAAc,KACZsB,EAAkB3B,EAAgBU,GAClCkB,EAAgB1B,EAAcQ,GAE9BD,EAAmB1vB,KAAKG,MACxB2wB,EAAiBtB,EAAmB,CACxC3E,MAAO/E,EAAI+E,MACX5E,KAAMH,EAAIG,KACVpD,UAAWiD,EAAIjD,UACf7C,UAAWnmB,IAAAA,KAAOisB,EAAI9F,UAAW,WACjCyP,wBAAyBW,EACzBV,iBAAAA,EACAC,mBAAAA,KAGEkB,GAAkBC,GAAmBH,EAAsB,CAAAM,EAAAZ,KAAA,SACM,GAAnEf,EAAcD,EAAiBvJ,EAAI+E,MAAO/E,EAAIG,KAAMH,EAAIjD,WACnDhpB,IAAAA,QAAUy1B,GAAa,CAAD2B,EAAAZ,KAAA,SACuB,OAAhDvK,EAAIK,iBAAiBd,qBAAsB,EAAK4L,EAAAI,OAAA,SACzC/B,GAAW,YAIlBsB,EAAgB,CAADK,EAAAZ,KAAA,gBAAAY,EAAAZ,KAAA,GACCA,EAAKvK,GACpB7e,MAAK,SAAA+f,GAQJ,OAPA+I,EAAoB,CAClBlF,MAAO/E,EAAI+E,MACX5E,KAAMH,EAAIG,KACVpD,UAAWiD,EAAIjD,UACf7C,UAAWnmB,IAAAA,KAAOisB,EAAI9F,UAAW,WACjC0P,iBAAAA,IAEK1I,CACT,IACCsK,OAAM,SAAAvM,GAIL,GAAI4K,IAAuBf,EAAYI,iBACrCM,EAAcD,EAAiBvJ,EAAI+E,MAAO/E,EAAIG,KAAMH,EAAIjD,YACnDhpB,IAAAA,QAAUy1B,IAEb,OADAxJ,EAAIK,iBAAiBd,qBAAsB,EACpCiK,EAGX,MAAMvK,CACR,IAAG,KAAD,GAvBK,OAAHgM,EAAGE,EAAAM,KAAAN,EAAAI,OAAA,SAwBFN,GAAG,eAAAE,EAAAI,OAAA,SAGLhB,EAAKvK,IAAI,yBAAAmL,EAAAO,OD/Cb,IAAwB5B,EAAUuB,EAAmBC,CC+CxC,GAAAX,EAAA,KACjB,gBAAAgB,GAAA,OAAA1d,EAAA9C,MAAA,KAAA1C,UAAA,EA5DU,EA4DV,CACH,CCjFO,IAAMmjB,GAAkB,CAC7BC,MAAO,QACPC,aAAc,eACdC,gBAAiB,mBCEnB,SAASC,GAAiBC,GACxB,OAAOA,EAAiBC,gBAC1B,CCPO,IAAMC,GAAgB,WA2B1B,OAAAxjB,EAAAA,EAAAA,IA1BD,SAAAwjB,EAAYpX,IAAWxM,EAAAA,EAAAA,GAAA,KAAA4jB,GACrB,IACEpL,EAUEhM,EAVFgM,UACAJ,EASE5L,EATF4L,IACAJ,EAQExL,EARFwL,KACA6L,EAOErX,EAPFqX,QACAvL,EAME9L,EANF8L,QACAV,EAKEpL,EALFoL,KACAjG,EAIEnF,EAJFmF,UACA6K,EAGEhQ,EAHFgQ,MACAhI,EAEEhI,EAFFgI,UACAsD,EACEtL,EADFsL,iBAGFxX,KAAKkY,UAAYA,EACjBlY,KAAK8X,IAAMA,EACX9X,KAAK0X,KAAOA,EACZ1X,KAAKujB,QAAUA,EACfvjB,KAAKgY,QAAUA,EACfhY,KAAKqR,UAAYA,EACjBrR,KAAKsX,KAAOA,EACZtX,KAAKkc,MAAQA,EACblc,KAAKkU,UAAYA,EACjBlU,KAAKwX,iBAAmBA,EAExBxX,KAAKqjB,eAAiBrjB,KAAKqjB,eAAehJ,KAAKra,KACjD,GAAC,EAAAD,IAAA,iBAAAvZ,MAED,WACE,OAAOwZ,KAAKkY,UAAUlY,KAAK8X,IAAK9X,KAAK0X,KAAM1X,KAAKujB,QAASvjB,KAAKgY,QAChE,IAAC,CA/B0B,GCEtB,SAASwL,GAAsBC,GACpC,IAAAl9B,EAGIk9B,GAA0B,CAAC,EAACC,EAAAn9B,EAF9Bo9B,eAAAA,OAAc,IAAAD,EAAGx4B,IAAAA,KAAMw4B,EAAAE,EAAAr9B,EACvBs9B,eAAgBC,OAAiB,IAAAF,EAAG14B,IAAAA,KAAM04B,EAE5C,OAAO,SAAAlC,GAAI,sBAAAtc,GAAAuc,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAI,SAAAC,EAAM3K,GAAG,IAAA4M,EAAAC,EAAAC,EAAAJ,EAAAxL,EAAA,OAAAuJ,EAAAA,EAAAA,KAAAS,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAZ,MAAA,OAoBnB,OAbUqC,GAAT5M,GAAO,CAAC,GALVG,KAIM0M,QAJF,IAAAD,EAIA,CAAC,EAACA,GAHJtM,iBACEwM,QADc,IAAAD,EAEZ,CAAC,EAACA,GADJC,eAIAJ,EAAiBI,GAAkBH,EAEnCzL,EAAWqJ,EAAKvK,GAAK7e,MAAK,SAAA8pB,GAC9B,IAAMhM,EAAQyN,EAAezB,GAC7B,GAAIhM,EACF,MAAMA,EAER,OAAOgM,CACT,IAAGO,OAAM,SAAAvM,GACP,IAAM8N,EAAiBL,EAAezN,IAAUA,EAEhD,MADAuN,EAAeO,GACT9N,CACR,IAAEkM,EAAAI,OAAA,SAEKrK,GAAQ,wBAAAiK,EAAAO,OAAA,GAAAf,EAAA,KAChB,gBAAAgB,GAAA,OAAA1d,EAAA9C,MAAA,KAAA1C,UAAA,EAvBU,EAuBV,CACH,C,iBC3BO,SAASukB,KACd,OAAO9yB,KAAKG,KACd,CCQO,SAAS4yB,GAAY59B,GAC1B,IAAM69B,GAAMzL,EAAAA,EAAAA,UAMZ,OAJK1tB,IAAAA,QAAU1E,EAAO69B,EAAIvL,WACxBuL,EAAIvL,QAAUtyB,GAGT69B,EAAIvL,OACb,CCjBA,IAAMwL,GAAgB,SAAAlO,GACpB,IAAMmO,EAAcnO,GAASA,EAAMoO,WAC7BC,EAAkB5rB,KAAKQ,UAAU+c,GAEvC,OAAMlrB,IAAAA,QAAUu5B,IAAwC,OAApBA,GAA6C,oBAAhBF,EACxDE,EAEFF,CACT,EAEaG,GAAqB,CAChCC,iBAAkB,EAAE,GAEpBC,YAAW,SAACC,EAAUF,GACpB,IAAMld,EAAS,CACbqd,MAAM,EACN7K,OAAQ,KAaV,OAVI4K,GACCA,EAASE,QACTF,EAASE,OAAO,IAChBF,EAASE,OAAO,GAAGC,MACnB95B,IAAAA,QAAUy5B,IACVz5B,IAAAA,SAAWy5B,EAAkBE,EAASE,OAAO,GAAGC,QACnDvd,EAAOqd,MAAO,EACdrd,EAAOwd,QAAUJ,EAASE,OAAO,GAAGG,QACpCzd,EAAO0d,YAAa,GAEf1d,CACT,EAEA2d,cAAa,SAAC/M,GACZ,GAAIA,GAAYntB,IAAAA,WAAamtB,EAASgN,mBAAoB,CACxD,IAAMC,EAAcjN,EAASgN,kBAAkB,eAC/C,GAAIC,EACF,OAAOA,EAET,IAAMC,EAAO,CAAC,EAWd,OAVAr6B,IAAAA,KACE,CAAC,0BAA2B,gCAAiC,sCAC7D,SAAA6sB,GACE,IAAMvxB,EAAQ6xB,EAASgN,kBAAkBtN,GACrCvxB,IACF++B,EAAKxN,GAAUvxB,EAEnB,IAGKqS,KAAKQ,UAAUksB,EACxB,CACA,MAAO,EACT,GAGK,SAASC,GAAkBC,EAAwBtO,EAAKuO,EAAUC,GACvEF,EAAuBG,iBAAmBzB,MAEO,IAA7CwB,EAAiBF,KACnBtO,EAAIoM,SAAO/6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACN2uB,EAAIoM,SAAO,IACd,sBAAuBkC,EAAuBI,eAC9C,YAAaJ,EAAuBK,YAAYC,KAChDA,KAAMN,EAAuBK,YAAYC,KACzC,iBAAkBN,EAAuBO,aAI7CN,EAAS,CACPM,UAAWP,EAAuBO,UAClCC,IAAKR,EAAuB/gB,IAC5BwhB,eAAe,EACfC,WAAYV,EAAuBU,WACnCC,UAAW,EACXtB,MAAM,EACNG,QAAS,IAEb,CAEO,SAASoB,GAAeZ,EAAwBpN,EAAUiO,EAAWZ,GAC1E,IAAMa,EAAmBpC,KAAiBsB,EAAuBG,iBAC3Dne,EAASge,EAAuBK,YAAYlB,YAAYvM,GAC9DoN,EAAuBc,iBAAmBA,EAErC9e,EAAOqd,OACVW,EAAuBe,eAAgB,EACvCf,EAAuBrP,MAAQ3O,EAAOwd,QAEtCqB,EAAU,CACRrB,QAASQ,EAAuBrP,MAChC6P,IAAKR,EAAuB/gB,IAC5BshB,UAAWP,EAAuBO,UAClCb,WAAY1d,EAAO0d,WACnBgB,WAAYV,EAAuBU,WACnCM,WAAYhf,EAAOwS,UAIvByL,EAAS,CACPM,UAAWP,EAAuBO,UAClCC,IAAKR,EAAuB/gB,IAC5BwhB,eAAe,EACfC,WAAYV,EAAuBU,WACnCC,UAAWX,EAAuBc,iBAClCzB,KAAMW,EAAuBe,cAC7BvB,QAASQ,EAAuBK,YAAYV,cAAc/M,GAC1DoO,WAAY,KAEhB,CAEO,SAASC,GACdjB,EAAwBrP,EAAOuQ,EAC/BC,EAAWN,EAAWZ,GAEtB,IAAMa,EAAmBpC,KAAiBsB,EAAuBG,iBAGjE,GAFAH,EAAuBc,iBAAmBA,EAEtCnQ,GAA0B,IAAjBA,EAAM6D,QAAgB7D,EAAM6D,OAUvC,OATAwL,EAAuBoB,aAAezQ,EAAMyQ,aAC5CpB,EAAuBe,eAAgB,EAEvCf,EAAuBrP,MAAK,qCAAA/oB,OAAwC+oB,EAAM6D,OAAM,cAAA5sB,OAAawL,KAAKQ,UAAU+c,IAExGA,EAAMyQ,eACRpB,EAAuBrP,OAAK,mBAAA/oB,OAAwBi3B,GAAclO,EAAMyQ,gBAGlEzQ,EAAM6D,QACZ,KAAK,IACL,KAAK,IAEC0M,EAAYvQ,KACdqP,EAAuBe,eAAgB,GAEzC,MACF,KAAK,IAEHf,EAAuBe,eAAgB,EACvC,MACF,QACEf,EAAuBe,eAAgB,MAEtC,CAEDG,EAAYvQ,GACdqP,EAAuBe,eAAgB,EAEvCf,EAAuBe,eAAgB,EAEzC,IAAMM,EAAS57B,IAAAA,QAAUkrB,GAASA,EAAQvd,KAAKQ,UAAU+c,GACzDqP,EAAuBrP,MAAK,4BAAA/oB,OAA+By5B,EAC7D,EAEgBrB,EAAuBe,cAAgBI,EAAYN,GAC3D,CACNrB,QAASQ,EAAuBrP,MAChC6P,IAAKR,EAAuB/gB,IAC5BshB,UAAWP,EAAuBO,UAClCG,WAAYV,EAAuBU,WACnCM,WAAYrQ,EAAM6D,SAGpByL,EAAS,CACPM,UAAWP,EAAuBO,UAClCC,IAAKR,EAAuB/gB,IAC5BwhB,eAAe,EACfC,WAAYV,EAAuBU,WACnCC,UAAWX,EAAuBc,iBAClCzB,KAAMW,EAAuBe,cAC7BC,WAAYrQ,EAAM6D,QAEtB,CC5KO,IAAMhiB,IAAsB6H,EAAAA,EAAAA,IACjC,SAAA7H,EAAYiU,IAAWxM,EAAAA,EAAAA,GAAA,KAAAzH,GACrB,IACE4tB,EAME3Z,EANF2Z,eACAkB,EAKE7a,EALF6a,aACAriB,EAIEwH,EAJFxH,IACAshB,EAGE9Z,EAHF8Z,UACAG,EAEEja,EAFFia,WACAL,EACE5Z,EADF4Z,YAGF9lB,KAAK6lB,eAAiBA,EACtB7lB,KAAK+mB,aAAeA,EACpB/mB,KAAK0E,IAAMA,EACX1E,KAAKgmB,UAAYA,EACjBhmB,KAAKmmB,WAAaA,EAClBnmB,KAAK8lB,YAAc56B,IAAAA,SAAW46B,GAAe,CAAC,EAAGpB,GACnD,ICdK,SAASsC,GAAgCC,GAC9C,IAAA1gC,EASI0gC,GAA0B,CAAC,EAR7BpB,EAAct/B,EAAds/B,eACAkB,EAAYxgC,EAAZwgC,aACAjB,EAAWv/B,EAAXu/B,YAAWoB,EAAA3gC,EACX4gC,WAAUC,OAAA,IAAAF,EAIN,CAAC,EAACA,EAAAG,EAAAD,EAHJR,UAAAA,OAAS,IAAAS,EAAGn8B,IAAAA,KAAMm8B,EAAAC,EAAAF,EAClBd,UAAAA,OAAS,IAAAgB,EAAGp8B,IAAAA,KAAMo8B,EAAAC,EAAAH,EAClB1B,SAAAA,OAAQ,IAAA6B,EAAGr8B,IAAAA,KAAMq8B,EAIf5B,EAAmBsB,EAAuBtB,kBAAoBz6B,IAAAA,UAAW,GAE/E,SAASy7B,EAAYvQ,GACnB,OAAOlrB,IAAAA,IAAM67B,GAAc,SAAAS,GAAW,OAAIA,EAAYC,MAAMrR,EAAM,GACpE,CAEA,OAAO,SAAAsL,GAAI,sBAAAtc,GAAAuc,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAC,MAAI,SAAAC,EAAM3K,GAAG,IAAAuQ,EAAAC,EAAA3B,EAAAP,EAAApN,EAAA,OAAAuJ,EAAAA,EAAAA,KAAAS,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAZ,MAAA,OAwBnB,OAxBmBgG,EAKlBvQ,EAHFoM,QAEMoE,QAFC,IAAAD,EAEH,CAAC,EAACA,GADJ,kBAAkB1B,OAAS,IAAA2B,GAAGC,EAAAA,GAAAA,MAAQD,EAa1CnC,GATMC,EAAyB,IAAIxtB,GAAuB,CACxD4tB,eAAAA,EACAkB,aAAAA,EACAriB,IAAKyS,EAAIW,IACTkO,UAAAA,EACAG,WAAYhP,EAAIG,KAAKD,gBAAgBK,KACrCoO,YAAAA,IAGwC3O,EAAKuO,EAAUC,GAEnDtN,EAAWqJ,EAAKvK,GAAK7e,MAAK,SAAA8pB,GAE9B,OADAiE,GAAeZ,EAAwBrD,EAAKkE,EAAWZ,GAChDtD,CACT,IAAGO,OAAM,SAAAvM,GAEP,MADAsQ,GAAajB,EAAwBrP,EAAOuQ,EAAaC,EAAWN,EAAWZ,GACzEtP,CACR,IAAEkM,EAAAI,OAAA,SAEKrK,GAAQ,wBAAAiK,EAAAO,OAAA,GAAAf,EAAA,KAChB,gBAAAgB,GAAA,OAAA1d,EAAA9C,MAAA,KAAA1C,UAAA,EA3BU,EA2BV,CACH,CCjDO,IAAMioB,GAAW,WA6BrB,OAAA/nB,EAAAA,EAAAA,IA5BD,SAAA+nB,EAAYC,EAAkB/9B,EAAQmyB,EAAO6L,EAAaC,IAAKtoB,EAAAA,EAAAA,GAAA,KAAAmoB,GAC7D7nB,KAAK8nB,iBAAmBA,EAExB9nB,KAAKjW,OAASA,EAGdiW,KAAKioB,aAAe,GACpBjoB,KAAKkoB,sBAAwB,GAG7BloB,KAAKkc,MAAQA,EAEblc,KAAK+nB,YAAcA,GAAe,CAAC,EAEnC/nB,KAAKgoB,IAAMA,EAEXhoB,KAAKmoB,gBAAkBnoB,KAAKmoB,gBAAgB9N,KAAKra,MACjDA,KAAKooB,YAAcpoB,KAAKooB,YAAY/N,KAAKra,MACzCA,KAAKgX,cAAgBhX,KAAKgX,cAAcqD,KAAKra,MAC7CA,KAAKgZ,aAAehZ,KAAKgZ,aAAaqB,KAAKra,MAE3CA,KAAK6Y,UAAY7Y,KAAK6Y,UAAUwB,KAAKra,MACrCA,KAAKqoB,YAAcroB,KAAKqoB,YAAYhO,KAAKra,MAEzCA,KAAKsoB,UAAYtoB,KAAKsoB,UAAUjO,KAAKra,MACrCA,KAAKiY,aAAejY,KAAKiY,aAAaoC,KAAKra,MAE3CA,KAAKuoB,cAAgB,CAAC,CACxB,GAAC,EAAAxoB,IAAA,eAAAvZ,MAED,SAAaJ,EAAIkxB,EAAMjG,EAAWmG,EAAkBgR,GAAmB,IAADnjB,EAAA,KAC9DojB,EAAwB,SAAC3Q,EAAKJ,EAAM6L,EAASvL,GACjD,IAAME,EAAY7S,EAAKyiB,iBAAiBhQ,EAAKJ,EAAM6L,EAASvL,GAE5D,GAAI8C,OAAOC,uBAAwB,CACjC,IAAA2N,EAA+B5N,OAAOC,uBAA9B4N,EAASD,EAATC,UAAWpQ,EAAOmQ,EAAPnQ,QACXhB,EAAkBiR,EAAlBjR,cACR,OAAOW,EACJ5f,MAAK,SAAA9R,GAWJ,OAVAmiC,EAAU,CACRviC,GAAAA,EACA0xB,IAAAA,EACAJ,KAAAA,EACA6L,QAAAA,EACAvL,QAAAA,EACAV,KAAMA,EAAKkN,WACXjN,cAAAA,EACAqR,cAAepiC,IAEVA,CACT,IACCm8B,OAAM,SAAAkG,GAYL,MAXAtQ,EAAQ,CACNnyB,GAAAA,EACA0xB,IAAAA,EACAJ,KAAAA,EACA6L,QAAAA,EACAvL,QAAAA,EACAV,KAAMA,EAAKkN,WACXjN,cAAAA,EACAuR,UAAWD,IAGPA,CACR,GACJ,CAEA,OAAO3Q,CACT,EAEA,OAAO,SAACJ,EAAKJ,EAAM6L,EAASvL,GAAO,MAAM,CACvCG,QAAS,SAAA4Q,GACP,GAAK1jB,EAAK0iB,aAA2C,IAA5B1iB,EAAK0iB,YAAYxvB,OAInC,CACL,IAYM6pB,ERrFT,SAA+BgB,EAAkB2E,GACtD,IAAMiB,GAAkBpyB,EAAAA,EAAAA,SAAO8a,EAAAA,EAAAA,MAAKqW,EAAahF,GAAgBG,kBAC3D+F,GAA4BryB,EAAAA,EAAAA,SAAOqY,EAAAA,EAAAA,MAAK8Y,EAAahF,GAAgBG,kBAO3E,OANuBgG,EAAAA,QAAO5mB,WAAC,GAADyC,EAAAA,EAAAA,GACzBikB,GAAe37B,QAAA0X,EAAAA,EAAAA,GACfkkB,IAFkBC,CAGrB/F,GAGKgG,CAAe/F,GAAkB9qB,MAAK,SAAA+f,GAC3C,OAAOA,CACT,IAAGsK,OAAM,SAAAvM,GACP,MAAMA,CACR,GACF,CQuEsBgT,CAZa,IAAI9F,GAAiB,CAC5CpL,UAAWuQ,EACX3Q,IAAAA,EACAJ,KAAAA,EACA6L,QAAAA,EACAvL,QAAAA,EACAV,KAAAA,EACAjG,UAAAA,EACA6K,MAAO7W,EAAK6W,MACZhI,UAAW9tB,EACXoxB,iBAAAA,IAEkDnS,EAAK0iB,aAEzD3F,EACG9pB,MAAK,SAAA9R,GAAK,OAAIuiC,EAAK3Q,WAAW5xB,EAAM,IACpCm8B,OAAM,SAAA0G,GAAG,OAAIN,EAAKxQ,QAAQ8Q,EAAI,GACnC,MArBEZ,EAAsB3Q,EAAKJ,EAAM6L,EAASvL,GACvC1f,MAAK,SAAA9R,GAAK,OAAIuiC,EAAK3Q,WAAW5xB,EAAM,IACpCm8B,OAAM,SAAA0G,GAAG,OAAIN,EAAKxQ,QAAQ8Q,EAAI,GAoBrC,EACD,CACH,GAAC,CAAAtpB,IAAA,YAAAvZ,MAED,WACE,OAAOwZ,KAAKjW,MACd,GAAC,CAAAgW,IAAA,kBAAAvZ,MAED,WACE,IAAK,IAAI+a,EAAI,EAAGA,EAAIvB,KAAKkoB,sBAAsB3vB,OAAQgJ,GAAK,EAC1DvB,KAAKkoB,sBAAsB3mB,GAAG4Z,OAAOnb,KAAKioB,aAE9C,GAEA,CAAAloB,IAAA,cAAAvZ,MAYA,SAAYuwB,GACV/W,KAAKioB,aAAazc,KAAKuL,GAEvB/W,KAAKmoB,iBACP,GAAC,CAAApoB,IAAA,gBAAAvZ,MAED,WACE,OAAOwZ,KAAKioB,aAAa7Q,OAC3B,GAAC,CAAArX,IAAA,eAAAvZ,MAED,WACE,OAAOwZ,KAAKioB,aAAa1vB,MAC3B,GAAC,CAAAwH,IAAA,YAAAvZ,MAED,SAAU8iC,GAKR,OAJAtpB,KAAKkoB,sBAAsB1c,KAAK,CAC9B2P,OAAQmO,IAGHtpB,KAAKkoB,sBAAsB3vB,OAAS,CAC7C,GAAC,CAAAwH,IAAA,cAAAvZ,MAED,SAAYJ,GACV,OAAO4Z,KAAKkoB,sBAAsBqB,OAAOnjC,EAAI,GAAGmS,MAClD,IAAC,CAlJqB,G,aCAjB,SAASixB,GAAeC,GAC7B,IAAAC,GAAoC9iC,EAAAA,EAAAA,YAAW0vB,GAAmBqT,GAAAr0B,EAAAA,GAAAA,GAAAo0B,EAAA,GAA3D9S,EAAW+S,EAAA,GAAExQ,EAAYwQ,EAAA,GAChC,GAAIz+B,IAAAA,WAAau+B,GAAsB,CACrC,IAAMG,EAAc1+B,IAAAA,KAAOiuB,GAAc,SAAAC,GAAG,OAAIA,GAAOA,EAAI4O,KAAOyB,EAAoBrQ,EAAI4O,IAAI,IAC9F,IAAK98B,IAAAA,QAAU0+B,GACb,OAAOA,CAEX,CACA,OAAOhT,GAAe1rB,IAAAA,MAAQiuB,EAChC,CCbO,IAAM0Q,GAAe,CAC1BC,IAAK,MACLC,KAAM,OACNxK,OAAQ,SACRyK,MAAO,QACPC,IAAK,OCLMC,GAAe,WAuBzB,OAAApqB,EAAAA,EAAAA,IAtBD,SAAAoqB,EAAA3jC,GAUI,IATFwD,EAAMxD,EAANwD,OACAogC,EAAQ5jC,EAAR4jC,SACAzS,EAAInxB,EAAJmxB,KACA6I,EAAWh6B,EAAXg6B,YACA5I,EAAYpxB,EAAZoxB,aACAC,EAAerxB,EAAfqxB,gBACAC,EAAgBtxB,EAAhBsxB,iBACAsG,EAAW53B,EAAX43B,YACAiM,EAAiB7jC,EAAjB6jC,mBAAiB1qB,EAAAA,EAAAA,GAAA,KAAAwqB,GAEjBlqB,KAAKjW,OAASA,EACdiW,KAAKmqB,SAAWA,EAChBnqB,KAAK0X,KAAOA,EACZ1X,KAAKugB,YAAcA,EACnBvgB,KAAK2X,aAAeA,EACpB3X,KAAK4X,gBAAkBA,EACvB5X,KAAK6X,iBAAmBA,EACxB7X,KAAKme,YAAcA,EACnBne,KAAKoqB,kBAAoBA,EAEzBpqB,KAAK2e,cAAgB3e,KAAK2e,cAActE,KAAKra,KAC/C,GAAC,EAAAD,IAAA,gBAAAvZ,MAED,WAOE,OAAOwZ,KAAKjW,OAAOsgC,OAAOrqB,KAAKmqB,SACjC,IAAC,CAjCyB,GAoCrB,SAASG,GAAqBllB,GAUjC,IATFrb,EAAMqb,EAANrb,OACAogC,EAAQ/kB,EAAR+kB,SACAzS,EAAItS,EAAJsS,KACA6I,EAAWnb,EAAXmb,YACA5I,EAAYvS,EAAZuS,aACAC,EAAexS,EAAfwS,gBACAC,EAAgBzS,EAAhByS,iBACAsG,EAAW/Y,EAAX+Y,YACAiM,EAAiBhlB,EAAjBglB,kBAEA,IAAKD,EACH,MAAM,IAAIxmB,MAAM,4BAGlB,OAAO,IAAIumB,GAAgB,CACzBngC,OAAAA,EACAogC,SAAAA,EACAzS,KAAAA,EACA6I,YAAAA,EACA5I,aAAAA,EACAC,gBAAAA,EACAC,iBAAAA,EACAsG,YAAAA,EACAiM,kBAAAA,GAEJ,CC3DO,SAASG,GAA+B3T,GAC7C,IAAQsF,EAA4CtF,EAA5CsF,MAAiBsO,EAA2B5T,EAArC7sB,OAAUygC,qBA2DzB,MAAO,CACLC,0BA3DgC,SAAHlkC,GAMxB,IALL6kB,EAAK7kB,EAAL6kB,MACAsf,EAAUnkC,EAAVmkC,WACAC,EAAepkC,EAAfokC,gBACAC,EAAgBrkC,EAAhBqkC,iBACA5N,EAAQz2B,EAARy2B,SAEMX,EAAYmO,EAAqBE,GACjC9O,EAAcM,EAAME,eAAeC,GACnCwO,EAAcjP,EAAYwB,QAAQ51B,KAAI,SAAAk2B,GAAC,OAAIiN,EAAgBjN,EAAEn2B,KAAK,IAElEujC,EADa5/B,IAAAA,OAASkgB,GAAO,SAAA/C,GAAI,OAAKnd,IAAAA,QAAU2/B,EAAaF,EAAgBtiB,GAAM,IAC5C7gB,KAAI,SAAA6gB,GAC/C,IAAM0iB,EAAchO,EAClB4N,EAAgBtiB,GAChB2U,EACA4N,GAGF,OAAA3kC,EAAAA,EAAAA,GAAA,CACEmR,QAASiR,GACRyU,EAA0BiO,EAE/B,IACAnP,EAAYyB,mBAAmByN,GAC/B,IAAM5P,EAAM4P,EAA0BtjC,KAAI,SAAA6gB,GAAI,OAAIA,EAAKyU,EAAwB,IAC/ElB,EAAYT,OAAO,kBAAmBD,GAEtC,IACM8P,EADe9/B,IAAAA,OAASkgB,GAAO,SAAA/C,GAAI,OAAInd,IAAAA,QAAU2/B,EAAaF,EAAgBtiB,GAAM,IACzD7gB,KAAI,SAAAyjC,GACnC,IAAMlrB,EAAM4qB,EAAgBM,GACtB7N,EAAUxB,EAAY2B,uBAAuBoN,EAAiB,CAAC5qB,IAErE,OAAA9Z,EAAAA,EAAAA,GAAA,CACEmR,SAAO5O,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACF40B,EAAQ,GAAG71B,MACX0jC,IAEJnO,EAA0BM,EAAQ,GAAGh3B,GAE1C,IACAw1B,EAAYyB,mBAAmB2N,EACjC,EAmBEE,2BAjBiC,SAAHzkB,GAIzB,IAHL0kB,EAAY1kB,EAAZ0kB,aACAT,EAAUjkB,EAAVikB,WACAC,EAAelkB,EAAfkkB,gBAEMtO,EAAYmO,EAAqBE,GACjC9O,EAAcM,EAAME,eAAeC,GAGnC+O,EADkBxP,EAAY2B,uBAAuBoN,EAAiBQ,GACjC3jC,KAAI,SAAAk2B,GAAC,OAAIA,EAAEt3B,EAAE,IAExDw1B,EAAYyP,cAAcD,GAC1BxP,EAAYT,OAAO,kBAAmBiQ,EACxC,EAMF,CCzDO,IAAME,GAAgB,WAgB1B,OAAAxrB,EAAAA,EAAAA,IAfD,SAAAwrB,EAAA/kC,GAEI,IADF8wB,EAAe9wB,EAAf8wB,gBAAiBuJ,EAAYr6B,EAAZq6B,aAAczC,EAAW53B,EAAX43B,YAAaoN,EAAWhlC,EAAXglC,YAAatH,EAAc19B,EAAd09B,gBAAcvkB,EAAAA,EAAAA,GAAA,KAAA4rB,GAEvEtrB,KAAKqX,gBAAkBA,EACvBrX,KAAK4gB,aAAeA,EACpB5gB,KAAKme,YAAcA,EACnBne,KAAKurB,YAAcA,EACnBvrB,KAAKikB,eAAiBA,EACtBjkB,KAAKic,WAAajc,KAAKqX,gBAAgBsH,gBAEvC3e,KAAKwrB,UAAYxrB,KAAKwrB,UAAUnR,KAAKra,MACrCA,KAAKsY,cAAgBtY,KAAKsY,cAAc+B,KAAKra,MAC7CA,KAAKwY,WAAaxY,KAAKwY,WAAW6B,KAAKra,MAEvCA,KAAKyrB,QAAUzrB,KAAKyrB,QAAQpR,KAAKra,KACnC,GAAC,EAAAD,IAAA,YAAAvZ,MAED,SAAU6qB,GACR,OAAOrR,KAAKme,YAAY9M,EAC1B,GAAC,CAAAtR,IAAA,UAAAvZ,MAED,SAAQklC,EAAQ1O,GAOd,IAAM+N,EAAchO,EAClB/c,KAAKme,YAAYuN,GACjB1O,EACAhd,KAAKic,WAAW0P,WAAW3/B,MAG7B,OAAA/F,EAAAA,EAAAA,GAAA,CACEmR,QAASs0B,GACR5O,EAA0BiO,EAE/B,GAAC,CAAAhrB,IAAA,gBAAAvZ,MAED,SAAcowB,EAAayB,EAAUtB,GACnC,IAAI6U,EAAoBvT,EAEhB4I,EADSlK,EAATO,KACA2J,SAMR,QAJKlK,EAAQS,iBAAiBd,qBAAuB1W,KAAKurB,cACxDK,EAAoB5rB,KAAKurB,YAAYlT,EAAUtB,IAGzCkK,GACN,KAAK5B,EAAUG,MACf,KAAKH,EAAUK,WACb,OCzDO,SAAiB9I,EAAagV,EAAmB7U,GAC9D,OAAO,SAAA8U,GACL,IAAY3X,EAA+B6C,EAAnC3wB,GAAeirB,EAAoB0F,EAApB1F,UAAWiG,EAASP,EAATO,KAC1BwU,EAAYza,EAAZya,QAEA5P,EAAUtF,EAAVsF,MAEJC,EAAWI,EAAYsP,EAAQ5P,YAE9BE,IACHA,EAAWH,EAAe6P,EAAQ5P,WAAYC,IAGhD,IAAMiD,EAAUhD,EAASX,WAAWtH,GACpCiL,EAAQ3E,aAER,IAAQuR,EAAsBD,EAAtBC,WAAYC,EAAUF,EAAVE,MACZ3U,EAAkCC,EAAlCD,gBAAiBpD,EAAiBqD,EAAjBrD,aACjBmW,EAAsB/S,EAAtB+S,kBACJpN,EAAWoN,EAAoBA,EAAkB/Y,QAAajlB,EAC9D6/B,EAAsB,KAK1B,GAAIJ,EAAQjL,eAAiBhB,EAAcC,OAAQ,EAC5C7C,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAK7C,IAAMwyB,GADNkB,EAAsBJ,EAAQJ,QAAQG,EAAmB5O,IACjBF,GAGxCqC,EAAQpK,IAAIgW,GAIZ7O,EAAME,eAAeyP,EAAQ5P,WAAWI,WACrCgB,mBAAmB,CAAC4O,GAAsBlV,EAC/C,MAAW8U,EAAQjL,eAAiBhB,EAAcE,QAE3C9C,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAE7C0zB,EAAsBL,EAAkBpkC,KAAI,SAAAkkC,GAC1C,IAAMnkC,EAAOskC,EAAQJ,QAAQC,EAAQ1O,GAC/B+N,EAAcxjC,EAAKu1B,GAIzB,OAFAqC,EAAQpK,IAAIgW,GAELxjC,CACT,IAEA20B,EAAME,eAAeyP,EAAQ5P,WAAWI,WACrCgB,mBAAmB4O,EAAqBlV,GAGR,IAA/BkV,EAAoB1zB,QACtB4mB,EAAQhE,OAAO,SAAU,GAAIpE,IAIjC,GAAI9C,IAAiB/oB,IAAAA,QAAU+gC,GAAsB,CACnD,IAAMC,EAAmB3B,GAA+B3T,GACxD3C,EAAa2X,EAAmB7U,EAASO,EAAM4U,EACjD,CACF,CACF,CDZeC,CAAqBvV,EAAagV,EAAmB7U,EAArDoV,CAA8DnsB,MAEvE,KAAKqf,EAAUC,IACf,KAAKD,EAAUE,OACf,KAAKF,EAAUI,SACb,OEhEO,SAAiB7I,EAAagV,EAAmB7U,GAC9D,OAAO,SAAA8U,GACL,IAAQxa,EAA4B0F,EAA5B1F,UAAW+a,EAAiBrV,EAAjBqV,OAAQ9U,EAASP,EAATO,KACnBwU,EAAYza,EAAZya,QACAzU,EAAkCC,EAAlCD,gBAAiBpD,EAAiBqD,EAAjBrD,aACjBmW,EAAsB/S,EAAtB+S,kBACJpN,EAAWoN,EAAoBA,EAAkB/Y,QAAajlB,EAG1D2/B,EAAsBD,EAAtBC,WAAYC,EAAUF,EAAVE,MA0BpB,GAzBIH,EAAQjL,eAAiBhB,EAAcE,MAAQ/I,EAAQO,KAAK2J,WAAa5B,EAAUC,MAEhFtC,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAO7C6zB,GALoBzb,MAAMlP,QAAQmqB,GAC9BA,EACA,CAACA,IAC6BpkC,KAAI,SAAAkkC,GAAM,OAAIG,EAAQJ,QAAQC,EAAQ1O,EAAS,IAErDjG,IACnB8U,EAAQjL,eAAiBhB,EAAcC,SAC3C7C,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAM7C6zB,EAAO,CAFeP,EAAQJ,QAAQG,EAAmB5O,IAE3BjG,IACrB8U,EAAQjL,eAAiBhB,EAAcG,MAEhDqM,EAAO,KAAMrV,GAGX9C,EAAc,CAChB,IAAMiY,EAAmB3B,GAA+B3T,GACxD3C,EAAa2X,EAAmB7U,EAASO,EAAM4U,EACjD,CACF,CACF,CFwBeG,CAAwBzV,EAAagV,EAAmB7U,EAAxDsV,CAAiErsB,MAE1E,KAAKqf,EAAUM,QACb,OGlEO,SAAiB/I,EAAagV,EAAmB7U,GAC9D,OAAO,SAAA8U,GACL,IACM3X,EAIF6C,EAJF3wB,GACAirB,EAGE0F,EAHF1F,UACA+a,EAEErV,EAFFqV,OACA9U,EACEP,EADFO,KAEMwU,EAAYza,EAAZya,QACA5P,EAAUtF,EAAVsF,MAEJC,EAAWI,EAAYsP,EAAQ5P,YAE9BE,IACHA,EAAWH,EAAe6P,EAAQ5P,WAAYC,IAGhD,IAAMiD,EAAUhD,EAASX,WAAWtH,GACpCiL,EAAQC,QAER,IAAQ2M,EAAsBD,EAAtBC,WAAYC,EAAUF,EAAVE,MACZ3U,EAAkCC,EAAlCD,gBAAiBpD,EAAiBqD,EAAjBrD,aACjBmW,EAAsB/S,EAAtB+S,kBACJpN,EAAWoN,EAAoBA,EAAkB/Y,QAAajlB,EAC9D6/B,EAAsB,KAE1B,GAAIJ,EAAQjL,eAAiBhB,EAAcC,OAAQ,EAC5C7C,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAI7C,IAAMwyB,GADNkB,EAAsBJ,EAAQJ,QAAQG,EAAmB5O,IACjBF,GAExCqC,EAAQpK,IAAIgW,GAEZ7O,EAAME,eAAeyP,EAAQ5P,WAAWI,WACrCgB,mBAAmB,CAAC4O,GAAsBlV,GAE7CqV,EAAOR,EAAmB7U,EAC5B,MAAW8U,EAAQjL,eAAiBhB,EAAcE,QAC3C9C,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAE7C0zB,EAAsBL,EAAkBpkC,KAAI,SAAAkkC,GAC1C,IAAMnkC,EAAOskC,EAAQJ,QAAQC,EAAQ1O,GAC/B+N,EAAcxjC,EAAKu1B,GAIzB,OAFAqC,EAAQpK,IAAIgW,GAELxjC,CACT,IAEA20B,EAAME,eAAeyP,EAAQ5P,WAAWI,WACrCgB,mBAAmB4O,EAAqBlV,GAGR,IAA/BkV,EAAoB1zB,QACtB4mB,EAAQhE,OAAO,SAAU,GAAIpE,GAG/BqV,EAAOR,EAAmB7U,IAG5B,GAAI9C,EAAc,CAChB,IAAMiY,EAAmB3B,GAA+B3T,GACxD3C,EAAa2X,EAAmB7U,EAASO,EAAM4U,EACjD,CACF,CACF,CHHeI,CAAuB1V,EAAagV,EAAmB7U,EAAvDuV,CAAgEtsB,MAEzE,QACE,OAAO,KAEb,GAAC,CAAAD,IAAA,aAAAvZ,MAED,SAAWowB,EAAaG,EAASX,GAC/B,OI3EW,SAAiBQ,EAAaG,EAASX,GACpD,OAAO,SAAAyV,GACL,IAAY3X,EAAuB6C,EAA3B3wB,GAAemmC,EAAYxV,EAAZwV,QAEfrQ,EAAUtF,EAAVsF,MAEJC,EAAWI,EAAYsP,EAAQ5P,YAE9BE,IACHA,EAAWH,EAAe6P,EAAQ5P,WAAYC,IAGhCC,EAASX,WAAWtH,GAC5BqE,QAAQnC,EAAOW,GAEnB7rB,IAAAA,WAAaqhC,IACfA,EAAQnW,EAAOW,EAEnB,CACF,CJwDWyV,CAAqB5V,EAAaG,EAASX,EAA3CoW,CAAkDxsB,KAC3D,IAAC,CAtE0B,GAyEtB,SAASysB,GAAsB3mB,GAMlC,IALFuR,EAAevR,EAAfuR,gBACAuJ,EAAY9a,EAAZ8a,aACAzC,EAAWrY,EAAXqY,YACAoN,EAAWzlB,EAAXylB,YACAtH,EAAcne,EAAdme,eAEA,OAAO,IAAIqH,GAAiB,CAC1BjU,gBAAAA,EAAiBuJ,aAAAA,EAAczC,YAAAA,EAAaoN,YAAAA,EAAatH,eAAAA,GAE7D,CK7FO,SAASyI,GACdrV,EACAI,EACAwJ,EACAhN,EACAwV,GAGA,MAAO,CACLpS,gBAAAA,EACAI,iBAAAA,EACAwJ,SAAAA,EACAhN,aAAAA,EACAwV,oBAAAA,EAEJ,CCfO,IAAMkD,GAAU,WAkBpB,OAAA7sB,EAAAA,EAAAA,IAjBD,SAAA6sB,EAAY3gC,EAAMqwB,EAAWsP,EAAYiB,IAAaltB,EAAAA,EAAAA,GAAA,KAAAitB,GACpD3sB,KAAKhU,KAAOA,EACZgU,KAAK6sB,WAAa,GAClB7sB,KAAK2rB,WAAaA,EAClB3rB,KAAKqc,UAAYA,EACjBrc,KAAK4sB,YAAcA,EAOnB5sB,KAAK8sB,WAAa,CAAC,EAEnB9sB,KAAK+sB,OAAS/sB,KAAK+sB,OAAO1S,KAAKra,MAC/BA,KAAKsc,aAAetc,KAAKsc,aAAajC,KAAKra,MAC3CA,KAAKwc,aAAexc,KAAKwc,aAAanC,KAAKra,KAC7C,GAAC,EAAAD,IAAA,SAAAvZ,MAED,SAAOwmC,GACLhtB,KAAK6sB,WAAWrhB,KAAKwhB,EACvB,GAAC,CAAAjtB,IAAA,eAAAvZ,MAED,SAAawF,EAAMihC,GACjBjtB,KAAK8sB,WAAW9gC,GAAQihC,CAC1B,GAAC,CAAAltB,IAAA,eAAAvZ,MAED,SAAawF,GACX,OAAOgU,KAAK8sB,WAAW9gC,EACzB,GAAC,CAAA+T,IAAA,SAAAvZ,MAED,WAAU,IAAD6e,EAAA,KACP,MAAQ,CACNrZ,KAAMgU,KAAKhU,KACXqwB,UAAWrc,KAAKqc,UAEhBwQ,WAAY7sB,KAAK6sB,WAAWt0B,OAAS,EAAIyH,KAAK6sB,WAAWrlC,KAAI,SAAA0lC,GAAC,OAAIA,EAAEpR,QAAQ,SAAI1vB,EAChF0gC,WAAYlnC,OAAOmmB,KAAK/L,KAAK8sB,YAAYv0B,OAAS,EAC9C3S,OAAOmmB,KAAK/L,KAAK8sB,YAAYtlC,KAAI,SAAAq0B,GAAC,OAAIxW,EAAKynB,WAAWjR,GAAGC,QAAQ,SAAI1vB,EAE7E,IAAC,CAzCoB,GCIV+gC,GAAM,WAYhB,OAAArtB,EAAAA,EAAAA,IAXD,SAAAqtB,EAAY3C,EAAsB4C,IAAa1tB,EAAAA,EAAAA,GAAA,KAAAytB,GAC7CntB,KAAKlS,KAAO,IAAI6+B,GAAW,QAAS,KAAM,MAC1C3sB,KAAKwqB,qBAAuBA,EAC5BxqB,KAAKotB,YAAcA,EAEnBptB,KAAKqtB,qBAAuB,CAAC,EAE7BrtB,KAAKstB,wBAELttB,KAAKqqB,OAASrqB,KAAKqqB,OAAOhQ,KAAKra,MAC/BA,KAAKutB,eAAiBvtB,KAAKutB,eAAelT,KAAKra,KACjD,GAAC,EAAAD,IAAA,wBAAAvZ,MAED,WAAyB,IAAD6e,EAAA,KACTzf,OAAOmmB,KAAK/L,KAAKwqB,sBACzB3Q,SAAQ,SAAA6Q,GACX,IAAMrO,EAAYhX,EAAKmlB,qBAAqBE,GACvCrlB,EAAKgoB,qBAAqBhR,KAC7BhX,EAAKgoB,qBAAqBhR,GAAa,IAEzChX,EAAKgoB,qBAAqBhR,GAAW7Q,KAAKkf,EAC5C,GACF,GAAC,CAAA3qB,IAAA,iBAAAvZ,MAED,SAAe61B,GACb,OAAOrc,KAAKqtB,qBAAqBhR,EACnC,GAAC,CAAAtc,IAAA,SAAAvZ,MAED,SAAO4a,GAIL,IAHA,IAAMosB,EAAQpsB,EAAKQ,MAhCA,KAiCf6rB,EAAcztB,KAAKlS,KAEdyT,EAAI,EAAGA,EAAIisB,EAAMj1B,OAAQgJ,GAAK,EAAG,CAIxC,IAHA,IAAMmsB,EAAWF,EAAMjsB,GAEnBosB,GAAoB,EACfC,EAAI,EAAGA,EAAIH,EAAYZ,WAAWt0B,OAAQq1B,GAAK,EAAG,CACzD,IAAMC,EAAIJ,EAAYZ,WAAWe,GACjC,GAAIC,EAAE7hC,OAAS0hC,EAAU,CACvBD,EAAcI,EACdF,GAAoB,EACpB,KACF,CACF,CAEA,IAAKA,EAAmB,CACtB,IAAMtR,EAAYrc,KAAKwqB,qBAAqBkD,GAC5C,IAAKrR,EACH,MAAM,IAAI1Y,MAAM,mDAADtW,OAAoDqgC,IAErE,IAAMd,EAAc5sB,KAAKotB,YAAYptB,KAAKwqB,qBAAqBkD,IACzDI,EAAU,IAAInB,GAAWe,EAAUrR,EAAWoR,EAAab,GAEjEa,EAAYZ,WAAWrhB,KAAKsiB,GAC5BL,EAAcK,CAChB,CACF,CAEIhT,OAAOC,yBAGTuN,EAFsBxN,OAAOC,uBAArBuN,WAEEtoB,KAAKlS,KAAKguB,UAGtB,OAAO2R,CACT,IAAC,CAlEgB,GCJNM,IAAgBjuB,EAAAA,EAAAA,IAC3B,SAAAiuB,EAAY9sB,GAGV,IAHmBvB,EAAAA,EAAAA,GAAA,KAAAquB,GACnBnoC,OAAOooC,OAAOhuB,KAAMiB,IAEfjB,KAAK5Z,KAAO4Z,KAAKqX,gBACpB,MAAM,IAAI1T,MAAM,qEAEpB,ICJK,SAASsqB,GAAW1nC,GAKvB,IAJF21B,EAAK31B,EAAL21B,MACA7E,EAAe9wB,EAAf8wB,gBACAhG,EAAS9qB,EAAT8qB,UACA6c,EAAQ3nC,EAAR2nC,SAGQ9Q,EADYhB,EAAeF,EAAO7E,GAClC+F,QAEF+Q,EAAWD,EADKhjC,IAAAA,IAAMkyB,GAAS,SAAAa,GAAM,OAAIA,EAAO12B,IAAI,IACjB8pB,GASzC,OARqBnmB,IAAAA,MAAQA,IAAAA,QAAU,CAACijC,IAAW,IAChD3mC,KAAI,SAAAD,GACH,IAAM02B,EAAS/yB,IAAAA,KAAOkyB,GAAS,SAAAM,GAAC,OAAIA,EAAEn2B,OAASA,CAAI,IACnD,OAAO02B,EAASA,EAAO73B,QAAKgG,CAC9B,IACCuV,UACAnb,OAGL,CClBO,SAAS4nC,GAAmBhR,EAAS3F,GAC1C,IAAM7gB,EAAS1L,IAAAA,IAAMkyB,GAAS,SAAAa,GAAM,OAAIA,EAAOpB,SAAS,IACxD,OAAOpF,EAAiBmJ,eAAiBhB,EAAcE,KAAOlpB,EAASA,EAAO,EAChF,CAOO,SAASy3B,GAAiBC,EAAehX,EAAMiJ,GACpD,IAN+BgO,EAAgBC,EAMvCnX,EAAsCC,EAAtCD,gBAAiBI,EAAqBH,EAArBG,iBACzB,GAAI8I,IAAgBN,EAAYG,eAAgB,CAC9C,GAAIkO,EACF,OAAOA,EAGT,GAAIpjC,IAAAA,WAAamsB,EAAgB8G,cAC5BjzB,IAAAA,WAAausB,EAAiB0G,cAC9B1G,EAAiBmJ,eAAiBhB,EAAcC,OACnD,OAf2B0O,EAeIlX,EAAgB8G,YAfJqQ,EAeiB/W,EAAiB0G,YAd1E,SAAC/S,EAAOiG,GAAS,OAAKnmB,IAAAA,KAAOkgB,GAClC,SAAA/C,GAAI,OAAImmB,EAAgBnmB,KAAUkmB,EAAeld,EAAU,GAAE,CAe/D,CAEA,OAAO,IACT,CC1BO,SAASod,KAEd,OAAOjkC,EAAAA,EAAAA,UAAQ,WACb,IACE,MAAM,IAAImZ,MAAM,aAClB,CAAE,MAAOklB,GAIP,IAHA,IACM6F,EADY7F,EAAV8F,MACa/sB,MAAM,MAElBL,EAAI,EAAGA,EAAImtB,EAAOn2B,OAAQgJ,GAAK,EACtC,GAAU,IAANA,EAAJ,CAOA,IAGMqtB,EAHYF,EAAOntB,GAAGstB,OAAOjtB,MAAM,KAGd,IAAM,GAGjC,GAAKgtB,GACW,SAAbA,GACa,cAAbA,GACa,mBAAbA,IACAA,EAASE,WAAW,OAMvB,OAAOF,CApBP,CAsBJ,CAEA,MAAO,YACT,GAAG,GACL,CC5BO,SAASG,GAAWtZ,EAASuZ,GAClC,OAAO9jC,IAAAA,QAAUuqB,EAASuZ,EAC5B,CAEO,SAASnb,GAASK,EAAWoD,EAAMjG,EAAWiD,GAEnD,IAAMiD,EAAgBkX,KAChBQ,EAAe7K,GAAY9P,GAG/B+C,EAGEC,EAHFD,gBACAI,EAEEH,EAFFG,iBACAgS,EACEnS,EADFmS,oBAGIyF,GAAkBtW,EAAAA,EAAAA,SAAO,GACzBuW,GAAcvW,EAAAA,EAAAA,aAAOxsB,GACrBgjC,GAAexW,EAAAA,EAAAA,aAAOxsB,GAE5BijC,GAAwBC,EAAAA,EAAAA,aAAW,SAAAvd,GAAC,OAAIA,EAAI,CAAC,GAAE,GAAtCwd,GAAwCj6B,EAAAA,GAAAA,GAAA+5B,EAAA,GAA7B,GAEdzY,EAAc4S,GAAeC,GACnCljC,EAAiD0oC,GAAgB,CAAC,EAA1DO,EAAYjpC,EAAZipC,aAAcC,EAAsBlpC,EAAtBkpC,uBACqDC,GAAfre,GAAa,CAAC,GAAlEpQ,QACFsf,QADS,IAAAmP,EAAsC,CAAC,EAACA,GAApCnP,aACqBlJ,EAAgBkJ,YAElD2N,GAAW1jC,EAAAA,EAAAA,UACf,kBAAM6jC,GAAiBoB,EAAwBnY,EAAMiJ,EAAY,GACjE,CAACA,EAAakP,EAAwBnY,IAKlCqY,GAAex5B,EAAAA,EAAAA,cAAY,WAE/B,GAAIygB,EAAa,CACf,IAAQsF,EAAUtF,EAAVsF,MAEFkB,EAAUE,EAAWpB,EAAO7E,EAAiBnD,GAInD,GAHgBsH,EAAWU,EAAO7E,EAAiBnD,GAC3C0b,kBAAkB,CAAErY,cAAAA,IAExB6F,EAAS,CACX,IAAM71B,EAAO6mC,GAAmBhR,EAAS3F,GACzC,GAAIsX,GAAWxnC,EAAM4nC,EAAYrW,SAC/B,OAGFqW,EAAYrW,QAAUvxB,EAEtBgoC,GACF,CACF,CACF,GAAG,CAAChY,EAAerD,EAAW0C,EAAaS,EAAiBI,IAEtDoY,GAAgB15B,EAAAA,EAAAA,cAAY,WAChC,GAAIygB,EAAa,CACf,IAGAkZ,EADgBtU,EAFE5E,EAAVsF,MAE0B7E,EAAiBnD,GAEjD+F,OACE7D,QADI,IAAA0Z,EAEF,CAAC,EAACA,GADJ1Z,MAIJ,GAAI2Y,GAAW3Y,EAAOgZ,EAAatW,SACjC,OAGFsW,EAAatW,QAAU1C,EACvBmZ,GACF,CACF,GAAG,CAACrb,EAAW0C,EAAaS,IAEtB0Y,GAAevlC,EAAAA,EAAAA,UAAQ,iBAAO,CAClCgrB,OAAQma,EACRpX,QAASsX,EACV,GAAG,CAACF,EAAcE,IA+DnB,OA7DA14B,EAAAA,EAAAA,YAAU,WACR,GAAIyf,EAAa,CACf,IAAMqF,EAAa5E,EAAgBsH,gBAC3BzC,EAAUtF,EAAVsF,MAEFiD,GADW5C,EAAYN,IAAeD,EAAeC,EAAYC,IAC9CV,WAAWtH,GAGpC,OAFAiL,EAAQtG,UAAUkX,GAEX,kBAAM5Q,EAAQkJ,YAAY0H,EAAc,CACjD,CACA,OAAO7kC,IAAAA,IACT,GAAG,CAAC6kC,EAAc7b,EAAW0C,EAAaS,KAE1ClgB,EAAAA,EAAAA,YAAU,WACR,GAAIyf,IAAgBuY,EAAYrW,SAAW5tB,IAAAA,WAAagjC,GAAW,CACjE,IAAMjS,EAAa5E,EAAgBsH,gBAC3BzC,EAAUtF,EAAVsF,MAEFiD,GADW5C,EAAYN,IAAeD,EAAeC,EAAYC,IAC9CV,WAAWtH,GAEpC,IACE,IAAM8b,EAAe/B,GAAY,CAC/B/R,MAAAA,EACA7E,gBAAAA,EACAhG,UAAAA,EACA6c,SAAAA,IAGF,IAAKhjC,IAAAA,QAAU8kC,GAAe,CAC5B9Q,EAAqBC,EAAS6Q,GAC9B,IAAM5S,EAAUwB,EAAe1C,EAAO7E,EAAiB2Y,GACvDb,EAAYrW,QAAUsV,GAAmBhR,EAAS3F,GAClDyX,EAAgBpW,SAAU,EAC1ByW,GACF,CACF,CAAE,MAAOnZ,GACP,CAEJ,CAGF,GAAG,CAACQ,IrB/GC,SAA4BqZ,EAAIC,GACrC,IAAMC,GAAUvX,EAAAA,EAAAA,SAAO,GACjBwX,GAAWxX,EAAAA,EAAAA,QAAOsX,IAExB/4B,EAAAA,EAAAA,YAAU,WACR,IAAMk5B,EAASD,EAAStX,QAAQwX,OAAM,SAACtuB,EAAKjC,GAAG,OAAK7U,IAAAA,QAAU8W,EAAKkuB,EAAKnwB,GAAK,KAEzEowB,EAAQrX,SAAYuX,GACtBJ,IAGFE,EAAQrX,SAAU,EAClBsX,EAAStX,QAAUoX,CACrB,GAAG,CAACA,EAAMD,KAEVM,EAAAA,EAAAA,eAAc,qBAChB,CqBiGEC,EAAmB,WACjB,GAAItB,EAAgBpW,SAAWlC,EAAa,CAC1C,IAAK4Y,EAAc,CACjB,IAAMzY,EAAU,IAAIgX,GAAiB,CACnC3nC,GAAI8tB,EACJmD,gBAAAA,EACAC,KAAAA,EACAjG,UAAAA,EACA9pB,KAAM,KACNgwB,cAAAA,IAEFX,EAAYwR,YAAYrR,EAC1B,CACAmY,EAAgBpW,SAAU,CAC5B,CAEF,GAAG,CAAC6W,EAAc/Y,EAAaS,EAAiBC,EAAMjG,IAE/C,CAAC8d,EAAYrW,QAASsW,EAAatW,QAC5C,CC1JO,SAAS2X,GAAgBnc,EAAQrV,GAEtC,IAAMyxB,GAAWloC,EAAAA,EAAAA,GAAA,GAAQyW,GAEzB,OAAKqV,GAIDqc,EAAAA,EAAAA,YAAWrc,GACNA,EAAOoc,IAGhBloC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKyW,GACAqV,GATIoc,CAWX,CCHA,IAAME,GAAa,SAAArpC,GAAI,OAAIA,GAAQ2D,IAAAA,IAAM3D,GAAM,SAAAy3B,GAAC,OAAIA,EAAE5nB,OAAO,GAAE,EAEzDy5B,GAAoC,SAAAzT,GAAO,OAAIlyB,IAAAA,IAAMkyB,GAAS,SAAAM,GAAC,OAAAz3B,EAAAA,EAAAA,GAAA,CACnEmR,QAASsmB,EAAEb,WACVC,EAA0BY,EAAEt3B,GAAE,GAC7B,EAEJ,SAAS0qC,GACP5U,EACA7E,EACA0Z,EACAC,GAEA,GAAI9U,EAAO,CACT,IAAMN,EAAcQ,EAAeF,EAAO7E,GAE1CuE,EAAYyB,mBAAmB0T,GAC/BnV,EAAYyB,mBAAmB2T,EACjC,CACF,CAEA,SAASC,GACP/U,EACA7E,EACA+F,GAEA,GAAIlB,GAASkB,GAAWA,EAAQ7kB,OAAS,EAAG,CAC1C,IAAMqjB,EAAcQ,EAAeF,EAAO7E,GAC1CuE,EAAYyB,mBAAmBD,GAC/B,IAAMlC,EAAMkC,EAAQ51B,KAAI,SAAAy2B,GAAM,OAAIA,EAAOnB,EAAwB,IAGjElB,EAAYT,OAAO,kBAAmBD,EACxC,CACF,CAEA,SAASmQ,GAAcnP,EAAO7E,GAAgC,IAAf+F,EAAOxd,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAG,GACvD,GAAIsc,EAAO,CACT,IAAMN,EAAcQ,EAAeF,EAAO7E,GACpC6D,EAAMkC,EAAQ51B,KAAI,SAAAy2B,GAAM,OAAIA,EAAOnB,EAAwB,IAEjElB,EAAYyP,cAAcnQ,GAC1BU,EAAYT,OAAO,kBAAmBD,EACxC,CACF,CASA,SAASgW,GAAyBhV,EAAO7E,EAAiBN,EAASqG,GACjE,IAAMqB,EAAoBvC,EAAMiV,wBAAwBpa,GACxDsU,GAAcnP,EAAO7E,EAAiBoH,GACtCwS,GAAW/U,EAAO7E,EAAiB+F,EACrC,CA+BO,SAAS/I,GAAYH,EAAWoD,EAAMhD,GAE3C,IAAMiD,EAAgBkX,KAChBQ,EAAe7K,GAAY9P,GAG/B+C,EAIEC,EAJFD,gBACAI,EAGEH,EAHFG,iBACAwJ,EAEE3J,EAFF2J,SACAwI,EACEnS,EADFmS,oBAEI2H,GAA2BxY,EAAAA,EAAAA,UAC3BhC,EAAc4S,GAAeC,GAE7BkG,GAAex5B,EAAAA,EAAAA,cAAY,SAAC81B,EAAqBlV,GACrD,GAAIH,EAAa,CACf,IAAQsF,EAAUtF,EAAVsF,MACQV,EAAWU,EAAO7E,EAAiBnD,GAC3CsG,aAER,IAAApV,EAGK2R,GAAWA,EAAQsa,cAAiB,CAAC,EAFxCjZ,EAAUhT,EAAVgT,WAIF,GAHsBhT,EAApBksB,qBAIA,GAAIrQ,IAAa5B,EAAUI,SAAU,CACnC,IAAMsR,EAAwBK,EAAyBtY,SAAW,GAC5DyY,EAAmBV,GAAkCE,GAC3DD,GACE5U,EACA7E,EACAka,EACAtF,EAEJ,MAAWhL,IAAa5B,EAAUC,KAChC4R,GACEhV,EACA7E,EACAN,EACAkV,QAGKhL,IAAa5B,EAAUC,IAChC2R,GAAW/U,EAAO7E,EAAiB4U,GAC1BhL,IAAa5B,EAAUI,UAChCqR,GACE5U,EACA7E,EACA,GACA4U,GAIJ,GAAIhL,IAAa5B,EAAUE,OAAQ,CACjC,IAAQh4B,EAASwvB,EAATxvB,KACFw3B,EAAYpO,MAAMlP,QAAQla,GAAQA,EAAO,CAACA,GACxC42B,EAAgB1G,EAAhB0G,YACFpS,EAAOgT,EAAUv3B,KAAI,SAAAw3B,GAAC,OAAIb,EAAYa,EAAE,IACxC5B,EAAUyB,EAAsB3C,EAAO5E,EAAMvL,GAC7CylB,EAAaX,GAAkCzT,GAErDiO,GAAcnP,EAAO7E,EAAiBma,EACxC,CAEA,IAAMjqC,EAAOqpC,GAAW3E,GAEpB7T,GACFA,EAAW7wB,EAEf,CACF,GAAG,CAAC2sB,EAAW0C,EAAaS,EAAiBI,EAAkBH,EAAM2J,IAE/D4O,GAAgB15B,EAAAA,EAAAA,cAAY,SAACigB,EAAOW,GACxC,GAAIH,EAAa,CACf,IAAQsF,EAAUtF,EAAVsF,MACRpW,EAGKiR,GAAWA,EAAQsa,cAAiB,CAAC,EAFxC9Y,EAAOzS,EAAPyS,QACA+Y,EAAoBxrB,EAApBwrB,qBAGIP,EAAwBK,EAAyBtY,SAAW,GAC5DyY,EAAmBV,GAAkCE,GAEvDO,IACErQ,IAAa5B,EAAUI,SACzBqR,GACE5U,EACA7E,EACAka,EACA,IAEOtQ,IAAa5B,EAAUC,KAChC4R,GACEhV,EACA7E,EACAN,EACA,KAKFwB,GACFA,EAAQnC,EAEZ,CACF,GAAG,CAACQ,EAAaS,EAAiB4J,IAE5B5L,GAAWlf,EAAAA,EAAAA,cAAY,SAACkb,EAAWogB,GACvC,GAAI7a,EAAa,CACe,IAA9B,IAAQsF,EAAUtF,EAAVsF,MAAsBzL,EAAA7Q,UAAArH,OAFwBnQ,EAAI,IAAAuoB,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJxoB,EAAIwoB,EAAA,GAAAhR,UAAAgR,GAG1D,IACMygB,EAAeZ,GADCroC,EAAK0lB,OAAO,GAAG,GACemhB,GAC5CqC,EAAyBD,EAAzBC,qBAIR,GAAIpd,EAAW,CACb,IAAM6c,EAAwBzT,EAAWpB,EAAO7E,EAAiBnD,GAC7D6c,IACFK,EAAyBtY,QAAUiY,EAEvC,CAEA,IAAMha,EAAU,IAAIgX,GAAiB,CACnC3nC,GAAI8tB,EACJmD,gBAAAA,EACAC,KAAAA,EACAjG,UAAAA,EACA9pB,KAAMkqC,EACNrF,OAAQuD,EACRpD,QAASsD,EACTwB,aAAAA,EACA9Z,cAAAA,IAMF,GAAI+Z,EACF,GAAIrQ,IAAa5B,EAAUI,SAAU,CACnC,IAAMsR,EAAwBK,EAAyBtY,SAAW,GAC5DyY,EAAmBV,GAAkCE,GAErDW,EAAiBJ,EADJpmC,IAAAA,IAAMqmC,GAAkB,SAAAvS,GAAC,OAAIA,EAAE5nB,OAAO,IACDq6B,GAEhDtT,EAAgB1G,EAAhB0G,YACF8N,EAAsB/gC,IAAAA,IAAMwmC,GAAgB,SAAA1S,GAChD,IAAMjf,EAAMoe,EAAYa,GACxB2S,EAAiB9S,EAAsB3C,EAAO5E,EAAM,CAACvX,IAA9Cke,GAAmD3oB,EAAAA,GAAAA,GAAAq8B,EAAA,GAA7C,GACb,OAAA1rC,EAAAA,EAAAA,GAAA,CACEmR,QAAS4nB,GACRlC,EAA0BmB,EAAO73B,GAEtC,IAEA0qC,GACE5U,EACA7E,EACAka,EACAtF,EAEJ,MAAO,GAAIhL,IAAa5B,EAAUC,IAAK,CACrC,IAAM/3B,EAAO+pC,EAAqBG,GAC5BrU,EAjMhB,SAAiB/L,EAAWiG,EAAM/vB,EAAM05B,GACtC,IAAQ6K,EAAYza,EAAZya,QACAzU,EAAsCC,EAAtCD,gBAAiBI,EAAqBH,EAArBG,iBACjB2S,EAAsB/S,EAAtB+S,kBACJpN,EAAWoN,EAAoBA,EAAkB/Y,QAAajlB,EAE1D2/B,EAAsBD,EAAtBC,WAAYC,EAAUF,EAAVE,MAEpB,GAAIvU,EAAiBmJ,eAAiBhB,EAAcE,MAAQmB,IAAa5B,EAAUC,IAMjF,OAJKtC,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,MAE7BoY,MAAMlP,QAAQla,GAAQA,EAAO,CAACA,IAC/BC,KAAI,SAAAkkC,GAAM,OAAIjU,EAAiBgU,QAAQC,EAAQ1O,EAAS,IAGzE,GAAIvF,EAAiBmJ,eAAiBhB,EAAcC,OAMlD,OALK7C,GAAYgP,EAAMzzB,OAAS,IAC9BykB,EAAW+O,EAAWC,EAAMA,EAAMzzB,OAAS,KAItCkf,EAAiBgU,QAAQlkC,EAAMy1B,GAGxC,MAAM,IAAIrZ,MAAM,yCAClB,CAsK0B8nB,CAAQ1U,EAAQ1F,UAAWiG,EAAM/vB,EAAM05B,IA9MjE,SAA8B/E,EAAO7E,EAAiBN,EAASqG,GACzDlB,IACFA,EAAM0V,qBAAqB7a,EAASqG,GACpC6T,GAAW/U,EAAO7E,EAAiB+F,GAEvC,CA0MUwU,CACE1V,EACA7E,EACAN,EACAqG,EAEJ,CAMFxG,EAAYwR,YAAYrR,EAC1B,CACF,GAAG,CACDQ,EACAoY,EACAzb,EACA0C,EACAiZ,EACAZ,EACA5X,EACAI,EACAH,EACA2J,IAGF,OAAO5L,CACT,CC5RO,SAASwc,GAAW3d,EAAWoD,EAAMhD,GAE1C,IAAMiD,EAAgBkX,KAChBQ,EAAe7K,GAAY9P,GAG/B+C,EAGEC,EAHFD,gBACAI,EAEEH,EAFFG,iBAGIb,EAAc4S,GADhBlS,EADFmS,qBAIIkG,GAAex5B,EAAAA,EAAAA,cAAY,SAAC0nB,EAAW9G,GAC3C,GAAIH,EAAa,CACf,IACEwB,GACGrB,GAAWA,EAAQsa,cAAiB,CAAC,GADxCjZ,WAKI7wB,EAAO6mC,GADG9Q,EADE1G,EAAVsF,MAC0B7E,EAAiBnD,GACVuD,GAErCW,GACFA,EAAW7wB,EAEf,CACF,GAAG,CAAC2sB,EAAW0C,EAAaS,EAAiBI,IAEvCoY,GAAgB15B,EAAAA,EAAAA,cAAY,SAACigB,EAAOW,GACxC,IAE2C+a,GAAtC/a,GAAWA,EAAQsa,cAAiB,CAAC,GADxC9Y,cAAO,IAAAuZ,EAAG5mC,IAAAA,KAAM4mC,GAEV1b,EACV,GAAG,IAEG2b,GAAY57B,EAAAA,EAAAA,cAAY,SAAC+V,GAC7B,GAAI0K,EAAa,CACe,IAA9B,IAAQsF,EAAUtF,EAAVsF,MAAsBzL,EAAA7Q,UAAArH,OAFWnQ,EAAI,IAAAuoB,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJxoB,EAAIwoB,EAAA,GAAAhR,UAAAgR,GAG7C,IACMygB,EAAeZ,GADCroC,EAAK0lB,OAAO,GAAG,GACemhB,GAC5CQ,EAA2B4B,EAA3B5B,uBAGNpe,EAEEnF,EAFFmF,UACA2G,EACE9L,EADF8L,QAEyEga,GAAf3gB,GAAa,CAAC,GAAlEpQ,QACFsf,QADS,IAAAyR,EAAsC,CAAC,EAACA,GAApCzR,aACqBlJ,EAAgBkJ,YAElDxJ,EAAU,IAAIgX,GAAiB,CACnC3nC,GAAI8tB,EACJmD,gBAAAA,EACAC,KAAAA,EACAjG,UAAAA,EACA9pB,KAAMywB,EACNoU,OAAQuD,EACRpD,QAASsD,EACTwB,aAAAA,EACA9Z,cAAAA,IAGI2W,EAAWG,GAAiBoB,EAAwBnY,EAAMiJ,GAEhE,GAAIr1B,IAAAA,WAAagjC,GACf,IACE,IAAM8B,EAAe/B,GAAY,CAC/B/R,MAAAA,EACA7E,gBAAAA,EACAhG,UAAAA,EACA6c,SAAAA,IAGF,IAAKhjC,IAAAA,QAAU8kC,GAAe,CAG5B9Q,EAFgB1D,EAAWU,EAAO7E,EAAiBnD,GAErB8b,GAE9B,IACMzoC,EAAO6mC,GADG9Q,EAAWpB,EAAO7E,EAAiBnD,GACVuD,GAIzC,YAFAkY,EAAapoC,EAAMwvB,EAGrB,CACF,CAAE,MAAOX,GACP,CAGJQ,EAAYwR,YAAYrR,EAC1B,CACF,GAAG,CACDQ,EACAoY,EACAzb,EACA0C,EACAiZ,EACAZ,EACA5X,EACAI,EACAH,IAGF,OAAOya,CACT,CCjGA,IAAME,GAA0B,SAAC/V,EAAO7E,EAAiBnD,GACvD,IAAMkJ,EAAUE,EAAWpB,EAAO7E,EAAiBnD,GAEnD,OAAOkJ,GAAWA,EAAQ51B,KAAI,SAAAy2B,GAAM,OAAIA,EAAOpB,SAAS,GAC1D,EAEMqV,GAAqB,SAAChW,EAAO7E,EAAiB6D,GAClD,IAAMkC,EAAUwB,EAAe1C,EAAO7E,EAAiB6D,GACvD,OAAOkC,GAAWA,EAAQ51B,KAAI,SAAAy2B,GAAM,OAAIA,EAAOpB,SAAS,GAC1D,EAEO,SAASzI,GAAcF,EAAWoD,EAAMhD,GAE7C,IAAMiD,EAAgBkX,KAChBQ,EAAe7K,GAAY9P,GAG/BW,EAIEga,EAJFha,eAAckd,EAIZlD,EAHFmD,WAAAA,OAAU,IAAAD,GAAQA,EAClBE,EAEEpD,EAFFoD,gBACA5C,EACER,EADFQ,uBAEI6C,GAAQ1Z,EAAAA,EAAAA,QAAO1E,GACbmD,EAAyCC,EAAzCD,gBAAiBoS,EAAwBnS,EAAxBmS,oBAEnBjY,GAAcoH,EAAAA,EAAAA,QAAO,GACrB2Z,GAAY3Z,EAAAA,EAAAA,QAAO,MACzB/iB,GAAkCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAT,EAAAA,GAAAA,GAAAO,EAAA,GAA1CmgB,EAASjgB,EAAA,GAAEy8B,EAAYz8B,EAAA,GACxB6gB,EAAc4S,GAAeC,GAEnC9xB,GAAwB7B,EAAAA,EAAAA,eAAS1J,GAAUwL,GAAAtC,EAAAA,GAAAA,GAAAqC,EAAA,GAApCpQ,EAAIqQ,EAAA,GAAEglB,EAAOhlB,EAAA,GACpB66B,GAA0B38B,EAAAA,EAAAA,eAAS1J,GAAUsmC,GAAAp9B,EAAAA,GAAAA,GAAAm9B,EAAA,GAAtCrc,EAAKsc,EAAA,GAAEC,EAAQD,EAAA,GAEhBE,GAAqBz8B,EAAAA,EAAAA,cAAY,WACrCo8B,EAAUzZ,QAAU,KACpB0Z,GAAa,GACbhhB,EAAYsH,QAAU,CACxB,GAAG,IAECwZ,EAAMxZ,UAAY5E,IACpBoe,EAAMxZ,QAAU5E,EAChB0e,KAGF,IAAMC,GAA6B18B,EAAAA,EAAAA,cAAY,SAAAinB,GAC7C5L,EAAYsH,QAAUsE,EAAQ7kB,MAChC,GAAG,IAIGwd,GAAU5f,EAAAA,EAAAA,cAAY,kBAAM,CAAI,GAAE,IAElC28B,GAAmB38B,EAAAA,EAAAA,cAAY,SAAC48B,EAAI1X,EAAYtE,GACpD,IAAQmF,EAAUtF,EAAVsF,MACF8W,EAAcf,GAAwB/V,EAAO7E,EAAiBnD,GAC9DiL,EAAU3D,EAAWU,EAAO7E,EAAiBnD,GACnDiL,EAAQ3E,aACRqY,EAA2BG,GAC3BpW,EAAQoW,GAGRT,EAAUzZ,QAAU,KACpB0Z,GAAa,GAEbrT,EAAQyQ,kBAAkB,CAAErY,cAAAA,IAE5B,IACEa,GACGrB,GAAWA,EAAQsa,cAAiB,CAAC,GADxCjZ,WAGEA,GAAcrB,EAAQ3wB,KAAO8tB,GAC/BkE,EAAW4a,EAEf,GAAG,CAACzb,EAAerD,EAAW0C,EAAaS,EAAiBwb,IAEtDI,GAAkB98B,EAAAA,EAAAA,cAAY,SAAC48B,EAAI1J,EAAKtS,GAC5C,GAAIH,EAAa,CACf,IAGAkZ,EADgBtU,EAFE5E,EAAVsF,MAE0B7E,EAAiBnD,GAEjD+F,OACSmV,QADH,IAAAU,EAEF,CAAC,EAACA,GADJ1Z,MAIAgZ,IACFmD,EAAUzZ,QAAU,KACpB0Z,GAAa,IAEfG,EAASvD,GAET,IACE7W,GACGxB,GAAWA,EAAQsa,cAAiB,CAAC,GADxC9Y,QAGEA,GAAWxB,EAAQ3wB,KAAO8tB,IAAchpB,IAAAA,YAAcm+B,IACxD9Q,EAAQ8Q,EAEZ,CACF,GAAG,CAACnV,EAAW0C,EAAaS,IAEtBoD,GAAoBtkB,EAAAA,EAAAA,cAAY,SAACgpB,EAAS+T,GAC9C,GAAIhoC,IAAAA,WAAamnC,GAAkB,CACjC,IAAQnW,EAAUtF,EAAVsF,MACFkB,EAAU6U,GAAwB/V,EAAO7E,EAAiBnD,GAC1D8c,EAAakB,GAAmBhW,EAAO7E,EAAiB6b,GACxDC,EAAgBd,EAAgBjV,EAAS4T,GACzCoC,EAAqBtU,EAAgC5C,EAAO5E,EAAM6b,GAClEnD,EAAe9kC,IAAAA,IAAMkoC,GAAoB,SAAA1V,GAAC,OAAIA,EAAEt3B,EAAE,IAExD+4B,EAAQxE,MAAMqV,EAChB,CACF,GAAG,CAAC9b,EAAW0C,EAAayb,EAAiBhb,EAAiBC,IAExDyY,GAAevlC,EAAAA,EAAAA,UAAQ,iBAAO,CAClCgrB,OAAQsd,EACRva,QAAS0a,EACTxY,kBAAAA,EACD,GAAG,CAACqY,EAAkBrY,EAAmBwY,KAE1C97B,EAAAA,EAAAA,YAAU,WACR,GAAIyf,EAAa,CACf,IAAMqF,EAAa5E,EAAgBsH,gBAC3BzC,EAAUtF,EAAVsF,MAEFiD,GADW5C,EAAYN,IAAeD,EAAeC,EAAYC,IAC9CV,WAAWtH,GAGpC,OAFAiL,EAAQtG,UAAUkX,GAEX,kBAAM5Q,EAAQkJ,YAAY0H,EAAc,CACjD,CACA,OAAO7kC,IAAAA,IACT,GAAG,CAAC6kC,EAAc7b,EAAW0C,EAAaS,IAE1C,IAAMvB,GAAW3f,EAAAA,EAAAA,cAAY,SAAAk9B,GAC3B,IAAId,EAAUzZ,SAITlC,EAAL,CAGA,IAAQ0c,EAA8Dre,EAA9Dqe,SAAQC,EAAsDte,EAApDhU,QAAwB8gB,QAAjB,IAAAwR,EAAsC,CAAC,EAACA,GAApChT,YACrBrE,EAAUtF,EAAVsF,MACF8W,EAAcf,GAAwB/V,EAAO7E,EAAiBnD,GAC9Dmd,EAAeZ,GAAgB4C,EAAepE,GAEpD,GAAI+D,GAAeA,EAAYz6B,QAAUiZ,EAAYsH,QAAUwa,EAO7D,OANA9hB,EAAYsH,QAAUka,EAAYz6B,OAClCqkB,EAAQoW,QACJ3B,GAAgBA,EAAajZ,YAC/BiZ,EAAajZ,WAAW4a,IAM5B,IAAMzS,EAAcwB,GAAoB1K,EAAgBkJ,YAClD2N,EAAWG,GAAiBoB,EAAwBnY,EAAMiJ,GAEhE,GAAIr1B,IAAAA,WAAagjC,GACf,IACE,IAAM8B,EAAe/B,GAAY,CAC/B/R,MAAAA,EACA7E,gBAAAA,EACAhG,UAAW4D,EACXiZ,SAAAA,IAGF,IAAKhjC,IAAAA,QAAU8kC,GAKb,YAFA9Q,EAFgB1D,EAAWU,EAAO7E,EAAiBnD,GAErB8b,EAIlC,CAAE,MAAO3G,GACP,CAIJ,IAAMmK,GAAWhrC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACZysB,GAAc,IACjBzD,YAAa4gB,EACT5gB,EAAYsH,QAAWtH,EAAYsH,QAAUwa,EAC7C9hB,EAAYsH,UAGZ2a,EAAOvoC,IAAAA,WAEbqnC,EAAUzZ,QAAU2a,EACpBjB,GAAa,GAEb,IAAMzb,EAAU,IAAIgX,GAAiB,CACnC3nC,GAAI8tB,EACJmD,gBAAAA,EACAC,KAAAA,EACAjG,UAAWmiB,EACXjsC,KAAM,KACN8pC,aAAAA,EACA9Z,cAAAA,IAEFX,EAAYwR,YAAYrR,EA7DxB,CA8DF,GAAG,CACDQ,EACArD,EACA0C,EACA3B,EACAwa,EACAR,EACA5X,EACAC,EACA8a,IASF,OANY5nC,EAAAA,EAAAA,UAAQ,iBAAM,CAAC,CAAEjD,KAAAA,EAAM6uB,MAAAA,GAAS,CAC1CJ,UAAAA,EACAD,QAAAA,EACAD,SAAAA,GACA,GAAE,CAACvuB,EAAM6uB,EAAOL,EAASC,EAAWF,GAGxC,CC7NA,SAAS4d,KACP,OAAO9L,EAAAA,GAAAA,KACT,CAEO,SAAS9T,GAAa9nB,EAAMy9B,GACjC,IAAM7S,EAAc4S,GAAeC,GAC7BkK,GAAe/a,EAAAA,EAAAA,QAAO,MAE5B,OAAK5sB,GAAQ2nC,EAAa7a,SAItBlC,IACE5qB,GAEG4qB,EAAY2R,cAAcv8B,KAC7B4qB,EAAY2R,cAAcv8B,GAAQ0nC,MAGpCC,EAAa7a,QAAUlC,EAAY2R,cAAcv8B,IAEjD2nC,EAAa7a,QAAU4a,MAZlBC,EAAa7a,OAiBxB,C,4BC1CO,SAAS8a,GAAavtB,GAC3B,OAAO7b,EAAAA,EAAAA,UAAQ,kBAAM6b,EAAQ7e,KAAI,SAAAmyB,GAAM,OAAI,mBAAAlJ,EAAA7Q,UAAArH,OAAIqhB,EAAI,IAAAjJ,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJgJ,EAAIhJ,GAAAhR,UAAAgR,GAAA,OAAK,IAAIijB,KAAJ,EAAY,SAACpwB,EAASqwB,GAC5E,IAgBMC,EAAU,GAAA1mC,OAAOusB,EAAK,CAhBN,SAAAtF,GAAM,OAAA9rB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvB8rB,GAAM,IACT8D,WAAY,SAAAwT,GACNtX,EAAO8D,YACT9D,EAAO8D,WAAWwT,GAEpBnoB,EAAQmoB,EACV,EACArT,QAAS,SAAAnC,GACH9B,EAAOiE,SACTjE,EAAOiE,QAAQnC,GAEjB0d,EAAO1d,EACT,GAAC,IAIHuD,EAAMrX,WAAC,GAADyC,EAAAA,EAAAA,GAAIgvB,GACZ,GAAE,IAAC,GAAE1tB,EACP,CCpBO,SAAS2tB,KACd,IAAAtK,GAAyB9iC,EAAAA,EAAAA,YAAW0vB,GAA3B6C,GAA8C7jB,EAAAA,GAAAA,GAAAo0B,EAAA,GAAlC,GAmBrB,OAjBsBvzB,EAAAA,EAAAA,cAAY,WAChCjL,IAAAA,KAAOiuB,GAAc,SAAAvC,GACnB,GAAIA,EAAa,CACf,IACMqd,EADYrd,EAAVsF,MACsBsC,aAC9BtzB,IAAAA,KAAO+oC,GAAiB,SAAArY,GACtB,IAAMsY,EAAatY,GAAeA,EAAYwB,QACxC+W,EAAwBjpC,IAAAA,MAAQgpC,EAAY,MAC9CC,GAAyBA,EAAsB57B,OAAS,IAC1DqjB,EAAYyP,cAAc8I,GAC1BvY,EAAYT,OAAO,kBAAmBgZ,GAE1C,GACF,CACF,GACF,GAAG,CAAChb,GAGN,C,sWCpBMib,EAAc,SAAH7tC,GAAA,IAAM8tC,EAAM9tC,EAAN8tC,OAAM,OAC3BvtC,EAAAA,EAAAA,KAAA,OAAAE,UACEF,EAAAA,EAAAA,KAACwtC,EAAAA,KAAI,CAACC,QAAQ,SAAS9lC,OAAQ,CAAEX,KAAM,CAAEC,MAAO,YAAc/G,SAAEqtC,KAC5D,EAOKG,EAAkB,SAAHpvB,GAAY,OAAAA,EAANqvB,OACzBjtC,KAAI,SAAA4uB,GAAK,OACdtvB,EAAAA,EAAAA,KAAA,OAAqBC,UAAU,uBAAsBC,SAClDkE,IAAAA,QAAUkrB,EAAMse,QAAS5tC,EAAAA,EAAAA,KAACstC,EAAW,CAACC,OAAQje,EAAMrM,MAAUqM,EAAMse,MAAMltC,KAAI,SAAAhB,GAAK,OAClFS,EAAAA,EAAAA,MAAA,QAAkByG,MAAO,CAAEinC,QAAS,QAAS5mC,MAAO,SAAU/G,SAAA,CAC3DR,EAAM,KACPM,EAAAA,EAAAA,KAACstC,EAAW,CAACC,OAAQje,EAAMrM,QAFlBvjB,EAGJ,KALD4vB,EAAMrM,IAOV,GACN,EAOJyqB,EAAgBtsC,aAAe,CAC7BusC,OAAQ,IC1BV,IAAMG,EAAa,CAAE9mC,KAAM,CAAEiB,WAAY,MAE5B8lC,EAAe,SAAHtuC,GAElB,IADLuuC,EAAUvuC,EAAVuuC,WAAYC,EAAWxuC,EAAXwuC,YAAaC,EAA0BzuC,EAA1ByuC,2BAA4BP,EAAMluC,EAANkuC,OAE/C9tC,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aACxBgP,GAA0CC,EAAAA,EAAAA,UAASg/B,GAAW/+B,GAAAT,EAAAA,EAAAA,GAAAO,EAAA,GAAvDo/B,EAAal/B,EAAA,GAAEm/B,EAAgBn/B,EAAA,IAEtCvL,EAAAA,EAAAA,UAAQ,WACN0qC,EAAiBJ,EACnB,GAAG,CAACA,IAEJ,IAAMK,GAAiCh/B,EAAAA,EAAAA,cACrC,SAACi/B,GACCF,EAAiBE,EAAMC,OAAO7uC,OAC9BwuC,EAA2B,CAAExuC,MAAO4uC,EAAMC,OAAO7uC,MAAO+e,KAAM,eAChE,GACA,CAAC2vB,EAAkBF,IAGrB,OACE/tC,EAAAA,EAAAA,MAAA,OAAKF,UAAU,0BAAyBC,SAAA,EACtCC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAACtE,OAAQ,CAAEC,YAAa,GAAIJ,SAAA,EAC3CF,EAAAA,EAAAA,KAACwtC,EAAAA,KAAI,CAAC7lC,OAAQmmC,EAAW5tC,SAAEL,EAAKiB,UAAU1B,iBAC1CY,EAAAA,EAAAA,KAACwuC,EAAAA,WAAU,CACT,aAAY3uC,EAAKiB,UAAU1B,wCAC3BqvC,MAAM,+DAIVtuC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,GAAIJ,SAAA,EAC9B+tC,IACAjuC,EAAAA,EAAAA,KAACwtC,EAAAA,KAAI,CAAC7lC,OAAQmmC,EAAW5tC,SAAEL,EAAKiB,UAAU1B,uHAE5CY,EAAAA,EAAAA,KAAC0uC,EAAAA,UAAS,CACRC,WAAS,EACTV,YAAaA,EACbW,KAAM,GACNC,WAAW,EACXnvC,MAAOyuC,GAAiB,GACxB9oC,SAAUgpC,EACVpuC,UAAU,4BAGX0tC,GAAUA,EAAOl8B,OAAS,IACzBzR,EAAAA,EAAAA,KAAA,OAAKC,UAAU,iCAAgCC,UAC7CF,EAAAA,EAAAA,KAAC0tC,EAAe,CAACC,OAAQA,WAMrC,EASAI,EAAa3sC,aAAe,CAC1BusC,OAAQ,GACRM,YAAa,I,oGCrEFa,EAAY,WAAH,MAAU,CAC9Bv2B,KAAM,CACJw2B,YAAa,IAEhB,EC0CYC,GAAoBt6B,EAAAA,EAAAA,cApCH,SAAHjV,GAA4B,IAAtBwvC,EAAKxvC,EAALwvC,MAAOnhC,EAAOrO,EAAPqO,QAChCjO,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClBua,GAAOpK,EAAAA,EAAAA,kBAAiBpC,EAAS,mCACjCpL,GAAUwsC,EAAAA,EAAAA,kBAAiBJ,GACWK,GAAqBrvC,EAAAA,EAAAA,YAAWsvC,EAAAA,oBAApEC,QAAWC,wBAEnB,OACEtvC,EAAAA,EAAAA,KAAA,OAAKC,UAAU,sBAAqBC,UAClCF,EAAAA,EAAAA,KAACgB,EAAAA,EAAU,CAACE,OAAO,YAAWhB,UAC5BC,EAAAA,EAAAA,MAACgB,EAAAA,EAAc,CAAAjB,SAAA,EACbF,EAAAA,EAAAA,KAACuvC,EAAAA,EAAe,CAAArvC,SAAEL,EAAKiB,UAAU1B,UAChC6vC,IAAUO,EAAAA,GAAWC,SACpBzvC,EAAAA,EAAAA,KAACwtC,EAAAA,EAAI,CAACkC,KAAM,IAAIxvC,SAAEivC,EAAiBtvC,EAAKiB,UAAU1B,yUAAkVS,EAAKiB,UAAU1B,4IAEnZY,EAAAA,EAAAA,KAACwtC,EAAAA,EAAI,CAACkC,KAAM,IAAIxvC,SAAEivC,EAAiBtvC,EAAKiB,UAAU1B,yUAAkVS,EAAKiB,UAAU1B,2IAEpZkb,IACCta,EAAAA,EAAAA,KAAA,QAAMC,UAAWyC,EAAQ6V,KAAKrY,UAC5BF,EAAAA,EAAAA,KAACkM,EAAAA,EAAI,CAACC,KAAMmO,EAAMi0B,OAAO,SAASoB,IAAI,sBAAqBzvC,UACzDF,EAAAA,EAAAA,KAAA,QAAAE,UACEF,EAAAA,EAAAA,KAAA,KAAAE,SAAIL,EAAKiB,UAAU1B,4DASrC,IC/BMwwC,EAAkB,CAAEC,WAAY,CAAEC,YAAa,YAC/ChC,EAAa,CAAE9mC,KAAM,CAAEiB,WAAY,MAE5B8nC,EAAiB,SAAHtwC,GAEpB,IADLwvC,EAAKxvC,EAALwvC,MAAOhB,EAAWxuC,EAAXwuC,YAAaD,EAAUvuC,EAAVuuC,WAAYgC,EAAkBvwC,EAAlBuwC,mBAAoB9B,EAA0BzuC,EAA1ByuC,2BAA4BP,EAAMluC,EAANkuC,OAE1E9tC,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aACxBgP,GAA0CC,EAAAA,EAAAA,UAASg/B,GAAW/+B,GAAAT,EAAAA,EAAAA,GAAAO,EAAA,GAAvDo/B,EAAal/B,EAAA,GAAEm/B,EAAgBn/B,EAAA,IAEtCvL,EAAAA,EAAAA,UAAQ,WACN0qC,EAAiBJ,EACnB,GAAG,CAACA,IAEJ,IAAMK,GAAiCh/B,EAAAA,EAAAA,cACrC,SAACi/B,GACCF,EAAiBE,EAAMC,OAAO7uC,OAC9BwuC,EAA2B,CAAExuC,MAAO4uC,EAAMC,OAAO7uC,MAAO+e,KAAM,iBAChE,GACA,CAAC2vB,EAAkBF,IAGrB,OACEluC,EAAAA,EAAAA,KAAA,OAAKC,UAAU,4BAA2BC,UACxCC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,IAAKJ,SAAA,EACjCC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,GAAIJ,SAAA,EAChCC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACuE,YAAU,EAACtE,OAAQ,CAAEC,YAAa,GAAIJ,SAAA,EAC3CF,EAAAA,EAAAA,KAACwtC,EAAAA,KAAI,CAAC7lC,OAAQmmC,EAAW5tC,SAAEL,EAAKiB,UAAU1B,cAC1CY,EAAAA,EAAAA,KAACwuC,EAAAA,WAAU,CACT,aAAY3uC,EAAKiB,UAAU1B,wCAC3BqvC,MAAM,gEAGRR,IACAjuC,EAAAA,EAAAA,KAACwtC,EAAAA,KAAI,CAAC7lC,OAAQmmC,EAAW5tC,SAAEL,EAAKiB,UAAU1B,6EAE5CY,EAAAA,EAAAA,KAAC0uC,EAAAA,UAAS,CACRC,WAAS,EACTV,YAAaA,EACbW,KAAM,GACNC,WAAW,EACXnvC,MAAOyuC,GAAiB,GACxB9oC,SAAUgpC,EACVpuC,UAAU,8BAGX0tC,GAAUA,EAAOl8B,OAAS,IACzBzR,EAAAA,EAAAA,KAAA,OAAKC,UAAU,mCAAkCC,UAC/CF,EAAAA,EAAAA,KAAC0tC,EAAe,CAACC,OAAQA,UAK/B3tC,EAAAA,EAAAA,KAACgvC,EAAiB,CAACC,MAAOA,IAEzBA,IAAUO,EAAAA,GAAWC,UACpBtvC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,GAAIJ,SAAA,EAChCF,EAAAA,EAAAA,KAACwtC,EAAAA,KAAI,CAAAttC,SAAEL,EAAKiB,UAAU1B,wCACtBY,EAAAA,EAAAA,KAAC0uC,EAAAA,UAAS,CACRC,WAAS,EACTC,KAAM,GACNjnC,OAAQioC,EACRf,WAAW,EACXoB,UAAQ,EACRvwC,MAAOswC,GAAsB,GAC7B/vC,UAAU,8CAOxB,EAYA8vC,EAAe3uC,aAAe,CAC5B6sC,YAAa,GACb+B,mBAAoB,GACpBrC,OAAQ,IChFH,IAAMuC,EAAgB,SAAHzwC,GAUnB,IATL0wC,EAAiB1wC,EAAjB0wC,kBACAC,EAAe3wC,EAAf2wC,gBACAC,EAAa5wC,EAAb4wC,cACAC,EAAc7wC,EAAd6wC,eACAC,EAAY9wC,EAAZ8wC,aACAtB,EAAKxvC,EAALwvC,MACAuB,EAAa/wC,EAAb+wC,cACAC,EAAqBhxC,EAArBgxC,sBACA9C,EAAMluC,EAANkuC,OAEM9tC,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAClB2wC,EACJzB,IAAUO,EAAAA,GAAWmB,SACjBvsC,IAAAA,OACAosC,GAAiBA,EAAcI,mBAC/B,iBAEAxsC,IAAAA,OACAosC,GAAiBA,EAAcK,kBAC/B,kBACG,GACHC,EACJ7B,IAAUO,EAAAA,GAAWC,QACjBrrC,IAAAA,OACAosC,GAAiBA,EAAcI,mBAC/B,iBAEA,GACAG,EACJ3sC,IAAAA,OACEosC,GAAiBA,EAAcI,mBAC/B,gBACG,GAEDI,EAA0BrD,EAAOvW,MAAK,SAAA9H,GAAK,MAAI,wBAAyBA,CAAK,IAC7E2hB,EAAwBtD,EAAOvW,MAAK,SAAA9H,GAAK,MAAI,sBAAuBA,CAAK,IAEzE4hB,EAAsBF,EACxBA,EAAwBG,oBACxB,GACEC,EAAoBH,EACtBA,EAAsBI,kBACtB,GAEEnD,EAA6B,SAAH5vB,GAAyB,IAAnB5e,EAAK4e,EAAL5e,MAAO+e,EAAIH,EAAJG,KAC3CgyB,EAAsB/wC,EAAO+e,EAC/B,EAEM6yB,GACJtxC,EAAAA,EAAAA,KAAC+vC,GAAcruC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACT4uC,GAAc,IAClBrB,MAAOA,EACPjB,WAAY0C,EACZV,mBAAoBc,EACpB5C,2BAA4BA,EAC5BP,OAAQuD,KAINK,GACJvxC,EAAAA,EAAAA,KAAC+tC,GAAYrsC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACP6uC,GAAY,IAChBvC,WAAY+C,EACZ7C,2BAA4BA,EAC5BP,OAAQyD,KAIZ,OACEpxC,EAAAA,EAAAA,KAAA,OAAKC,UAAU,2BAA0BC,SACtCmwC,GACClwC,EAAAA,EAAAA,MAACqxC,EAAAA,EAAS,CAACC,UAAQ,EAACC,aAAW,EAAAxxC,SAAA,CAC5BiwC,IACChwC,EAAAA,EAAAA,MAACwxC,EAAAA,EAAa,CAACjyC,MAAM,IAAGQ,SAAA,EACtBF,EAAAA,EAAAA,KAAC4xC,EAAAA,EAAe,CAAA1xC,SAAEL,EAAKiB,UAAU1B,mBACjCY,EAAAA,EAAAA,KAAC6xC,EAAAA,EAAc,CAAA3xC,SACZoxC,OAINlB,IACCjwC,EAAAA,EAAAA,MAACwxC,EAAAA,EAAa,CAACjyC,MAAM,IAAGQ,SAAA,EACtBF,EAAAA,EAAAA,KAAC4xC,EAAAA,EAAe,CAAA1xC,SAAEL,EAAKiB,UAAU1B,gCACjCY,EAAAA,EAAAA,KAAC6xC,EAAAA,EAAc,CAAA3xC,SACZqxC,WAMTpxC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,IAAKJ,SAAA,CAChCiwC,GAAqBmB,EACrBlB,GAAmBmB,MAK9B,EAcArB,EAAc9uC,aAAe,CAC3B+uC,mBAAmB,EACnBC,iBAAiB,EACjBC,eAAe,EACfC,eAAgB,CAAC,EACjBC,aAAc,CAAC,EACf5C,OAAQ,IClIH,MAAMmE,EAAkB,4BAElBC,EAAwB,EACnCC,kBACAC,mBAIY,YAAU,UAAQD,EAAiB,YAAUC,GAAiB,GAAK,CAACH,GAAkBG,IAAgBn1B,KAAK,QAEnHo1B,EAAoB1B,GAAiB,YAAUA,EAAc11B,MAAM,UAAUrJ,OAEtE0gC,EAAa,CAAClD,EAAOuB,EAAe3wC,KAC/C,GAAIovC,IAAU,KAAW0B,SAAU,CACjC,MAAMD,EAAiB,WAASF,GAAiBA,EAAcI,mBAAoB,gBAAiB,IAC9FG,EAAe,WAASP,GAAiBA,EAAcI,mBAAoB,cAAe,IAC1FwB,EAAsBF,EAAkBxB,GACxC2B,EAAoBH,EAAkBnB,GAC5C,OAAOlxC,EAAKiB,UAAU,8HAAqI,CAAEsxC,sBAAqBC,qB,CAGpL,MAAM3B,EAAiB,WAASF,GAAiBA,EAAcK,kBAAmB,gBAAiB,IAC7FC,EAAiC,WAASN,GAAiBA,EAAcI,mBAAoB,gBAAiB,IAC9G0B,EAA6BJ,EAAkBxB,GAC/C6B,EAA8BL,EAAkBpB,GACtD,OAAOjxC,EAAKiB,UAAU,iJAAwJ,CAAEwxC,6BAA4BC,+BAA8B,E,wHCf/NC,GAA0BC,EAAAA,EAAAA,IAAW,iBAErCC,GAA+BC,EAAAA,EAAAA,KAC1CC,EAAAA,EAAAA,IAAc1C,EAAe,CAAE2C,WAAW,IAC1C,CAAEC,SAAU,CAACC,EAAAA,GAAwBC,EAAAA,MAiCjCC,GAA8BC,EAAAA,EAAAA,uBA9BN,SAAHzzC,GAKpB,IAJL0zC,EAAgB1zC,EAAhB0zC,iBACAC,EAAU3zC,EAAV2zC,WACAnE,EAAKxvC,EAALwvC,MACG3tC,GAAIC,EAAAA,EAAAA,GAAA9B,EAAA+B,GAiBP,OACExB,EAAAA,EAAAA,KAACkwC,GAAaxuC,EAAAA,EAAAA,GAAA,CACZ+uC,sBAjBa,SAAC4C,EAAgB50B,GAChC,IAAM60B,EAAUrE,IAAUO,EAAAA,GAAWmB,SAAW,qBAAuB,oBACjE4C,EAAkB,CACtBvF,YAAUtsC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACJ0xC,EAAWpF,YAAc,CAAC,GAAG,CAAF,GAAA7uC,EAAAA,EAAAA,GAAA,GAC9Bm0C,GAAO5xC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACF0xC,EAAWpF,YAAcoF,EAAWpF,WAAWsF,GAAWF,EAAWpF,WAAWsF,GAAW,CAAC,GAAG,CAAF,GAAAn0C,EAAAA,EAAAA,GAAA,GAChGsf,EAAO40B,OAKdF,EAAiB,GAAII,EACvB,EAKItE,MAAOA,GACH3tC,GAGV,IAIakyC,GAA6Cb,EAAAA,EAAAA,KACxDC,EAAAA,EAAAA,IAAcK,EAA6B,CAAEJ,WAAW,IACxD,CAAEC,SAAU,CAACC,EAAAA,GAAwBC,EAAAA,M,2KCzC1BS,EAAuB,SAAHh0C,GAE1B,IADL0wC,EAAiB1wC,EAAjB0wC,kBAAmBC,EAAe3wC,EAAf2wC,gBAAiBnB,EAAKxvC,EAALwvC,MAAOuB,EAAa/wC,EAAb+wC,cAAeC,EAAqBhxC,EAArBgxC,sBAAuB9C,EAAMluC,EAANkuC,OAAQ+F,EAAMj0C,EAANi0C,OAAWpyC,GAAIC,EAAAA,EAAAA,GAAA9B,EAAA+B,GAElG3B,GAAOC,EAAAA,EAAAA,YAAWC,EAAAA,aAExB,OACEC,EAAAA,EAAAA,KAACyB,EAAAA,IAAcC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAEbC,OAAO3B,EAAAA,EAAAA,KAAC4B,EAAAA,GAAS,CACfC,SAAUzC,aACV4C,KAAM2xC,EACNzxC,WAAY,CAAEC,MAAO,IACrBC,SAAS,6BACTN,QAASqwC,EAAWlD,EAAOuB,EAAe3wC,KAE5CwC,qBAAsB,CAAEC,cAAeC,EAAAA,IACvCqxC,eAAgB,CACdF,OAAAA,EACAG,UAAW,mBAETvyC,GAAI,IAAApB,UAERC,EAAAA,EAAAA,MAACC,EAAAA,MAAK,CAACC,OAAQ,CAAEC,YAAa,IAAKJ,SAAA,EACjCF,EAAAA,EAAAA,KAAA,QAAMC,UAAU,6BAA4BC,SACzCL,EAAKiB,UAAU1B,6GAElBY,EAAAA,EAAAA,KAAC0yC,EAA4B,CAC3BvC,kBAAmBA,EACnBC,gBAAiBA,EACjBnB,MAAOA,EACPuB,cAAeA,EACfC,sBAAuBA,EACvB9C,OAAQA,EACRmG,eAAgB,CAAEpoB,OAAQ8mB,UA1B1B,iBA+BV,EAYAiB,EAAqBryC,aAAe,CAClC+uC,mBAAmB,EACnBC,iBAAiB,EACjBzC,OAAQ,G,oKC7DGoG,EAAY,SAACC,EAAYC,GACpC,IAAMC,EAAM,SAACvuC,GACX,IAAMwuC,EAAa/vC,IAAAA,WAAa4vC,GAC9BA,EAAWruC,GACXvB,IAAAA,OAAS,CAAC,EAAGuB,EAAOquC,GACtB,OACEh0C,EAAAA,EAAAA,KAACi0C,GAAgBvyC,EAAAA,EAAAA,GAAA,GAAKyyC,GAE1B,EAKA,OAHAD,EAAIE,YAAW,aAAA7tC,QAAgB8tC,EAAAA,EAAAA,gBAAeJ,GAAiB,KAC/DK,IAAqBJ,EAAKD,GAEnBC,CACT,C,0MCdMK,EAAmB,WAAH,MAAU,CAAC,CAAC,EAE3B,SAASC,EAAcP,GAAiD,IAA/BnF,EAASh2B,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAGy7B,EACpDE,GAAkBC,EAAAA,EAAAA,YAAU,SAAC/uC,GACjC,IAAAlG,EAA2BkG,GAAS,CAAC,EAA7BgvC,EAAKl1C,EAALk1C,MAAUrzC,GAAIC,EAAAA,EAAAA,GAAA9B,EAAA+B,GACtB8c,EAAuCq2B,GAAS,CAAC,EAACC,EAAAt2B,EAA1C6V,WAAAA,OAAU,IAAAygB,EAAG,CAAC,EAACA,EAAAC,EAAAv2B,EAAEw2B,KACnBntC,EAASmnC,EAAU3a,OADI,IAAA0gB,EAAG,CAAC,EAACA,GAElC,OAAO70C,EAAAA,EAAAA,KAACi0C,GAAgBvyC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKJ,GAAI,IAAEqG,OAAQA,IAC7C,IAKA,OAHA8sC,EAAgBL,YAAW,sBAAA7tC,QAAyB8tC,EAAAA,EAAAA,gBAAeJ,GAAiB,KACpFK,IAAqBG,EAAiBR,GAE/BQ,CACT,CAEO,SAASM,IAA4C,IAA/BjG,EAASh2B,UAAArH,OAAA,QAAAnM,IAAAwT,UAAA,GAAAA,UAAA,GAAGy7B,EAEvCv1B,GADcg2B,EAAAA,EAAAA,aACkC,CAAC,EAACC,EAAAj2B,EAA1CmV,WAAAA,OAAU,IAAA8gB,EAAG,CAAC,EAACA,EAAAC,EAAAl2B,EAAE81B,KAEzB,OADehG,EAAU3a,OADI,IAAA+gB,EAAG,CAAC,EAACA,EAGpC,C,oCCxBA,KACEC,iBAFqB,GAGrBC,uBAHkD,GAIlDC,wBAJgF,GAKhFC,aALmG,KAMnGC,oBAN+H,KAO/HC,sCAP6K,I,+DCC3K31C,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CAYvC,SAASs7B,EAAsBC,EAAcC,GAC3C,OAAOA,EAAe/1C,EAAKiB,UAAU,uBAAyB80C,GAAgB/1C,EAAKiB,UAAU,uBAAyB60C,EACxH,CAQA,SAASE,EAAwBC,GAC/B,IAAIC,EAAcl2C,EAAKiB,UAAU,oBAAsBg1C,EAAc7yB,KACrE,MAAO,CACL+yB,WAAYF,EAAc7yB,IAC1B8yB,YAAaA,EACbpI,OAAQvpC,IAAAA,IAAM0xC,EAAclI,OAAO,SAAUte,GAC3C,OAbN,SAAkCA,EAAO0mB,EAAYD,GACnD,OAAO3xC,IAAAA,OAAS,CACd4xC,WAAYA,EACZD,YAAaA,EACb5X,QAASuX,EAAsBpmB,EAAMzS,MAAOyS,EAAM2mB,wBACjD3mB,EACL,CAOa4mB,CAAyB5mB,EAAOwmB,EAAc7yB,IAAK8yB,EAC5D,IAEJ,CAQA,KACEI,wBAvCF,SAAiCC,EAAWtjB,GAC1C,IAAIujB,EAAW,CAAC,sBAAwBD,EAAWA,GAAwBv2C,EAAKiB,UAAU,UAI1F,OAHIgyB,IACFujB,EAAWA,EAAS9vC,OAAOusB,IAEtBjzB,EAAKy2C,mBAAmB96B,MAAM3b,EAAMw2C,EAC7C,EAkCEX,sBAAuBA,EACvBa,mBAVF,SAA4B5I,EAAQ6I,GAClC,IAAKpyC,IAAAA,QAAUupC,IAA6B,IAAlBA,EAAOl8B,OAC/B,MAAO,GAET,IAAIglC,EAAiBryC,IAAAA,IAAMupC,EAAQkI,GACnC,OAAQW,EAA2BpyC,IAAAA,MAAQqyC,GAAgBC,MAAM,UAAUF,UAAU92C,QAAnE+2C,CACpB,EAKEE,6BAnCF,SAAsCP,EAAWtjB,GAC/C,IAAIujB,EAAW,CAAC,sBAAwBD,EAAY,UAAU7vC,OAAOusB,GACrE,OAAOjzB,EAAKiB,UAAU0a,MAAM3b,EAAMw2C,EACpC,E,wECWA,SAASO,EAAcl3C,GACrB,QAAS0E,IAAAA,SAAW1E,IAAuB,MAAbA,EAAM,GACtC,CAMA,KACEm3C,MA9BF,SAAeC,EAASC,GACtB,IAAIn5B,EAAMk5B,GAAW,GAcrB,OAbA1yC,IAAAA,KAAO2yC,GAAO,SAAUr3C,EAAOuZ,EAAK+9B,GAClC,GAAoB,KAAhB5yC,IAAAA,MAAQ6U,KACL7U,IAAAA,YAAc1E,GAAQ,CACzB,IAAIunB,EAAMvnB,EACN0E,IAAAA,SAAW1E,KACbunB,EAAMgwB,mBAAmBllC,KAAKQ,UAAU7S,KAE1Cke,EAAMA,EAAIkG,QAAQ,IAAIozB,OAAO,SAAWj+B,EAAM,QAAS,IAAMgO,EAC/D,CAEJ,IAEArJ,GADAA,EAAMA,EAAIkG,QAAQ,sBAAuB,KAC/BA,QAAQ,aAAc,GAElC,EAeE6c,MAPF,SAAemW,EAASC,GACtB,OAAO3yC,IAAAA,MAAQ2yC,GAAO,SAAUr3C,EAAOuZ,EAAK+9B,GAC1C,OATJ,SAAoBF,EAAS79B,GAC3B,IAAIk+B,EAAM,IAAID,OAAO,QAAUj+B,EAAM,OACrC,OAAQ7U,IAAAA,OAAS+yC,EAAIC,KAAKN,GAC5B,CAMWO,CAAWP,EAAS79B,KAA+B7U,IAAAA,YAAc1E,KAAW0E,IAAAA,OAAS1E,KAA1Dk3C,EAAcl3C,EAClD,GACF,E,oFC5BI43C,EAAW,CACbC,cAAUjyC,EACVkyC,UAAMlyC,EACNmyC,eAAgB,UAChBC,QAAS,EACTC,uBAAmBryC,EACnBsyC,YAAa,SAEXC,EAAO,SAAU19B,GAEnB,GADAjB,KAAKiB,QAAU/V,IAAAA,SAAW,CAAC,EAAG+V,EAASm9B,IAClCp+B,KAAKiB,QAAQo9B,SAChB,MAAM,IAAI16B,MAAM,oDAElB,IAAK3D,KAAKiB,QAAQq9B,KAChB,MAAM,IAAI36B,MAAM,+CAEpB,EACAg7B,EAAK/7B,UAAUg8B,MAAQ,WAGrB,OAFA5+B,KAAK6+B,WAAY,EACjB7+B,KAAK8+B,gBACE9+B,IACT,EACA2+B,EAAK/7B,UAAUigB,KAAO,WAKpB,OAJA7iB,KAAK6+B,WAAY,EACb7+B,KAAK0hB,MACP3I,aAAa/Y,KAAK0hB,MAEb1hB,IACT,EACA2+B,EAAK/7B,UAAUk8B,cAAgB,SAAUhmB,GACvC9Y,KAAK0hB,KAAOzI,WAAW/tB,IAAAA,KAAO8U,KAAK++B,WAAY/+B,KAAM8Y,GAAU9Y,KAAKiB,QAAQo9B,SAC9E,EACAM,EAAK/7B,UAAUm8B,WAAa,SAAUC,GACpC,IAAIA,GAAaA,EAASC,WAA0C,SAA7Bj/B,KAAKiB,QAAQy9B,YAApD,CAIA,IAAIQ,EAAYl/B,KAAKm/B,cACE,IAAnBn/B,KAAK6+B,YACP7+B,KAAK8+B,cAAcI,GACfl/B,KAAKiB,QAAQu9B,SACfx+B,KAAKo/B,iBAAiBF,GAL1B,MAFEF,EAASK,SAAU,CAUvB,EACAV,EAAK/7B,UAAUu8B,WAAa,WAC1B,IAAID,EAAY,CACdD,WAAW,EACXK,cAAc,GAEhB,GAAoC,aAAhCt/B,KAAKiB,QAAQs9B,eAA+B,CAC9C,IAAIgB,EAAWr0C,IAAAA,KAAO8U,KAAKw/B,UAAWx/B,KAAMk/B,GAC5CA,EAAUO,MAAQz/B,KAAKiB,QAAQq9B,KAAKiB,EACtC,MACEL,EAAUO,MAAQz/B,KAAKiB,QAAQq9B,OAC/BY,EAAUO,MAAMnnC,KAAKpN,IAAAA,KAAO8U,KAAKw/B,UAAWx/B,KAAMk/B,EAAW,MAAOh0C,IAAAA,KAAO8U,KAAKw/B,UAAWx/B,KAAMk/B,IAEnG,OAAOA,CACT,EACAP,EAAK/7B,UAAU48B,UAAY,SAAUN,EAAW9oB,EAAO7uB,GACjD23C,EAAUD,YAGdlmB,aAAammB,EAAUV,SACvBU,EAAUD,WAAY,EAClBC,EAAUG,SACZr/B,KAAK++B,WAAWG,GAElBl/B,KAAK0/B,QAAQtpB,EAAQ,QAAU,UAAW,CACxCA,MAAOA,EACP7uB,KAAMA,EACNo4C,SAAUz0C,IAAAA,KAAO8U,KAAK6iB,KAAM7iB,QAEhC,EACA2+B,EAAK/7B,UAAUw8B,iBAAmB,SAAUF,GAC1C,GAAIl/B,KAAKiB,QAAQw9B,oBAAsBvzC,IAAAA,WAAag0C,EAAUO,MAAMz/B,KAAKiB,QAAQw9B,oBAC/E,MAAM,IAAI96B,MAAM,yEAElBu7B,EAAUV,QAAUvlB,WAAW/tB,IAAAA,KAAO8U,KAAK4/B,gBAAiB5/B,KAAMk/B,GAAYl/B,KAAKiB,QAAQu9B,QAC7F,EACAG,EAAK/7B,UAAUg9B,gBAAkB,SAAUV,GACrCl/B,KAAKiB,QAAQw9B,mBACfS,EAAUO,MAAMz/B,KAAKiB,QAAQw9B,qBAE/BS,EAAUD,WAAY,EAClBC,EAAUG,SACZr/B,KAAK++B,WAAWG,GAElBl/B,KAAK0/B,QAAQ,UAAW,CACtBC,SAAUz0C,IAAAA,KAAO8U,KAAK6iB,KAAM7iB,OAEhC,EACA9U,IAAAA,OAASyzC,EAAK/7B,UAAWi9B,IAAAA,QAIzB,KACEC,WAJe,SAAU7+B,GACzB,OAAO,IAAI09B,EAAK19B,EAClB,E,6IC3FA,OACE8+B,IANF,SAAaC,GACX90C,IAAAA,iBAAqB,CACnB+0C,YAAa,iBAEjB,GCCIt5C,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACvCg/B,EAAeH,MACf,IAAII,EAAWj1C,IAAAA,UAAY,CACzBk1C,QAAS,kFACTC,aAAc,8FACdC,cAAe,yIACfC,aAAc,8BACb,SAAU77B,GACX,OAAOxZ,IAAAA,SAAWwZ,EACpB,IAAI5D,EAAU,CAAC,EACf,SAAS0/B,EAAW5uB,EAAM6uB,GACxB,OAAOC,EAAAA,EAAMx/B,IAAIi/B,EAASC,QAAQ,CAChCxuB,KAAMA,EACNxhB,IAAKqwC,KACHnoC,MAAK,SAAU+f,GACjB,MAAO,CACLjN,MAAOlgB,IAAAA,IAAMmtB,EAAS7xB,MAAOm6C,GAC7BC,MAAOvoB,EAAS,gBAEpB,IAAGsK,OAAM,SAAUtK,GACjB,IAAIoc,EAASpc,GAAYA,EAASwoB,mBAAqBxoB,EAASwoB,kBAAkBr6C,MAAQ6xB,EAASwoB,kBAAkBr6C,MAAQ,GAI7H,GAH+B0E,IAAAA,KAAOupC,GAAQ,SAAUpsB,GACtD,MAAqB,2BAAdA,EAAK2c,IACd,IAC8B,CAC5B,IAAI8b,EAAQ,IAAIC,EAAAA,EAAwB,CACtCp6C,KAAMA,IAEJq6C,EAAer6C,EAAKiB,UAAU,6CAClCk5C,EAAMnH,UAAUqH,EAClB,CACF,GACF,CAEA,SAASL,EAAaM,GACpB,OAAO/1C,IAAAA,OAAS,CAAC,EAAG+1C,EAAK,CACvBC,aAAcD,EAAIC,cAAgB,IAAI7vC,KAAK4vC,EAAIC,cAC/CC,eAAgBF,EAAIE,gBAAkB,IAAI9vC,KAAK4vC,EAAIE,iBAEvD,CA4CA,MAAej2C,IAAAA,OAAS4V,EAAS,CAC/B0/B,WAAYA,EACZY,aA7BF,SAAsBC,GACpB,OAAOb,EAAW,EAAG,IAAIloC,MAAK,SAAUgpC,GACtC,OAAOp2C,IAAAA,OAASo2C,EAASl2B,OAAO,SAAU61B,GACxC,OAAO/1C,IAAAA,SAAWm2C,EAAQJ,EAAIM,GAChC,GACF,GACF,EAwBEnB,QA9CF,SAAiBoB,GACf,IAAKA,GAAkC,IAArBA,EAAUjpC,OAC1B,MAAM,IAAIoL,MAAM,6CAElB,IAAI89B,EAAmC,IAArBD,EAAUjpC,OAAeipC,EAAU,GAAK,KAC1D,OAAIC,EACKf,EAAAA,EAAMx/B,IAAIi/B,EAASE,aAAa,CACrCqB,MAAOD,EAAYr7C,GACnBu7C,aAAgD,YAAlCF,EAAYG,WAAWC,UACnCvpC,MAAK,SAAUwpC,GACjB,MAAO,CAACnB,EAAamB,GACvB,IAEKhhC,EAAQsgC,aAAal2C,IAAAA,MAAQs2C,EAAW,MACjD,EAiCElB,cAxBF,SAAuBoB,EAAOK,EAAcnwB,EAAM6uB,EAAM/U,GACtD,IAAIhnB,EAAMy7B,EAASG,cAAc,CAC/BoB,MAAOA,EACPtxC,IAAKqwC,EACL7uB,KAAMA,EACN+vB,cAAejW,GAAqB,YAAXA,IAEvBlZ,EAAS,GAWb,OAVIuvB,IAAiBC,EAAAA,EAAcC,WACjCzvB,EAAS,wCACAuvB,IAAiBC,EAAAA,EAAcE,iBACxC1vB,EAAS,+CAEI,KAAXA,IACF9N,GAAOy7B,EAASI,aAAa,CAC3BwB,aAAcvvB,KAGXkuB,EAAAA,EAAMx/B,IAAIwD,EACnB,G,uFCpFItF,EAAQ+iC,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,WACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,uBACf,SAAY,gBACZ,WAAc,MACd,MAAS,GACT,aAAgB,GAChB,QAAW,cAKnB,K,uFCfIljC,EAAQ+iC,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,WACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,uBACf,SAAY,gBACZ,WAAc,MACd,MAAS,GACT,aAAgB,GAChB,QAAW,cAKnB,K,uFCfIljC,EAAQ+iC,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,WACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,uBACf,SAAY,uBACZ,WAAc,qBAKtB,K,uFCZIljC,EAAQ+iC,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,WACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,oBACf,SAAY,SACZ,WAAc,MACd,MAAS,GACT,aAAgB,GAChB,QAAW,cAKnB,K,uFCfIljC,EAAQ+iC,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,WACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,oBACf,SAAY,gBACZ,WAAc,MACd,MAAS,oBAKjB,K,2ECdIljC,EAAQ+iC,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,WACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,oBACf,SAAY,iDACZ,WAAc,MACd,MAAS,GACT,aAAgB,GAChB,QAAW,cAKnB,K,6MCbIC,EAAS,SAAUthC,GACrBjB,KAAKwiC,SAAWvhC,GAAY,CAAC,EAC7BjB,KAAKyiC,uBAAyB,EAC9BziC,KAAK0iC,cAAgBC,EAAAA,EAAU7C,WAAW,CACxCxB,KAAMpzC,IAAAA,KAAO8U,KAAK4iC,eAAgB5iC,MAClCq+B,SAAUr+B,KAAKwiC,SAASnE,UAAY,MAEtCr+B,KAAK0iC,cAAcG,GAAG,UAAW33C,IAAAA,KAAO8U,KAAK8iC,gBAAiB9iC,OAC9DA,KAAK0iC,cAAcG,GAAG,QAAS33C,IAAAA,KAAO8U,KAAK+iC,cAAe/iC,MAC5D,EACAuiC,EAAO3/B,UAAUogC,0BAA4B,EAC7CT,EAAO3/B,UAAUg8B,MAAQ,SAAU4C,GAKjC,OAJAxhC,KAAKijC,WAAa,IAAIpD,IAAAA,YAAoB2B,GACtCxhC,KAAKkjC,kBAAkB3qC,OAAS,GAClCyH,KAAK0iC,cAAc9D,QAEd5+B,IACT,EACAuiC,EAAO3/B,UAAUigB,KAAO,WAEtB,OADA7iB,KAAK0iC,cAAc7f,OACZ7iB,IACT,EACAuiC,EAAO3/B,UAAUggC,eAAiB,WAChC,OAAOO,EAAAA,EAAW/C,QAAQpgC,KAAKkjC,kBACjC,EACAX,EAAO3/B,UAAUkgC,gBAAkB,SAAUM,GAC3C,IAAIC,EAAOrjC,KACXA,KAAKyiC,uBAAyB,EAC1BW,GAAaA,EAAU77C,MAAQ2D,IAAAA,QAAUk4C,EAAU77C,OACrD2D,IAAAA,KAAOk4C,EAAU77C,MAAM,SAAUu6C,GAC/BuB,EAAKJ,WAAW/hC,IAAI4gC,EAAQP,IAAIh9B,IAAIu9B,EACtC,IAEE9hC,KAAKwiC,SAASc,SAAWp4C,IAAAA,WAAa8U,KAAKwiC,SAASc,UACtDtjC,KAAKwiC,SAASc,QAAQtjC,KAAKijC,YAES,IAAlCjjC,KAAKkjC,kBAAkB3qC,QACzB6qC,EAAUzD,UAEd,EACA4C,EAAO3/B,UAAUmgC,cAAgB,SAAUK,GACzCpjC,KAAKyiC,yBACDziC,KAAKgjC,2BAA6BhjC,KAAKyiC,yBACzCziC,KAAK0iC,cAAc7f,OACf7iB,KAAKwiC,SAASpsB,OAASlrB,IAAAA,WAAa8U,KAAKwiC,SAASpsB,QACpDpW,KAAKwiC,SAASpsB,MAAMgtB,GAG1B,EACAb,EAAO3/B,UAAUsgC,gBAAkB,WACjC,OAAOljC,KAAKijC,WAAWzwB,QAAO,SAAUpT,GACtC,OAAOA,EAAM8B,IAAI,YAAcqiC,EAAAA,EAAeC,YAAcpkC,EAAM8B,IAAI,YAAcqiC,EAAAA,EAAeE,cAAwC,sBAAxBrkC,EAAM8B,IAAI,SAC/H,GACF,EACA,Q,8IC7CImlB,EAAiB,SAAUqd,GAC7B,IAAIC,EAAOz4C,IAAAA,OAASw4C,EAAiBE,QAAQ,SAAUv7B,GACrD,IAAI4R,EAAS5R,EAAKnH,IAAI,UACtB,OAAO+Y,IAAWspB,EAAAA,EAAetE,WAAahlB,IAAWspB,EAAAA,EAAeM,qBAAuB5pB,IAAWspB,EAAAA,EAAeO,MAC3H,IACIH,GAAQA,EAAKprC,OAAS,GACxBwrC,EAAAA,QAAaC,cAAc,CAAC,eAEhC,EACA,EACQ,WACJb,EAAAA,EAAW3C,WAAW,EAAG,IAAIloC,MAAK,SAAU+f,GAC1C,GAAIA,GAAYA,EAASjN,OAASiN,EAASjN,MAAM7S,OAAS,EAAG,CAC3D,IAAI0rC,EAAS,IAAI1B,EAAO,CACtBe,QAASjd,EACTgY,SAAU,MAERmD,EAAYt2C,IAAAA,IAAMmtB,EAASjN,OAAO,SAAU/C,GAC9C,OAAO,IAAI67B,EAAAA,EAAS77B,EACtB,IACIq7B,GA1BmBC,EA0BenC,EAzBrCt2C,IAAAA,OAASy4C,GAAM,SAAUt7B,GAC9B,IAAI4R,EAAS5R,EAAKnH,IAAI,UACtB,OAAO+Y,IAAWspB,EAAAA,EAAeC,YAAcvpB,IAAWspB,EAAAA,EAAeE,cAA2B,sBAAXxpB,CAC3F,KAuBMypB,EAAiBnrC,OAAS,GAAK0rC,EAAOrF,MAAM8E,EAC9C,CA5Be,IAAUC,CA6B3B,GACF,E,wECVEQ,G,UAAMrpB,OAAOqpB,KACbx9C,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCkjC,EAAgB,EAChBC,EAAoBC,EAAAA,EACpBC,EAAmB,SAA0B1Y,EAAS2Y,GACxD,IAAI9Y,EAASG,EAAQzsB,MAAM8B,IAAI,UAC/B6iC,EAAAA,QAAaU,eAAe/E,QAAQ,aAAchU,EAAQ8Y,EAC5D,EACIE,EAAyB,WAC3B,IAAIC,EAAgB3kC,KAAKZ,MAAM8B,IAAI,UACnC,GAAIyjC,IAAkB1qB,EAAAA,EAAOwpB,cAAkC,sBAAlBkB,EAA7C,CAGA,IAAIC,EAAa5kC,KAAKZ,MAAM8B,IAAI,iBAC5B2jC,EAAe7kC,KAAKZ,MAAM8B,IAAI,mBAC9B4jC,EAAa9kC,KAAKZ,MAAM8B,IAAI,iBAChClB,KAAK+kC,SAASH,WAAWA,GACzB5kC,KAAK+kC,SAASF,aAAaA,GAC3B7kC,KAAK+kC,SAASD,WAAWA,GACrB55C,IAAAA,WAAa8U,KAAKglC,kBACpBhlC,KAAK+kC,SAASE,WAAWjlC,KAAKglC,kBAAkBp6B,QAAQ,MAAOg6B,GAAYh6B,QAAQ,MAAOi6B,EAAeC,IAEvGH,IAAkB1qB,EAAAA,EAAOglB,WACvBmF,EAAgB,IAClBA,GAAiB,EACjBpkC,KAAKklC,aAAallC,KAAKZ,OACvBY,KAAKmlC,UACLnlC,KAAKolC,eAEPb,EAAiBvkC,OACR2kC,IAAkB1qB,EAAAA,EAAO4pB,qBAClC7jC,KAAK+kC,SAASM,yCAAyC1+C,EAAKiB,UAAU,2DACtEw8C,GAAiB,EACjBpkC,KAAKslC,eACLtlC,KAAKulC,aACLvlC,KAAK+kC,SAASS,eAAc,GAC5BxlC,KAAK+kC,SAASU,iBAAgB,GAC1BzlC,KAAKZ,MAAM8B,IAAI,mBAAqB,IACtCwkC,EAAAA,EAAWP,QAAQnlC,KAAK2lC,MACxB3lC,KAAKolC,eAEPb,EAAiBvkC,OACR2kC,IAAkB1qB,EAAAA,EAAO6pB,QAAU9jC,KAAK4lC,oBACjDxB,GAAiB,EACjBpkC,KAAKmlC,WACIR,IAAkB1qB,EAAAA,EAAO6pB,SAClCM,GAAiB,EACZpkC,KAAK6lC,mBACRC,IAAAA,WAAyBC,YApC7B,CAuCF,EAgbA,EAjaW3lC,IAAAA,KAAciP,OAAO,CAC9B22B,WAAY,SAAU/kC,GACpBjB,KAAKikC,OAAS,IAAIgC,EAAa,CAC7B3C,QAASp4C,IAAAA,KAAOw5C,EAAwB1kC,MACxCoW,MAAO,WACL0vB,IAAAA,WAAyBC,WAC3B,IAEF/lC,KAAK2lC,KAAO1kC,EAAQ0kC,KACpB3lC,KAAKkmC,kBAAoBjlC,EAAQilC,kBACjClmC,KAAKmmC,mBAAqBllC,EAAQklC,mBAClCnmC,KAAKomC,mBAAqBnlC,EAAQmlC,mBAClCpmC,KAAKqmC,wBAA0BplC,EAAQ/I,SACvC8H,KAAKsmC,eAAiBp7C,IAAAA,OAAS,CAAC,EAAG,iBAAkB,IAAIm5C,EAC3D,EACAkC,OAAQ,WACNvmC,KAAKwmC,IAAIC,KAAKzmC,KAAKV,SAAS,CAC1B3Y,KAAMA,EACN+/C,YAAaA,EAAAA,EACbC,UAAW3mC,KAAK+kC,SAChB6B,YAAY,KAEV5mC,KAAKwmC,IAAIjuC,OAAS,GACpBsuC,IAAAA,UAAa7mC,KAAKwmC,IAAI,IAExBK,IAAAA,cAAiB7mC,KAAK+kC,SAAU/kC,KAAKwmC,IAAI,IACzCt7C,IAAAA,QAAU8U,KAAM,YAAa,iBAAkB,WAAY,eAAgB,YAAa,iBACxFA,KAAKoiC,EAAE,SAAS0E,MAAM9mC,KAAK+mC,WAC3B/mC,KAAKoiC,EAAE,YAAY0E,MAAM9mC,KAAKgnC,gBAC9BhnC,KAAKoiC,EAAE,WAAW0E,MAAM9mC,KAAKinC,WAC7BjnC,KAAKoiC,EAAE,oBAAoB0E,MAAM9mC,KAAKknC,cACtClnC,KAAKoiC,EAAE,UAAU0E,MAAM9mC,KAAKmnC,UAC5BnnC,KAAKoiC,EAAE,kBAAkB0E,MAAM9mC,KAAKonC,eAEpCpnC,KAAKoiC,EAAE,oBAAoBiF,KAAK,OADrB,uBAEX,IAAIC,EAA6BtnC,KAAKwmC,IAAItoB,KAAK,gCAI/C,OAHIhzB,IAAAA,WAAao8C,EAA2BC,QAC1CD,EAA2BC,QAEtBvnC,IACT,EACAwnC,OAAQ,WACN,MAAO,CACL,0BAA2B,WACzBC,EAAAA,EAAaA,aAAaC,gBAAgB,YAC5C,EAEJ,EACAP,SAAU,WACRnnC,KAAKwmC,IAAImB,QACTjC,EAAAA,EAAWkC,mBAAmB5nC,KAAMA,KAAK2lC,KAC3C,EACAuB,aAAc,WACZlnC,KAAKwmC,IAAImB,QACTE,IACAnC,EAAAA,EAAWkC,mBAAmB5nC,KAAMA,KAAK2lC,KAC3C,EACAyB,cAAe,WACbpnC,KAAK8nC,aAAY,GACjB,IAGIpjC,EAAM,cAHAgiC,EAAAA,EAAYqB,gBAAgBxG,GAGN,cAFtBmF,EAAAA,EAAYsB,eAAezG,GAEiB,uBADtCvhC,KAAKZ,MAAM8B,IAAI,MAC6D,oBAC5Fw/B,EAAAA,QAAMx/B,IAAIwD,EAAK,CACbnd,KAAM,OACLo7B,OAAM,WACP,OAAO,IACT,IACA3iB,KAAK4lC,oBAAqB,CAC5B,EACAqC,iBAAkB,WAChB,IAAIC,EAAU,CAAC,EAAGC,GAAU,EAC5B,IAAKnoC,KAAK+kC,SAASqD,sBAAwB1C,EAAAA,EAAW2C,gBAAgBroC,KAAK2lC,MACzE,GAAI3lC,KAAK2lC,OAAS3lC,KAAK2lC,KAAK2C,eAAiBtoC,KAAK2lC,KAAK4C,cAAgBvoC,KAAK2lC,KAAK4C,aAAaD,eAAgB,CAC5G,IAAIE,GAAwBxoC,KAAK2lC,KAAK2C,eAAiBtoC,KAAK2lC,KAAK4C,aAAaD,eAAeG,oBAC7FP,EAAQQ,kBAAoBC,EAAAA,eAAsCH,EACpE,MAAO,GAAIxoC,KAAK2lC,MAAQ3lC,KAAK2lC,KAAK4C,cAChC,GAAIvoC,KAAK2lC,KAAK4C,aAAaK,YAAa,CACtC,IAAIC,EAAgB7oC,KAAK2lC,KAAK4C,aAAaK,YAAYE,gBACvDZ,EAAQQ,kBAAoBC,EAAAA,eAAsCE,EACpE,MAAO,GAAI7oC,KAAK2lC,KAAK4C,aAAa/1B,OAAQ,CACpCq2B,EAAgB7oC,KAAK2lC,KAAK4C,aAAa/1B,OAAOy1B,mBAClDC,EAAQQ,kBAAoBC,EAAAA,eAAsCE,EACpE,OAEAX,EAAUloC,KAAK2lC,KAAKoD,YAAW,QAE5B,GAAI79C,IAAAA,WAAa8U,KAAKgpC,eAC3Bb,GAAU,EACVD,EAAUloC,KAAKgpC,cACXhpC,KAAK2lC,OAAS3lC,KAAK2lC,KAAK2C,eAAiBtoC,KAAK2lC,KAAK4C,cAAgBvoC,KAAK2lC,KAAK4C,aAAaD,gBAAgB,CAC5GE,GAAwBxoC,KAAK2lC,KAAK2C,eAAiBtoC,KAAK2lC,KAAK4C,aAAaD,eAAeG,oBACzF,IAAIQ,EAA8BN,EAAAA,eAAsCH,GACpES,GAA+BA,EAA4B1wC,QAAU,GAA0D,cAArD0wC,EAA4B,GAAmB,gBAA0E,mBAArDA,EAA4B,GAAmB,iBAC/Lf,EAAQQ,kBAAoBx9C,IAAAA,MAAQ+9C,EAA6Bf,EAAQQ,mBAE7E,CAEF,GAAIx9C,IAAAA,WAAa8U,KAAKkpC,iBAAkB,CACtC,IAAIC,EAAenpC,KAAKkpC,gBAAgBhB,IAAa,CACnDQ,kBAAmB,IAEjBR,GAAWA,EAAQQ,kBACrBR,EAAQQ,kBAAoBx9C,IAAAA,MAAQg9C,EAAQQ,kBAAmBS,EAAaT,mBAE5ER,EAAU,CACRQ,kBAAmBS,EAAaT,kBAGtC,CACA,MAAO,CACLA,kBAAmBR,GAAWA,EAAQQ,mBAAqB,GAC3DP,QAASA,EAEb,EACAiB,kBAAmB,SAAU52B,EAAQkZ,GACnC,OAAO2d,EAAAA,EAAgBC,kBAAkB92B,EAAOk2B,kBAAmBhd,EACrE,EACA6d,oBAAqB,SAAUC,GAC7B,IAAI9d,EAAS1rB,KAAKZ,MAAM8B,IAAI,UACxBuoC,EAAQ,KAAMC,GAAc,EAAGC,GAAa,EAAGC,EAAc,KAAMp3B,EAASxS,KAAKioC,mBAgBrF,GAfIjoC,KAAK+kC,SAASqD,sBACZl9C,IAAAA,WAAa8U,KAAK6pC,iBACpBH,EAAa1pC,KAAK6pC,iBAEhB3+C,IAAAA,WAAa8U,KAAK8pC,gBACpBH,EAAY3pC,KAAK8pC,gBAEf5+C,IAAAA,WAAa8U,KAAK+pC,qBACpBH,EAAc5pC,KAAK+pC,uBAGrBL,EAAaz8B,OAAO64B,IAAAA,WAAyBkE,gBAAgB,WAAa/8B,OAAOg9B,EAAAA,EAAS/oC,IAAI,gBAC9FyoC,EAAY18B,OAAO64B,IAAAA,WAAyBkE,gBAAgB,WAAa/8B,OAAOg9B,EAAAA,EAAS/oC,IAAI,eAC7F0oC,EApJsB,WAC1B,IACE,IAAIM,EAOJ,MAAO,eALLA,EADI/F,GAASA,EAAIgG,IAAQhG,EAAIgG,GAAGC,UAAcjG,EAAIgG,GAAGC,SAASC,iBAAmBn/C,IAAAA,WAAai5C,EAAIgG,GAAGC,SAASC,gBAAgBC,oBAClHnG,EAAIgG,GAAGC,SAASC,gBAAgBC,qBAEhCxvB,OAAOyvB,KAAOzvB,OAAOyvB,IAAIC,MAAQ1vB,OAAOyvB,IAAIC,MAAMtpC,IAAI,cAAgB,MAE1D09B,MAAM6L,WAAa,GAAI,IAAMP,EAAUtL,MAAM/qC,UAAY,IAAMq2C,EAAUtL,MAAM8L,cACvE,aADgGR,EAAUS,IAAIF,WAAa,GAAI,IAAMP,EAAUS,IAAI92C,UAAY,IAAMq2C,EAAUS,IAAID,aAEvN,CAAE,MAAOxzC,GACP,MAAO,EACT,CACF,CAuIoB0zC,IAEZpB,EAAiB,CACnB,IAAIlW,EAAWoS,EAAAA,EAAWmF,YAAY7qC,KAAK2lC,MAG3C8D,EAAQ,QAAUnW,EAAW,UAFXoS,EAAAA,EAAWoF,eAAe9qC,KAAK2lC,MAEMrS,EAAW,aADnDoS,EAAAA,EAAWqF,YAAYrf,EAAQ1rB,KAAK2lC,KAErD,CACA,GAAInzB,EAAQ,CACV,IAAIw4B,EAAWpB,GAA4B,GACvCqB,EAAiBjrC,KAAKopC,kBAAkB52B,EAAQkZ,GAChDuf,IACED,IACFA,GAAY,KAEdA,GAAYC,GAEdxB,EAAkB,OAAVA,EAAiBuB,EAAWvB,EAAQ,IAAMuB,CACpD,CACA,MAAO,CACL,YAAevB,EACf,WAAcC,EAAa,EAAIA,EAAa,KAC5C,UAAaC,EAAY,EAAIA,EAAY,KAE7C,EACAzE,aAAc,SAAU9lC,GAClBlU,IAAAA,WAAa8U,KAAKmmC,qBACpBnmC,KAAKmmC,mBAAmB/mC,EAE5B,EACAkmC,aAAc,SAAUlmC,GAClBlU,IAAAA,WAAa8U,KAAKomC,qBACpBpmC,KAAKomC,mBAAmBhnC,EAE5B,EACA8rC,kBAAmB,WAAa,EAChC/F,QAAS,WACPO,EAAAA,EAAWP,QAAQnlC,KAAK2lC,KAAM3lC,KAAKmnC,SAAS9sB,KAAKra,MACnD,EACA+mC,UAAW,WACT/mC,KAAK8nC,aAAY,GACjB9nC,KAAKmrC,aAAY,EACnB,EACAlE,UAAW,WACTjnC,KAAKmnC,UACP,EACAH,eAAgB,WACdhnC,KAAKmrC,aAAY,EACnB,EACAC,mBAAoB,SAAUC,GAC5B,IAAIv6B,GAAU,EAQd,OAPIu6B,EAAkB9yC,OAAS,GAC7BrN,IAAAA,KAAOmgD,GAAmB,SAAUhjC,GACP,IAAvBA,EAAKijC,OAAO/yC,SACduY,GAAU,EAEd,IAEKA,CACT,EACAq6B,YAAc,SAAU3B,GAEtB,GADApF,EAAgB,EACZpkC,KAAK+kC,SAASqD,sBAAwBpoC,KAAKurC,sBAC7C,GAAIvrC,KAAK+kC,SAASyG,SAASxrC,MAAO,CAKhC,GAJKwpC,GACHxpC,KAAK+kC,SAAS0G,YAAW,GAE3BzrC,KAAKZ,MAAMssC,MAAM,oBACblC,EACFxpC,KAAKZ,MAAMsF,IAAM,0FACbghC,EAAAA,EAAW2C,gBAAgBroC,KAAK2lC,OAClC3lC,KAAKZ,MAAMmF,IAAI,mBAAoBmhC,EAAAA,EAAWiG,qBAAqB3rC,KAAK2lC,WAErE,CACL,IACIiG,EADuB5rC,KAAK6rC,QAA0B,aAAhB7rC,KAAK6rC,OACA,GAAK,cACpD7rC,KAAKZ,MAAMsF,IAAM,0BAA4BknC,EAAoB,mBACnE,CACI1gD,IAAAA,WAAa8U,KAAK8rC,YACpB9rC,KAAK8rC,UAAUtC,GAEjBxpC,KAAKZ,MAAMmF,IAAI,YAAavE,KAAKupC,oBAAoBC,IACrD,IAAIuC,EAAgB/rC,KAAKioC,mBACzB,GAAI8D,EAAc5D,SAAWnoC,KAAKorC,mBAAmBW,EAAcrD,mBAEjE,YADA1oC,KAAKmlC,UAGP,IAAK4G,EAAc5D,UAAYj9C,IAAAA,SAAW6gD,EAAcrD,kBAAmB,OAASx9C,IAAAA,SAAW6gD,EAAcrD,uBAAmBt8C,IAC9H,IACE4/C,EAAAA,QAAOC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,0CAA2CzzC,KAAKQ,UAAU,CAClIgpC,YAAariC,KAAKZ,MAAM8B,IAAI,eAC5BsR,OAAQu5B,IAEZ,CAAE,MAAOljB,GAAK,CAEhB7oB,KAAKZ,MAAMmF,IAAI,cAAegoC,EAAAA,EAAqBC,cAAcT,IACjEjG,IAAAA,WAAyB2G,oBACrBC,EAAAA,GACFA,EAAAA,EAAUC,2BAA2B,mBAAoBzhD,IAAAA,KAAO8U,KAAKZ,MAAMwtC,yBAA0B5sC,KAAKZ,QAE5GY,KAAKZ,MAAMytC,KAAK,CAAC,EAAG,CAClBvJ,QAASp4C,IAAAA,MAAO,SAAUkU,GACxB,IAAIolC,EAAsB,KAC1B,GAAIxkC,KAAKkmC,mBAAqB6F,EAAc5D,SAAW4D,EAAcrD,kBAAkBnwC,OAAS,EAAG,CACjG,IAAMu0C,EAAa9sC,KAAKZ,MAAM8B,IAAI,UAClCsjC,EAAsBt5C,IAAAA,QAAUA,IAAAA,IAAM6gD,EAAcrD,mBAAmB,SAAA2C,GAAiB,OAAIngD,IAAAA,IAAMmgD,EAAkBC,QAAQ,SAAA9kD,GAAK,SAAA6G,OAAOy/C,EAAU,MAAAz/C,OAAK7G,EAAK,OAAI,IAClK,CACA+9C,EAAiBvkC,KAAMwkC,GACnBxkC,KAAKZ,MAAMwiC,WAAWS,YAAYC,SACpCp3C,IAAAA,KAAO8U,KAAKZ,MAAMwiC,WAAWS,YAAYC,SAAS,SAAUyK,EAASv/B,GACpC,sBAA3Bu/B,EAAQ,gBAAiE,QAAvBA,EAAQ9kC,YAA6C,WAArB8kC,EAAQ3+B,UAA2C,aAAlB2+B,EAAQrY,MAC7HsX,EAAAA,QAAOC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,6CAA8C,mBACpF,qCAA3BS,EAAQ,gBAAyDA,EAAQC,iBAAmBD,EAAQE,eAC7GjB,EAAAA,QAAOC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,gDAAiD,uCAAyCS,EAAQC,gBAAgBz0C,OAAS,wBAA0Bw0C,EAAQC,gBAAgBz0C,OAAS,KAEpQ,IAEF,IAAIosC,EAAgBvlC,EAAM8B,IAAI,UAC9B,GAAI9B,EAAMsF,KAAOtF,EAAMsF,IAAI2N,cAAcpE,QAAQ,gBAAkB,EAAG,CACpEjO,KAAK+kC,SAASH,WAAWxlC,EAAM8B,IAAI,kBACnC,IAAIgsC,EAAU9tC,EAAM8B,IAAI,mBACpBhW,IAAAA,WAAa8U,KAAKmtC,wBACpBD,EAAUltC,KAAKmtC,qBAAqBD,EAAS9tC,IAE/CY,KAAK+kC,SAASqI,uBAAuBF,EAAQ30C,QAC7CyH,KAAK+kC,SAASmI,QAAQA,GACtBltC,KAAK8nC,aAAY,EACnB,MAAWnD,IAAkB1qB,EAAAA,EAAOwpB,cAAkC,sBAAlBkB,GAClD3kC,KAAKqtC,cAAa,GAClBrtC,KAAK+kC,SAASuI,gBAAe,GAC7BttC,KAAK+kC,SAASS,eAAc,GAC5BpB,GAAiB,EACjBpkC,KAAKikC,OAAOrF,MAAMx/B,IACTulC,IAAkB1qB,EAAAA,EAAOglB,WAClCj/B,KAAKklC,aAAa9lC,GAClBY,KAAKmlC,WACIR,IAAkB1qB,EAAAA,EAAO4pB,sBAClC7jC,KAAKslC,aAAalmC,GAClBY,KAAK+kC,SAASD,WAAW9kC,KAAKZ,MAAM8B,IAAI,kBACxClB,KAAKulC,aACLvlC,KAAK+kC,SAASS,eAAc,GAC5BxlC,KAAK+kC,SAASU,iBAAgB,GAC1BzlC,KAAKZ,MAAM8B,IAAI,mBAAqB,GACtCwkC,EAAAA,EAAWP,QAAQnlC,KAAK2lC,OAEM,IAA5B3lC,KAAK+kC,SAASwI,WAChB7H,EAAAA,EAAWkC,mBAAmB5nC,KAAMA,KAAK2lC,OAGzC3lC,KAAKqmC,yBAA2Bn7C,IAAAA,WAAa8U,KAAKqmC,wBAAwBxjB,OAC5E7iB,KAAKqmC,wBAAwBxjB,MAEjC,GAAG7iB,MACHoW,MAAOlrB,IAAAA,MAAO,SAAUkU,EAAOiZ,GACzBrY,KAAKZ,MAAMwiC,WAAWS,YAAYC,SACpCp3C,IAAAA,KAAO8U,KAAKZ,MAAMwiC,WAAWS,YAAYC,SAAS,SAAUyK,EAASv/B,GACpC,sBAA3Bu/B,EAAQ,gBAAiE,QAAvBA,EAAQ9kC,YAA6C,WAArB8kC,EAAQ3+B,UAA2C,aAAlB2+B,EAAQrY,MAC7HsX,EAAAA,QAAOC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,6CAA8C,mBACpF,qCAA3BS,EAAQ,gBAAyDA,EAAQC,iBAAmBD,EAAQE,eAC7GjB,EAAAA,QAAOC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,gDAAiD,uCAAyCS,EAAQC,gBAAgBz0C,OAAS,wBAA0Bw0C,EAAQC,gBAAgBz0C,OAAS,KAEpQ,IAEF,IAAIk8B,EAASpc,GAAYA,EAASwO,cAAgBxO,EAASwO,aAAargC,OAAS,GACjF,IAAI0E,IAAAA,QAAUupC,IAAYA,EAAO,IAAOA,EAAO,GAAGzP,KAE3C,CACL,IAAIwoB,EAAO/Y,EAAO,GAAGzP,KACjByoB,EAAMjmB,EAAAA,EAAYiW,6BAA6B+P,IAAShmB,EAAAA,EAAYyV,wBAAwBuQ,GAChG1H,IAAAA,WAAyB2G,oBACzB3G,IAAAA,WAAyB4H,mBAAmBD,EAC9C,MANE3H,IAAAA,WAAyBC,WAO7B,GAAG/lC,QACF2tC,aACL,MACE3tC,KAAKkrC,yBAGPpK,MAAMn6C,EAAKiB,UAAU,6BAEzB,EAAGgmD,eAAeC,EAAAA,QAAQC,aAAaC,iBAAkBF,EAAAA,QAAQG,aAAaD,kBAC9EV,aAAc,SAAUY,GACtBjuC,KAAK+kC,SAASsI,aAAaY,EAC7B,EACAnG,YAAa,SAAUmG,GACrBjuC,KAAK+kC,SAAS+C,YAAYmG,EAC5B,EACA1I,WAAY,WACVpC,EAAAA,EAAW7C,cAActgC,KAAKZ,MAAM8B,IAAI,MAAO8gC,EAAAA,EAAcC,WAAY,EAAGjiC,KAAK+kC,SAASmJ,oBAAqBluC,KAAKZ,MAAM8B,IAAI,WAAWysC,cAAcQ,KAAKjjD,IAAAA,MAAO,SAAUmtB,GACvKA,GAAYA,EAAS7xB,QACvB0E,IAAAA,KAAOmtB,EAAS7xB,OAAO,SAAU6hB,GAC/BA,EAAK+lC,eAAiBpuC,KAAKquC,eAAehmC,EAC5C,GAAGrI,MACC9U,IAAAA,WAAa8U,KAAKsuC,gBACpBj2B,EAAS7xB,MAAQwZ,KAAKsuC,aAAaj2B,EAAS7xB,MAAOwZ,KAAKZ,QAE1DY,KAAK+kC,SAASwJ,aAAal2B,EAAS7xB,QAEtCwZ,KAAK+kC,SAASsI,cAAa,GAC3BrtC,KAAK+kC,SAASQ,YAAW,GACzBvlC,KAAKoiC,EAAE,mBAAmBoM,IAAI,SAC9BxuC,KAAKoiC,EAAE,mBAAmB0E,MAAM57C,IAAAA,MAAO,WACrC8U,KAAK+kC,SAAS0J,eAAezuC,KAAK+kC,SAAS0J,gBAC7C,GAAGzuC,OACE9U,IAAAA,WAAa8U,KAAKomC,qBAAwBV,EAAAA,EAAW2C,gBAAgBroC,KAAK2lC,OAC7E3lC,KAAK0uC,aAET,GAAG1uC,OAAO2uC,KAAK7I,IAAAA,WAAyBC,UAC1C,EACAX,YAAa,WACqB,YAA5BsB,EAAAA,EAAYkI,cACd7K,EAAAA,QAAa8K,WAAW,iCACxB7uC,KAAKsmC,gBAAkBtmC,KAAKsmC,eAAe5G,QAAQ,mBACd,WAA5BgH,EAAAA,EAAYkI,eACrB7K,EAAAA,QAAa8K,WAAW,gCACxB7uC,KAAKsmC,gBAAkBtmC,KAAKsmC,eAAe5G,QAAQ,iBAEvD,EACAgP,YAAa,WACX,IAAIH,EAAerjD,IAAAA,IAAM8U,KAAK+kC,SAASwJ,gBAAgB,SAAUn4B,GAC/D,OAAOA,EAAMg4B,cACf,IACIM,EAAc,IAAIl1B,IACtBtuB,IAAAA,KAAOqjD,GAAc,SAAU9Z,GAC7BvpC,IAAAA,KAAOupC,GAAQ,SAAUre,GACvBs4B,EAAY35B,IAAIqB,EAClB,GACF,IACAs4B,EAAY70B,SAAQ,SAAUzD,GAC5B04B,EAAMnV,UAAUvjB,EAClB,GACF,EACAyvB,gBAAiB,WACf,IAAIkJ,EAAa/uC,KAAKZ,MAAM8B,IAAI,cAC5B8tC,EAAqB9jD,IAAAA,MAAQ6jD,GAAYvnD,KAAI,SAAUynD,GACzD,MAAuB,4BAAnBA,EAAUjqB,KACL,CACLkqB,UAAW,qBACX3N,GAAI0N,EAAU7gC,SAASxD,QAAQ,eAAgB,KAG5B,8BAAnBqkC,EAAUjqB,KACL,CACLkqB,UAAW,sBACX3N,GAAI0N,EAAU7gC,SAASxD,QAAQ,eAAgB,KAG5C,IACT,IAAGjJ,UAAUnb,QACb,OAAI0E,IAAAA,QAAU8jD,KAGVhvC,KAAK2lC,KAAKwJ,UACZnvC,KAAK2lC,KAAKwJ,SAASzP,QAAQ,mCAAoCsP,GAEjEhvC,KAAKslC,eACLtlC,KAAK+kC,SAASsI,cAAa,GAC3BrtC,KAAK+kC,SAASS,eAAc,GAC5BxlC,KAAK+kC,SAASU,iBAAgB,GAC9BzlC,KAAKolC,cACLtqB,OAAOyvB,IAAI6E,MAAMC,YAAYC,aAAa3oD,EAAKiB,UAAU,+CAClD,EACT,EACA2nD,0BAA2B,SAAU59B,GACnC3R,KAAK+kC,UAAY/kC,KAAK+kC,SAASyK,oBAAoB79B,EACrD,EACA08B,eAAgB,SAAUoB,GACxB,IAAIC,EAAmBxkD,IAAAA,QAAUukD,EAAa1qB,QAAU75B,IAAAA,IAAMukD,EAAa1qB,QAAQ,SAAU3O,GAC3F,OAAOoR,EAAAA,EAAYiW,6BAA6BrnB,IAAUoR,EAAAA,EAAYyV,wBAAwB7mB,EAChG,IAAK,GAAIu5B,EAAkBzkD,IAAAA,QAAUukD,EAAaG,iBAAmBpoB,EAAAA,EAAY6V,mBAAmBoS,EAAaG,iBAAiB,GAAQ,GACtI1kD,IAAAA,WAAa8U,KAAK6vC,kBACpB7vC,KAAK6vC,gBAAgBF,GAEvB,IAAIG,EAAyB5kD,IAAAA,IAAMykD,GAAiB,SAAUv5B,GAC5D,OAAOzvB,EAAKiB,UAAU,4CAA6CwuB,EAAMymB,YAAazmB,EAAM6O,QAC9F,IACA,OAAOyqB,EAAiBriD,OAAOyiD,EACjC,EACAvE,oBAAqB,WACnB,IAAIwE,EAAiBrK,EAAAA,EAAWsK,kBAAkBhwC,KAAK2lC,MACvD,QAAOz6C,IAAAA,QAAU6kD,IAAkBA,EAAex3C,OAAS,CAC7D,G,2LCtfE5R,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC+uC,EAAgBn1B,OAAOyhB,iBAAiBr7B,IAAI,6EAC5CgvC,EAAe,aACfC,EAAU,gBACVC,EACO,UADPA,EAEK,QAFLA,EAGsB,yBAEtBC,EAAgB,CAAC,CACnB3b,MAAOruB,EAAAA,EAAQmT,IACf8a,KAAM3tC,EAAKiB,UAAU,sCACpB,CACD8sC,MAAOruB,EAAAA,EAAQiqC,SACfhc,KAAM3tC,EAAKiB,UAAU,2CACpB,CACD8sC,MAAOruB,EAAAA,EAAQkqC,SACfjc,KAAM3tC,EAAKiB,UAAU,4CAEnB4oD,EAAc,CAAC,CACjB9b,MAAO,aACPJ,KAAM,KACL,CACDI,MAAO,WACPJ,KAAMoS,EAAAA,EAAY+J,sBAEhBC,EAAoB,CAAC,CACvBhc,MAAO0b,EACP9b,KAAM3tC,EAAKiB,UAAU,oCACpB,CACD8sC,MAAO0b,EACP9b,KAAM3tC,EAAKiB,UAAU,kCACrB,CACA8sC,MAAO0b,EACP9b,KAAM3tC,EAAKiB,UAAU,sCAEnB+oD,EAAQ,IAAI3S,OAAO,sBACnB4S,EAAiB,SAAUpqD,EAAOqqD,EAAsBC,GAC1D,IAAKb,EAAcc,eAAevqD,GAChC,OAAO2pD,EAGT,IAAIa,EAAUC,EACVC,GAAcC,EAAAA,EAAAA,IAAezK,EAAAA,EAAY+J,qBAW7C,OATIK,IAAqBV,GACvBY,EAAWH,EAAuB,EAAIK,EAAYE,MAAMC,IACxDJ,EAAWJ,EAAuB5jC,OAAOqkC,UAAYJ,EAAYE,MAAMG,KAC9DT,IAAqBV,IAC9BY,EAAWH,EAAuB,EAAIK,EAAYM,SAASH,IAC3DJ,EAAWJ,EAAuB5jC,OAAOqkC,UAAYJ,EAAYM,SAASD,MAG5E/qD,EAAQypD,EAAcwB,aAAajrD,EAAO,GAAGg+B,YACnC9c,MAAMipC,GACVnqD,EAAQwqD,IAAaH,GAAwBrqD,GAASwqD,GAAYH,GAAwBrqD,EAAQyqD,EAC7Ff,EAKJ,GAFEC,CAGX,EAoIA,EAnIgB,SAAU/wC,GACxBsyC,EAAAA,EAAK5uC,KAAK9C,MACVA,KAAKqG,QAAUgqC,EACfrwC,KAAK2xC,eAAiB9K,IAAAA,WAAcxgC,EAAAA,EAAQmT,KAC5CxZ,KAAK4xC,uBAAyB/K,IAAAA,WAAc,IAC5C7mC,KAAK2xC,eAAe94B,WAAU,WAC5B7Y,KAAK6xC,aAAa,IAClB7xC,KAAK4xC,uBAAuB,GAC9B,GAAG5xC,MACHA,KAAK8xC,YAAcpB,EACnB1wC,KAAK+xC,eAAiBlL,IAAAA,WAAcznC,EAAM8B,IAAI,eAC1C2lC,IAAAA,aAAgBznC,EAAM8B,IAAI,gBAC5B9B,EAAM8B,IAAI,cAAc2X,WAAU,SAAUm5B,GAC1ChyC,KAAK+xC,eAAeC,EACtB,GAAGhyC,MAELA,KAAK+xC,eAAel5B,WAAU,WAC5B7Y,KAAK6xC,aAAa,IAClB7xC,KAAK4xC,uBAAuB,GAC9B,GAAG5xC,MACHA,KAAKiyC,cAAgBpL,IAAAA,UAAY,WAC/B,OAAO7mC,KAAK+xC,mBAAqB3B,CACnC,GAAGpwC,MACHA,KAAKkyC,iBAAmBrL,IAAAA,UAAY,WAClC,OAAO7mC,KAAK+xC,mBAAqB3B,CACnC,GAAGpwC,MACHA,KAAKmyC,uBAAyB,WAC5B,OAAInyC,KAAKiyC,gBACEtrD,EAAKiB,UAAU,iCACfoY,KAAKkyC,mBACLvrD,EAAKiB,UAAU,oCAEnB,EACT,EACAoY,KAAKoyC,aAAevL,IAAAA,UAAY,WAC9B,OAAO7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQmT,GAC3C,GAAGxZ,MACHA,KAAKqyC,kBAAoBxL,IAAAA,UAAY,WACnC,OAAO7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQiqC,UAAYtwC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQkqC,QACzF,GAAGvwC,MACHA,KAAKsyC,uBAAyBzL,IAAAA,UAAY,WACxC,OAAO7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQiqC,QAC3C,GAAGtwC,MACHA,KAAKuyC,MAAQ/B,EACbxwC,KAAKwyC,aAAe3L,IAAAA,WAAc,cAClC7mC,KAAKyyC,OAAS5L,IAAAA,aACd7mC,KAAK0yC,YAAc7L,IAAAA,SAAY,CAC7B8L,KAAM,WACJ,OAAO3yC,KAAKyyC,QACd,EACAG,MAAO,SAAUpsD,GACfwZ,KAAK6xC,aAAa,IAClB7xC,KAAK4xC,uBAAuB,IAC5B5xC,KAAKyyC,OAAOjsD,EACd,EACAqsD,MAAO7yC,OAETA,KAAK8yC,MAAQjM,IAAAA,aACb7mC,KAAK+yC,WAAalM,IAAAA,SAAY,CAC5B8L,KAAM,WACJ,OAAO3yC,KAAK8yC,OACd,EACAF,MAAO,SAAUpsD,GACfwZ,KAAK6xC,aAAa,IAClB7xC,KAAK4xC,uBAAuB,IAC5B5xC,KAAK8yC,MAAMtsD,EACb,EACAqsD,MAAO7yC,OAETA,KAAKgzC,cAAgBnM,IAAAA,aACrB7mC,KAAKizC,qBAAuBpM,IAAAA,UAAY,WACtC,OAAI7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQiqC,SAAiB3pD,EAAKiB,UAAU,sCAAgDoY,KAAK2xC,mBAAqBtrC,EAAAA,EAAQkqC,SAAiB5pD,EAAKiB,UAAU,2CAAtE,CACpH,GAAGoY,MACHA,KAAKwvC,oBAAoBpwC,EAAM8B,IAAI,wBACnClB,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,OAAOlgD,EAAKiB,UAAU,uCAAuCgjB,QAAQ,MAAO5K,KAAKwvC,sBACnF,GAAGxvC,MACHA,KAAKwrC,SAAW,WAEd,GADAxrC,KAAK6xC,aAAa,IACiB,IAA/B7xC,KAAKwvC,sBAEP,OADA1O,MAAMn6C,EAAKiB,UAAU,+BACd,EAET,IAAI+pD,EAAiB3xC,KAAK2xC,iBACtBd,GAAwBc,IAAmBtrC,EAAAA,EAAQiqC,UAAYqB,IAAmBtrC,EAAAA,EAAQkqC,WAAqC,eAAxBvwC,KAAKwyC,eAC5GE,EAAc1yC,KAAK0yC,cACvB,IAAKA,EAUH,OATIf,IAAmBtrC,EAAAA,EAAQmT,IAC7BxZ,KAAK6xC,aAAalrD,EAAKiB,UAAU,yCAEL,eAAxBoY,KAAKwyC,eACPxyC,KAAK6xC,aAAalrD,EAAKiB,UAAU,4CAEjCoY,KAAK6xC,aAAalrD,EAAKiB,UAAU,0CAG9B,EAET,GAAI8qD,EAAa,CAEf,IADIjrC,EAASmpC,EAAe8B,EAAa7B,EAAsB7wC,KAAK+xC,qBACrD7B,EAEb,OADAlwC,KAAK6xC,aAAalrD,EAAKiB,UAAU,6CAC1B,EACF,GAAI6f,IAAW0oC,EAMpB,MAL4B,eAAxBnwC,KAAKwyC,eACPxyC,KAAK6xC,aAAalrD,EAAKiB,UAAU,4CAEjCoY,KAAK6xC,aAAalrD,EAAKiB,UAAU,0CAE5B,CAEX,CACA,GAAIoY,KAAKgzC,iBAAmBrB,IAAmBtrC,EAAAA,EAAQmT,IAAK,CAC1D,IAKM/R,EALFqrC,EAAQ9yC,KAAK+yC,aACjB,IAAKD,EAEH,OADA9yC,KAAK4xC,uBAAuBjrD,EAAKiB,UAAU,+CACpC,EAGP,IADI6f,EAASmpC,EAAekC,GAAO,EAAO9yC,KAAK+xC,qBAChC7B,EAEb,OADAlwC,KAAK6xC,aAAalrD,EAAKiB,UAAU,6CAC1B,EACF,GAAI6f,IAAW0oC,EAEpB,OADAnwC,KAAK6xC,aAAalrD,EAAKiB,UAAU,0CAC1B,CAGb,CACA,OAAO,CACT,CACF,E,6HCvLIjB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCiyC,EAA6B,iEAAmEzM,EAAAA,EAAY0M,YAAY7R,GAAK,IAC7H8R,EAAe,SAAU3d,GAgC3B,OA/BIA,GACFxqC,IAAAA,KAAOwqC,GAAM,SAAUlvC,GACrBA,EAAMq7C,OAAS32C,IAAAA,KAAO1E,EAAM8sD,WAAW,SAAUjrC,GAC/C,MAAoB,iBAAbA,EAAK0B,GACd,IACAvjB,EAAMe,KAAO,GACbf,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOA,EAAMq7C,QAAUr7C,EAAMq7C,OAAOnN,MAAQluC,EAAMq7C,OAAOnN,MAAQ,GACjE6e,QAAQ,IAEN/sD,EAAMgtD,SAAWhtD,EAAMgtD,QAAQj7C,QACjC/R,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOitD,EAAAA,QAAcC,kBAAkBltD,EAAMgtD,QAAQ,GAAGG,cAAe,GACvEJ,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOitD,EAAAA,QAAcC,kBAAkBltD,EAAMgtD,QAAQ,GAAGI,SAAU,GAClEL,QAAQ,MAGV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,IAGd,IAEK7d,CACT,EACIme,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpB,IACI/I,EADUF,EAAAA,QAAwB+7C,uBAAuBz6C,SACtCy6C,uBAAuBz6C,SAC9CpB,EAAS0mC,QACT39B,EAAQ/I,SAAWA,EACnB47C,EAAAA,EAASlxC,UAAUojC,WAAWljC,KAAK9C,KAAMiB,GACzCjB,KAAK+kC,SAAW,IAAIiP,EAAsBh0C,KAAKZ,OAC/CY,KAAKV,SAAWA,IAChB20C,EAAAA,GAAej0C,KAAK+kC,SAASyN,aAAcW,EAC7C,EACA5M,OAAQ,WAGN,OAFAuN,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WACtCs0C,EAAAA,EAAcnU,IAAI//B,KAAKwmC,KAChBxmC,IACT,EACA8rC,UAAW,WACT,IAAInyB,EACAg4B,EAAiB3xC,KAAK+kC,SAAS4M,iBAC/BoB,EAAapB,IAAmBtrC,EAAAA,EAAQmT,KAAOxZ,KAAK+kC,SAASiO,gBAAkBS,EAAAA,QAAcU,iBAAiBn0C,KAAK+kC,SAASgO,cAAgB,KAC5IqB,EAAeX,EAAAA,QAAcU,iBAAiBn0C,KAAK+kC,SAAS2N,eAC5Df,IAAmBtrC,EAAAA,EAAQkqC,WAC7B6D,IAAiB,GAGnBz6B,EAAS,CACP2oB,QAAS,CAAC,CACR,cAAe,uBACfl0B,SAAU,gBACVnG,WALa0pC,IAAmBtrC,EAAAA,EAAQmT,IAAM66B,EAAAA,EAAmBC,UAA6C,eAAjCt0C,KAAK+kC,SAASyN,eAAkC6B,EAAAA,EAAmBE,gBAAkBF,EAAAA,EAAmBG,eAMrL9f,MAAO0f,EACPK,MAAO1B,KAGX/yC,KAAKZ,MAAMmF,IAAI,cAAeoV,EAChC,EACAqvB,YAAa,WAEX,OADa0L,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAM,WAEnD,EACAX,gBAAiB,WACf,OAAOr+C,EAAKiB,UAAU,kCACxB,EACAshD,gBAAiB,WAEf,MAAO,CACLR,kBAAmB,CAAC,CAClBiM,eAAgB,aAChBC,iBAAkB,QAClBtJ,OALQtrC,KAAK+kC,SAASkN,gBAAkB,CAACH,EAAAA,EAAY+C,iBAAkB/C,EAAAA,EAAYgD,eAAiB,CAAChD,EAAAA,EAAYiD,0BAQvH,EACAzG,aAAc,SAAU7Z,GACtB,OAAO4e,EAAa5e,EACtB,EACA0Y,qBAAsB,SAAUD,GAC9B,OAAOmG,EAAanG,EACtB,IAEF,G,+KC5GIvmD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC+uC,EAAgBn1B,OAAOyhB,iBAAiBr7B,IAAI,6EAC5CgvC,EAAe,aACfC,EAAU,gBACVE,EAAgB,CAAC,CACnB3b,MAAOruB,EAAAA,EAAQmT,IACf8a,KAAM3tC,EAAKiB,UAAU,sCACpB,CACD8sC,MAAOruB,EAAAA,EAAQiqC,SACfhc,KAAM3tC,EAAKiB,UAAU,2CACpB,CACD8sC,MAAOruB,EAAAA,EAAQkqC,SACfjc,KAAM3tC,EAAKiB,UAAU,4CAEnB4oD,EAAc,CAAC,CACjB9b,MAAO,aACPJ,KAAM,KACL,CACDI,MAAO,WACPJ,KAAMoS,EAAAA,EAAY+J,sBAEhBE,EAAQ,IAAI3S,OAAO,sBACnB4S,EAAiB,SAAUpqD,EAAOqqD,GACpC,IAAKZ,EAAcc,eAAevqD,GAChC,OAAO2pD,EAET,IAAIa,EAAWH,EAAuB,EAAInK,EAAAA,EAAYsO,YAAYC,WAAWC,WACzEjE,EAAWJ,EAAuB5jC,OAAOqkC,UAAY5K,EAAAA,EAAYsO,YAAYC,WAAWE,aAE5F,OADA3uD,EAAQypD,EAAcwB,aAAajrD,EAAO,GAAGg+B,YACnC9c,MAAMipC,GACVnqD,EAAQwqD,IAAaH,GAAwBrqD,GAASwqD,GAAYH,GAAwBrqD,EAAQyqD,EAC7Ff,EAKJ,GAFEC,CAGX,EAuGA,EAtGgB,SAAU/wC,GACxBsyC,EAAAA,EAAK5uC,KAAK9C,MACVA,KAAKqG,QAAUgqC,EACfrwC,KAAK2xC,eAAiB9K,IAAAA,WAAcxgC,EAAAA,EAAQmT,KAC5CxZ,KAAK2xC,eAAe94B,WAAU,WAC5B7Y,KAAK6xC,aAAa,GACpB,GAAG7xC,MACHA,KAAKoyC,aAAevL,IAAAA,UAAY,WAC9B,OAAO7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQmT,GAC3C,GAAGxZ,MACHA,KAAKqyC,kBAAoBxL,IAAAA,UAAY,WACnC,OAAO7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQiqC,UAAYtwC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQkqC,QACzF,GAAGvwC,MACHA,KAAKsyC,uBAAyBzL,IAAAA,UAAY,WACxC,OAAO7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQiqC,QAC3C,GAAGtwC,MACHA,KAAKuyC,MAAQ/B,EACbxwC,KAAKwyC,aAAe3L,IAAAA,WAAc,cAClC7mC,KAAKyyC,OAAS5L,IAAAA,aACd7mC,KAAK0yC,YAAc7L,IAAAA,SAAY,CAC7B8L,KAAM,WACJ,OAAO3yC,KAAKyyC,QACd,EACAG,MAAO,SAAUpsD,GACfwZ,KAAK6xC,aAAa,IAClB7xC,KAAKyyC,OAAOjsD,EACd,EACAqsD,MAAO7yC,OAETA,KAAK8yC,MAAQjM,IAAAA,aACb7mC,KAAK+yC,WAAalM,IAAAA,SAAY,CAC5B8L,KAAM,WACJ,OAAO3yC,KAAK8yC,OACd,EACAF,MAAO,SAAUpsD,GACfwZ,KAAK6xC,aAAa,IAClB7xC,KAAK8yC,MAAMtsD,EACb,EACAqsD,MAAO7yC,OAETA,KAAKgzC,cAAgBnM,IAAAA,aACrB7mC,KAAKizC,qBAAuBpM,IAAAA,UAAY,WACtC,OAAI7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQiqC,SAAiB3pD,EAAKiB,UAAU,8CAAwDoY,KAAK2xC,mBAAqBtrC,EAAAA,EAAQkqC,SAAiB5pD,EAAKiB,UAAU,mDAAtE,CAC5H,GAAGoY,MACHA,KAAKwvC,oBAAoBpwC,EAAM8B,IAAI,wBACnClB,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,OAAOlgD,EAAKiB,UAAU,+CAA+CgjB,QAAQ,MAAO5K,KAAKwvC,sBAC3F,GAAGxvC,MACHA,KAAKwrC,SAAW,WAEd,GADAxrC,KAAK6xC,aAAa,IACiB,IAA/B7xC,KAAKwvC,sBAEP,OADA1O,MAAMn6C,EAAKiB,UAAU,+BACd,EAET,IAAI+pD,EAAiB3xC,KAAK2xC,iBACtBd,GAAwBc,IAAmBtrC,EAAAA,EAAQiqC,UAAYqB,IAAmBtrC,EAAAA,EAAQkqC,WAAqC,eAAxBvwC,KAAKwyC,eAC5GE,EAAc1yC,KAAK0yC,cACvB,IAAKA,EAUH,OATIf,IAAmBtrC,EAAAA,EAAQmT,IAC7BxZ,KAAK6xC,aAAalrD,EAAKiB,UAAU,yCAEL,eAAxBoY,KAAKwyC,eACPxyC,KAAK6xC,aAAalrD,EAAKiB,UAAU,4CAEjCoY,KAAK6xC,aAAalrD,EAAKiB,UAAU,0CAG9B,EAET,GAAI8qD,EAAa,CAEf,IADIjrC,EAASmpC,EAAe8B,EAAa7B,MAC1BX,EAEb,OADAlwC,KAAK6xC,aAAalrD,EAAKiB,UAAU,6CAC1B,EACF,GAAI6f,IAAW0oC,EAMpB,MAL4B,eAAxBnwC,KAAKwyC,eACPxyC,KAAK6xC,aAAalrD,EAAKiB,UAAU,4CAEjCoY,KAAK6xC,aAAalrD,EAAKiB,UAAU,0CAE5B,CAEX,CACA,GAAIoY,KAAKgzC,iBAAmBrB,IAAmBtrC,EAAAA,EAAQmT,IAAK,CAC1D,IAKM/R,EALFqrC,EAAQ9yC,KAAK+yC,aACjB,IAAKD,EAEH,OADA9yC,KAAK6xC,aAAalrD,EAAKiB,UAAU,+CAC1B,EAGP,IADI6f,EAASmpC,EAAekC,GAAO,MACpB5C,EAEb,OADAlwC,KAAK6xC,aAAalrD,EAAKiB,UAAU,6CAC1B,EACF,GAAI6f,IAAW0oC,EAEpB,OADAnwC,KAAK6xC,aAAalrD,EAAKiB,UAAU,0CAC1B,CAGb,CACA,OAAO,CACT,CACF,E,qGCjIIjB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCiyC,EAA6B,yEAA2EzM,EAAAA,EAAY0M,YAAY7R,GAAK,IACrI8R,EAAe,SAAU3d,GAgC3B,OA/BIA,GACFxqC,IAAAA,KAAOwqC,GAAM,SAAUlvC,GACrBA,EAAMq7C,OAAS32C,IAAAA,KAAO1E,EAAM8sD,WAAW,SAAUjrC,GAC/C,MAAoB,iBAAbA,EAAK0B,GACd,IACAvjB,EAAMe,KAAO,GACbf,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOA,EAAMq7C,QAAUr7C,EAAMq7C,OAAOnN,MAAQluC,EAAMq7C,OAAOnN,MAAQ,GACjE6e,QAAQ,IAEN/sD,EAAMgtD,SAAWhtD,EAAMgtD,QAAQj7C,QACjC/R,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOitD,EAAAA,QAAcC,kBAAkBltD,EAAMgtD,QAAQ,GAAGG,cAAe,GACvEJ,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOitD,EAAAA,QAAcC,kBAAkBltD,EAAMgtD,QAAQ,GAAGI,SAAU,GAClEL,QAAQ,MAGV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,IAGd,IAEK7d,CACT,EACIme,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpB,IACI/I,EADUF,EAAAA,QAAwBo9C,+BAA+B97C,SAC9C87C,+BAA+B97C,SACtDpB,EAAS0mC,QACT39B,EAAQ/I,SAAWA,EACnB47C,EAAAA,EAASlxC,UAAUojC,WAAWljC,KAAK9C,KAAMiB,GACzCjB,KAAK+kC,SAAW,IAAIsQ,EAA8Br1C,KAAKZ,OACvDY,KAAKV,SAAWA,IAChB20C,EAAAA,GAAej0C,KAAK+kC,SAASyN,aAAcW,EAC7C,EACA5M,OAAQ,WAGN,OAFAuN,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WACtCs0C,EAAAA,EAAcnU,IAAI//B,KAAKwmC,KAChBxmC,IACT,EACA8rC,UAAW,WACT,IAAInyB,EACAg4B,EAAiB3xC,KAAK+kC,SAAS4M,iBAC/BoB,EAAapB,IAAmBtrC,EAAAA,EAAQmT,KAAOxZ,KAAK+kC,SAASiO,gBAAkBS,EAAAA,QAAcU,iBAAiBn0C,KAAK+kC,SAASgO,cAAgB,KAC5IqB,EAAeX,EAAAA,QAAcU,iBAAiBn0C,KAAK+kC,SAAS2N,eAC5Df,IAAmBtrC,EAAAA,EAAQkqC,WAC7B6D,IAAiB,GAGnBz6B,EAAS,CACP2oB,QAAS,CAAC,CACR,cAAe,uBACfl0B,SAAU,iCACVnG,WALa0pC,IAAmBtrC,EAAAA,EAAQmT,IAAM66B,EAAAA,EAAmBC,UAA6C,eAAjCt0C,KAAK+kC,SAASyN,eAAkC6B,EAAAA,EAAmBE,gBAAkBF,EAAAA,EAAmBG,eAMrL9f,MAAO0f,EACPK,MAAO1B,KAGX/yC,KAAKZ,MAAMmF,IAAI,cAAeoV,EAChC,EACAqvB,YAAa,WAEX,OADa0L,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAM,WAEnD,EACAX,gBAAiB,WACf,OAAOr+C,EAAKiB,UAAU,kCACxB,EACA0mD,aAAc,SAAU7Z,GACtB,OAAO4e,EAAa5e,EACtB,EACA0Y,qBAAsB,SAAUD,GAC9B,OAAOmG,EAAanG,EACtB,IAEF,G,6IC9FIvmD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCo0C,EAAY,SAAU5f,GAwCxB,OAvCIA,GACFxqC,IAAAA,KAAOwqC,GAAM,SAAUlvC,GASrB,GARAA,EAAMq7C,OAAS32C,IAAAA,KAAO1E,EAAM8sD,WAAW,SAAUjrC,GAC/C,MAAoB,iBAAbA,EAAK0B,GACd,IACAvjB,EAAMe,KAAO,GACbf,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOA,EAAMq7C,QAAUr7C,EAAMq7C,OAAOnN,MAAQluC,EAAMq7C,OAAOnN,MAAQ,GACjE6e,QAAQ,IAEN/sD,EAAMgtD,SAAWhtD,EAAMgtD,QAAQj7C,OAAQ,CACzC,IACIg9C,EADAC,EAAWhvD,EAAMgtD,QAAQ,GAAGI,SAG9B2B,GADiB,KAAdC,GAAgC,KAAbA,EACP,IAEA/B,EAAAA,QAAcgC,yBAAyBjvD,EAAMgtD,QAAQ,GAAGI,SAAU,GAEnF,IAAI8B,EAAgBlvD,EAAMgtD,QAAQ,GAAGG,cACrCntD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAyB,KAAlBkvD,IAA4C,KAAnBA,EAAuB,IAAMjC,EAAAA,QAAcgC,yBAAyBjvD,EAAMgtD,QAAQ,GAAGG,cAAe,GACpIJ,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO+uD,EACPhC,QAAQ,GAEZ,MACE/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,GAGd,IAEK7d,CAET,EACIme,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpBjB,KAAKiB,QAAUA,GAAY,CAAC,EAC5B6yC,EAAAA,EAASlxC,UAAUojC,WAAW1jC,MAAMtC,KAAMJ,WAC1CI,KAAKV,SAAWA,IAChBU,KAAK+G,WAAa9F,EAAQ8F,WAC1B/G,KAAK+kC,SAAW,IAAI4B,EAAAA,EAAU,CAC5BgP,oBAAoB,EACpBC,2BAA4BjvD,EAAKiB,UAAU,6CAE/C,EACA2+C,OAAQ,WAEN,OADAuN,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WAC/BI,IACT,EACA8rC,UAAW,WACT9rC,KAAKZ,MAAMmF,IAAI,SAAU,YACzB,IAGIoV,EAAS,CACX2oB,QAAS,CAAC,CACR,cALY,uBAMZl0B,SALgB,2BAMhBnG,WALa4tC,EAAAA,EAAkBvB,UAM/B5f,MAAO10B,KAAK+kC,SAAS+Q,qCAGzB91C,KAAKZ,MAAMmF,IAAI,cAAeoV,EAChC,EACAqvB,YAAa,WAEX,OADa0L,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAM,WAEnD,EACA2I,aAAc,SAAU7Z,GACtB,OAAO6gB,EAAU7gB,EACnB,EACA0Y,qBAAsB,SAAUD,GAC9B,OAAOoI,EAAUpI,EACnB,EACAlI,gBAAiB,WACf,OAAOr+C,EAAKiB,UAAU,kCACxB,IAEF,K,wJC3FIjB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CAwBvC,EAvBgB,SAAU9B,GACxBsyC,EAAAA,EAAK5uC,KAAK9C,MACV,IAAIia,EAAS7a,EAAM8B,IAAI,eAAeohC,QAAQ,GAAG5N,MACjD10B,KAAKutC,WAAY,EACjBvtC,KAAKwvC,oBAAoBpwC,EAAM8B,IAAI,wBACnClB,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,OAAI5sB,IAAW87B,EAAAA,EAAeC,QACrBrvD,EAAKiB,UAAU,iCAAiCgjB,QAAQ,MAAO5K,KAAKwvC,uBAClEv1B,IAAW87B,EAAAA,EAAe9hD,OAC5BtN,EAAKiB,UAAU,iCAAiCgjB,QAAQ,MAAO5K,KAAKwvC,uBAEpE7oD,EAAKiB,UAAU,gCAAgCgjB,QAAQ,MAAO5K,KAAKwvC,sBAE9E,GAAGxvC,MACHA,KAAKwrC,SAAW,WAEd,OADAxrC,KAAK6xC,aAAa,IACiB,IAA/B7xC,KAAKwvC,wBACP1O,MAAMn6C,EAAKiB,UAAU,+BACd,EAGX,CACF,E,qGCjBIjB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC+0C,EAAe,SAAUvgB,GAgC3B,OA/BIA,GACFxqC,IAAAA,KAAOwqC,GAAM,SAAUrtB,GACrBA,EAAKw5B,OAAS32C,IAAAA,KAAOmd,EAAKirC,WAAW,SAAUjrC,GAC7C,MAAoB,iBAAbA,EAAK0B,GACd,IACA1B,EAAK9gB,KAAO,GACZ8gB,EAAK9gB,KAAKikB,KAAK,CACbhlB,MAAO6hB,EAAKw5B,QAAUx5B,EAAKw5B,OAAOnN,MAAQrsB,EAAKw5B,OAAOnN,MAAQ,GAC9D6e,QAAQ,IAENlrC,EAAKmrC,SAAWnrC,EAAKmrC,QAAQj7C,QAC/B8P,EAAK9gB,KAAKikB,KAAK,CACbhlB,MAAOG,EAAKiB,UAAU,gBAAkBygB,EAAKmrC,QAAQ,GAAGG,eACxDJ,QAAQ,IAEVlrC,EAAK9gB,KAAKikB,KAAK,CACbhlB,MAAOG,EAAKiB,UAAU,gBAAkBygB,EAAKmrC,QAAQ,GAAGI,UACxDL,QAAQ,MAGVlrC,EAAK9gB,KAAKikB,KAAK,CACbhlB,MAAO,GACP+sD,QAAQ,IAEVlrC,EAAK9gB,KAAKikB,KAAK,CACbhlB,MAAO,GACP+sD,QAAQ,IAGd,IAEK7d,CACT,EACIme,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpB6yC,EAAAA,EAASlxC,UAAUojC,WAAW1jC,MAAMtC,KAAMJ,WAC1CI,KAAK+kC,SAAW,IAAImR,EAAgBl2C,KAAKZ,OACzCY,KAAKV,SAAWA,IAChBU,KAAKm2C,YAAcl1C,EAAQk1C,WAC7B,EACA5P,OAAQ,WAQN,OAPKb,EAAAA,EAAW0Q,uBAAuBp2C,KAAK2lC,QAC1C3lC,KAAK+kC,SAASwI,WAAY,GAE5BuG,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WACjC8lC,EAAAA,EAAW0Q,uBAAuBp2C,KAAK2lC,OAC1C3lC,KAAK+mC,YAEA/mC,IACT,EACAulC,WAAY,WACV,GAAIvlC,KAAK+kC,SAASwI,UAChB,OAAOuG,EAAAA,EAASlxC,UAAU2iC,WAAWjjC,MAAMtC,KAAMJ,WAEnD,IAAIy2C,EAAU,gCACVpxB,EAAUt+B,EAAKiB,UAAU,yCAA0CoY,KAAKZ,MAAM8B,IAAI,iBAAkBlB,KAAKZ,MAAM8B,IAAI,kBACnHo1C,EAAaC,IAAmB,CAClCF,QAASA,EACTpjD,KAAM,GAAA5F,OAAG2S,KAAKm2C,YAAcn2C,KAAKm2C,YAAc,GAAE,0BAA2B3L,EAAAA,EAAMtpC,IAAI,eAAiB,QAAUspC,EAAAA,EAAMtpC,IAAI,cAC3H7a,KAAMM,EAAKiB,UAAU,0BAEvBkzB,OAAOyvB,IAAI6E,MAAMC,YAAYmH,KAAK,CAChCvxB,QAASA,EAAU,IAAMqxB,EACzBG,aAAa,EACb1gB,MAAO,SACNsgB,EACL,EACArN,YAAa,WACX,OAAO0L,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAM,WAC7C,EACAX,gBAAiB,WACf,OAAOr+C,EAAKiB,UAAU,kCACxB,EACAulD,qBAAsB,SAAUD,GAC9B,OAAO+I,EAAa/I,EACtB,EACAoB,aAAc,SAAU7Z,GACtB,OAAOwhB,EAAaxhB,EACtB,IAEF,G,mKC7EA,EAbY0N,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUlzC,IAAAA,OAAS,CAAC,EAAGi3C,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnDyD,OAAQ,GACRQ,YAAa,CACXC,QAAS,CAAC,CACR,cAAe,oBACfoU,2BAA4B,KAE9BC,UAAU,GAEZC,YAAa,iB,yDCPbjwD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC21C,EAA+BnQ,EAAAA,EAAYoQ,YAAYC,gCACvDC,EAAe,CACjB,GAAM,SAAUrlC,GACd,OAAc,IAAVA,EACKhrB,EAAKiB,UAAU,6BACb+pB,EAAQ,EACVhrB,EAAKiB,UAAU,2BAA4B+pB,GAE3ChrB,EAAKiB,UAAU,iCAE1B,EACA,QAAW,SAAU+pB,GACnB,OAAc,IAAVA,EACKhrB,EAAKiB,UAAU,kCACb+pB,EAAQ,EACVhrB,EAAKiB,UAAU,gCAAiC+pB,GAEhDhrB,EAAKiB,UAAU,sCAE1B,EACA,SAAY,SAAU+pB,GACpB,OAAc,IAAVA,EACKhrB,EAAKiB,UAAU,mCACb+pB,EAAQ,EACVhrB,EAAKiB,UAAU,iCAAkC+pB,GAEjDhrB,EAAKiB,UAAU,uCAE1B,EACA,QAAW,SAAU+pB,GACnB,OAAc,IAAVA,EACKhrB,EAAKiB,UAAU,kCACb+pB,EAAQ,EACVhrB,EAAKiB,UAAU,gCAAiC+pB,GAEhDhrB,EAAKiB,UAAU,sCAE1B,EACA,WAAc,SAAU+pB,GACtB,OAAc,IAAVA,EACKhrB,EAAKiB,UAAU,qCACb+pB,EAAQ,EACVhrB,EAAKiB,UAAU,mCAAoC+pB,GAEnDhrB,EAAKiB,UAAU,yCAE1B,GAEEqvD,EAAY,SAAU73C,EAAO83C,EAAiBC,GAAgB,IAAD9xC,EAAA,KAC/DqsC,EAAAA,EAAK5uC,KAAK9C,MACVA,KAAKo3C,YAAcvQ,IAAAA,WAAc,IACjC7mC,KAAKq3C,YAAcxQ,IAAAA,YAAc,GACjC7mC,KAAK62C,6BAA+BA,EACpC72C,KAAKs3C,uBAAyBzQ,IAAAA,YAAc,GAC5C7mC,KAAKu3C,kBAAoB1Q,IAAAA,YAAc,GACvC7mC,KAAKooC,mBAAqBvB,IAAAA,YAAc,GACxC7mC,KAAKw3C,kBAAoB3Q,IAAAA,YAAc,GACvC7mC,KAAKy3C,iBAAmB5Q,IAAAA,WAAclgD,EAAKiB,UAAU,yBACrDoY,KAAKilC,WAAa4B,IAAAA,WAAclgD,EAAKiB,UAAU,iCAC/CoY,KAAK03C,uBAAyB7Q,IAAAA,YAAc,GAC5C7mC,KAAK23C,oBAAsB9Q,IAAAA,WAAc,MACzC7mC,KAAKstC,eAAiBzG,IAAAA,YAAc,GACpC7mC,KAAK43C,oCAAsC/Q,IAAAA,WAAgD,aAAlCznC,EAAMwiC,WAAWiW,QAAQtyC,MAAyD,YAAlCnG,EAAMwiC,WAAWiW,QAAQtyC,MAClIvF,KAAK83C,QAAUxjC,EAAAA,QAAOpT,IAAI,YAAc,QACxClB,KAAK+3C,OAASzjC,EAAAA,QAAOpT,IAAI,4CAA8C,WACvElB,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,IAAIp+C,EAAQuuD,EAAah3C,KAAKo3C,eAC9B,OAAO3uD,EAAQA,EAAM2W,EAAM8B,IAAI,WAAWyQ,OAAS,EACrD,GAAG3R,MACHk3C,EAAgBrU,GAAG,eAAe,WAChCx9B,EAAKwsC,aAAa,GACpB,IACAsF,EAActU,GAAG,eAAe,WAC9Bx9B,EAAKwsC,aAAa,GACpB,IACA7xC,KAAKwrC,SAAW,WACd,GAAIxrC,KAAK03C,0BAA2D,aAA/B13C,KAAK23C,uBACxBT,EAAgBc,WAAWC,aAC7Bd,EAAca,WAAWC,aAGrC,OADAj4C,KAAK6xC,aAAalrD,EAAKiB,UAAU,kDAC1B,EAGX,OAAOqvD,EAAUiB,YAAYl4C,KAAKo3C,cACpC,CACF,EACA,I,iIClFIzwD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCi3C,EAAe,CAAC,CAClBC,KAAM,SAAUrT,GACd,OAAQA,EAASsS,aACnB,EACA9vD,KAAM,CACJ,cAAe,uBACf6mB,SAAU,aACVnG,WAAY,cACZysB,MAAO,KACP+f,MAAO,OAER,CACD2D,KAAM,SAAUrT,GACd,OAAQA,EAASuS,wBACnB,EACA/vD,KAAM,CACJ,cAAe,oBACf6mB,SAAU,iBACVnG,WAAY,MACZysB,MAAO,OAER,CACD0jB,KAAM,SAAUrT,GACd,OAAOA,EAASwS,mBAClB,EACAhwD,KAAM,CACJ,cAAe,oBACf6mB,SAAU,SACVnG,WAAY,MACZysB,MAAO,YAGP2jB,EAAO,CACT,GAAM,CACJt4C,IAAK,UACLu4C,UAAW,SACXC,SAAU5xD,EAAKiB,UAAU,kCACzB0X,SAAUk5C,KAEZ,QAAW,CACTz4C,IAAK,UACLw4C,SAAU5xD,EAAKiB,UAAU,uCACzB0X,SAAUm5C,KAEZ,SAAY,CACV14C,IAAK,WACLw4C,SAAU5xD,EAAKiB,UAAU,4DACzB0X,SAAUo5C,KAEZ,QAAW,CACT34C,IAAK,UACLw4C,SAAU5xD,EAAKiB,UAAU,2DACzB0X,SAAUq5C,KAEZ,WAAc,CACZ54C,IAAK,aACLw4C,SAAU5xD,EAAKiB,UAAU,8DACzB0X,SAAUs5C,MAGVC,EAAY,KACZC,EAAwB,SAAUC,EAAUC,GAC9C,IAAIxyD,EAAQuyD,GAAsB,GAMlC,OALAvyD,GAAS,KACLwyD,IACFxyD,GAAS,QACTA,GAASwyD,GAEJxyD,CACT,EACIqtD,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GAChBA,EAAQg4C,aACVj5C,KAAKi5C,WAAah4C,EAAQg4C,YAE5BnF,EAAAA,EAASlxC,UAAUojC,WAAW1jC,MAAMtC,KAAMJ,WAC1CI,KAAKk3C,gBAAkB,IAAIgC,EAAAA,EAA+B,CACxDC,QAAS,IAAI9nD,KACb4mD,aAAc,IAAI5mD,OAEpB,IAAI+nD,EAAW,IAAI/nD,KACnB+nD,EAASC,YAAYD,EAAS1O,cAAgB,GAC9C1qC,KAAKm3C,cAAgB,IAAI+B,EAAAA,EAA+B,CACtDC,QAAS,IAAI9nD,KACb4mD,aAAcmB,IAEhBp5C,KAAK+kC,SAAW,IAAIuU,EAAmBt5C,KAAKZ,MAAOY,KAAKk3C,gBAAiBl3C,KAAKm3C,eAC9E0B,EAAY74C,KAAKZ,MAAM8B,IAAI,WAC3BlB,KAAK+kC,SAASqS,YAAYyB,EAAUtzC,MACpCvF,KAAKV,SAAW+4C,EAAKQ,EAAUtzC,OAAS8yC,EAAKQ,EAAUtzC,MAAMjG,QAC/D,EACAinC,OAAQ,WACFvmC,KAAKi5C,YACPj5C,KAAKi5C,WAAWM,aAElBzF,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WACtCs0C,EAAAA,EAAcnU,IAAI//B,KAAKwmC,KACvBxmC,KAAKk3C,gBAAgB3Q,SACrBvmC,KAAKoiC,EAAE,sBAAsBqE,KAAKzmC,KAAKk3C,gBAAgB1Q,KACvDxmC,KAAKm3C,cAAc5Q,SACnBvmC,KAAKoiC,EAAE,oBAAoBqE,KAAKzmC,KAAKm3C,cAAc3Q,KACnD,IAAIgT,EAAMx5C,KAAKm3C,cAAcsC,SAAS,eAClCC,EAAO15C,KAWX,OAVAw5C,EAAI3W,GAAG,YAAY,WACjB2W,EAAIN,WAAWS,QAAO,GACtBD,EAAK3U,SAAS4S,oBAAoB9+B,WAAU,SAAU8+B,GACpD,IAAIiC,EAAuC,aAAxBjC,EACnB6B,EAAIN,WAAWS,OAAOC,EACxB,IACIF,EAAKT,YACPS,EAAKT,WAAW9K,MAEpB,IACOnuC,IACT,EACA8rC,UAAW,WACT,IAAIkN,EAAUtS,EAAAA,EAAYmT,eAC1B,GAAIb,EACFh5C,KAAK85C,uBAAuBd,OACvB,CACL,IAAID,EAAWrS,EAAAA,EAAYqT,gBACvBhB,EACF/4C,KAAKg6C,wBAAwBjB,GAE7B/4C,KAAKg6C,wBAAwB,KAEjC,CACF,EACAF,uBAAwB,SAAUd,GAChC,OAAQh5C,KAAK+kC,SAASqS,eACpB,IAAK,UACHp3C,KAAKZ,MAAMmF,IAAI,SAAU,WACzB,MACF,IAAK,KACHvE,KAAKZ,MAAMmF,IAAI,SAAU,MACzB,MACF,QACE,OAEJvE,KAAKi6C,uBAAuBjB,EAAQzX,GACtC,EACAyY,wBAAyB,SAAUjB,GACjC,OAAQ/4C,KAAK+kC,SAASqS,eACpB,IAAK,UACHp3C,KAAKZ,MAAMmF,IAAI,SAAU,WACzB,MACF,IAAK,WACHvE,KAAKZ,MAAMmF,IAAI,SAAU,YACzB,MACF,IAAK,aACHvE,KAAKZ,MAAMmF,IAAI,SAAU,cACzB,MACF,QACE,OAEJ,IAAImlC,EAAaqP,EAAWA,EAASxX,GAAK,KAC1CvhC,KAAKk6C,mBAAmBxQ,EAC1B,EACAuQ,uBAAwB,SAAUE,GAChC,IAAIxgC,EAAS,CACX2oB,QAAS,CAAC,CACR,cAAe,oBACfoU,2BAA4ByD,EAAY,CAACA,GAAa,OAExDxD,UAAU,GAEZzrD,IAAAA,KAAOitD,EAAe,SAAU1wD,GAC1BA,EAAO2wD,KAAKp4C,KAAK+kC,WACnBprB,EAAO2oB,QAAQ92B,KAAK/jB,EAAOF,KAE/B,EAAG8yB,KAAKra,OACRA,KAAKZ,MAAMmF,IAAI,cAAeoV,EAChC,EACAugC,mBAAoB,SAAUxQ,GAC5B,IAAI/vB,EAAS,CACX2oB,QAAS,CAAC,CACR,cAAe,oBACfoU,2BAA4BhN,EAAa,CAACA,GAAc,CAAC,GACzD0Q,UAAWp6C,KAAK+kC,SAAS2S,yBAA2B13C,KAAKk3C,gBAAgBc,WAAWC,aAAe,KACnGoC,QAAiD,aAAxCr6C,KAAK+kC,SAAS4S,sBAAuC33C,KAAKm3C,cAAca,WAAWC,aAAe,KAC3GqC,cAAet6C,KAAK+kC,SAAS2S,yBAA2B13C,KAAK+kC,SAAS4S,sBAAwB,aAEhGhB,UAAU,GAEZzrD,IAAAA,KAAOitD,EAAe,SAAU1wD,GAC1BA,EAAO2wD,KAAKp4C,KAAK+kC,WACnBprB,EAAO2oB,QAAQ92B,KAAK/jB,EAAOF,KAE/B,EAAG8yB,KAAKra,OACRA,KAAKZ,MAAMmF,IAAI,cAAeoV,EAChC,EACAkwB,cAAe,WACb,OAAOgP,EAAYA,EAAUnP,YAAc,CAC7C,EACAI,aAAc,WACZ,OAAO+O,EAAYA,EAAUlP,WAAa,CAC5C,EACAX,YAAa,WACX,OAAO6P,EAAYA,EAAU3Q,QAAU,IACzC,EACA6B,kBAAmB,WACjB,OAAO8O,EAAYA,EAAU3O,UAAY,IAC3C,EACAlF,gBAAiB,WACf,IAAIuV,EAAMlC,EAAKr4C,KAAK+kC,SAASqS,eAC7B,OAAOmD,GAAOA,EAAIhC,UAAY,EAChC,EACAjK,aAAc,SAAU7Z,GACtB,IAAKA,EACH,OAAOA,EAET,IAAI+lB,EAAYnC,EAAKr4C,KAAK+kC,SAASqS,gBAAkBiB,EAAKr4C,KAAK+kC,SAASqS,eAAer3C,IACnF06C,EAAepC,EAAKr4C,KAAK+kC,SAASqS,gBAAkBiB,EAAKr4C,KAAK+kC,SAASqS,eAAekB,UAuC1F,OAtCAptD,IAAAA,KAAOupC,GAAQ,SAAUre,GACvB,IAAIskC,EAAkBC,EAAiBC,EAAiBC,EACpDnvB,EAAS8uB,EAAYtvD,IAAAA,KAAOkrB,EAAMk9B,WAAW,SAAUjrC,GACzD,OAAOA,EAAK0B,MAAQywC,CACtB,IAAK,KACA9uB,IACHA,EAASxgC,IAAAA,KAAOkrB,EAAMk9B,WAAW,SAAUjrC,GACzC,OAAOA,EAAK0B,MAAQ0wC,CACtB,KAEFrkC,EAAM7uB,KAAO,GACb6uB,EAAM7uB,KAAKikB,KAAK,CACdhlB,MAAOklC,GAAUA,EAAOgJ,MAAQhJ,EAAOgJ,MAAQ,GAC/C6e,QAAQ,IAEVroD,IAAAA,KAAOkrB,EAAMo9B,SAAS,SAAUsH,GAC9B,OAAQA,EAAO1sC,UACb,IAAK,cACHusC,EAAkBG,EAAOnH,cACzBkH,EAAiBC,EAAOlH,SACxB,MACF,IAAK,eACH8G,EAAmBI,EAAOnH,cAC1BiH,EAAkBE,EAAOlH,SAK/B,IACAx9B,EAAM7uB,KAAKikB,KAAK,CACdhlB,MAAOsyD,EAAsB4B,EAAkBC,GAC/CpH,QAAQ,IAEVn9B,EAAM7uB,KAAKikB,KAAK,CACdhlB,MAAOsyD,EAAsB8B,EAAiBC,GAC9CtH,QAAQ,GAEZ,IACO9e,CACT,IAEF,I,wBChQI9tC,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCijC,EAAMrpB,OAAOqpB,IACb4W,EAAiB,WACnB,MAAoC,aAA7BrU,EAAAA,EAAYkI,cAA4D,cAA7BlI,EAAAA,EAAYkI,YAChE,EAaIoM,EAAmB,WACrB,MAAQ,aAAc3tD,OAAOq5C,EAAAA,EAAYsB,eAAezG,GAC1D,EACIqJ,EAAwB,WAC1B,IAAIV,EAMJ,OAJEA,EADI/F,GAASA,EAAIgG,IAAQhG,EAAIgG,GAAGC,UAAcjG,EAAIgG,GAAGC,SAASC,iBAAmBn/C,IAAAA,WAAai5C,EAAIgG,GAAGC,SAASC,gBAAgBC,oBAClHnG,EAAIgG,GAAGC,SAASC,gBAAgBC,qBAEhCxvB,OAAOyvB,KAAOzvB,OAAOyvB,IAAIC,MAAQ1vB,OAAOyvB,IAAIC,MAAMtpC,IAAI,cAAgB,MAI3E,cADUgpC,EAAUtL,OAASsL,EAAU+Q,gBAAgBC,cAC5B,aADsDhR,EAAUS,KAAOT,EAAUiR,cAAcD,cAG5H,EACT,EACIE,EAAuB,CACzB3jB,SAAU,WACV4jB,UAAW,WACX9kB,QAAS,UACT+kB,SAAU,UACVC,IAAK,KACLC,SAAU,UACVC,YAAa,cAEXpD,EAAO,CACT,GAAM,CACJ7M,SAjCW,WACb,OAAO9E,EAAAA,EAAYmT,gBAA+C,QAA7BnT,EAAAA,EAAYkI,YACnD,EAgCI8M,QAAS,CACPC,SAAUh1D,EAAKiB,UAAU,8BACzBg0D,UAAWj1D,EAAKiB,UAAU,+BAC1Bi0D,qBAAsBl1D,EAAKiB,UAAU,oCACrCk0D,mBAAoBn1D,EAAKiB,UAAU,mCACnCm0D,qBAAsBp1D,EAAKiB,UAAU,oCACrCo0D,mBAAoBr1D,EAAKiB,UAAU,oCAErCsgD,QAAS,SAAUvC,GACjB,OAAOsW,EAAAA,EAAajT,YAAYrD,EAAM,KACxC,GAEF,QAAW,CACT6F,SAlDgB,WAClB,OAAO9E,EAAAA,EAAYmT,gBAA+C,aAA7BnT,EAAAA,EAAYkI,YACnD,EAiDI8M,QAAS,CACPC,SAAUh1D,EAAKiB,UAAU,mCACzBg0D,UAAWj1D,EAAKiB,UAAU,oCAC1Bi0D,qBAAsBl1D,EAAKiB,UAAU,yCACrCk0D,mBAAoBn1D,EAAKiB,UAAU,wCACnCm0D,qBAAsBp1D,EAAKiB,UAAU,yCACrCo0D,mBAAoBr1D,EAAKiB,UAAU,yCAErCsgD,QAAS,SAAUvC,GACjB,OAAOsW,EAAAA,EAAajT,YAAYrD,EAAM,UACxC,GAEF,SAAY,CACV6F,SAAUuP,EACVW,QAAS,CACPC,SAAUh1D,EAAKiB,UAAU,oCACzBg0D,UAAWj1D,EAAKiB,UAAU,qCAC1Bi0D,qBAAsBl1D,EAAKiB,UAAU,0CACrCk0D,mBAAoBn1D,EAAKiB,UAAU,yCACnCm0D,qBAAsBp1D,EAAKiB,UAAU,0CACrCo0D,mBAAoBr1D,EAAKiB,UAAU,0CAErCsgD,QAAS,SAAUvC,GACjB,OAAOsW,EAAAA,EAAajT,YAAYrD,EAAM,WACxC,GAEF,QAAW,CACT6F,SAjFgB,WAClB,OAAO9E,EAAAA,EAAYqT,kBAAiD,YAA7BrT,EAAAA,EAAYkI,cAA2D,aAA7BlI,EAAAA,EAAYkI,aAC/F,EAgFI8M,QAAS,CACPC,SAAUh1D,EAAKiB,UAAU,mCACzBg0D,UAAWj1D,EAAKiB,UAAU,oCAC1Bi0D,qBAAsBl1D,EAAKiB,UAAU,yCACrCk0D,mBAAoBn1D,EAAKiB,UAAU,wCACnCm0D,qBAAsBp1D,EAAKiB,UAAU,yCACrCo0D,mBAAoBr1D,EAAKiB,UAAU,yCAErCsgD,QAAS,SAAUvC,GACjB,OAAOsW,EAAAA,EAAajT,YAAYrD,EAAM,UACxC,GAEF,WAAc,CACZ6F,SAtFmB,WACrB,OAAO9E,EAAAA,EAAYqT,iBAAgD,gBAA7BrT,EAAAA,EAAYkI,YACpD,EAqFI8M,QAAS,CACPC,SAAUh1D,EAAKiB,UAAU,sCACzBg0D,UAAWj1D,EAAKiB,UAAU,uCAC1Bi0D,qBAAsBl1D,EAAKiB,UAAU,4CACrCk0D,mBAAoBn1D,EAAKiB,UAAU,2CACnCm0D,qBAAsBp1D,EAAKiB,UAAU,4CACrCo0D,mBAAoBr1D,EAAKiB,UAAU,4CAErCsgD,QAAS,SAAUvC,GACjB,OAAOsW,EAAAA,EAAajT,YAAYrD,EAAM,aACxC,IAGAuS,EAAc,SAAU3yC,GAC1B,IAAI22C,GAAU,EACV3B,EAAMlC,EAAK9yC,GACX42C,EAAef,EAAqB1U,EAAAA,EAAYkI,cAmBpD,OAlBIuN,GAAgBA,IAAiB52C,EACnCu7B,MAAMuX,EAAK8D,GAAcT,QAAQE,WACxBrB,GACT2B,EAAU3B,EAAI/O,aAEZ1K,MAAMyZ,EAAImB,QAAQC,UAGa,aAA7BjV,EAAAA,EAAYkI,aACd9N,MAAMn6C,EAAKiB,UAAU,0CACiB,YAA7B8+C,EAAAA,EAAYkI,aACrB9N,MAAMn6C,EAAKiB,UAAU,yCACiB,gBAA7B8+C,EAAAA,EAAYkI,aACrB9N,MAAMn6C,EAAKiB,UAAU,4CAErBk5C,MAAMn6C,EAAKiB,UAAU,8CAGlBs0D,CACT,EACAjF,EAAUiB,YAAcA,EACxB,OACEA,YAAaA,EACbkE,KAAM,SAAU72C,EAAMogC,GACpB,IAAI0W,EACA1W,EAAKsT,aACPoD,EAAiB1W,EAAKsT,WAAWqD,YAAY,sBAC9BC,WAEjB,IAAIC,EAAsB9W,EAAAA,EAAW+W,qBAAqB9W,GAC1D,GAAKpgC,GAASogC,GAAgC,IAAxB6W,EAAtB,CAGA,GAAa,aAATj3C,EAEF,IADA,IAAIm3C,EAAehX,EAAAA,EAAWiX,gBAAgBhX,GACrCpkC,EAAI,EAAGA,EAAIm7C,EAAankD,OAAQgJ,IACvC,GAAqC,UAAjCm7C,EAAan7C,GAAGq7C,aAGlB,OAFAC,EAAAA,UAAgBl2D,EAAKiB,UAAU,8CAC/Bk1D,EAAAA,EAAav4C,IAAIy2C,IAAoB,MAK3C,IAAIrpC,EAAQ,EACRu2B,EAAU,KACd,GAAIxC,EAAAA,EAAW0Q,uBAAuBzQ,GAAO,CAC3C,GAAa,aAATpgC,GAAgC,YAATA,EAGzB,OAFAs3C,EAAAA,UAAgBl2D,EAAKiB,UAAU,wDAC/Bk1D,EAAAA,EAAav4C,IAAIy2C,IAAoB,MAGvCrpC,EAAQ+zB,EAAAA,EAAWqX,kBAAkBpX,GACrCuC,EAAU+T,EAAAA,EAAae,2BAA2BrX,EACpD,MACEh0B,EAAQ6qC,EACRtU,EAAUmQ,EAAK9yC,IAAS8yC,EAAK9yC,GAAM2iC,QAAQvC,GAU7C,GARAmX,EAAAA,EAAav4C,IAAIy2C,IAAoB,CACnC,KAAQz1C,EACR,MAASoM,EACT,WAAc+0B,EAAAA,EAAYqT,gBAAkBrT,EAAAA,EAAYqT,gBAAgBxY,IAAM,EAC9E,UAAamF,EAAAA,EAAYmT,eAAiBnT,EAAAA,EAAYmT,eAAetY,IAAM,EAC3E,UAAaqJ,IACb,QAAW1C,EAAU9F,IAAAA,QAAS,EAAM,CAAC,EAAG8F,GAAW,OAEjDmQ,EAAK9yC,GAAO,CACd,IAAc,aAATA,GAAgC,YAATA,KAAwBmhC,EAAAA,EAAYoQ,YAAYmG,kCAC1E,OAEFJ,EAAAA,YAA4B,IAAVlrC,EAAc0mC,EAAK9yC,GAAMm2C,QAAQK,qBAAuB7wD,IAAAA,SAAWmtD,EAAK9yC,GAAMm2C,QAAQM,mBAA9B9wD,CAAkD,CAC1HymB,MAAOA,IAEX,CACI0qC,GACFA,EAAelO,MA1CjB,CA4CF,EACA+O,MAAO,SAAUvX,GACf,IAAIwX,EACAxX,EAAKsT,aACPkE,EAAkBxX,EAAKsT,WAAWqD,YAAY,uBAC9BC,WAElB,IAAI1D,EAAYiE,EAAAA,EAAa57C,IAAI85C,KACjC,GAAInC,EAAW,CACb,IAAK74C,KAAKk4C,YAAYW,EAAUtzC,MAC9B,OAEF,OAAQszC,EAAUtzC,MAChB,IAAK,KACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,aACH,IAAIsuC,EAAO,IAAIuJ,EAAc,CAC3BnE,WAAYkE,EACZ/9C,MAAO,IAAIi+C,EAAe,CACxBxF,QAASgB,IAEXlT,KAAMA,EACNQ,mBAAoB,WAClB0W,EAAAA,YAAkBl2D,EAAKiB,UAAU,kCACjC+9C,EAAKwJ,SAAShK,SAAQ,EACxB,EACAiB,mBAAoB,WACK,aAAnByS,EAAUtzC,MAA0C,YAAnBszC,EAAUtzC,KAC7Cs3C,EAAAA,UAAgBl2D,EAAKiB,UAAU,2DAE/Bi1D,EAAAA,UAAgBl2D,EAAKiB,UAAU,iCAEnC,IAGF,OADAisD,EAAKtN,SACEsN,EAET,QACE/S,MAAMn6C,EAAKiB,UAAU,8CAG3B,MACMmzD,IACFja,MAAMn6C,EAAKiB,UAAU,0CACiB,YAA7B8+C,EAAAA,EAAYkI,cAA2D,aAA7BlI,EAAAA,EAAYkI,aAC/D9N,MAAMn6C,EAAKiB,UAAU,yCACiB,gBAA7B8+C,EAAAA,EAAYkI,aACrB9N,MAAMn6C,EAAKiB,UAAU,4CAErBk5C,MAAMn6C,EAAKiB,UAAU,6CAG3B,E,kGC9PF,KACEo1D,2BAA4B,SAAUrX,GACpC,GAAIA,IAASA,EAAK2C,eAAiB3C,EAAK4C,cAAgB5C,EAAK4C,aAAaD,eAAgB,CACxF,IAAIE,GAAwB7C,EAAK2C,eAAiB3C,EAAK4C,aAAaD,eAAeG,oBACnF,MAAO,CACLC,kBAAmBC,EAAAA,eAAsCH,GAE7D,CACE,OAAO7C,EAAKoD,YAAW,EAE3B,EACAC,YAAa,SAAUrD,EAAM5+B,GAC3B,GAAI4+B,EAAM,CACR,IAAIzqB,EAAMwqB,EAAAA,EAAWsK,kBAAkBrK,GAMvC,MALmB,YAAf5+B,GAA6B4+B,EAAKwJ,WACpCj0B,EAAMhwB,IAAAA,IAAMgwB,GAAK,SAAU10B,GACzB,OAAOA,EAAM0qB,UAAU,EAAG1qB,EAAMynB,QAAQ,KAC1C,KAEK,CACLy6B,kBAAmB,CAAC,CAClBiM,eAAgB5tC,EAAa,KAC7B6tC,iBAAkB,QAClBtJ,OAAQpwB,IAGd,CACF,EACAoiC,wBAAyB,SAAU3X,GACjC,GAAIA,EAAM,CACR,IAAIzqB,EAAMwqB,EAAAA,EAAWsK,kBAAkBrK,GAIvC,MAAO,CACL+C,kBAAmB,CAAC,CAClBiM,eAAgB,KAChBC,iBAAkB,QAClBtJ,OAPJpwB,EAAMhwB,IAAAA,IAAMgwB,GAAK,SAAU90B,GACzB,OAAO6mB,OAAO7mB,EAChB,MAQF,CACF,EACAm3D,wBAAyB,SAAU5X,GACjC,GAAIA,EAAM,CACR,IAAI6X,EAAiD,MAA9BC,EAAAA,EAAY5D,eAC/BnkB,EAAOgQ,EAAAA,EAAWiX,gBAAgBhX,GACtC,GAAI6X,EAAkB,CACpB,IAAIE,EAAcxyD,IAAAA,IAAMwqC,GAAM,SAAUioB,GACtC,OAAOA,EAAIpc,EACb,IAEIqc,EAAW1yD,IAAAA,OAASwyD,GAAa,SAAUj2C,EAAQrhB,GACrD,IAAIy3D,EAAYp2C,EAAOA,EAAOlP,OAAS,GAMvC,OALiB,MAAbslD,GAHU,MAGWA,EAAUtlD,OACjCkP,EAAO+D,KAAK,CAACplB,IAEby3D,EAAUryC,KAAKplB,GAEVqhB,CACT,GAAG,IASH,MAAO,CACLihC,kBANsB,CAAC,CACvBiM,eAAgB,WAChBC,iBAAkB,KAClBtJ,OANEwS,EAAe5yD,IAAAA,IAAM0yD,GAAU,SAAUG,GAC3C,OAAOA,EAAMn6C,KAAK,IACpB,MASF,CACE,IAAIo6C,GAAkB,EAClBF,EAAe5yD,IAAAA,IAAMwqC,GAAM,SAAUioB,GACvC,IAAIjU,EAAa+T,EAAAA,EAAY1D,iBAAqD,MAAlC0D,EAAAA,EAAY1D,gBAAgBxY,GAAakc,EAAAA,EAAY1D,gBAAgBxY,GAAKoc,EAAIM,WAC1HtU,EAAY8T,EAAAA,EAAY5D,gBAAmD,MAAjC4D,EAAAA,EAAY5D,eAAetY,GAAakc,EAAAA,EAAY5D,eAAetY,GAAKoc,EAAIO,UAI1H,OAHkB,MAAdxU,GAAmC,MAAbC,IACxBqU,GAAkB,GAEb,cAAgBtU,EAAa,cAAgBC,EAAY,mBAAqBgU,EAAIpc,EAC3F,IAMA,MAAO,CACLmH,kBANsB,CAAC,CACvBiM,eAAgB,WAChBC,iBAAkB,KAClBtJ,OAAS0S,EAAiC,GAAfF,IAMjC,CACF,EACAK,6BAA8B,SAAUxY,GACtC,GAAIA,EAAM,CACR,IAAIzqB,EAAMwqB,EAAAA,EAAWsK,kBAAkBrK,GAIvC,MAAO,CACL+C,kBAAmB,CAAC,CAClBiM,eAAgB,KAChBC,iBAAkB,QAClBtJ,OAPJpwB,EAAMhwB,IAAAA,IAAMgwB,GAAK,SAAU10B,GACzB,OAAOymB,OAAOzmB,EAChB,MAQF,CACF,EACA43D,uCAAwC,SAAUzY,GAChD,GAAIA,EAAM,CACR,IAAIjQ,EAAOgQ,EAAAA,EAAWiX,gBAAgBhX,GAClCzqB,EAAM,GAMV,OALAhwB,IAAAA,KAAOwqC,GAAM,SAAU31B,EAAKvZ,GACrB0E,IAAAA,SAAW,CAAC,IAAK,WAAY6U,EAAIs+C,UACpCnjC,EAAIA,EAAI3iB,QAAUwH,EAAIwhC,GAE1B,IACO,CACLmH,kBAAmB,CAAC,CAClBiM,eAAgB,YAChBC,iBAAkB,QAClBtJ,OAAQpwB,IAGd,CACF,EACAojC,oBAAqB,SAAU3Y,GAC7B,GAAIA,EAAM,CACR,IAAIjQ,EAAOgQ,EAAAA,EAAWiX,gBAAgBhX,GAItC,MAAO,CACL+C,kBAAmB,CAAC,CAClBiM,eAAgB,aAChBC,iBAAkB,QAClBtJ,OAPMpgD,IAAAA,IAAMwqC,GAAM,SAAUhY,GAC9B,OAAOA,EAAE6jB,EACX,MAQF,CACF,EACAgd,oBAAqB,SAAU5Y,EAAM6Y,GACnC,GAAI7Y,EAAM,CACR,IAAIzqB,EAAM,GACV,GAAKsjC,EAEE,CACL,IAAI9oB,EAAOgQ,EAAAA,EAAWiX,gBAAgBhX,GACtCz6C,IAAAA,KAAOwqC,GAAM,SAAUioB,GACF,aAAfA,EAAItmD,QACN6jB,EAAI1P,KAAKmyC,EAAIpc,GAEjB,GACF,MARErmB,EAAMwqB,EAAAA,EAAWsK,kBAAkBrK,GASrC,MAAO,CACL+C,kBAAmB,CAAC,CAClBiM,eAAgB,wBAChBC,iBAAkB,QAClBtJ,OAAQpwB,IAGd,CACF,E,wJCvJF,EAbYinB,EAAAA,EAAU9yB,OAAO,CAC3B+uB,SAAUgE,IAAAA,OAAS,CAAC,EAAGD,EAAAA,EAAUv/B,UAAUw7B,SAAU,CACnD,YAAe,CACb,QAAW,CAAC,CACV,aAAc,gCACd,gBAAmB,MAGvB,OAAU,GACV,kBAAqB,GACrB,kBAAqB,O,iCCVrBz3C,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CAmCvC,EAlCgB,SAAU9B,GACxBsyC,EAAAA,EAAK5uC,KAAK9C,MACVA,KAAKwvC,oBAAoBpwC,EAAM8B,IAAI,wBACnClB,KAAKw3C,mBAAkB,GACvBx3C,KAAKutC,UAAY1G,IAAAA,YAAc,GAC/B7mC,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,OAAOlgD,EAAKiB,UAAU,gCAAiCoY,KAAKwvC,sBAC9D,GAAGxvC,MACHA,KAAKy+C,cAAgB5X,IAAAA,WAAc,IACnC7mC,KAAKuuC,aAAe1H,IAAAA,SAAY,CAC9B8L,KAAM,WACJ,OAAO3yC,KAAKy+C,eACd,EACA7L,MAAO,SAAUpsD,GACf,IAAI6iC,EAAM7iC,EAAMgB,KAAI,SAAUk3D,GAC5B,IAAIC,EAAWD,EAAY35B,OAAO,GAC9B+nB,EAAa4R,EAAYpL,UAAU,GAAG5e,MAC1C,MAAO,CACLte,MAAOzvB,EAAKiB,UAAU,sBAAwB+2D,GAC9C3yD,KAAM8gD,EAEV,IACA9sC,KAAKy+C,cAAcp1B,EACrB,GACCrpB,MACHA,KAAKwrC,SAAW,WAEd,OADAxrC,KAAK6xC,aAAa,IACiB,IAA/B7xC,KAAKwvC,wBACP1O,MAAMn6C,EAAKiB,UAAU,+BACd,EAGX,CACF,E,uBC7BIjB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC09C,EAAc,SAAU7+C,GAC1B,OAAOlH,KAAKvH,MAAMyO,EACpB,EACI8+C,EAAQ,SAAU9+C,GACpB,IAAI3Z,EAAK2Z,EAAIwhC,IAAMxhC,EACnB,OAAO++C,SAAS14D,EAClB,EACI24D,EAAa,SAAUvU,EAAOwU,GAChC,OAAO9zD,IAAAA,KAAO8zD,EAAMC,SAASzsC,QAAO,SAAUzS,GAE5C,OADai/C,EAAMC,QAAQl/C,GACbm/C,MAAM1U,QAAUA,CAChC,IAAGhjD,IAAIo3D,EACT,EAWIO,EAAa,SAAUC,GACzB,IAAI33C,EAAS,CACX43C,QAAS,GACTC,SAAU,IASZ,OAPAF,EAAOvlC,SAAQ,SAAUlyB,GAClBA,EAAM43D,OAAyB,aAAhB53D,EAAM43D,MAGxB93C,EAAO63C,SAAS9zC,KAAK7jB,GAFrB8f,EAAO43C,QAAQ7zC,KAAK7jB,EAIxB,IACO8f,CACT,EACIosC,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpBjB,KAAKw/C,OAASv+C,EAAQ+9C,MACtBh/C,KAAKy/C,QAAUx+C,EAAQyqB,OACvB1rB,KAAK6rC,OAAS5qC,EAAQzK,MACtBwJ,KAAK0/C,4BAA8Bz+C,EAAQ0+C,2BAC3C3/C,KAAKV,SAAW2B,EAAQ3B,SACxBU,KAAK4/C,qBAAuB3+C,EAAQ4+C,oBACpC7/C,KAAKZ,MAAQ,IAAI0gD,EACjBhM,EAAAA,EAASlxC,UAAUojC,WAAW1jC,MAAMtC,KAAMJ,WAC1CI,KAAK+kC,SAAW,IAAIkS,EAAUj3C,KAAKZ,MACrC,EACAmnC,OAAS,WASP,MARsC,aAAlCvmC,KAAK2lC,KAAKoa,qBACZ//C,KAAK+kC,SAASsI,cAAa,GAC3BrtC,KAAK+kC,SAASS,eAAc,IAE5BxlC,KAAK+kC,SAASwI,WAAY,EAE5BuG,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WACtCI,KAAK+mC,YACE/mC,IACT,EAAG4tC,eAAeoS,EAAAA,QAAwBlS,aAAamS,iBAAkBD,EAAAA,QAAwBhS,aAAaiS,kBAC9GC,sBAAuB,WACrBpM,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,UACxC,EACAksC,UAAW,WACT,IACIqU,EACAC,EACAC,EAHA1mC,EAAS,GAOb,GAHK3Z,KAAK6rC,QAA0B,aAAhB7rC,KAAK6rC,SACvBwU,EAAoB5C,EAAAA,EAAY1V,gBAAgBxG,KAE7Cr2C,IAAAA,QAAU8U,KAAKw/C,QAAS,CAG3B,GAFAW,EA3DS,SAAUnB,GACvB,IAAIC,EAAUF,EAAW,UAAWC,GAChCmB,EAAQj1D,IAAAA,KAAO8zD,EAAMmB,OAAU,CAAC,GAAI34D,IAAIo3D,GAAavxD,OAAO4xD,GAChE,OAAO/zD,IAAAA,KAAOi1D,EAChB,CAuDcG,CAAStgD,KAAKw/C,QACtBY,EAvDW,SAAUpB,GACzB,IAAIC,EAAUF,EAAW,YAAaC,GAClCoB,EAAUl1D,IAAAA,KAAO8zD,EAAMoB,SAAS54D,IAAIo3D,GAAavxD,OAAO4xD,GAC5D,OAAO/zD,IAAAA,KAAOk1D,EAChB,CAmDgBG,CAAWvgD,KAAKw/C,QACtBW,EAAM5nD,OAAS,EAAG,CACpB,IAAMioD,EAAerB,EAAWgB,GAC5BK,EAAanB,QAAQ9mD,OAAS,GAChCohB,EAAOnO,KAAK,CACV,cAAe,gCACf,gBAAmBg1C,EAAanB,QAAQ73D,IAAIq3D,GAC5C,MAAS,YAGT2B,EAAalB,SAAS/mD,OAAS,GACjCohB,EAAOnO,KAAK,CACV,cAAe,gCACf,gBAAmBg1C,EAAalB,SAAS93D,IAAIq3D,GAC7C,MAAS,YAGf,CACA,GAAIuB,EAAQ7nD,OAAS,EAAG,CACtB,IAAMkoD,EAAiBtB,EAAWiB,GAC9BK,EAAepB,QAAQ9mD,OAAS,GAClCohB,EAAOnO,KAAK,CACV,cAAe,mCACf,gBAAmBi1C,EAAepB,QAAQ73D,IAAIq3D,GAC9C,MAAS,YAGT4B,EAAenB,SAAS/mD,OAAS,GACnCohB,EAAOnO,KAAK,CACV,cAAe,mCACf,gBAAmBi1C,EAAenB,SAAS93D,IAAIq3D,GAC/C,MAAS,YAGf,CACF,CAMA,GALA7+C,KAAKZ,MAAMmF,IAAI,SAAUvE,KAAKy/C,SAC9Bz/C,KAAKZ,MAAMmF,IAAI,cAAe,CAC5B,QAAWoV,IAEb3Z,KAAKZ,MAAMmF,IAAI,0BAA0B,GACpB,YAAjBvE,KAAKy/C,SAAyBz/C,KAAK0gD,cAAcC,SAAU,CAC7D3gD,KAAK4/C,qBAAuB5/C,KAAK4/C,uBAAwB,EACzD,IAAIgB,EAAoB,CAAC,CACvB,IAAO,sBACP,MAAS5gD,KAAK4/C,qBAAuB,IACpC,CACD,IAAO,6BACP,MAAS5/C,KAAK0/C,8BAEhB1/C,KAAKZ,MAAMmF,IAAI,oBAAqBq8C,EACtC,CACIP,GACFrgD,KAAKZ,MAAMmF,IAAI,oBAAqB87C,EAExC,EACArX,YAAa,WAEX,OAD2BhpC,KAAK6rC,QAA0B,aAAhB7rC,KAAK6rC,OACjB6I,EAAAA,EAAa4I,wBAAwBt9C,KAAK2lC,MAAQ+O,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAM3lC,KAAKy/C,QAC3H,EACAza,gBAAiB,WACf,OAAOr+C,EAAKiB,UAAU,sBACxB,IAEF,G,2KC9IIjB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CAuCvC,EAtCgB,SAAU9B,EAAOyhD,GAC/BnP,EAAAA,EAAK5uC,KAAK9C,MACVA,KAAK+G,WAAa3H,EAAM8B,IAAI,UAC5BlB,KAAK6gD,YAAcA,EACnB7gD,KAAKwvC,oBAAoBpwC,EAAM8B,IAAI,wBACnClB,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,IAAIjC,EAAa5kC,KAAKwvC,sBACtB,OAAQxvC,KAAK+G,YACX,IAAK,WACH,OAAO69B,EAAa,EAAIj+C,EAAKiB,UAAU,8CAA8CgjB,QAAQ,MAAOg6B,GAAcj+C,EAAKiB,UAAU,6CAA6CgjB,QAAQ,MAAOg6B,GAC/L,IAAK,UACH,OAAOA,EAAa,EAAIj+C,EAAKiB,UAAU,6CAA6CgjB,QAAQ,MAAOg6B,GAAcj+C,EAAKiB,UAAU,4CAA4CgjB,QAAQ,MAAOg6B,GAC7L,IAAK,UACH,OAAOA,EAAa,EAAIj+C,EAAKiB,UAAU,6CAA6CgjB,QAAQ,MAAOg6B,GAAcj+C,EAAKiB,UAAU,4CAA4CgjB,QAAQ,MAAOg6B,GAEjM,GAAG5kC,MACHA,KAAK8gD,iBAAmBja,IAAAA,UAAY,WAClC,OAAQ7mC,KAAK+G,YACX,IAAK,UACH,OAAOpgB,EAAKiB,UAAU,qCAExB,IAAK,UACH,OAAOjB,EAAKiB,UAAU,qCAExB,IAAK,WACH,OAAOjB,EAAKiB,UAAU,sCAExB,QACE,MAAO,iBAGb,GAAGoY,MACHA,KAAKwlC,cAAgBqB,IAAAA,YAAc,GACnC7mC,KAAKylC,gBAAkBoB,IAAAA,YAAc,GACrC7mC,KAAKwrC,SAAW,WACd,OAAOxrC,KAAK6gD,YAAYrV,UAC1B,CACF,E,4DC9BI7kD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC2/C,EAAcE,EAAAA,EACdC,EAAkB,CAAC,WAAY,UAAW,WAC1CC,EAAY,SAAUz6D,GACxB,IAAK0E,IAAAA,SAAW1E,GACd,MAAO,GAET,IACI06D,EAAU16D,EAAMkhB,MADN,wBAEd,OAAIw5C,GAAWA,EAAQ,IAAMh2D,IAAAA,SAAWA,IAAAA,KAAOi2D,EAAAA,EAAoBA,qBAAsBD,EAAQ,IACxFv6D,EAAKiB,UAAU,eAAiBs5D,EAAQ,IAExC,EAEX,EAyFIrN,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpBjB,KAAKiB,QAAUA,GAAY,CAAC,EAC5B6yC,EAAAA,EAASlxC,UAAUojC,WAAW1jC,MAAMtC,KAAMJ,WAC1CI,KAAKV,SAAWA,IAChBU,KAAK+G,WAAa9F,EAAQ8F,WAC1B/G,KAAKmhD,oBAAsBlgD,EAAQkgD,oBACnCnhD,KAAK6gD,YAAc,IAAIA,EAAY,CACjC95C,WAAY/G,KAAK+G,WACjBo6C,oBAAqBnhD,KAAKmhD,oBAC1BC,YAAY,EACZC,cAAerhD,KAAKiB,QAAQogD,cAC5BC,aAAcrgD,EAAQqgD,aACtBC,gBAAiBtgD,EAAQsgD,gBACzBC,4BAA6BvgD,EAAQugD,8BAEvCxhD,KAAK+kC,SAAW,IAAI0c,EAA+BzhD,KAAKZ,MAAOY,KAAK6gD,YACtE,EACAta,OAAQ,WAGN,OAFAuN,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WACtCI,KAAKoiC,EAAE,sCAAsCuF,QAAQlB,KAAKzmC,KAAK6gD,YAAYta,SAASrmC,IAC7EF,IACT,EACA8rC,UAAW,WACT9rC,KAAKZ,MAAMmF,IAAI,cAAevE,KAAK6gD,YAAYlnC,UAC/C3Z,KAAKZ,MAAMmF,IAAI,SAAUvE,KAAK+G,WAChC,EACAomC,qBAAsB,SAAUD,GAC9B,OApHwBxX,EAoHLwX,EApHWnmC,EAoHF/G,KAAK+G,WAnH9B2uB,GAGLxqC,IAAAA,KAAOwqC,GAAM,SAAUlvC,GAqBrB,GApBAA,EAAMq7C,OAAS32C,IAAAA,KAAO1E,EAAM8sD,WAAW,SAAUjrC,GAC/C,IAAI+xB,EAAU,GACd,OAAQrzB,GACN,IAAK,WACHqzB,EAAU,eACV,MACF,IAAK,UACHA,EAAU,cACV,MACF,IAAK,UACHA,EAAU,UAGd,OAAO/xB,EAAK0B,MAAQqwB,CACtB,IACA5zC,EAAMe,KAAO,GACbf,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOA,EAAMq7C,QAAUr7C,EAAMq7C,OAAOnN,MAAQluC,EAAMq7C,OAAOnN,MAAQ,GACjE6e,QAAQ,IAEN/sD,EAAMgtD,SAAWhtD,EAAMgtD,QAAQj7C,OACjC,GAAkC,0BAA9B/R,EAAMgtD,QAAQ,GAAGplC,SAAsC,CACzD,IAAIsnC,EAAgBgM,EAAAA,UAAmBl7D,EAAMgtD,QAAQ,GAAGG,gBAAmB,CAAC,EACxE6B,EAAWkM,EAAAA,UAAmBl7D,EAAMgtD,QAAQ,GAAGI,WAAc,CAAC,EAClE,GAAI8B,EAAcnU,GAChB/6C,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOkvD,EAAc5qC,KACrByoC,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOgvD,EAAS1qC,KAChByoC,QAAQ,QAEL,CACL,IAAIoO,EAAcz2D,IAAAA,OAASA,IAAAA,KAAO1E,EAAM8sD,UAAW,CACjDvpC,IAAK,kBACH,SACJvjB,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOy6D,EAAUU,GACjBpO,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOgvD,EAAS1qC,KAChByoC,QAAQ,GAEZ,CACF,KAAO,CACL,IAAIqO,EAAcF,EAAAA,UAAmBx2D,IAAAA,OAASA,IAAAA,KAAO1E,EAAM8sD,UAAW,CACpEvpC,IAAK,kBACH,WAAc,CAAC,EACf63C,EAAYrgB,IACd/6C,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOo7D,EAAY92C,KACnByoC,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOy6D,EAAUz6D,EAAMgtD,QAAQ,GAAGI,UAClCL,QAAQ,MAGV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOy6D,EAAUz6D,EAAMgtD,QAAQ,GAAGG,eAClCJ,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOy6D,EAAUz6D,EAAMgtD,QAAQ,GAAGI,UAClCL,QAAQ,IAGd,MAEA/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,IAEV/sD,EAAMe,KAAKikB,KAAK,CACdhlB,MAAO,GACP+sD,QAAQ,GAGd,IACO7d,GApFEA,EAFO,IAAUA,EAAM3uB,CAqHhC,EACAunC,aAAc,SAAU5Y,GAatB,OAZIA,GACFxqC,IAAAA,KAAOwqC,GAAM,SAAUlvC,GACrBA,EAAMq7C,OAAS32C,IAAAA,KAAO1E,EAAM8sD,WAAW,SAAUjrC,GAC/C,MAAoB,iBAAbA,EAAK0B,GACd,IACAvjB,EAAMe,KAAO,GACbf,EAAMe,KAAKikB,KAAK,CACdhlB,MAAOA,EAAMq7C,QAAUr7C,EAAMq7C,OAAOnN,MAAQluC,EAAMq7C,OAAOnN,MAAQ,GACjE6e,QAAQ,GAEZ,IAEK7d,CACT,EACAsT,YAAa,WACX,IAAIvhC,EAAS,KACTikB,EAAS1rB,KAAKZ,MAAM8B,IAAI,UAI5B,OAHIhW,IAAAA,SAAW81D,EAAiBt1B,KAC9BjkB,EAASitC,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAMja,IAExCjkB,CACT,IAEF,G,qJCtKI9gB,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CAUvC,EATgB,SAAU9B,GACxBsyC,EAAAA,EAAK5uC,KAAK9C,MACVA,KAAKwvC,oBAAoBpwC,EAAM8B,IAAI,wBACnClB,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,OAAOlgD,EAAKiB,UAAU,yCAAyCgjB,QAAQ,MAAO5K,KAAKwvC,sBACrF,GAAGxvC,MACHA,KAAK6hD,8BAAgChb,IAAAA,YAAc,GACnD7mC,KAAKw3C,mBAAkB,EACzB,E,wBCNI7wD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnC2yC,EAAOC,EAAAA,EAASzkC,OAAO,CACzB22B,WAAY,SAAU/kC,GACpBjB,KAAKiB,QAAUA,GAAY,CAAC,EAC5B6yC,EAAAA,EAASlxC,UAAUojC,WAAW1jC,MAAMtC,KAAMJ,WAC1CI,KAAKV,SAAWA,IAChBU,KAAK0rB,OAASzqB,EAAQyqB,OACtB1rB,KAAK+kC,SAAW,IAAI4B,EAAU3mC,KAAKZ,MACrC,EACAmnC,OAAQ,WAEN,OADAuN,EAAAA,EAASlxC,UAAU2jC,OAAOjkC,MAAMtC,KAAMJ,WAC/BI,IACT,EACA8rC,UAAW,WACT,IAAInyB,EAAS,CACX2oB,QAAS,CAAC,CACR,cAAe,oBACfl0B,SAAU,iDACVnG,WAAY,MACZysB,MAAO10B,KAAK+kC,SAAS8c,gCAAgCr9B,WACrDs9B,aAAc,GACdC,QAAS,UAGb/hD,KAAKZ,MAAMmF,IAAI,cAAeoV,GAC9B3Z,KAAKZ,MAAMmF,IAAI,SAAU,WAC3B,EACAykC,YAAa,WACX,OAAO0L,EAAAA,EAAa1L,YAAYhpC,KAAK2lC,KAAM,WAC7C,EACAX,gBAAiB,WACf,OAAOr+C,EAAKiB,UAAU,kCACxB,EACA0mD,aAAc,SAAU5Y,GAatB,OAZIA,GACFxqC,IAAAA,KAAOwqC,GAAM,SAAUrtB,GACrBA,EAAKw5B,OAAS32C,IAAAA,KAAOmd,EAAKirC,WAAW,SAAUjrC,GAC7C,MAAoB,iBAAbA,EAAK0B,GACd,IACA1B,EAAK9gB,KAAO,GACZ8gB,EAAK9gB,KAAKikB,KAAK,CACbhlB,MAAO6hB,EAAKw5B,QAAUx5B,EAAKw5B,OAAOnN,MAAQrsB,EAAKw5B,OAAOnN,MAAQ,GAC9D6e,QAAQ,GAEZ,IAEK7d,CACT,IAEF,G,oHCnDI/uC,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACxB,SAAS,IACtBlB,KAAKktC,QAAUrG,IAAAA,WAAc,IAC7B7mC,KAAK6xC,aAAehL,IAAAA,WAAc,IAClC7mC,KAAKwvC,oBAAsB3I,IAAAA,WAAc,GACzC7mC,KAAKwlC,cAAgBqB,IAAAA,YAAc,GACnC7mC,KAAKylC,gBAAkBoB,IAAAA,YAAc,GACrC7mC,KAAKyrC,WAAa5E,IAAAA,YAAc,GAChC7mC,KAAKw3C,kBAAoB3Q,IAAAA,YAAc,GACvC7mC,KAAKooC,mBAAqBvB,IAAAA,YAAc,GACxC7mC,KAAKy3C,iBAAmB5Q,IAAAA,WAAclgD,EAAKiB,UAAU,yBACrDoY,KAAKilC,WAAa4B,IAAAA,WAAclgD,EAAKiB,UAAU,2BAC/CoY,KAAKqtC,aAAexG,IAAAA,YAAc,GAClC7mC,KAAK43C,oCAAsC/Q,IAAAA,YAAc,GACzD7mC,KAAK6kC,aAAegC,IAAAA,WAAc,GAClC7mC,KAAK4kC,WAAaiC,IAAAA,WAAc,GAChC7mC,KAAKgiD,mBAAqBnb,IAAAA,UAAY,WACpC,IAAIjG,EAAQ5gC,KAAK4kC,aACjB,GAAc,IAAVhE,EACF,MAAO,KAET,IAAI0C,EAAUtjC,KAAK6kC,eACfzuB,EAAQpW,KAAK8kC,aACb7F,EAAYvtC,KAAKuwD,MAA0B,KAAnB3e,EAAUltB,GAAewqB,GACrD,OAAO3B,EAAY,EAAIA,EAAY,EAAI,IAAMA,EAAY,GAC3D,GAAGj/B,MACHA,KAAKkuC,oBAAsB,IAC3BluC,KAAKulC,WAAasB,IAAAA,YAAc,GAChC7mC,KAAKyuC,cAAgB5H,IAAAA,YAAc,GACnC7mC,KAAK8kC,WAAa+B,IAAAA,WAAc,GAChC7mC,KAAKkiD,iBAAmBrb,IAAAA,UAAY,WAClC,OAAOlgD,EAAKiB,UAAU,mCAAmCgjB,QAAQ,MAAO5K,KAAK8kC,aAC/E,GAAG9kC,MACHA,KAAKqlC,yCAA2CwB,IAAAA,WAAclgD,EAAKiB,UAAU,0DAA0DgjB,QAAQ,MAAO87B,EAAAA,EAAYqB,gBAAgBxG,IAAI32B,QAAQ,MAAO87B,EAAAA,EAAY0M,YAAY7R,IAAI32B,QAAQ,MAAO87B,EAAAA,EAAYqB,gBAAgBxG,IAAI32B,QAAQ,MAAO87B,EAAAA,EAAYsB,eAAezG,KAC1TvhC,KAAKuuC,aAAe1H,IAAAA,aACpB7mC,KAAKmiD,mBAAqBtb,IAAAA,UAAY,WACpC,GAAI7mC,KAAKyuC,gBACP,OAAO9nD,EAAKiB,UAAU,sCAEtB,IAAIk9C,EAAa9kC,KAAK8kC,aAAe9kC,KAAKkuC,oBAAsBluC,KAAKkuC,oBAAsBluC,KAAK8kC,aAChG,OAAOn+C,EAAKiB,UAAU,kCAAkCgjB,QAAQ,MAAOk6B,EAE3E,GAAG9kC,MACHA,KAAK8nC,YAAcjB,IAAAA,YAAc,GACjC7mC,KAAKstC,eAAiBzG,IAAAA,YAAc,GACpC7mC,KAAKotC,uBAAyBvG,IAAAA,WAAc,GAC5C7mC,KAAKoiD,WAAavb,IAAAA,UAAY,WAC5B,OAA0B,IAAtB7mC,KAAK4kC,aACAj+C,EAAKiB,UAAU,6BAElBoY,KAAKotC,yBAA2B,EAC3BzmD,EAAKiB,UAAU,gCAAgCgjB,QAAQ,MAAO5K,KAAK4kC,cAEnEj+C,EAAKiB,UAAU,wCAAwCgjB,QAAQ,MAAO5K,KAAK4kC,aAGxF,GAAG5kC,MACHA,KAAKwrC,SAAW,WACd,OAAO,CACT,CACF,C,uJCvDI7kD,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACnCmhD,EAAevnC,OAAOyhB,iBAAiBr7B,IAAI,8DAgF/C,IA5EgB,SAAUD,GACxBywC,EAAAA,EAAK5uC,KAAK9C,MACV,IAAIqwC,EAAgBnlD,IAAAA,QAAU,CAAC,CAC7BwpC,MAAO,YACPJ,KAAM3tC,EAAKiB,UAAU,mDACnBqZ,EAAQ00C,oBAAuB,CACjCjhB,MAAO,SACPJ,KAAM3tC,EAAKiB,UAAU,0CACnB,CACF8sC,MAAO,aACPJ,KAAM3tC,EAAKiB,UAAU,+CAEvBoY,KAAKqG,QAAUgqC,EACfrwC,KAAK2xC,eAAiB9K,IAAAA,WAAcxgC,EAAAA,EAAQmT,KAC5CxZ,KAAK2xC,eAAe94B,WAAU,WAC5B7Y,KAAK6xC,aAAa,GACpB,GAAG7xC,MACHA,KAAKoyC,aAAevL,IAAAA,UAAY,WAE9B,OADa7mC,KAAK2xC,mBAAqBtrC,EAAAA,EAAQi8C,SAEjD,GAAGtiD,MACHA,KAAKwyC,aAAe3L,IAAAA,WAAc,KAClC7mC,KAAKuiD,gBAAkB1b,IAAAA,aACvB7mC,KAAKwiD,qBAAuB3b,IAAAA,SAAY,CACtC8L,KAAM,WACJ,OAAO3yC,KAAKuiD,iBACd,EACA3P,MAAO,SAAUpsD,GACfwZ,KAAK6xC,aAAa,IAClB7xC,KAAKuiD,gBAAgB/7D,EACvB,EACAqsD,MAAO7yC,OAETA,KAAKkzC,UAAYrM,IAAAA,UAAY,WAC3B,OAAOlgD,EAAKiB,UAAU,sCACxB,GAAGoY,MACHA,KAAKyiD,wBAA0B5b,IAAAA,YAAc,GAC7C7mC,KAAK0iD,4BAA8B7b,IAAAA,WAAclgD,EAAKiB,UAAU,+CAChEoY,KAAK81C,gCAAkC,WACrC,IACI0M,EACJ,OAFqBxiD,KAAK2xC,kBAGxB,KAAKkE,EAAAA,EAAkB8M,OACrBH,GAAwB,EACxB,MACF,KAAK3M,EAAAA,EAAkB+M,WACrBJ,EAAuB,EACvB,MACF,QAEIA,EAD2B,KAAzBA,GACsB,EAED/O,EAAAA,QAAcU,iBAAiBn0C,KAAKwiD,wBAIjE,OAAOA,CACT,EACAxiD,KAAK41C,2BAA6B/O,IAAAA,WAAc5lC,EAAQ20C,4BACxD51C,KAAKwrC,SAAW,WACdxrC,KAAK6xC,aAAa,IAClB,IAhE2BrrD,EAgEvBmrD,EAAiB3xC,KAAK2xC,iBACtB6Q,EAAuBxiD,KAAKwiD,uBAChC,IAAKA,GAA2C,WAAnB7Q,GAAkD,eAAnBA,EAC1D,OAAO,EAET,GAAI6Q,GAA2C,WAAnB7Q,GAAkD,eAAnBA,KArEhCnrD,EAsEGg8D,EArEzBK,EAAAA,GAA+Br8D,EAAOitD,EAAAA,UAwEvC,OADAzzC,KAAK6xC,aAAagR,EAAAA,GAA0CL,EAAsBH,EAAc5O,EAAAA,WACzF,EAGX,OAAO,CACT,CACF,C,8DCtEA,KACEqP,KAlBF,SAAcC,EAAQC,GAepB,cAdOD,EAAOE,QACVF,EAAOG,sBACFH,EAAOG,aACdH,EAAO5vC,QAAS,GAEZjoB,IAAAA,SAAW63D,EAAOlwC,UAAYkwC,EAAOlwC,QAAQta,eAC1CwqD,EAAOlwC,QAEZkwC,EAAOlwC,UACTkwC,EAAOlwC,QAAUkwC,EAAOlwC,QAAQjI,QAAQ,gDAAiD,oBACzFm4C,EAAOlwC,QAAUkwC,EAAOlwC,QAAQjI,QAAQ,qCAAsC,oBAC9Em4C,EAAOlwC,QAAUkwC,EAAOlwC,QAAQjI,QAAQ,+BAAgC,eACxEm4C,EAAOlwC,QAAUkwC,EAAOlwC,QAAQjI,QAAQ,mBAAoB,aAEvDm4C,CACT,E,oCCjBA,KACEI,UAAW,GACXC,MAAO,CACLC,YAAa,CACXC,KAAM,EACNC,OAAQ,EACRC,UAAW,EACXC,kBAAmB,EACnBC,mBAAoB,EACpBC,YAAa,EACbC,YAAa,GACbC,iBAAkB,GAClBC,mBAAoB,GACpBC,qBAAsB,GACtBC,eAAgB,GAChBC,mBAAoB,KAEtBC,UAAW,CACTZ,KAAM,EACNa,KAAM,EACNC,KAAM,EACNhuC,MAAO,GAETiuC,cAAe,CACbf,KAAM,EACNgB,WAAY,GACZC,gBAAiB,GACjBC,yBAA0B,GAC1BC,MAAO,GACPC,OAAQ,GACRC,SAAU,GACVC,QAAS,GACTC,SAAU,GACVC,mBAAoB,GACpBC,OAAQ,GACRC,WAAY,GACZC,cAAe,GACfC,KAAM,GACNC,OAAQ,GACRC,OAAQ,GACRC,WAAY,GACZC,UAAW,GACXC,SAAU,IACVC,OAAQ,IACRC,UAAW,IACXC,SAAU,KAEZC,sBAAuB,CACrBC,OAAQ,EACRC,uBAAwB,EACxBC,kBAAmB,EACnBC,gBAAiB,EACjBC,WAAY,EACZC,qBAAsB,EACtBC,mBAAoB,EACpBC,SAAU,EACVjB,KAAM,EACNN,QAAS,I,+DCxDXwB,EAAU,SAAUC,GACtBvrC,OAAOwrC,gBAAgBC,aAAavmD,MACpCqmD,EAAMG,iBACR,EACA,KACEzmB,IAAK,SAAU0mB,IACbA,EAASA,GAAUrkB,IAAE,SACVskB,QACOD,EAAOvoC,KAAK,gBAClBswB,IAAI,QAAS4X,GAASvjB,GAAG,QAASujB,EAEhD,E,yECTF,KACEO,WAAY,SAAoBC,EAASC,GACV,iBAAlBA,IACTA,EAAiBhuD,KAAKvH,MAAMu1D,EAAej8C,QAAQ,UAAW,OAEhE,IAAIk8C,EAAS1kB,IAAAA,KAAOA,IAAE,yBAA0B,CAC9CsQ,YAAamU,EAAiBA,EAAeE,aAAe,GAC5DjV,YAAah3B,OAAOg3B,cAKtB,OAHI+U,GACFzkB,IAAE,2BAA4B0kB,GAAQE,IAAIH,EAAeI,2BAEpDH,CACT,EACAI,UAAW,SAAmBC,GAC5B,IAAI/S,EAAehS,IAAE+kB,GAASjpC,KAAK,6BAA6B8oC,MAC5D5W,EAAahO,IAAE+kB,GAASjpC,KAAK,4BAA4B8oC,MAC7D,IAAM5S,IAAgBhE,EAAa,CACjC,IAAIgX,EAAehlB,IAAE+kB,GAASjpC,KAAK,gCACnCk2B,EAAegT,EAAa7/D,KAAK,gBACjC6oD,EAAagX,EAAa7/D,KAAK,aACjC,CACA,OAAOsR,KAAKQ,UAAU,CACpB0tD,aAAcM,EAAAA,QAAGC,wBAAwBlT,GACzC6S,0BAA2B7W,GAE/B,E,iKCrBF,SAASmX,EAA4BC,GACnC,OAAOC,EAAAA,EAAUn2D,MAAMk2D,EACzB,CAyBA,SAASE,EAAQrc,EAAmBtkC,GAClC,IAAImhC,EAAU,GA2Dd,OA1DAh9C,IAAAA,KAAOmgD,GAAmB,SAAUhjC,GAClC,GAAKA,EAAL,CAGA,IAAIs/C,EAAiBt/C,EAAKssC,eACtBiT,EAAYv/C,EAAKw/C,uBAErB,GAAK,OAAQ72C,KAAK22C,GAAiB,CACjC,IAAI7M,EAAS,SACTgN,EAAgB,gBAChBH,EAAejgD,MAAMozC,EAAS,MAChC8M,EAAY,EACZD,EAAiBA,EAAe75C,MAAMi6C,GAAmBjN,IAChD6M,EAAejgD,MAAMogD,EAAgB,MAC9CF,EAAY,EACZD,EAAiBA,EAAe75C,MAAMi6C,GAAmBD,MAEzDF,EAAY,EACZD,EAAiBA,EAAe75C,MAAMi6C,GAE1C,CACA,IAAIxiD,EAAOyiD,EAAAA,iBAAgCL,GACvCM,EAAmB,CACrBxhE,MAAOuhE,EAAAA,iBAAgCL,EAAgB5gD,GACvDmhD,SAAUF,EAAAA,eAA8B3/C,EAAKusC,iBAAkBrvC,IAKjE,GAHIqiD,GAA0B,GAAbA,IACfK,EAAiBxhE,MArDvB,SAA2BA,EAAOmhE,GAChC,IAAIA,GAA0B,GAAbA,EAoBf,OAAOnhE,EAnBP,IAA2B,GAAvBA,EAAMwnB,QAAQ,KAAY,CAC5B,IAAIytC,EAAUj1D,EAAMmb,MAAM,KAC1B,GAAI85C,EAAQnjD,QAAU,EAAG,CACvB,IAAI4vD,EAAWzM,EAAQ,GACnB0M,EAAS1M,EAAQ,GACrB,GAAiB,GAAbkM,EACFO,EAAW,MAAQA,OACd,GAAiB,GAAbP,EACTO,EAAW,MAAQA,EAAW,aACzB,IAAiB,GAAbP,EAGT,OAAOnhE,EAFP0hE,EAAW,MAAQA,EAAW,kBAGhC,CAEA,OADaA,EAAW,IAAMC,CAEhC,CACF,CAIJ,CA8B+BC,CAAkBJ,EAAiBxhE,MAAOmhE,IAEjE18D,IAAAA,QAAUmd,EAAKijC,QACjB,GAAIjjC,EAAKijC,OAAO/yC,OAAS,EAAG,CAC1B,IAAI+vD,EAAML,EAAiBC,SAAUK,EAAiB,GACtDr9D,IAAAA,KAAOmd,EAAKijC,QAAQ,SAAUkd,EAAWh7C,GAC1B,SAATjI,IACFijD,EAAYjB,EAA4BiB,IAEtCt9D,IAAAA,QAAU+8D,EAAiBC,YAC7BI,EAAML,EAAiBC,SAAS16C,IAElC+6C,EAAe/8C,KAAK,CAClB/kB,MAAOwhE,EAAiBxhE,MACxByhE,SAAUI,EACV9hE,MAAOwhE,EAAAA,eAA8BQ,EAAWjjD,EAAM0iD,EAAiBxhE,MAAOsgB,EAAY0hD,EAAAA,UAE9F,IACAvgB,EAAQ18B,KAAK,CACXk9C,MAAOx9D,IAAAA,QAAU+8D,EAAiBC,UAAY,MAAQ,KACtDhgB,QAASqgB,GAEb,KACe,SAAThjD,IACF8C,EAAKijC,OAAO,GAAKic,EAA4Bl/C,EAAKijC,OAAO,KAE3D2c,EAAiBzhE,MAAQwhE,EAAAA,eAA8B3/C,EAAKijC,OAAO,GAAI/lC,EAAM0iD,EAAiBxhE,MAAOsgB,EAAY0hD,EAAAA,SACjHvgB,EAAQ18B,KAAKy8C,EAnDjB,CAsDF,IACO,CACL/f,QAASA,EAEb,CACA,SAASygB,EAA2Btd,EAAmBtkC,GACrD,IAAIrC,EAAM,GACNkkD,EAAgB,GAsBpB,OArBA19D,IAAAA,KAAOmgD,GAAmB,SAAUhjC,EAAMmF,GACxC,GAAKnF,EAAL,CAGA,IAAIwgD,EAAqBb,EAAAA,aAA4B3/C,EAAKusC,iBAAkBvsC,EAAKssC,eAAgB5tC,EAAYsB,EAAKijC,QAClH,IAAKpgD,IAAAA,QAAU29D,KAAwB39D,IAAAA,QAAUmd,EAAKijC,QAAS,CAC7D,IAAIwd,EAiBV,SAAiCzgD,EAAMwgD,EAAoB9hD,GACzD,IAAI+hD,EAAa,GACbC,EAAaf,EAAAA,iBAAgC3/C,EAAKssC,eAAgB5tC,GAClExB,EAAOyiD,EAAAA,iBAAgC3/C,EAAKssC,gBAC5CiS,EAAUiC,EAAmBjC,QAC7BiC,EAAmBG,sBACrBF,GAAcC,EACdD,GAAc,IAAMD,EAAmBI,YAAc,OAEvD/9D,IAAAA,KAAOmd,EAAKijC,QAAQ,SAAU9kD,EAAOgnB,GAC/BA,EAAQ,IACVs7C,GAAc,IAAMD,EAAmBH,MAAQ,KAEjD,IAAIQ,EAAyB,GACxBh+D,IAAAA,QAAU29D,EAAmBX,YAChCgB,EAAyB,IAAML,EAAmBX,SAAW,KAAOh9D,IAAAA,YAAc29D,EAAmBriE,OAASwhE,EAAAA,eAA8BxhE,EAAO+e,EAAMwjD,EAAYhiD,EAAY0hD,EAAAA,SAAWI,EAAmBriE,QAE7MqiE,EAAmBG,oBACrBF,GAAclC,EAAUsC,GAExBJ,GAAcC,EACdD,GAAc,IAAMD,EAAmBI,YAAc,IAAMrC,EAAUsC,EAAyB,IAElG,IACIL,EAAmBG,sBACrBF,GAAc,KAEhB,OAAOA,CACT,CA7CuBK,CAAwB9gD,EAAMwgD,EAAoB9hD,GAC/DrC,EAAInM,OAAS,GACfmM,GAAO,SACPA,GAAOokD,EACPpkD,GAAO,KAEPA,GAAOokD,EAETF,EAAcp9C,KAAKgC,EACrB,CAZA,CAaF,IACAtiB,IAAAA,KAAO09D,GAAe,SAAUp7C,UACvB69B,EAAkB79B,EAC3B,IACA69B,EAAoBngD,IAAAA,QAAUmgD,OAAmBj/C,GAC1CsY,CACT,CA8BA,SAAS0kD,EAAQ/d,EAAmBtkC,GAClC,IAAIsiD,EAAwBn+D,IAAAA,QAAUmgD,GAAqB,CAAC,EAAIjJ,IAAAA,QAAS,EAAM,CAAC,EAAGiJ,GAC/Eie,EAAyBX,EAA2BU,EAAuBtiD,GAC3EwiD,EAAeC,IAAAA,KAAWC,WAAW/oB,MAAMgpB,aAAa,CAC1Dl3C,OAAQk1C,EAAQ2B,EAAuBtiD,IACtC,QACCU,EAASkiD,EAAAA,EAAQ7G,KAAKyG,GAM1B,OALKr+D,IAAAA,QAAUo+D,IAA2BA,EAAuB/wD,OAAS,IACxEkP,EAAOoL,QAAUpL,EAAOoL,SAAW,GACnCpL,EAAOoL,SAAWpL,EAAOoL,QAAQta,OAAS,EAAI,QAAU,GACxDkP,EAAOoL,SAAWy2C,GAEb7hD,CACT,CAQA,KACEigD,QAASA,EACTiB,2BAA4BA,EAC5BS,QAASA,EACT9f,kBAXF,SAA2B+B,EAAmBtkC,GAC5C,IAAI6iD,EAAaR,EAAQ/d,EAAmBtkC,GAC5C,OAAI6iD,GAAcA,EAAW/2C,QACpB,WAAakrB,mBAAmB6rB,EAAW/2C,SAE7C,EACT,E,0CC1KIg3C,EACAC,E,2EACAC,EAAoB,mBACpBC,EAAkB,iBAClBC,EAAiB,gBAEjBC,GAAU,EAsBVC,EAAa,SAAU9D,GACzBA,EAAM+D,cAAcC,aAAaztC,QAAQ,OAAQypC,EAAMiE,QAAU,IAAMjE,EAAMkE,QAC/E,EAaIC,EAAY,SAAUnE,GAExB,OADAA,EAAMoE,kBACC,CACT,EACIC,EAAY,SAAUC,EAAeC,GACvCD,EAAc9nB,GAAG,YAAasnB,GAC9BS,EAAmB/nB,GAAG,WAAY2nB,GAClCI,EAAmB/nB,GAAG,QAAQ,SAAUwjB,IAnB/B,SAAUA,EAAOsE,GAC1B,IAAIE,EAAaxE,EAAM+D,cAAcC,aAAaxtC,QAAQ,QAAQjb,MAAM,KACpEkpD,EAAczE,EAAMkE,QAAUzL,SAAS+L,EAAW,GAAI,IACtDE,EAAc1E,EAAMiE,QAAUxL,SAAS+L,EAAW,GAAI,IACtDG,EAAeL,EAAcM,SACjCN,EAAcM,OAAO,CACnB76D,IAAK46D,EAAa56D,IAAM06D,EACxBx9D,KAAM09D,EAAa19D,KAAOy9D,IAE5B1E,EAAMoE,gBAER,CASIS,CAAK7E,EAAOjkB,IAAEuoB,EAAc,IAC9B,GACF,EACIQ,EAAgBjgE,IAAAA,MAAO,SAAU2+D,GACnCa,EAAUb,EAAWznB,IAAE,QACzB,IACIgpB,EAAwB,WAG1B,GAFAvB,EAAYznB,IAAE2nB,GACdD,EAAwBD,EAAUtxD,OAAS,EAAIsxD,EAAU3rC,KAAK8rC,GAAmB,KACxD,IAArBH,EAAUtxD,QAAiBuxD,GAA0D,IAAjCA,EAAsBvxD,OAW5EuxD,EAAsBniB,YAXoE,CAC1FkiB,EAAUlH,SACV,IAAI0I,EAAajpB,IAAE,kBACM,GAArBipB,EAAW9yD,OACb6pC,IAAEkpB,OAAYC,aAAaF,GAE3BjpB,IAAE,QAAQrV,OAAOu+B,OAEnBzB,EAAYznB,IAAE2nB,GACdD,EAAwBD,EAAU3rC,KAAK8rC,EACzC,CAGA5nB,IAAEopB,UAAUC,OAAO,eACnBrpB,IAAEopB,UAAUnxC,KAAK,cAAeqxC,GAChCP,EAAcrB,EAChB,EACItT,EAAO,WACJtrD,IAAAA,YAAc2+D,IAA2B,MAAbA,IAC/BA,EAAU8B,YAAY,QACtB9B,EAAU+B,SAAS,QAEvB,EAuBIF,EAAoB,SAAUx0D,GAChC,IAAM20D,EAAUzpB,IAAElrC,EAAEm+B,QAC6B,IAA7Cw2B,EAAQC,QAAQ,kBAAkBvzD,QAA8C,eAA9BszD,EAAQxkB,KAAK,cAGnE0kB,GACF,EACIA,EAAa,SAAU70D,GA5BpBhM,IAAAA,YAAc2+D,IAA4B,OAAdA,IAC/BA,EAAU8B,YAAY,QACtB9B,EAAU+B,SAAS,QACf1B,GACF8B,EAAAA,EAAUC,QAAQpC,EAAW,iBA0BjCznB,IAAEopB,UAAUC,OAAO,cACrB,EACA,KACEllB,OA9GW,SAAU2lB,EAAY18D,GACjC47D,IACItB,GAAyBA,EAAsBvxD,OAAS,IAC1DuxD,EAAsBrjB,KAAKylB,GACvBpC,EAAsBvxD,OAAS,GACjCrN,IAAAA,KAAO4+D,EAAsB9iE,YAAY,SAAUmlE,GACjD/pB,IAAE+pB,GAAOP,SAAS,eACpB,MAGC1gE,IAAAA,YAAcsE,IAAWtE,IAAAA,SAAWsE,GACvCq6D,EAAU3rC,KAAK+rC,GAAgBmC,IAAI,CACjC,OAAU58D,EAAS,OAGrBq6D,EAAU3rC,KAAK+rC,GAAgBmC,IAAI,CACjC,OAAUC,UAGd7V,GACF,EA2FE8V,MAAOP,EACPvV,KAAMA,EACN+V,MArBU,WACLrhE,IAAAA,YAAc2+D,IAA4B,OAAdA,IAC/BmC,EAAAA,EAAUO,MAAM1C,EAAW,gBAC3BK,GAAU,EAEd,EAiBEsC,kBA7BsB,WACtBpqB,IAAAA,WAAaqqB,mBACbrqB,IAAE,kBAAkBgqB,IAAI,CACtB,KAAQ,EACR,IAAO,gBAEX,E,oCCtGA,KACE9J,UAAW,YACXoK,YAAa,cACbC,YAAa,cACbC,QAAS,UACTC,aAAc,eACdC,WAAY,a,oCCNd,KACEtzC,IAAK,YACL82B,SAAU,iBACVC,SAAU,iB,mCCHZ,KACEgE,gBAAiB,kBACjBC,eAAgB,iBAChBF,UAAW,cACXyY,WAAY,MACZpK,OAAQ,SACRC,WAAY,a,oCCNd,KACEoK,IAAK,MACL/qB,WAAY,SACZC,eAAgB,U,mCCHlB,KACEuB,aAAc,UACdD,WAAY,aACZvE,UAAW,YACX4E,oBAAqB,sBACrBC,OAAQ,S,oCCLV,KACEmpB,QAAS,UACTnY,cAAe,gBACfD,iBAAkB,mBAClBE,uBAAwB,yB,oCCJ1B,KACE9gD,OAAQ,SACR+hD,QAAS,UACTkX,OAAQ,aACRC,UAAW,YACXC,WAAY,aACZC,WAAY,IACZC,iBAAkB,IAClBC,qBAAsB,I,iGCJxB,KACEpoB,QAAS,SAAUQ,EAAM6nB,GACnB7nB,EAAKwJ,UACPxJ,EAAKwJ,SAAShK,SAAQ,GAClBj6C,IAAAA,WAAasiE,IACf7nB,EAAKwJ,SAASse,KAAK,YAAaD,IAGlCtiE,IAAAA,WAAasiE,GAAM7nB,EAAK+nB,KAAKp1D,KAAKk1D,EAAIA,GAAM7nB,EAAK+nB,IAErD,EACA9lB,mBAAoB,SAAUiM,EAAMlO,GAC9BA,EAAKwJ,SACP0E,EAAKnU,QAAQ,QAEbiG,EAAKgoB,QAAQjuB,QAAQ,cAEzB,EACAkuB,mBAAoB,SAAUjoB,GACvBA,EAAKwJ,UACRxJ,EAAKgoB,QAAQlC,OAAO9lB,EAAKkoB,oBAAsB,uBAEnD,EACA7d,kBAAmB,SAAUrK,GAC3B,OAAIA,EACKA,EAAKwJ,SAAWxJ,EAAKwJ,SAAS2e,eAAiBnoB,EAAKqK,oBAEtD,IACT,EACAoG,uBAAwB,SAAUzQ,GAChC,OAAIA,EAAKwJ,SACAxJ,EAAK4C,aAAawlB,mBAAmBC,cAER,aAA7BroB,EAAKoa,mBAEhB,EACAhD,kBAAmB,SAAUpX,GAC3B,OAAIA,EAAKwJ,SACAxJ,EAAKwJ,SAAS8e,eAEdtoB,EAAKuoB,qBAEhB,EACAvR,gBAAiB,SAAUhX,GACzB,OAAIA,EACKA,EAAKwJ,SAAWxJ,EAAKwJ,SAASgf,gBAAkBxoB,EAAKyoB,sBAEvD,EACT,EACA3R,qBAAsB,SAAU9W,GAC9B,OAAIA,EAC2B3lC,KAAKo2C,uBAAuBzQ,GACzB3lC,KAAK+8C,kBAAkBpX,GAAQ3lC,KAAKgwC,kBAAkBrK,GAAMptC,OAEvF,CACT,EACA81D,YAAa,SAAU1oB,GACrB,OAAIA,EAAKwJ,SACAxJ,EAAKwJ,SAASkf,cAEd1oB,EAAK2oB,eAAc,GAAO,EAErC,EACA3iB,qBAAsB,SAAUhG,GAC9B,GAAIA,EAAM,CACR,IAAIzqB,EAAMyqB,EAAKwJ,SAAWxJ,EAAKwJ,SAAS2e,eAAiBnoB,EAAKqK,oBAM9D,OALA90B,EAAMhwB,IAAAA,IAAMgwB,GAAK,SAAU10B,GAEzB,OADeA,EAAMynB,QAAQ,KACd,EAAU6wC,SAASt4D,GAC3Bs4D,SAASt4D,EAAM0qB,UAAU,EAAG1qB,EAAMynB,QAAQ,MACnD,GAEF,CACA,OAAO,IACT,EACAo6B,gBAAiB,SAAU1C,GACzB,OAAIA,EAAKooB,mBACApoB,EAAKooB,mBAAmBC,cACtBroB,EAAK4C,aACP5C,EAAK4C,aAAawlB,oBAAsBpoB,EAAK4C,aAAawlB,mBAAmBC,cAEhD,aAA7BroB,EAAKoa,mBAEhB,EACAlV,YAAa,SAAUlF,GACrB,OAAOA,EAAK4C,cAAgB5C,EAAK4C,aAAagmB,WAAa5oB,EAAK4C,aAAagmB,WAAWj7B,SAAWqS,EAAKkF,aAC1G,EACAC,eAAgB,SAAUnF,GACxB,OAAOA,EAAK4C,cAAgB5C,EAAK4C,aAAagmB,WAAa5oB,EAAK4C,aAAagmB,WAAWC,WAAa7oB,EAAKmF,gBAC5G,EACA2jB,eAAgB,SAAU9oB,EAAM+oB,EAAO3F,GACrC,OAAIpjB,EAAKwJ,SACAjkD,IAAAA,OAASy6C,EAAKwJ,SAASwf,YAAYD,GAAQ3F,GAE7CpjB,EAAK8oB,eAAeC,EAAO3F,EACpC,EACAhe,YAAa,SAAUrf,EAAQia,GAC7B,IAAIipB,EAAa,CAAC,EACdC,EAAW,GACf,GAAIlpB,EAAKwJ,SAAU,CACjB,IAAIvgC,EAAO+2B,EAAKwJ,SAASjuC,IAAI,kBAC7B0tD,EAAWE,SAAWlgD,EAAK5iB,KAC3B4iE,EAAWG,UAAYngD,EAAKogD,WAAa,EAAI,IAAM,GACrD,MACEJ,EAAajpB,EAAKkpB,SAEpB,GAAID,GAAcA,EAAWE,SAAU,CACrC,GAAInpB,EAAKwJ,SAAU,CACjB,IAAIj9B,EAAUyzB,EAAKwJ,SAASjuC,IAAI,SAASgR,QACrCA,GAAWA,EAAQ3Z,OAAS,IAC9Bs2D,EAAW38C,EAAQ,GAAGnS,IAE1B,MACE8uD,EAAW7G,EAAAA,iBAAgC4G,EAAWE,SAAUpjC,GAErC,MAAzBkjC,EAAWG,YACbF,GAAY,QAEhB,CACA,OAAOA,CACT,EACAI,YAAa,SAAUtpB,GACjBA,EAAKwJ,SACPxJ,EAAKupB,QAAQC,iBAAiBC,kBAE9BzpB,EAAKgoB,QAAQjuB,QAAQ,cAEzB,EACA2vB,YAAa,SAAU1pB,GACjBA,EAAKwJ,SACPxJ,EAAKupB,QAAQC,iBAAiBG,kBAE9B3pB,EAAKgoB,QAAQjuB,QAAQ,cAEzB,EACA6vB,cAAe,SAAU5pB,GAClBA,EAAKwJ,UACRxJ,EAAK4pB,eAET,EACAC,SAAU,SAAU7pB,EAAMp+C,GACpBo+C,EAAKwJ,SACPxJ,EAAKwJ,SAAShK,SAAQ,GAEtBQ,EAAK6pB,SAASjoE,EAElB,E,oDCrJEZ,EAAOm0B,OAAOyhB,iBAAiBr7B,IAAI,0CACvC,SAASuuD,EAAuBC,EAAWC,EAAaC,EAAUC,GAChE,IAAIC,EAAah1C,OAAOi1C,WAAa,GACrCD,EAAWtkD,KAAK,CAAC,WAAY,CAC3BplB,GAAIq3D,EAAAA,EAAYrK,YAAY7R,GAC5ByuB,QAAS,CACP5pE,GAAIq3D,EAAAA,EAAYzV,eAAezG,GAC/Bv1C,KAAMyxD,EAAAA,EAAYzV,eAAeioB,kBAGrCH,EAAWtkD,KAAK,CAAC,MAAO,CACtB0kD,qBAAsB,CACpB,UAAaC,UAAUC,UACvB,QAAWT,EACX,YAAeC,EACf,IAAO90C,OAAO9b,SAAS/L,KACvB,cAAiBwqD,EAAAA,EAAYzV,eAAeioB,cAC5C,YAAexS,EAAAA,EAAYzV,eAAel9B,KAC1C,UAAa2yC,EAAAA,EAAYzV,eAAezG,GACxC,WAAckc,EAAAA,EAAY1V,gBAAgBxG,GAC1C,aAAgBkc,EAAAA,EAAY1V,gBAAgBj9B,KAC5C,SAAY,IAEdulD,mBAAmB,EACnBh7B,OAAQw6B,EACRS,oBAAoB,EACpB5U,QAAS,CACP6U,mBAAoB5pE,EAAKiB,UAAU,yCACnC4oE,cAAe7pE,EAAKiB,UAAU,qCAC9B6oE,4BAA6B9pE,EAAKiB,UAAU,kDAC5C8oE,oCAAqC/pE,EAAKiB,UAAU,wDACpD+oE,sBAAuBhqE,EAAKiB,UAAU,4CACtCgpE,sBAAuBjqE,EAAKiB,UAAU,4CACtCipE,sBAAuBlqE,EAAKiB,UAAU,4CACtCkpE,qBAAsBnqE,EAAKiB,UAAU,2CACrCmpE,oBAAqBpqE,EAAKiB,UAAU,0CACpCopE,0BAA2BrqE,EAAKiB,UAAU,oDAG9CkoE,EAAWtkD,KAAK,CAAC,aAAckkD,EAAW,CACxCuB,KAAM,YAEV,CAMA,KACEC,WALF,SAAwBxB,EAAWC,EAAaC,GAC9CH,EAAuBC,EAAWC,EAAaC,EAAU,OAC3D,EAIEuB,mBAAoB1B,E,wBCpDtB,IAAI2B,EAAM,EAAQ,QAGlBvwD,EAAOC,QADP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAA0kB,OAAtkB,SAAUhb,EAASpjD,EAAM5M,GAAOkrE,EAAWA,EAAW,MAAaH,EAAI/pB,KAAK,OAAQp0C,GAAM,GAAM,GAAMm+D,EAAI/pB,KAAK,UAAW,yCAA2CgP,EAAU,MAAM,GAAM,IAAS,IAAY+a,EAAIK,OAAO,OAASH,EAAajrE,GAAQ,GAAKirE,GAAe,MAAsB,EAAExuD,KAAK9C,KAAK,YAAawxD,EAAgBA,EAAgBnb,QAAyB,qBAAVA,QAAsBA,aAAQjqD,EAAU,SAAUolE,EAAgBA,EAAgBv+D,KAAmB,qBAAPA,KAAmBA,UAAK7G,EAAU,SAAUolE,EAAgBA,EAAgBnrE,KAAmB,qBAAPA,KAAmBA,UAAK+F,GAAoBmlE,CAAS,C,yBCFvsB,IAAIH,EAAM,EAAQ,QAkElBvwD,EAAOC,QAhEP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA+D6O,OA/DzO,SAAU1qE,EAAMggD,GAAY+qB,EAAwB,YAAIJ,EAAa,SAASK,GAClL3xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,ikBAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,yaACtB,EACAG,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIy5D,EAAa,EAAGF,EAAMF,EAAMr5D,OAAQy5D,EAAaF,EAAKE,IAAc,CAC3E,IAAI5J,EAASwJ,EAAMI,GAC3BT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMI,GACzBT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACA,IAAIU,EAAYtrB,EAAUurB,qBAAuBvrE,EAAKiB,UAAU,2DAA6DjB,EAAKiB,UAAU,kDAC5I2pE,EAAWA,EAAY,wHAAmKH,EAAIK,OAAO,OAASH,EAAaW,GAAa,GAAKX,GAAe,gBAAgD,OAASA,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GACtX,IAAIa,EAAUxrE,EAAKiB,UAAU,0DACzBwqE,EAAUzrE,EAAKiB,UAAU,qDACzByqE,EAAU1rE,EAAKiB,UAAU,qDAC7B8pE,EAAwB,YAAE,CAACS,EAASC,EAASC,IAC7C,IAAIC,EAAU3rE,EAAKiB,UAAU,0DACzB2qE,EAAU5rE,EAAKiB,UAAU,qDACzB4qE,EAAU7rE,EAAKiB,UAAU,2DAC7B8pE,EAAuB,WAAE,CAACY,EAASC,EAASC,IAAU,GACtDjB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,EAAU,cAAeolE,EAAgBA,EAAgB7qB,UAA6B,qBAAZA,UAAwBA,eAAUv6C,GAAoBmlE,CAAS,C,yBCjE1W,IAAIH,EAAM,EAAQ,QA4ElBvwD,EAAOC,QA1EP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EAyEqP,OAzEjP,SAAU3qB,EAAa//C,GAAO+qE,EAAwB,YAAIJ,EAAa,SAASK,GACpL3xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,ikBAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,yaACtB,EACAG,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIy5D,EAAa,EAAGF,EAAMF,EAAMr5D,OAAQy5D,EAAaF,EAAKE,IAAc,CAC3E,IAAI5J,EAASwJ,EAAMI,GAC3BT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMI,GACzBT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAG,EAAsB,UAAIJ,EAAa,SAASmB,EAASC,EAAkB/rE,GAC9DqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAA7D,IACI+wB,EAAkBhsE,GAAQA,EAAKua,KAAOva,EAAKua,IAAI,uCAA2Cva,GAAQA,EAAKiB,WAAajB,EAAKiB,UAAU,uCAA0C,KACjL2pE,EAAWA,yDAAsFH,EAAI/pB,KAAK,QAASorB,GAAS,GAAM,GAAMrB,EAAI/pB,KAAK,aAAa,GAAM,GAAM,GAAM,qGAAyG+pB,EAAI/pB,KAAK,aAAcsrB,EAAiBA,EAAe/nD,QAAQ,WAAY8nD,GAAoBA,GAAkB,GAAM,GAAS,OACzZ,EACAnB,EAAWA,EAAW,6QAA8XH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,oBAAsB,GAAK0pE,GAAe,8oBAAg0BF,EAAIK,OAAO,OAASH,EAAa5qB,EAAY+J,qBAAuB,GAAK6gB,GAAe,UACt4CI,EAAsB,UAAE,2BAA4B/qE,EAAKiB,UAAU,mCAAoCjB,GACvG4qE,EAAWA,EAAW,unCAAy1CH,EAAIK,OAAO,OAASH,EAAa5qB,EAAY+J,qBAAuB,GAAK6gB,GAAe,oFACv8CI,EAAsB,UAAE,gCAAiC/qE,EAAKiB,UAAU,+CAAgDjB,GACxH4qE,GAAsB,uFACtBG,EAAsB,UAAE,gCAAiC/qE,EAAKiB,UAAU,+CAAgDjB,GACxH4qE,EAAWA,EAAY,wLAAmU,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GACpa,IAAIa,EAAUxrE,EAAKiB,UAAU,sCACzBwqE,EAAUzrE,EAAKiB,UAAU,qCACzByqE,EAAU1rE,EAAKiB,UAAU,qCAC7B8pE,EAAwB,YAAE,CAACS,EAASC,EAASC,IAC7C,IAAIC,EAAU3rE,EAAKiB,UAAU,sCACzB2qE,EAAU5rE,EAAKiB,UAAU,qCACzB4qE,EAAU7rE,EAAKiB,UAAU,2CAC7B8pE,EAAuB,WAAE,CAACY,EAASC,EAASC,IAC5CjB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,gBAAiBwxD,EAAgBA,EAAgB9qB,YAAiC,qBAAdA,YAA0BA,iBAAYt6C,EAAU,SAAUolE,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBC3ElX,IAAIH,EAAM,EAAQ,QA4ElBvwD,EAAOC,QA1EP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EAyEqP,OAzEjP,SAAU3qB,EAAa//C,GAAO+qE,EAAwB,YAAIJ,EAAa,SAASK,GACpL3xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,ikBAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,yaACtB,EACAG,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIy5D,EAAa,EAAGF,EAAMF,EAAMr5D,OAAQy5D,EAAaF,EAAKE,IAAc,CAC3E,IAAI5J,EAASwJ,EAAMI,GAC3BT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMI,GACzBT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAG,EAAsB,UAAIJ,EAAa,SAASmB,EAASC,EAAkB/rE,GAC9DqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAA7D,IACI+wB,EAAkBhsE,GAAQA,EAAKua,KAAOva,EAAKua,IAAI,uCAA2Cva,GAAQA,EAAKiB,WAAajB,EAAKiB,UAAU,uCAA0C,KACjL2pE,EAAWA,yDAAsFH,EAAI/pB,KAAK,QAASorB,GAAS,GAAM,GAAMrB,EAAI/pB,KAAK,aAAa,GAAM,GAAM,GAAM,qGAAyG+pB,EAAI/pB,KAAK,aAAcsrB,EAAiBA,EAAe/nD,QAAQ,WAAY8nD,GAAoBA,GAAkB,GAAM,GAAS,OACzZ,EACAnB,EAAWA,EAAW,6QAA8XH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,oBAAsB,GAAK0pE,GAAe,qUAA2aF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,4CAA8C,GAAK0pE,GAAe,iSAA8WF,EAAIK,OAAO,OAASH,EAAa5qB,EAAY+J,qBAAuB,GAAK6gB,GAAe,UACj9CI,EAAsB,UAAE,2BAA4B/qE,EAAKiB,UAAU,mCAAoCjB,GACvG4qE,EAAWA,EAAW,8jCAAoxCH,EAAIK,OAAO,OAASH,EAAa5qB,EAAY+J,qBAAuB,GAAK6gB,GAAe,oFACl4CI,EAAsB,UAAE,gCAAiC/qE,EAAKiB,UAAU,+CAAgDjB,GACxH4qE,GAAsB,uFACtBG,EAAsB,UAAE,gCAAiC/qE,EAAKiB,UAAU,+CAAgDjB,GACxH4qE,EAAWA,EAAY,mGAAgM,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GACjS,IAAIa,EAAUxrE,EAAKiB,UAAU,sCACzBwqE,EAAUzrE,EAAKiB,UAAU,6CACzByqE,EAAU1rE,EAAKiB,UAAU,6CAC7B8pE,EAAwB,YAAE,CAACS,EAASC,EAASC,IAC7C,IAAIC,EAAU3rE,EAAKiB,UAAU,sCACzB2qE,EAAU5rE,EAAKiB,UAAU,6CACzB4qE,EAAU7rE,EAAKiB,UAAU,mDAC7B8pE,EAAuB,WAAE,CAACY,EAASC,EAASC,IAC5CjB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,gBAAiBwxD,EAAgBA,EAAgB9qB,YAAiC,qBAAdA,YAA0BA,iBAAYt6C,EAAU,SAAUolE,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBC3ElX,IAAIH,EAAM,EAAQ,QAuElBvwD,EAAOC,QArEP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EAoEiI,OApE7H,SAAU1qE,GAAO+qE,EAAwB,YAAIJ,EAAa,SAASK,GACvK3xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,ikBAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,yaACtB,EACAG,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIy5D,EAAa,EAAGF,EAAMF,EAAMr5D,OAAQy5D,EAAaF,EAAKE,IAAc,CAC3E,IAAI5J,EAASwJ,EAAMI,GAC3BT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMI,GACzBT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAG,EAAsC,0BAAIJ,EAAa,SAAS3qE,GACnDqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,mPAAwVH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,oBAAsB,GAAK0pE,GAAe,s5BACxc,EACAC,GAAsB,sBACtBG,EAAsC,0BAAE/qE,GACxC4qE,GAAuB,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,EACjG,IAAIa,EAAUxrE,EAAKiB,UAAU,sCACzBwqE,EAAUzrE,EAAKiB,UAAU,qCACzByqE,EAAU1rE,EAAKiB,UAAU,qCAC7B8pE,EAAwB,YAAE,CAACS,EAASC,EAASC,IAC7C,IAAIC,EAAU3rE,EAAKiB,UAAU,sCACzB2qE,EAAU5rE,EAAKiB,UAAU,qCACzB4qE,EAAU7rE,EAAKiB,UAAU,2CAC7B8pE,EAAuB,WAAE,CAACY,EAASC,EAASC,IAAU,GACtDjB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBCtE9P,IAAIH,EAAM,EAAQ,QAiElBvwD,EAAOC,QA/DP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA8DiI,OA9D7H,SAAU1qE,GAAO+qE,EAAwB,YAAIJ,EAAa,SAASK,GACvK3xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,ikBAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,yaACtB,EACAG,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIy5D,EAAa,EAAGF,EAAMF,EAAMr5D,OAAQy5D,EAAaF,EAAKE,IAAc,CAC3E,IAAI5J,EAASwJ,EAAMI,GAC3BT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMI,GACzBT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,EAAWA,EAAY,gLAA4P,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAC7V,IAAIa,EAAUxrE,EAAKiB,UAAU,sCACzBwqE,EAAUzrE,EAAKiB,UAAU,4BACzByqE,EAAU1rE,EAAKiB,UAAU,4BAC7B8pE,EAAwB,YAAE,CAACS,EAASC,EAASC,IAC7C,IAAIC,EAAU3rE,EAAKiB,UAAU,sCACzB2qE,EAAU5rE,EAAKiB,UAAU,4BACzB4qE,EAAU7rE,EAAKiB,UAAU,kCAC7B8pE,EAAuB,WAAE,CAACY,EAASC,EAASC,IAC5CjB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBChE9P,IAAIH,EAAM,EAAQ,QAwClBvwD,EAAOC,QAtCP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EAqCiI,OArC7H,SAAU1qE,GAAO+qE,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC/K/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,EAAWA,EAAW,kVAA6eH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,wCAA0C,GAAK0pE,GAAe,uCAEjnBC,GAAuB,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,EACjG,IAAIsB,EAAmBjsE,EAAKiB,UAAU,gCAClCirE,EAAelsE,EAAKiB,UAAU,0BAC9BkrE,EAAensE,EAAKiB,UAAU,0BAClC8pE,EAAuB,WAAE,CAACkB,EAAkBC,EAAcC,IAC1DvB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBCvC9P,IAAIH,EAAM,EAAQ,QAiDlBvwD,EAAOC,QA/CP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA8CiI,OA9C7H,SAAU1qE,GAAO+qE,EAAsB,UAAIJ,EAAa,SAASmB,EAASC,EAAkB/rE,GAChMqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAA7D,IACI+wB,EAAkBhsE,GAAQA,EAAKua,KAAOva,EAAKua,IAAI,uCAA2Cva,GAAQA,EAAKiB,WAAajB,EAAKiB,UAAU,uCAA0C,KACjL2pE,EAAWA,yDAAsFH,EAAI/pB,KAAK,QAASorB,GAAS,GAAM,GAAMrB,EAAI/pB,KAAK,aAAa,GAAM,GAAM,GAAM,qGAAyG+pB,EAAI/pB,KAAK,aAAcsrB,EAAiBA,EAAe/nD,QAAQ,WAAY8nD,GAAoBA,GAAkB,GAAM,GAAS,OACzZ,EACAhB,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,EAAWA,EAAY,wXAAqhBH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,6CAA+C,GAAK0pE,GAAe,0HAAwNF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,yBAA2B,GAAK0pE,GACv8BI,EAAsB,UAAE,wCAAyC/qE,EAAKiB,UAAU,wBAAyBjB,GACzG4qE,EAAWA,EAAY,qNAA6QH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,+BAAiC,GAAK0pE,GAAe,+KAAmQF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,6BAA+B,GAAK0pE,GAAe,uKAA+NF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,uBAAyB,GAAK0pE,GAAe,4QAAyYF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,UAAY,GAAK0pE,GAAe,gVAAweF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,wBAA0B,GAAK0pE,GAC3jEI,EAAsB,UAAE,wCAAyC/qE,EAAKiB,UAAU,uBAAwBjB,GACxG4qE,GAAsB,8HAEtBA,GAAuB,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,EACjG,IAAIsB,EAAmBjsE,EAAKiB,UAAU,qCAClCirE,EAAelsE,EAAKiB,UAAU,0BAC9BkrE,EAAensE,EAAKiB,UAAU,0BAClC8pE,EAAuB,WAAE,CAACkB,EAAkBC,EAAcC,IAC1DvB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBChD9P,IAAIH,EAAM,EAAQ,QAiDlBvwD,EAAOC,QA/CP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA8CiI,OA9C7H,SAAU1qE,GAAO+qE,EAAsB,UAAIJ,EAAa,SAASmB,EAASC,EAAkB/rE,GAChMqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAA7D,IACI+wB,EAAkBhsE,GAAQA,EAAKua,KAAOva,EAAKua,IAAI,uCAA2Cva,GAAQA,EAAKiB,WAAajB,EAAKiB,UAAU,uCAA0C,KACjL2pE,EAAWA,yDAAsFH,EAAI/pB,KAAK,QAASorB,GAAS,GAAM,GAAMrB,EAAI/pB,KAAK,aAAa,GAAM,GAAM,GAAM,qGAAyG+pB,EAAI/pB,KAAK,aAAcsrB,EAAiBA,EAAe/nD,QAAQ,WAAY8nD,GAAoBA,GAAkB,GAAM,GAAS,OACzZ,EACAhB,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,EAAWA,EAAY,wXAAqhBH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,gDAAkD,GAAK0pE,GAAe,0HAAwNF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,yBAA2B,GAAK0pE,GAC18BI,EAAsB,UAAE,2CAA4C/qE,EAAKiB,UAAU,wBAAyBjB,GAC5G4qE,EAAWA,EAAY,qNAA6QH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,+BAAiC,GAAK0pE,GAAe,+KAAmQF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,6BAA+B,GAAK0pE,GAAe,uKAA+NF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,uBAAyB,GAAK0pE,GAAe,4QAAyYF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,UAAY,GAAK0pE,GAAe,gVAAweF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,wBAA0B,GAAK0pE,GAC3jEI,EAAsB,UAAE,2CAA4C/qE,EAAKiB,UAAU,uBAAwBjB,GAC3G4qE,GAAsB,8HAEtBA,GAAuB,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,EACjG,IAAIsB,EAAmBjsE,EAAKiB,UAAU,wCAClCirE,EAAelsE,EAAKiB,UAAU,0BAC9BkrE,EAAensE,EAAKiB,UAAU,0BAClC8pE,EAAuB,WAAE,CAACkB,EAAkBC,EAAcC,IAC1DvB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBChD9P,IAAIH,EAAM,EAAQ,QAiDlBvwD,EAAOC,QA/CP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA8CiI,OA9C7H,SAAU1qE,GAAO+qE,EAAsB,UAAIJ,EAAa,SAASmB,EAASC,EAAkB/rE,GAChMqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAA7D,IACI+wB,EAAkBhsE,GAAQA,EAAKua,KAAOva,EAAKua,IAAI,uCAA2Cva,GAAQA,EAAKiB,WAAajB,EAAKiB,UAAU,uCAA0C,KACjL2pE,EAAWA,yDAAsFH,EAAI/pB,KAAK,QAASorB,GAAS,GAAM,GAAMrB,EAAI/pB,KAAK,aAAa,GAAM,GAAM,GAAM,qGAAyG+pB,EAAI/pB,KAAK,aAAcsrB,EAAiBA,EAAe/nD,QAAQ,WAAY8nD,GAAoBA,GAAkB,GAAM,GAAS,OACzZ,EACAhB,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,EAAWA,EAAY,wXAAqhBH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,8CAAgD,GAAK0pE,GAAe,0HAAwNF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,yBAA2B,GAAK0pE,GACx8BI,EAAsB,UAAE,yCAA0C/qE,EAAKiB,UAAU,wBAAyBjB,GAC1G4qE,EAAWA,EAAY,wLAAgPH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,+BAAiC,GAAK0pE,GAAe,kJAAsOF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,6BAA+B,GAAK0pE,GAAe,uKAA+NF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,uBAAyB,GAAK0pE,GAAe,4QAAyYF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,UAAY,GAAK0pE,GAAe,gVAAweF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,wBAA0B,GAAK0pE,GACjgEI,EAAsB,UAAE,yCAA0C/qE,EAAKiB,UAAU,uBAAwBjB,GACzG4qE,GAAsB,8HAEtBA,GAAuB,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,EACjG,IAAIsB,EAAmBjsE,EAAKiB,UAAU,sCAClCirE,EAAelsE,EAAKiB,UAAU,0BAC9BkrE,EAAensE,EAAKiB,UAAU,0BAClC8pE,EAAuB,WAAE,CAACkB,EAAkBC,EAAcC,IAC1DvB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBChD9P,IAAIH,EAAM,EAAQ,QAwClBvwD,EAAOC,QAtCP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EAqCiI,OArC7H,SAAU1qE,GAAO+qE,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC/K/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,EAAWA,EAAW,4UAAueH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,uCAAyC,GAAK0pE,GAAe,6KAA6QF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,kDAAoD,GAAK0pE,GAAe,qHAAmNF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,6CAA+C,GAAK0pE,GAAe,uCAErzCC,GAAuB,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,EACjG,IAAIsB,EAAmBjsE,EAAKiB,UAAU,qCAClCirE,EAAelsE,EAAKiB,UAAU,0BAC9BkrE,EAAensE,EAAKiB,UAAU,0BAClC8pE,EAAuB,WAAE,CAACkB,EAAkBC,EAAcC,IAC1DvB,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBCvC9P,IAAIH,EAAM,EAAQ,QAGlBvwD,EAAOC,QADP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAAgsC,OAA5rC,SAAU1qE,EAAMggD,GAAY4qB,EAAWA,EAAW,0GAAyIH,EAAIK,OAAO,OAASH,EAAa3qB,EAAU8Q,oBAAsB,GAAK6Z,GAAe,iGAAmIF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,4BAA8B,GAAK0pE,GAAe,wDAAwFF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,oBAAsB,GAAK0pE,GAAe,4HAAyLF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,mBAAqB,GAAK0pE,GAAe,iBAAgD,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,EAAU,cAAeolE,EAAgBA,EAAgB7qB,UAA6B,qBAAZA,UAAwBA,eAAUv6C,GAAoBmlE,CAAS,C,yBCF7zC,IAAIH,EAAM,EAAQ,QA8BlBvwD,EAAOC,QA5BP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA2BiI,OA3B7H,SAAU1qE,GAAO+qE,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC/K/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,mUAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,mTACtB,EACAA,EAAWA,EAAY,gLAA4P,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAC7V,IAAIa,EAAUxrE,EAAKiB,UAAU,8CACzBwqE,EAAUzrE,EAAKiB,UAAU,4CAC7B8pE,EAAuB,WAAE,CAACS,EAASC,IACnCb,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBC7B9P,IAAIH,EAAM,EAAQ,QA8DlBvwD,EAAOC,QA5DP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EA2D6O,OA3DzO,SAAU1qE,EAAMggD,GAAY+qB,EAAwB,YAAIJ,EAAa,SAASK,GAClL3xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,GAAsB,ikBAErB,WACC,IAAIK,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,GAAsB,yaACtB,EACAG,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC7C/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIy5D,EAAa,EAAGF,EAAMF,EAAMr5D,OAAQy5D,EAAaF,EAAKE,IAAc,CAC3E,IAAI5J,EAASwJ,EAAMI,GAC3BT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAIE,KAAcJ,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMI,GACzBT,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAA,GAAsB,qMACtB,IAAIY,EAAUxrB,EAAUma,mBACpBsR,EAAUzrE,EAAKiB,UAAU,2CACzByqE,EAAU1rE,EAAKiB,UAAU,uCAC7B8pE,EAAwB,YAAE,CAACS,EAASC,EAASC,IAC7CX,EAAuB,WAAE,CAACS,IAAU,GACpCZ,EAAWA,GAAY,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,EAAU,cAAeolE,EAAgBA,EAAgB7qB,UAA6B,qBAAZA,UAAwBA,eAAUv6C,GAAoBmlE,CAAS,C,yBC7D1W,IAAIH,EAAM,EAAQ,QA2ClBvwD,EAAOC,QAzCP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAIG,EAAa,CAAC,EAAmBF,EAAmBH,GAAU,CAAC,EAwC8J,OAxC1J,SAAU1qE,GAAO+qE,EAAuB,WAAIJ,EAAa,SAASK,EAASI,GAC/K/xD,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAC7D2vB,EAAWA,EAAW,4wBAAkhCH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,2HAElpC,WACC,IAAIM,EAAQD,EACZ,GAAI,iBAAmBC,EAAMr5D,OACzB,IAAK,IAAIs5D,EAAa,EAAGC,EAAMF,EAAMr5D,OAAQs5D,EAAaC,EAAKD,IAAc,CAC3E,IAAIzJ,EAASwJ,EAAMC,GAC3BN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC3O,KACG,CACDQ,EAAM,EACV,IAAK,IAAID,KAAcD,EAAO,CAC5BE,IACI1J,EAASwJ,EAAMC,GACzBN,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAalJ,GAAU,GAAKkJ,GAAe,iBAC7O,CACF,CACD,EAAExuD,KAAK9C,MAERuxD,EAAWA,EAAW,qHAA4JH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,qCAAuC,GAAK0pE,GAAe,wiBAE7RC,GADIQ,EACkB,wCAGA,wCAEtBR,GAAsB,2QACtB,EACAG,EAAsB,UAAIJ,EAAa,SAASmB,EAASC,EAAkB/rE,GAC9DqZ,MAAQA,KAAKusD,MAAsBvsD,MAAQA,KAAK4hC,WAA7D,IACI+wB,EAAkBhsE,GAAQA,EAAKua,KAAOva,EAAKua,IAAI,uCAA2Cva,GAAQA,EAAKiB,WAAajB,EAAKiB,UAAU,uCAA0C,KACjL2pE,EAAWA,yDAAsFH,EAAI/pB,KAAK,QAASorB,GAAS,GAAM,GAAMrB,EAAI/pB,KAAK,aAAa,GAAM,GAAM,GAAM,qGAAyG+pB,EAAI/pB,KAAK,aAAcsrB,EAAiBA,EAAe/nD,QAAQ,WAAY8nD,GAAoBA,GAAkB,GAAM,GAAS,OACzZ,EACAnB,EAAWA,EAAW,geAA2nBH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,yCAA2C,GAAK0pE,GAAe,UAChwBI,EAAsB,UAAE,wBAAyB/qE,EAAKiB,UAAU,wCAAyCjB,GACzG4qE,EAAWA,EAAW,8DAAgI,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,qCAC9O,IAAIyB,EAAiBpsE,EAAKiB,UAAU,sCACpC8pE,EAAuB,WAAE,CAACqB,IAC1BxB,EAAWA,EAAW,wBAA8B,OAASD,EAAa,eAA8BtxD,KAAMqxD,IAAW,GAAKC,GAAc,QAAwB,EAAExuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,GAAoBmlE,CAAS,C,yBC1C3R,IAAIH,EAAM,EAAQ,QASlBvwD,EAAOC,QAPP,SAAkBuwD,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAMwK,OANpK,SAAU1qE,EAAMqsE,GAAiBzB,GAAsB,0EACxK,IAAIlyD,EAAO,mCAAqC1Y,EAAKiB,UAAU,8BAAgC,OAC/F2pE,EAAWA,EAAW,2UAA6c,OAASD,EAAa3qE,EAAKiB,UAAU,wCAAwCgjB,QAAQ,MAAOvL,IAAS,GAAKiyD,GAAc,8DAA8FF,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,6BAA+B,GAAK0pE,GAAe,YACxxB0B,IACJzB,EAAWA,EAAW,sDAAuEH,EAAIK,OAAO,OAASH,EAAa3qE,EAAKiB,UAAU,wBAA0B,GAAK0pE,GAAe,aAE3LC,GAAsB,QAAwB,EAAEzuD,KAAK9C,KAAK,SAAUwxD,EAAgBA,EAAgB7qE,KAAmB,qBAAPA,KAAmBA,UAAKyF,EAAU,mBAAoBolE,EAAgBA,EAAgBwB,eAAuC,qBAAjBA,eAA6BA,oBAAe5mE,GAAoBmlE,CAAS,C,yBCR3R,EAAQ,QAGlB1wD,EAAOC,QADP,SAAkBuwD,GAAS,IAAIE,EAAW,GAA0S,OAA1QA,GAAsB,6JAAoQ,C","sources":["../../../node_modules/@bingads-webui-react/ad-rotation/src/constants.js","../../../node_modules/@bingads-webui-react/ad-rotation/src/validated-ad-rotation.js","../../../node_modules/@bingads-webui-react/ad-rotation/src/ad-rotation-section.js","../../../node_modules/@bingads-webui-react/budget-control/src/budget-input.js","../../../node_modules/@bingads-webui-react/budget-control/src/estimated-monthly-budget.js","../../../node_modules/@bingads-webui-react/budget-control/src/competitor-slider-view.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/close-icon-button.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/header.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/buttons.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/redemption-step.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/ui-blocker.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/days-remaining.js","../../../node_modules/@bingads-webui-react/fac-callout/src/utils.js","../../../node_modules/@bingads-webui-react/fac-callout/src/components/coupon-description.js","../../../node_modules/@bingads-webui-react/fac-callout/src/frontdoor.js","../../../node_modules/@bingads-webui-react/fac-callout/src/not-interested.js","../../../node_modules/@bingads-webui-react/fac-callout/src/remind-later.js","../../../node_modules/@bingads-webui-react/fac-callout/src/claimed.js","../../../node_modules/@bingads-webui-react/fac-callout/src/use-hide-callout-preference.js","../../../node_modules/@bingads-webui-react/fac-callout/src/index.js","../../../node_modules/@bingads-webui-react/fac-callout/src/i18n/legacy-keys.js","../../../node_modules/@bingads-webui-react/fac-callout/src/configs/steps.js","../../../node_modules/@bingads-webui-react/fac-callout/src/view.js","../../../node_modules/@bingads-webui-react/overreact-odata/index.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/core.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/lodash.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/reflection.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/registry.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/resource-identifiers.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/schema-plugin.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/types-plugin.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/edm/url-util.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/helpers/compose-search-string.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/helpers/parse-search.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/hooks/use-odata-call.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/hooks/use-odata-coll.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/hooks/use-odata-entity.js","../../../node_modules/@bingads-webui-react/overreact-odata/src/hooks/use-specs.js","../../../node_modules/@bingads-webui-react/overreact/src/environment/context.js","../../../node_modules/@bingads-webui-react/overreact/src/data-fetcher/index.js","../../../node_modules/@bingads-webui-react/overreact/src/utils/observer-pattern/subject.js","../../../node_modules/@bingads-webui-react/overreact/src/store/schema-extension/data-ref.js","../../../node_modules/@bingads-webui-react/overreact/src/store/schema-extension/data-node.js","../../../node_modules/@bingads-webui-react/overreact/src/store/schema-extension/schema-extension.js","../../../node_modules/@bingads-webui-react/overreact/src/store/record.js","../../../node_modules/@bingads-webui-react/overreact/src/store/consts.js","../../../node_modules/@bingads-webui-react/overreact/src/store/record-group.js","../../../node_modules/@bingads-webui-react/overreact/src/store/store.js","../../../node_modules/@bingads-webui-react/overreact/src/store/record-group-helper.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/spec-types.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-types.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/fetch-policy/fetch-policy-utils.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/fetch-policy/fetch-policy-middleware.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/middleware-types.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/request-with-middleware.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/wrapped-requestor.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/error/error-middleware.js","../../../node_modules/@bingads-webui-react/overreact/src/utils/primitive-utilities/date.js","../../../node_modules/@bingads-webui-react/overreact/src/utils/primitive-utilities/primitive-hooks.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/instrumentation/instrumentation-utils.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/instrumentation/instrumentation-context.js","../../../node_modules/@bingads-webui-react/overreact/src/middleware/instrumentation/instrumentation-middleware.js","../../../node_modules/@bingads-webui-react/overreact/src/environment/environment.js","../../../node_modules/@bingads-webui-react/overreact/src/environment/use-environment.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/request-verbs.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/request-contract.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-handler/sideEffectFnHelper.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-contract.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-handler/fetch.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-handler/mutation.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-handler/refetch.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/response-handler/error.js","../../../node_modules/@bingads-webui-react/overreact/src/spec/spec.js","../../../node_modules/@bingads-webui-react/overreact/src/schema/schema-node.js","../../../node_modules/@bingads-webui-react/overreact/src/schema/index.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/overreact-request.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/lookup-cache.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/helper.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-component.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-fetch.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/merge-config.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-mutation.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-refetch.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-pagination.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-data-ref-id.js","../../../node_modules/@bingads-webui-react/overreact/src/hooks/use-promisify.js","../../../node_modules/@bingads-webui-react/overreact/src/test-utils/use-clean-all-cache.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/exclusion-errors.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/ip-exclusions.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/styles/site-exclusion-note-style.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/site-exclusions-note.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/site-exclusions.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/web-exclusions.js","../../../node_modules/@bingads-webui-react/web-exclusions/util/web-exclusions.util.ts","../../../node_modules/@bingads-webui-react/web-exclusions/src/server-validated-web-exclusions.js","../../../node_modules/@bingads-webui-react/web-exclusions/src/web-exclusions-section.js","../../../node_modules/@bingads-webui-react/with-props/src/with-props.js","../../../node_modules/@bingads-webui-react/with-raw-styles/index.js","../../../node_modules/@bingads-webui-static-legacy/ad-constants/adConstants.js","../../../node_modules/@bingads-webui-static-legacy/api-error-mapper-service/apiErrorMapper.js","../../../node_modules/@bingads-webui-static-legacy/app/router/lib/url.js","../../../node_modules/@bingads-webui-static-legacy/async-scheduler/asyncScheduler.js","../../../node_modules/@bingads-webui-static-legacy/app/config/template.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/bulkEdit/bulkEditRepository.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/campaign/changeBudget.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/campaign/changeCashbackBudget.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/campaign/changeCashbackPercent.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/campaign/changeStatus.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/shared/changeBiddingStrategy.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/shared/changeRsaAutoAssets.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/bulkEdit/jobStatePoller.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit-cache-service/BulkEditCacheService.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/campaign/changeBudget.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/campaign/changeBudget.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/campaign/changeCashbackBudget.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/campaign/changeCashbackBudget.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/campaign/changeCashbackPercent.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/campaign/changeStatus.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/campaign/changeStatus.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/copypaste/copyPaste.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/copypaste/copyPaste.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/copypaste/copyPaste.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/copyPaste.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/filterHelper.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/model/label/association.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/label/association.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/label/association.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/shared/changeBiddingStrategy.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/shared/changeBiddingStrategy.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/shared/changeRsaAutoAssets.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/view/shared/changeRsaAutoAssets.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/viewmodel/shared/changeCashbackPercent.js","../../../node_modules/@bingads-webui-static-legacy/communication/adapter/odata-4.js","../../../node_modules/@bingads-webui-static-legacy/constants/index.js","../../../node_modules/@bingads-webui-static-legacy/directive/help.js","../../../node_modules/@bingads-webui-static-legacy/legacy/summary/InlineBudgetEditor.js","../../../node_modules/@bingads-webui-static-legacy/odata-filter-converter/odataFilterConverter.js","../../../node_modules/@bingads-webui-static-legacy/popup/popup.js","../../../node_modules/@bingads-webui-static-legacy/schema/bulkEdit/changeBidActions.js","../../../node_modules/@bingads-webui-static-legacy/schema/bulkEdit/changeBudgetActions.js","../../../node_modules/@bingads-webui-static-legacy/schema/bulkEdit/numericActionType.js","../../../node_modules/@bingads-webui-static-legacy/schema/bulkEdit/resultsStatus.js","../../../node_modules/@bingads-webui-static-legacy/schema/bulkEdit/status.js","../../../node_modules/@bingads-webui-static-legacy/schema/campaign/budgetTypes.js","../../../node_modules/@bingads-webui-static-legacy/schema/campaign/status.js","../../../node_modules/@bingads-webui-static-legacy/shared/view/gridHelper.js","../../../node_modules/@bingads-webui-static-legacy/uservoice-service/uservoice.js","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/campaign/actionLink.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/campaign/association.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/campaign/changeBudget.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/campaign/changeCashbackBudget.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/campaign/changeCashbackPercent.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/campaign/changeStatus.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteAd.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteAdGroup.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteAssetGroup.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteCampaign.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteKeyword.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/footer.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/label/association.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/shared/changeBiddingStrategy.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/shared/changeRsaAutoAssets.pug","../../../node_modules/@bingads-webui-static-legacy/bulk-edit/template/status.pug","../../../node_modules/@bingads-webui-static-legacy/shared/template/popup.pug"],"sourcesContent":["export const ROTATION_OPTIONS = Object.freeze({\r\n OPTIMIZED_FOR_CLICKS: 'OptimizeForClicks',\r\n ROTATE_ADS_EVENLY: 'RotateAdsEvenly',\r\n});\r\n\r\nexport const ROTATION_OPTION_TO_TEXT = Object.freeze({\r\n [ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS]: _TL_('Optimize - prioritize ads that perform well'),\r\n [ROTATION_OPTIONS.ROTATE_ADS_EVENLY]: _TL_('Rotate ads more evenly - include all ads, even those with a lower CTR'),\r\n});\r\n\r\nexport const RotationItems = [\r\n { id: ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS, text: ROTATION_OPTION_TO_TEXT[ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS] },\r\n { id: ROTATION_OPTIONS.ROTATE_ADS_EVENLY, text: ROTATION_OPTION_TO_TEXT[ROTATION_OPTIONS.ROTATE_ADS_EVENLY] },\r\n];\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { MessageBar, MessageBarBody } from '@fluentui/react-message-bar';\r\nimport { RadioGroupLite } from '@bingads-webui-react/primitive-validation-fluent';\r\nimport { Radio } from '@fluentui/react-components';\r\n\r\nimport { ROTATION_OPTIONS, RotationItems } from './constants';\r\n\r\nexport const ValidatedAdRotation = ({ value, field, disableOptions }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n
\r\n \r\n \r\n {RotationItems.map(option => (\r\n \r\n ))\r\n }\r\n \r\n \r\n \r\n {i18n.getString(_TL_('This ad rotation setting will be ignored if you use an automated bidding bid strategy, as automated bidding prioritizes better-performing ads.'))}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nValidatedAdRotation.propTypes = {\r\n value: PropTypes.string,\r\n field: PropTypes.string.isRequired,\r\n disableOptions: PropTypes.bool,\r\n};\r\n\r\nValidatedAdRotation.defaultProps = {\r\n value: ROTATION_OPTIONS.OPTIMIZED_FOR_CLICKS,\r\n disableOptions: false,\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { TextTitle, getPanelErrorProps, ValidatedPanel } from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { ValidatedAdRotation } from './validated-ad-rotation';\r\nimport adRotationIcon from './ad-rotation.svg';\r\nimport { ROTATION_OPTION_TO_TEXT } from './constants';\r\n\r\nexport const AdRotationSection = ({ data, disableOptions, ...rest }) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n {...rest}\r\n >\r\n \r\n {i18n.getString(_TL_('Which ads do you want to show?'))}\r\n \r\n {\r\n data &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nAdRotationSection.propTypes = {\r\n data: PropTypes.shape({\r\n AdRotation: PropTypes.string,\r\n }).isRequired,\r\n disableOptions: PropTypes.bool,\r\n};\r\n\r\nAdRotationSection.defaultProps = {\r\n disableOptions: false,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport { Stack } from '@fluentui/react';\r\nimport { ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { Input } from '@bingads-webui-react/primitive-with-validation-and-signal';\r\nimport {\r\n Dropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n MenuItem,\r\n} from '@bingads-webui-react/primitive';\r\n\r\nexport const BudgetInput = ({\r\n budgetTitle,\r\n classes,\r\n showDropdown,\r\n i18n,\r\n legacyI18n,\r\n onBudgetInputValidate,\r\n onBudgetChange,\r\n validationKey,\r\n value,\r\n validationProps,\r\n RANGE_STEP,\r\n schema,\r\n isCurrencyDisabled,\r\n onSelectCurrency,\r\n selectedCurrencyText,\r\n currencies,\r\n onRenderInlineHelp,\r\n onRenderCurrencyDropDown,\r\n inputClassName,\r\n}) => {\r\n const showCurrencyOnly = useMemo(() => (\r\n
\r\n {selectedCurrencyText}\r\n
), [classes, selectedCurrencyText]);\r\n\r\n const displayCurrencySelection = useMemo(\r\n () => (\r\n
\r\n
\r\n \r\n {selectedCurrencyText}\r\n \r\n {\r\n _.map(currencies, itemValue => (\r\n \r\n {itemValue.currencyLocalizationKey}\r\n \r\n ))\r\n }\r\n \r\n \r\n
\r\n
\r\n ),\r\n [classes.dropdownContainer, classes.inline, isCurrencyDisabled, onSelectCurrency, selectedCurrencyText, currencies]\r\n );\r\n return (\r\n <>\r\n
\r\n \r\n {\r\n // eslint-disable-next-line jsx-a11y/label-has-for\r\n \r\n }\r\n {onRenderInlineHelp && onRenderInlineHelp()}\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n {\r\n // eslint-disable-next-line no-nested-ternary\r\n showDropdown ? (onRenderCurrencyDropDown ? onRenderCurrencyDropDown({ onSelectCurrency }) : displayCurrencySelection) : showCurrencyOnly\r\n }\r\n
\r\n \r\n );\r\n};\r\nBudgetInput.propTypes = {\r\n showDropdown: PropTypes.bool,\r\n budgetTitle: PropTypes.string,\r\n classes: PropTypes.shape({\r\n budgetDetailsContainer: PropTypes.string,\r\n budgetInputContainer: PropTypes.string,\r\n budgetTitle: PropTypes.string,\r\n currencyText: PropTypes.string,\r\n dropdownContainer: PropTypes.string,\r\n inline: PropTypes.string,\r\n inputText: PropTypes.string,\r\n }),\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n legacyI18n: PropTypes.shape({}).isRequired,\r\n onBudgetInputValidate: PropTypes.func.isRequired,\r\n onBudgetChange: PropTypes.func.isRequired,\r\n validationKey: PropTypes.string.isRequired,\r\n value: PropTypes.string.isRequired,\r\n validationProps: PropTypes.shape({}).isRequired,\r\n RANGE_STEP: PropTypes.number.isRequired,\r\n schema: PropTypes.shape({}).isRequired,\r\n isCurrencyDisabled: PropTypes.bool.isRequired,\r\n onSelectCurrency: PropTypes.func.isRequired,\r\n selectedCurrencyText: PropTypes.string.isRequired,\r\n currencies: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n onRenderInlineHelp: PropTypes.func,\r\n onRenderCurrencyDropDown: PropTypes.func,\r\n inputClassName: PropTypes.string,\r\n};\r\n\r\nBudgetInput.defaultProps = {\r\n showDropdown: false,\r\n budgetTitle: undefined,\r\n classes: {},\r\n onRenderInlineHelp: null,\r\n onRenderCurrencyDropDown: null,\r\n inputClassName: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\n\r\nexport const EstimatedMonthlyBudget = ({\r\n classes, i18n, value, selectedCurrencyText,\r\n}) => (\r\n
\r\n {i18n.getString(\r\n _TL_('Estimated monthly budget: {{value}} {{currency}}'),\r\n {\r\n value,\r\n currency: selectedCurrencyText,\r\n }\r\n )}\r\n
\r\n);\r\n\r\nEstimatedMonthlyBudget.propTypes = {\r\n classes: PropTypes.shape({\r\n budgetMonthly: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n value: PropTypes.number.isRequired,\r\n selectedCurrencyText: PropTypes.string.isRequired,\r\n};\r\n\r\n","import React, { memo, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n\r\nconst getCompRangeWidth = (budgetSuggestion) => {\r\n const {\r\n MinimumBudget,\r\n CompetitorBudgetLowerBound,\r\n CompetitorBudgetUpperBound,\r\n MaximumBudget,\r\n } = budgetSuggestion;\r\n\r\n return (((CompetitorBudgetUpperBound.DailyBudget -\r\n CompetitorBudgetLowerBound.DailyBudget) /\r\n (MaximumBudget.DailyBudget - MinimumBudget.DailyBudget)) * 100);\r\n};\r\n\r\nconst getCompRangePosition = (budgetSuggestion) => {\r\n const {\r\n MinimumBudget,\r\n CompetitorBudgetLowerBound,\r\n MaximumBudget,\r\n } = budgetSuggestion;\r\n\r\n return (((CompetitorBudgetLowerBound.DailyBudget - MinimumBudget.DailyBudget) /\r\n (MaximumBudget.DailyBudget - MinimumBudget.DailyBudget)) * 100);\r\n};\r\n\r\nexport const CompetitorSliderView = memo((props) => {\r\n const {\r\n budgetSuggestion,\r\n classes,\r\n onRenderInlineHelp,\r\n } = props;\r\n const {\r\n CompetitorBudgetLowerBound,\r\n CompetitorBudgetUpperBound,\r\n } = budgetSuggestion;\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const competitorExists = !_.isEmpty(CompetitorBudgetLowerBound) && !_.isEmpty(CompetitorBudgetUpperBound);\r\n\r\n if (competitorExists) {\r\n const rawWidth = getCompRangeWidth(budgetSuggestion);\r\n const rawLeft = getCompRangePosition(budgetSuggestion);\r\n const width = `${rawWidth}%`;\r\n const left = `${rawLeft}%`;\r\n\r\n let inlineHelpStyle;\r\n const inlineHelpRight = rawLeft + 47; // 47%: upper(186/404)\r\n\r\n if (inlineHelpRight > 100) {\r\n // too right\r\n inlineHelpStyle = {\r\n width: '100%',\r\n textAlign: 'right',\r\n };\r\n } else {\r\n inlineHelpStyle = {\r\n left,\r\n textAlign: 'left',\r\n };\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {i18n.getString(_TL_('Daily budget range for similar businesses'))}\r\n {onRenderInlineHelp && onRenderInlineHelp()}\r\n \r\n );\r\n }\r\n\r\n return null;\r\n});\r\n\r\nCompetitorSliderView.propTypes = {\r\n budgetSuggestion: PropTypes.shape({\r\n MinimumBudget: PropTypes.shape({\r\n DailyBudget: PropTypes.number.isRequired,\r\n }).isRequired,\r\n CompetitorBudgetLowerBound: PropTypes.shape({\r\n DailyBudget: PropTypes.number.isRequired,\r\n }),\r\n CompetitorBudgetUpperBound: PropTypes.shape({\r\n DailyBudget: PropTypes.number.isRequired,\r\n }),\r\n MaximumBudget: PropTypes.shape({\r\n DailyBudget: PropTypes.number.isRequired,\r\n }).isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape({\r\n sliderOverlay: PropTypes.string.isRequired,\r\n competitorHelpIndicator: PropTypes.string.isRequired,\r\n competitorHelpText: PropTypes.string.isRequired,\r\n }).isRequired,\r\n onRenderInlineHelp: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { IconButton } from '@bingads-webui-react/fabric-control';\r\n\r\nconst iconButtonStyles = {\r\n root: {\r\n color: '#424242',\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n};\r\n\r\nconst cancelIcon = { iconName: 'Cancel' };\r\n\r\nexport const CloseIconButton = ({ closeButtonAriaLabel, onClick }) => (\r\n \r\n);\r\n\r\nCloseIconButton.propTypes = {\r\n onClick: PropTypes.func.isRequired,\r\n closeButtonAriaLabel: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, Stack } from '@bingads-webui-react/fabric-control';\r\nimport { CloseIconButton } from './close-icon-button';\r\n\r\nconst headerTextStyles = mergeStyles({\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: 20,\r\n lineHeight: 26,\r\n});\r\n\r\nexport const Header = ({ text, onCloseButtonClick, i18n }) => (\r\n \r\n
\r\n {text}\r\n
\r\n {onCloseButtonClick && }\r\n
\r\n);\r\n\r\nHeader.propTypes = {\r\n text: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n onCloseButtonClick: PropTypes.func,\r\n};\r\n\r\nHeader.defaultProps = {\r\n onCloseButtonClick: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles, DefaultButton as FluentDefaultButton, PrimaryButton as FluentPrimaryButton } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\n\r\nconst buttonStyles = mergeStyles({\r\n height: 32,\r\n});\r\n\r\nconst withCustomStyle = (Component) => {\r\n const ComponentWithStyles = (props) => {\r\n const { className } = props;\r\n return (\r\n <>\r\n \r\n \r\n );\r\n };\r\n\r\n ComponentWithStyles.propTypes = {\r\n className: PropTypes.string,\r\n };\r\n\r\n ComponentWithStyles.defaultProps = {\r\n className: null,\r\n };\r\n\r\n return ComponentWithStyles;\r\n};\r\n\r\nexport const DefaultButton = withCustomStyle(FluentDefaultButton);\r\nexport const PrimaryButton = withCustomStyle(FluentPrimaryButton);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classNames from 'classnames';\r\nimport { Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\n\r\nconst redemptionStepStyles = mergeStyles({\r\n width: 252,\r\n});\r\n\r\nconst iconStyles = mergeStyles({\r\n height: 100,\r\n marginBottom: 20,\r\n});\r\n\r\nconst stepStyles = mergeStyles({\r\n fontWeight: 'bold',\r\n});\r\n\r\nexport const RedemptionStep = ({\r\n stepNumber, icon, description, i18n,\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {i18n.getString('Coupon_LightboxStepNumberNew', { stepNumber })}\r\n {description}\r\n \r\n \r\n);\r\n\r\nRedemptionStep.propTypes = {\r\n description: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n icon: PropTypes.node.isRequired,\r\n stepNumber: PropTypes.number.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, mergeStyles, Spinner, SpinnerSize } from '@bingads-webui-react/fabric-control';\r\n\r\nconst blockUiContainer = mergeStyles({\r\n position: 'absolute',\r\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n zIndex: 1010,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n cursor: 'wait',\r\n});\r\n\r\nconst blockUiOverlay = mergeStyles({\r\n width: '100%',\r\n height: '100%',\r\n});\r\n\r\nconst reactBlockUi = mergeStyles({\r\n position: 'relative',\r\n minHeight: '2em',\r\n});\r\n\r\nexport const UiBlocker = (props) => {\r\n const {\r\n blocking,\r\n children,\r\n loadingText,\r\n } = props;\r\n\r\n return (\r\n
\r\n {children}\r\n {blocking &&\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n );\r\n};\r\n\r\nUiBlocker.propTypes = {\r\n blocking: PropTypes.bool.isRequired,\r\n children: PropTypes.node.isRequired,\r\n loadingText: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { mergeStyles } from '@fluentui/react';\r\n\r\nconst couponDaysLeftStyles = mergeStyles({\r\n fontWeight: 'bold',\r\n});\r\n\r\nexport const DaysRemaining = ({ i18n, diffDays }) =>\r\n (\r\n \r\n {diffDays === 1\r\n ? i18n.getString('RemindLater_Description_Expiration_OneDay')\r\n : i18n.getString('RemindLater_Description_Expiration', { diffDays })}\r\n \r\n );\r\n\r\nDaysRemaining.propTypes = {\r\n diffDays: PropTypes.number.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","export const getDaysToExpiration = (expirationDateString) => {\r\n const expirationDate = Date.parse(expirationDateString);\r\n const today = Date.now();\r\n const diff = Math.abs(expirationDate - today);\r\n return Math.ceil(diff / (1000 * 60 * 60 * 24));\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { RedemptionStep } from '../components';\r\nimport { DaysRemaining } from './days-remaining';\r\nimport { getDaysToExpiration } from '../utils';\r\n\r\nconst redemptionStepsStyles = mergeStyles({\r\n marginTop: 16,\r\n marginBottom: 36,\r\n});\r\n\r\nconst couponTermsStyles = mergeStyles({\r\n marginBottom: 36,\r\n});\r\n\r\nexport const CouponDescription = ({ coupon, i18n, steps }) => {\r\n const daysToExpiration = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n const displayDaysLeft = useMemo(() => daysToExpiration <= 14, [daysToExpiration]);\r\n\r\n return (\r\n <>\r\n \r\n {steps.map(step => (\r\n \r\n ))}\r\n \r\n
\r\n {i18n.getString('Coupon_Lightbox_LimitedTimeOffer_ActBy', coupon)}\r\n {' '}\r\n {displayDaysLeft && }\r\n
\r\n \r\n );\r\n};\r\n\r\nCouponDescription.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n icon: PropTypes.string,\r\n description: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { Header, CouponDescription, DefaultButton, PrimaryButton } from './components';\r\nimport { getDaysToExpiration } from './utils';\r\n\r\nconst rightHandButtonsStackTokens = {\r\n childrenGap: 8,\r\n};\r\n\r\nexport const Frontdoor = ({\r\n coupon, onNotInterested, onDismiss, onActivate, onRemindLater, i18n, steps,\r\n}) => {\r\n const title = i18n.getString(\r\n coupon.couponLightboxTitle || 'Coupon_LightboxTitleNew',\r\n coupon\r\n );\r\n\r\n const daysToExpiration = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n const displayRemindLater = useMemo(() => daysToExpiration >= 7, [daysToExpiration]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {displayRemindLater && }\r\n \r\n \r\n
);\r\n};\r\n\r\nFrontdoor.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n couponLightboxTitle: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActivate: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onNotInterested: PropTypes.func.isRequired,\r\n onRemindLater: PropTypes.func.isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n description: PropTypes.string,\r\n icon: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Link, Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { Header, DefaultButton } from './components';\r\n\r\nconst descriptionStyles = mergeStyles({\r\n minHeight: 60,\r\n marginTop: 16,\r\n marginBottom: 12,\r\n});\r\n\r\nexport const NotInterested = ({ i18n, onDismiss, couponDetailsUrl }) => (\r\n
\r\n
\r\n
\r\n {i18n.getString('Not_Interested_Description')}\r\n {' '}\r\n {couponDetailsUrl ? {i18n.getString('Coupon_Page')} : i18n.getString('Coupon_Page')}\r\n
\r\n \r\n \r\n \r\n
);\r\n\r\nNotInterested.propTypes = {\r\n couponDetailsUrl: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Link, Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { Header, DefaultButton, PrimaryButton, DaysRemaining } from './components';\r\nimport { getDaysToExpiration } from './utils';\r\n\r\nconst descriptionStyles = mergeStyles({\r\n minHeight: 60,\r\n marginTop: 16,\r\n marginBottom: 12,\r\n});\r\n\r\nconst confirmationButtonStyles = mergeStyles({\r\n marginRight: 8,\r\n});\r\n\r\nexport const RemindLater = ({\r\n coupon, onNotInterested, onActivate, onConfirm, onDismiss, i18n,\r\n}) => {\r\n const diffDays = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n {' '}\r\n {i18n.getString('RemindLater_Description_ActivationMessage_1')}\r\n {' '}\r\n {i18n.getString('RemindLater_Description_ActivationMessageLink')}\r\n {' '}\r\n {i18n.getString('RemindLater_Description_ActivationMessage_2')}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
);\r\n};\r\n\r\nRemindLater.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActivate: PropTypes.func.isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onNotInterested: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport classNames from 'classnames';\r\nimport { Header, CouponDescription, DefaultButton, PrimaryButton } from './components';\r\n\r\nconst confirmationButtonStyles = mergeStyles({\r\n marginRight: 8,\r\n});\r\n\r\nexport const Claimed = ({\r\n coupon, i18n, onConfirm, onDismiss, steps,\r\n}) => (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
);\r\n\r\nClaimed.propTypes = {\r\n coupon: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n description: PropTypes.string,\r\n icon: PropTypes.string,\r\n })).isRequired,\r\n};\r\n","import { useState, useEffect, useCallback, useMemo, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nconst CCUI_PREFERENCE_KEY = 18190;\r\n\r\nconst DISPLAY_CALLOUT_QUERY = 'displaycallout';\r\n\r\nconst buildCouponCalloutStateKey = (couponId, aid) => `coupon_callout_state_${couponId}_${aid}`;\r\n\r\nconst getDaysFromNow = (days) => {\r\n const date = new Date(Date.now());\r\n date.setDate(date.getDate() + days);\r\n\r\n return date;\r\n};\r\n\r\nexport const useHideCalloutPreference = ({\r\n coupon, userPreferenceService, scope = {}, legacyInstrumentation, scenarioName, refreshUserPreferencesCache = null,\r\n}) => {\r\n const [userPreferencesLoaded, setUserPreferencesLoaded] = useState(false);\r\n const [hideCalloutPreference, setHideCalloutPreference] = useState({});\r\n\r\n const { uid, aid } = scope.values;\r\n\r\n const instrumentation = useContext(InstrumentationContext);\r\n\r\n const { activity } = useMemo(() => {\r\n const finalInstrumentation = _.isEmpty(instrumentation) ? legacyInstrumentation : instrumentation;\r\n\r\n return finalInstrumentation.createScenarioAndActivity({\r\n scenarioName: scenarioName|| 'AutoBiddingCoupon',\r\n activityName: 'GetCouponPreference',\r\n });\r\n }, [instrumentation, legacyInstrumentation, scenarioName]);\r\n\r\n useEffect(() => {\r\n if (coupon) {\r\n userPreferenceService\r\n .findAll({ uid })\r\n .then((data) => {\r\n if (data && data.length) {\r\n setUserPreferencesLoaded(true);\r\n try {\r\n const userPreferences = _.find(data, userPreference => userPreference.upkey === CCUI_PREFERENCE_KEY);\r\n if (userPreferences && userPreferences.resultAsJsonString) {\r\n const preferenceJson = JSON.parse(decodeURIComponent(userPreferences.resultAsJsonString));\r\n const hideCouponCallout = buildCouponCalloutStateKey(coupon.id, aid);\r\n setHideCalloutPreference(preferenceJson[hideCouponCallout] ? JSON.parse(preferenceJson[hideCouponCallout]) : {});\r\n }\r\n } catch (e) {\r\n if (e instanceof SyntaxError) {\r\n activity.trace(`getUserPreference: resultAsJsonString JSON parse failed: ${e}`);\r\n } else {\r\n throw e;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }, [activity, aid, coupon, uid, userPreferenceService]);\r\n\r\n const setCalloutState = useCallback((stateData) => {\r\n const couponCalloutStateKey = buildCouponCalloutStateKey(coupon.id, aid);\r\n if (refreshUserPreferencesCache) {\r\n refreshUserPreferencesCache();\r\n }\r\n const data = { upkey: CCUI_PREFERENCE_KEY, data: JSON.stringify({ [couponCalloutStateKey]: JSON.stringify(stateData) }) };\r\n return userPreferenceService.create(data);\r\n }, [aid, coupon.id, userPreferenceService, refreshUserPreferencesCache]);\r\n\r\n const unhideCallout = useCallback(() => {\r\n const displayCouponCalloutData = {\r\n couponId: coupon && coupon.id,\r\n aid,\r\n hide: false,\r\n endDate: null,\r\n };\r\n\r\n return setCalloutState(displayCouponCalloutData);\r\n }, [aid, coupon, setCalloutState]);\r\n\r\n const hideCallout = useCallback((endDate) => {\r\n const hideCouponCalloutData = {\r\n couponId: coupon && coupon.id,\r\n aid,\r\n hide: true,\r\n endDate,\r\n };\r\n\r\n return setCalloutState(hideCouponCalloutData);\r\n }, [aid, coupon, setCalloutState]);\r\n\r\n const hideCalloutForEver = useCallback(() => hideCallout(null), [hideCallout]);\r\n\r\n const hideCalloutFor7Days = useCallback(() => hideCallout(getDaysFromNow(7)), [hideCallout]);\r\n\r\n const hideCalloutFor14Days = useCallback(() => hideCallout(getDaysFromNow(14)), [hideCallout]);\r\n\r\n const isPreferenceSetToHidden = useMemo(\r\n () => hideCalloutPreference.hide === true,\r\n [hideCalloutPreference]\r\n );\r\n\r\n const isAfterDismissEndDate = useMemo(\r\n () => hideCalloutPreference.endDate && Date.parse(hideCalloutPreference.endDate) < Date.now(),\r\n [hideCalloutPreference]\r\n );\r\n\r\n const isDisplayCalloutQuery = useMemo(() => {\r\n const displayQueryCallout = scope.values[DISPLAY_CALLOUT_QUERY];\r\n return displayQueryCallout === 1 || displayQueryCallout === 'true';\r\n }, [scope.values]);\r\n\r\n const isCalloutVisible = useMemo(\r\n () => isDisplayCalloutQuery || (userPreferencesLoaded && (!isPreferenceSetToHidden || (isPreferenceSetToHidden && isAfterDismissEndDate))),\r\n [isAfterDismissEndDate, isPreferenceSetToHidden, isDisplayCalloutQuery, userPreferencesLoaded]\r\n );\r\n\r\n useEffect(() => {\r\n if (isPreferenceSetToHidden && isDisplayCalloutQuery) {\r\n unhideCallout();\r\n }\r\n }, [unhideCallout, isDisplayCalloutQuery, isPreferenceSetToHidden]);\r\n\r\n return {\r\n isCalloutHidden: !isCalloutVisible,\r\n userPreferencesLoaded,\r\n hideCalloutPreference,\r\n hideCalloutForEver,\r\n hideCalloutFor7Days,\r\n hideCalloutFor14Days,\r\n activity,\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useState, useMemo, useEffect, useCallback, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Modal, mergeStyles } from '@bingads-webui-react/fabric-control';\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { withSiteMap, getRoutePathById, processorSet } from '@bingads-webui-react/with-site-map';\r\nimport URI from 'urijs';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { withLock } from '@bingads-webui-react/popup-manager';\r\nimport { Frontdoor } from './frontdoor';\r\nimport { NotInterested } from './not-interested';\r\nimport { RemindLater } from './remind-later';\r\nimport { Claimed } from './claimed';\r\nimport { useHideCalloutPreference } from './use-hide-callout-preference';\r\nimport { getDaysToExpiration } from './utils';\r\nimport RecommendationIcon from '../media/RecommendationIcon.svg';\r\nimport CouponIcon from '../media/CouponIcon.svg';\r\n\r\nconst FAC_STATUS_ACTIVE = CCUIConstants.RecommendationAdoptionStatus.Active;\r\n\r\nconst CALLOUT_STATES = Object.freeze({\r\n FRONTDOOR: 0,\r\n NOT_INTERESTED: 1,\r\n REMIND_LATER: 2,\r\n CLAIMED: 3,\r\n});\r\n\r\nconst modalStyles = mergeStyles({\r\n width: 600,\r\n padding: 24,\r\n});\r\n\r\nconst overlayStyles = {\r\n root: {\r\n backgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n },\r\n};\r\n\r\nexport const FacCalloutInternal = ({\r\n coupon, onActivate, userPreferenceService, i18n, siteMap, steps,\r\n legacyScope, legacyInstrumentation, scenarioName, refreshUserPreferencesCache,\r\n shouldHideForDaysAfterDismiss = false,\r\n}) => {\r\n const [isModalOpen, { setTrue: showModal, setFalse: hideModal }] = useBoolean(false);\r\n const [currentStep, setCurrentStep] = useState(CALLOUT_STATES.FRONTDOOR);\r\n\r\n const logWithPrefix = useCallback(log => (scenarioName ? `[${scenarioName}]: ${log}` : log), [scenarioName]);\r\n const couponSteps = useMemo(() => {\r\n if (_.isEmpty(steps)) {\r\n return [{\r\n stepIndex: 1,\r\n icon: RecommendationIcon,\r\n description: i18n.getString('Coupon_LightboxStep1Description', coupon),\r\n }, {\r\n stepIndex: 2,\r\n icon: CouponIcon,\r\n description: i18n.getString('Coupon_LightboxStep3Description', coupon),\r\n }];\r\n }\r\n return steps;\r\n }, [steps, coupon, i18n]);\r\n\r\n const { scope } = useContext(ScopeContext) || {};\r\n const finalScope = useMemo(() => scope || legacyScope, [scope, legacyScope]);\r\n\r\n const { uid, cid, aid } = finalScope.values;\r\n\r\n const couponDetailsUrl = useMemo(() => {\r\n try {\r\n return new URI(getRoutePathById(siteMap, 'coupon')).search({ uid, cid, aid }).href();\r\n } catch (e) {\r\n return null;\r\n }\r\n }, [aid, cid, siteMap, uid]);\r\n\r\n useEffect(() => {\r\n if (coupon.rawData.Status === FAC_STATUS_ACTIVE) {\r\n setCurrentStep(CALLOUT_STATES.CLAIMED);\r\n }\r\n }, [coupon.rawData.Status]);\r\n\r\n const {\r\n hideCalloutForEver,\r\n hideCalloutFor7Days,\r\n hideCalloutFor14Days,\r\n isCalloutHidden,\r\n activity,\r\n } = useHideCalloutPreference({\r\n coupon: coupon.rawData,\r\n userPreferenceService,\r\n scope: finalScope,\r\n legacyInstrumentation,\r\n scenarioName,\r\n refreshUserPreferencesCache,\r\n });\r\n\r\n const daysToExpiration = useMemo(() => getDaysToExpiration(coupon.expirationDate), [coupon.expirationDate]);\r\n\r\n const hideForever = useCallback(() => {\r\n activity.trace(logWithPrefix('hide callout forever'));\r\n hideModal();\r\n hideCalloutForEver();\r\n }, [hideCalloutForEver, hideModal, activity, logWithPrefix]);\r\n\r\n const onNotInterestedFrontdoorClick = useCallback(() => {\r\n activity.trace(logWithPrefix('click not interested and hide forever'));\r\n hideCalloutForEver();\r\n setCurrentStep(CALLOUT_STATES.NOT_INTERESTED);\r\n }, [hideCalloutForEver, activity, logWithPrefix]);\r\n\r\n const onRemindMeLaterFrontdoorClick = useCallback(() => {\r\n if (daysToExpiration < 14) {\r\n activity.trace(logWithPrefix('onRemindMeLaterFrontdoorClick and expired in 14 days'));\r\n setCurrentStep(CALLOUT_STATES.REMIND_LATER);\r\n } else {\r\n activity.trace(logWithPrefix('onRemindMeLaterFrontdoorClick and hide for 7 days and expired > 14 days'));\r\n hideModal();\r\n hideCalloutFor7Days();\r\n }\r\n }, [daysToExpiration, hideCalloutFor7Days, hideModal, activity, logWithPrefix]);\r\n\r\n const onRemindMeLaterClick = useCallback(() => {\r\n activity.trace(logWithPrefix('onRemindMeLaterClick and hide for 7 days'));\r\n hideModal();\r\n hideCalloutFor7Days();\r\n }, [hideCalloutFor7Days, hideModal, activity, logWithPrefix]);\r\n\r\n const onActivateClick = useCallback(() => {\r\n activity.trace(logWithPrefix('onActivateClick and hide for 14 days'));\r\n hideModal();\r\n hideCalloutFor14Days().then(onActivate);\r\n }, [hideCalloutFor14Days, hideModal, onActivate, activity, logWithPrefix]);\r\n\r\n const onClaimedConfirmClick = useCallback(() => {\r\n activity.trace(logWithPrefix('onClaimedConfirmClick and hide for 14 days'));\r\n hideModal();\r\n hideCalloutFor14Days();\r\n }, [hideCalloutFor14Days, hideModal, activity, logWithPrefix]);\r\n\r\n const onDismissClick = useCallback(() => {\r\n hideModal();\r\n if (shouldHideForDaysAfterDismiss) {\r\n activity.trace(logWithPrefix('onDismissClick and hide for 7 days'));\r\n hideCalloutFor7Days();\r\n } else {\r\n activity.trace(logWithPrefix('onDismissClick'));\r\n }\r\n }, [hideModal, activity, logWithPrefix, hideCalloutFor7Days, shouldHideForDaysAfterDismiss]);\r\n\r\n useEffect(() => {\r\n if (!isCalloutHidden) {\r\n showModal();\r\n activity.trace(logWithPrefix('fac callout show'));\r\n } else {\r\n hideModal();\r\n }\r\n }, [showModal, hideModal, isCalloutHidden, activity, logWithPrefix]);\r\n\r\n const modalContent = useMemo(() => {\r\n switch (currentStep) {\r\n case CALLOUT_STATES.FRONTDOOR:\r\n return ();\r\n case CALLOUT_STATES.NOT_INTERESTED:\r\n return ();\r\n case CALLOUT_STATES.REMIND_LATER:\r\n return ();\r\n case CALLOUT_STATES.CLAIMED:\r\n return ();\r\n default:\r\n return null;\r\n }\r\n }, [currentStep, coupon, i18n, onNotInterestedFrontdoorClick, onActivateClick,\r\n onRemindMeLaterFrontdoorClick, couponDetailsUrl, hideForever, onRemindMeLaterClick,\r\n onClaimedConfirmClick, couponSteps, onDismissClick]);\r\n\r\n const Callout = useCallback(() => (\r\n \r\n
\r\n {modalContent}\r\n
\r\n \r\n ), [isModalOpen, modalContent]);\r\n\r\n const CalloutWithLock = withLock(Callout, { force: true });\r\n\r\n return (\r\n <>\r\n {isModalOpen &&\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nFacCalloutInternal.propTypes = {\r\n coupon: PropTypes.shape({\r\n expirationDate: PropTypes.string,\r\n rawData: PropTypes.shape({\r\n Status: PropTypes.number.isRequired,\r\n }),\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActivate: PropTypes.func.isRequired,\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n userPreferenceService: PropTypes.shape({}).isRequired,\r\n steps: PropTypes.arrayOf(PropTypes.shape({\r\n stepIndex: PropTypes.number,\r\n description: PropTypes.string,\r\n icon: PropTypes.string,\r\n })).isRequired,\r\n legacyScope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n uid: PropTypes.string,\r\n cid: PropTypes.string,\r\n aid: PropTypes.string,\r\n }),\r\n }),\r\n legacyInstrumentation: PropTypes.shape({}),\r\n scenarioName: PropTypes.string,\r\n refreshUserPreferencesCache: PropTypes.func,\r\n shouldHideForDaysAfterDismiss: PropTypes.bool,\r\n};\r\n\r\nFacCalloutInternal.defaultProps = {\r\n legacyScope: null,\r\n legacyInstrumentation: null,\r\n scenarioName: null,\r\n refreshUserPreferencesCache: null,\r\n shouldHideForDaysAfterDismiss: false,\r\n};\r\n\r\nexport const FacCallout = withSiteMap(FacCalloutInternal, processorSet.basic);\r\n","export const couponCalloutSharedKeyMap = {\r\n FAC_Coupon_Banner_Title: _TL_('Limited time offer:'),\r\n Coupon_TermsAndConditions: _TL_('View Terms and Conditions'),\r\n Button_Close: _TL_('Close'),\r\n Button_Confirm: _TL_('Confirm'),\r\n Button_Cancel: _TL_('Cancel'),\r\n Coupon_GotIt: _TL_('Got it!'),\r\n Coupon_TagMessageNew: _TL_('{{value}} offer'),\r\n Coupon_TagFlyoutMessage: _TL_('Get {{value}} in advertising credit when you {{tagMessage}} and spend {{cost}} on your campaigns!'),\r\n Coupon_OfferExpirationDateMessage: _TL_('Offer expires {{expirationDate}}.'),\r\n Coupon_LightboxTitleNew: _TL_('Get {{value}} in advertising credit when you {{titleAction}} and spend {{cost}} on your campaigns!'),\r\n Coupon_LightboxStepNumberNew: _TL_('Step {{stepNumber}}:'),\r\n Coupon_LightboxStep3Title: _TL_('Receive your credit'),\r\n Coupon_LightboxStep3Description: _TL_('Spend {{cost}} on your campaigns to unlock your {{value}} in advertising credit.'),\r\n Coupon_LightboxStep3DescriptionNew: _TL_('Spend {{cost}} on your campaigns by {{expirationDate}}, you\\'ll automatically receive {{value}} in advertising credit.'),\r\n Coupon_Lightbox_LimitedTimeOffer: _TL_('This is a limited-time offer. Please act soon!'),\r\n Coupon_Lightbox_LimitedTimeOffer_ActBy: _TL_('This is a limited offer. Act by {{expirationDate}}.'),\r\n GenericFACAdoptionStartErrorMessage: _TL_('Only Advertiser Campaign Managers, Super Admins, and Standard Users have permission to redeem coupons. Please use a different account or contact this account\\'s administrator to adjust your user role accordingly.'),\r\n FACDepletedErrorMessage: _TL_('We\\'re sorry, this promotion is is no longer available.'),\r\n Button_NotInterested: _TL_('Not interested'),\r\n Button_ActivateNow: _TL_('Activate now'),\r\n Button_RemindMeLater: _TL_('Remind me later'),\r\n Not_Interested_Title: _TL_('We won\\'t show you this again.'),\r\n Not_Interested_Description: _TL_('If you change your mind, you can access this offer on the'),\r\n Coupon_Page: _TL_('Coupons page.'),\r\n RemindLater_Title: _TL_('Are you sure you want to be reminded later?'),\r\n RemindLater_Description_Expiration: _TL_('This offer expires in {{diffDays}} days.'),\r\n RemindLater_Description_Expiration_OneDay: _TL_('This offer expires in 1 day.'),\r\n RemindLater_Description_ActivationMessage_1: _TL_('You can'),\r\n RemindLater_Description_ActivationMessageLink: _TL_('activate and accept'),\r\n RemindLater_Description_ActivationMessage_2: _TL_('at anytime before the expiration date.'),\r\n Button_Confirmation: _TL_('Yes, I\\'m sure'),\r\n Claimed_Title: _TL_('You have a coupon on your account!'),\r\n Claimed_ConfirmationButton: _TL_('Got it'),\r\n Claimed_DontShowAgain: _TL_('Don\\'t show this again'),\r\n CloseButtonAria: _TL_('Close coupon callout'),\r\n};\r\n\r\nexport const couponCalloutShoppingKeyMap = {\r\n ...couponCalloutSharedKeyMap,\r\n Coupon_LightboxTitleNew: _TL_('Get a {{value}} credit when you create a shopping campaign!'),\r\n Coupon_LightboxTitleNew_Shopping_Campaign: _TL_('Get a {{value}} credit when you create a shopping campaign!'),\r\n Summary_Card_Coupon_Title_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Summary_Card_Coupon_Description_Title_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Summary_Card_Coupon_Description_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Summary_Card_Coupon_Tag_Message_Shopping_Campaign: _TL_('create a shopping campaign'),\r\n Coupon_LightboxStep1Description_Shopping_Campaign: _TL_('Make sure that you have an active store in {{link}}Microsoft Merchant Center{{/link}}.'),\r\n Coupon_LightboxStep2Description_Shopping_Campaign: _TL_('Activate an existing shopping campaign or create a new one.'),\r\n Coupon_LightboxStep3Description_Shopping_Campaign: _TL_('Run an active shopping campaign for 10 days.'),\r\n};\r\n\r\nexport const couponCalloutConversionTrackingKeyMap = {\r\n ...couponCalloutSharedKeyMap,\r\n Summary_Card_Coupon_Title_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n Summary_Card_Coupon_Description_Title_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n Summary_Card_Coupon_Description_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n Summary_Card_Coupon_Tag_Message_Conversion_Tracking: _TL_('set up a new website-based conversion goal'),\r\n // Coupon_BannerMessageNew: _TL_('Limited time offer: Do this now and get {{value}} in advertising credit!'),\r\n Coupon_LightboxStep1Description: _TL_('Set up a new website-based conversion goal'),\r\n Coupon_LightboxStep2Description: _TL_('Keep your conversion goal and UET tag active'),\r\n};\r\n","import React from 'react';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport RecommendationIcon from '../../media/RecommendationIcon.svg';\r\nimport ScheduledIcon from '../../media/Coupon_step2_Scheduled_Illustration.svg';\r\nimport CouponIcon from '../../media/CouponIcon.svg';\r\n\r\nconst merchantcenterLink = `${location.origin}/campaign/vnext/merchantcenter${location.search}`;\r\n\r\nexport const getFACShoppingCampaignSteps = (i18n) => ([\r\n {\r\n stepIndex: 1,\r\n icon: RecommendationIcon,\r\n description: {text} }}\r\n template={i18n.getString('Coupon_LightboxStep1Description_Shopping_Campaign')}\r\n />,\r\n }, {\r\n stepIndex: 2,\r\n icon: ScheduledIcon,\r\n description: i18n.getString('Coupon_LightboxStep2Description_Shopping_Campaign'),\r\n }, {\r\n stepIndex: 3,\r\n icon: CouponIcon,\r\n description: i18n.getString('Coupon_LightboxStep3Description_Shopping_Campaign'),\r\n },\r\n]);\r\n","import Backbone from 'backbone';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { FacCalloutInternal } from './index';\r\n\r\nexport class FACCalloutView extends Backbone.View {\r\n initialize({\r\n coupon,\r\n i18n,\r\n onActivate,\r\n userPreferenceService,\r\n siteMap,\r\n legacyScope,\r\n legacyInstrumentation,\r\n steps,\r\n scenarioName,\r\n refreshUserPreferencesCache,\r\n shouldHideForDaysAfterDismiss,\r\n }) {\r\n this.coupon = coupon;\r\n this.i18n = i18n;\r\n this.onActivate = onActivate;\r\n this.userPreferenceService = userPreferenceService;\r\n this.siteMap = siteMap;\r\n this.legacyScope = legacyScope;\r\n this.legacyInstrumentation = legacyInstrumentation;\r\n this.steps = steps;\r\n this.scenarioName = scenarioName;\r\n this.refreshUserPreferencesCache = refreshUserPreferencesCache;\r\n this.shouldHideForDaysAfterDismiss = shouldHideForDaysAfterDismiss;\r\n }\r\n\r\n render() {\r\n ReactDOM.render(\r\n ,\r\n this.el\r\n );\r\n return this;\r\n }\r\n\r\n remove() {\r\n ReactDOM.unmountComponentAtNode(this.el);\r\n return super.remove();\r\n }\r\n}\r\n","const { EDM } = require('./src/edm/core');\r\nconst { resIdsPlugin } = require('./src/edm/resource-identifiers');\r\nconst { defineConstProperty } = require('./src/edm/reflection');\r\n\r\nconst { useODataCall } = require('./src/hooks/use-odata-call');\r\nconst { useODataCollection } = require('./src/hooks/use-odata-coll');\r\nconst { useODataEntity } = require('./src/hooks/use-odata-entity');\r\n\r\nconst { composeSearchString } = require('./src/helpers/compose-search-string');\r\n\r\nmodule.exports = {\r\n EDM,\r\n resIdsPlugin,\r\n defineConstProperty,\r\n\r\n useODataCall,\r\n useODataCollection,\r\n useODataEntity,\r\n\r\n composeSearchString,\r\n};\r\n","/**\r\n * the Entity Data Model module\r\n */\r\nconst typesPlugin = require('./types-plugin');\r\nconst schemaPlugin = require('./schema-plugin');\r\n\r\nclass EDM {\r\n constructor(options) {\r\n typesPlugin(this);\r\n if (options) {\r\n schemaPlugin(this, options);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n EDM,\r\n};\r\n","const _ = require('underscore');\r\n\r\nfunction castPath(value, object) {\r\n if (_.isArray(value)) {\r\n return value;\r\n }\r\n\r\n if (_.has(object, value)) {\r\n return [value];\r\n }\r\n\r\n return _.compact(value.split(/[[\\].]/));\r\n}\r\n\r\nfunction get(object, path, defaultValue) {\r\n let sub;\r\n let i;\r\n const keyPath = castPath(path, object);\r\n\r\n for (i = 0, sub = object; i < keyPath.length; i += 1) {\r\n if (!_.isObject(sub)) {\r\n return defaultValue;\r\n }\r\n\r\n sub = sub[keyPath[i]];\r\n\r\n if (_.isUndefined(sub)) {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n return sub;\r\n}\r\n\r\nmodule.exports = {\r\n get,\r\n};\r\n","/**\r\n * the reflection module for property defintions\r\n */\r\nconst _ = require('underscore');\r\n\r\n/**\r\n* Define a const property\r\n* @param {Object} obj - the host object of the proprty\r\n* @param {String} name - the name of the property\r\n* @param {Object} value - the value of the property\r\n* @return {Object} the host object\r\n*/\r\nfunction defineConstProperty(obj, name, value) {\r\n return Object.defineProperty(obj, name, {\r\n value,\r\n enumerable: true,\r\n writable: false,\r\n });\r\n}\r\n\r\n/**\r\n* Define a produced property with a factory\r\n* @param {Object} obj - the host object of the proprty\r\n* @param {String} name - the name of the property\r\n* @param {Function} factory - the factory to produce the property value\r\n* @return {Object} the host object\r\n*/\r\nfunction defineProducedProperty(obj, name, factory) {\r\n return Object.defineProperty(obj, name, {\r\n get() {\r\n const value = factory.apply(obj);\r\n\r\n defineConstProperty(obj, name, value);\r\n return value;\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n}\r\n\r\n/**\r\n* Define a produced property on a class\r\n* @param {Class} Class - the host class of the proprty\r\n* @param {String} name - the name of the property\r\n* @param {Function} factory - the factory to produce the property value\r\n* @return {Class} the host class\r\n*/\r\nfunction defineProducedPropertyOnClass(Class, name, factory) {\r\n const RAND_MAX = 65535;\r\n const className = Class.name || `Anony${_.random(0, RAND_MAX)}`;\r\n const symbol = `__${className}_${name}`;\r\n\r\n Object.defineProperty(Class.prototype, name, {\r\n get() {\r\n if (!Object.prototype.hasOwnProperty.call(this, symbol)) {\r\n defineConstProperty(this, symbol, factory.apply(this));\r\n }\r\n return this[symbol];\r\n },\r\n enumerable: true,\r\n });\r\n\r\n return Class;\r\n}\r\n\r\n/**\r\n* Define a computed property whose value is computed each time the getter being called\r\n* @param {Object} obj - the host object of the proprty\r\n* @param {String} name - the name of the property\r\n* @param {Function} getter - the getter to compute the property value\r\n* @return {Object} the host object\r\n*/\r\nfunction defineComputedProperty(obj, name, getter) {\r\n return Object.defineProperty(obj, name, {\r\n get: getter,\r\n enumerable: true,\r\n });\r\n}\r\n\r\n// Make the functions chainable with underscorejs\r\n_.mixin({\r\n defineConstProperty,\r\n defineProducedProperty,\r\n defineProducedPropertyOnClass,\r\n defineComputedProperty,\r\n});\r\n\r\n/**\r\n* Detect whether or not a object has certain property without evaluation\r\n* @param {Object} obj - the host class of the proprty\r\n* @param {String} name - the name of the property\r\n* @return {Boolean} whether the property is defined\r\n*/\r\nfunction hasOwnProperty(obj, name) {\r\n return !!Object.getOwnPropertyDescriptor(obj, name);\r\n}\r\n\r\nmodule.exports = {\r\n defineConstProperty,\r\n defineProducedProperty,\r\n defineProducedPropertyOnClass,\r\n defineComputedProperty,\r\n hasOwnProperty,\r\n};\r\n","/* eslint-disable max-classes-per-file */\r\n/* eslint-disable no-mixed-operators */\r\n/* eslint no-param-reassign: 0 */\r\nconst _ = require('underscore');\r\n\r\n/** Class representing a namespace */\r\nclass Namespace {\r\n /**\r\n * Create a namespace\r\n * @param {Namespace|null} parent - The parent namespace\r\n */\r\n constructor(parent) {\r\n this.map = {};\r\n this.parent = parent;\r\n }\r\n\r\n /**\r\n * Resolve an object by name\r\n * @param {String[]} segments - The name segments\r\n * @return {Object} The object registered with the given name\r\n */\r\n resolve(segments) {\r\n const iterator = (ns, seg) => {\r\n if (ns && ns instanceof Namespace) {\r\n return ns.map[seg];\r\n }\r\n return ns;\r\n };\r\n\r\n return _.reduce(segments, iterator, this)\r\n || this.parent && this.parent.resolve(segments);\r\n }\r\n\r\n /**\r\n * Register an object\r\n * @param {Object} obj - The object to be registered\r\n * @param {String[]} segments - The name segments for the object\r\n * @return {Void} Nothing to return\r\n */\r\n register(obj, segments) {\r\n const key = segments.pop();\r\n const iterator = (ns, seg) => {\r\n if (ns instanceof Namespace) {\r\n if (_.isUndefined(ns.map[seg])) {\r\n ns.map[seg] = new Namespace(ns);\r\n }\r\n return ns.map[seg];\r\n }\r\n throw new Error(`There are conflicts when defining registry for ${segments.join('.')}`);\r\n };\r\n\r\n const nsTarget = _.reduce(segments, iterator, this);\r\n\r\n nsTarget.map[key] = obj;\r\n }\r\n\r\n /**\r\n * Iterate through all objects in this namespace\r\n * @param {Function} worker - The callback for each of the objects\r\n * @return {void} Nothing to return\r\n */\r\n each(worker) {\r\n _.each(this.map, obj => {\r\n if (obj instanceof Namespace) {\r\n obj.each(worker);\r\n } else {\r\n worker(obj);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction isObjectWithName(obj) {\r\n return typeof obj.name === 'string';\r\n}\r\n\r\n/** Class representing a namespaced registry */\r\nclass Registry {\r\n /**\r\n * Create a registry\r\n */\r\n constructor() {\r\n this.rootNamespace = new Namespace(null);\r\n // eslint-disable-next-line no-undef\r\n this.qualifiedNames = new Map();\r\n }\r\n\r\n /**\r\n * Resolve an object by name\r\n * @param {String} name - The name of the object\r\n * @param {String} [namespace=this.rootNamespace] - The base namespace to resolve against\r\n * @return {Object|null} The object registered with the name\r\n */\r\n resolve(name, namespace) {\r\n const ns = namespace\r\n ? this.rootNamespace.resolve(namespace.split('.'))\r\n : this.rootNamespace;\r\n const obj = ns instanceof Namespace ? ns.resolve(name.split('.')) : null;\r\n\r\n return obj || null;\r\n }\r\n\r\n resolveQualifiedName(name, namespace) {\r\n const obj = this.resolve(name, namespace);\r\n if (obj instanceof Namespace || !obj) {\r\n return null;\r\n }\r\n\r\n return this.qualifiedNames.get(obj) || null;\r\n }\r\n\r\n /**\r\n * Register an object\r\n * @param {Object} obj - The object to be registered\r\n * @param {String} [name=obj.name] - The qualified name for the object\r\n * @return {void} Nothing to return\r\n */\r\n register(obj, name) {\r\n const realName = !name && isObjectWithName(obj) ? obj.name : name;\r\n if (typeof realName === 'undefined') {\r\n throw new Error(`name not passed in and obj ${JSON.stringify(obj)} doesn't have name property`);\r\n }\r\n this.rootNamespace.register(obj, realName.split('.'));\r\n this.qualifiedNames.set(obj, realName);\r\n }\r\n\r\n /**\r\n * Iterate through all registered objects\r\n * @param {Function} worker - The callback for each of the objects\r\n * @return {void} Nothing to return\r\n */\r\n each(worker) {\r\n this.rootNamespace.each(worker);\r\n }\r\n\r\n /**\r\n * Get namespace from a qualified name\r\n * @param {String} name - The qualified name\r\n * @return {String} The namespace\r\n */\r\n static getNamespace(name) {\r\n const segments = name.split('.');\r\n\r\n segments.pop();\r\n return segments.join('.');\r\n }\r\n\r\n /**\r\n * Get short name from a qualified name\r\n * @param {String} name - The qualified name\r\n * @return {String} The short name\r\n */\r\n static getShortName(name) {\r\n return _.last(name.split('.'));\r\n }\r\n\r\n static getQualifiedName(name, namespace) {\r\n return namespace ? `${namespace}.${name}` : name;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n Registry,\r\n};\r\n","/* eslint-disable max-classes-per-file */\r\n\r\nconst _ = require('underscore');\r\n\r\nconst { Registry } = require('./registry');\r\nconst {\r\n defineConstProperty,\r\n defineProducedPropertyOnClass,\r\n} = require('./reflection');\r\n\r\nconst url = require('./url-util');\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {Void} nothing to return\r\n */\r\nfunction resIdsPlugin(edm) {\r\n if (edm.resourceIdentifiers) {\r\n return;\r\n }\r\n\r\n /**\r\n * @name edm\r\n * @property {Registry} resourceIdentifiers - A registry of all resource-identifiers\r\n * @property {Class} resourceIdentifiers.Navigation - The base type of all navigations\r\n * @property {Class} resourceIdentifiers.PropertyNavigation - The navigation following a property\r\n * @property {Class} resourceIdentifiers.CastNavigation - The navigation following a type casting\r\n * @property {Class} resourceIdentifiers.WithKeyNavigation\r\n * - The navigation of selecting a single instance from an entity set\r\n * @property {Class} resourceIdentifiers.CallNavigation - The navigation of calling a callable\r\n * @property {Class} resourceIdentifiers.ResourceIdentifier\r\n * - The base type of all resource-identifiers\r\n */\r\n defineConstProperty(edm, 'resourceIdentifiers', (() => {\r\n const resourceIdentifiers = new Registry();\r\n\r\n /**\r\n * @class Navigation\r\n * @property {ResourceIdentifier} source - The source accessor navigated from\r\n */\r\n class Navigation {\r\n constructor({\r\n source,\r\n }) {\r\n defineConstProperty(this, 'source', source);\r\n }\r\n\r\n toJSON() {\r\n return [...this.source.toJSON(), this.toSelfJSON()];\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n toSelfJSON() {\r\n throw new Error('I\\'m abstract');\r\n }\r\n }\r\n\r\n /**\r\n * @class PropertyNavigation\r\n * @extends Navigation\r\n * @property {Property} property - The property navigated with\r\n */\r\n class PropertyNavigation extends Navigation {\r\n constructor({\r\n source,\r\n property,\r\n name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'property', property);\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'property',\r\n name: this.name,\r\n };\r\n }\r\n\r\n static defineOn(TypeResID, navigationProperties) {\r\n _.each(navigationProperties, (property, name) => {\r\n /**\r\n * Navigation property factory for the defined property\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n */\r\n function navPropFactory() {\r\n return new property.type.ResourceIdentifier({\r\n navigation: new PropertyNavigation({ source: this, property, name }),\r\n });\r\n }\r\n\r\n defineProducedPropertyOnClass(TypeResID, name, navPropFactory);\r\n });\r\n }\r\n }\r\n\r\n class CallableNavigation extends Navigation {\r\n constructor({\r\n source,\r\n name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n static defineOn(TypeResID, callable) {\r\n function defineCallableOn(resID, callableTypes) {\r\n _.each(callableTypes, type => {\r\n /**\r\n * factory for the callables\r\n * @memberof resID#\r\n * @this resID\r\n * @returns {ResourceIdentifier} The ResourceIdentifier to access the property\r\n */\r\n function factory() {\r\n return new type.ResourceIdentifier({\r\n navigation: new CallableNavigation({ source: this, name: type.callableName }),\r\n });\r\n }\r\n\r\n defineProducedPropertyOnClass(resID, type.callableName, factory);\r\n });\r\n }\r\n defineCallableOn(TypeResID, callable.actions);\r\n defineCallableOn(TypeResID, callable.functions);\r\n }\r\n }\r\n\r\n /**\r\n * @class CastNavigation\r\n * @extends Navigation\r\n * @property {Type} type - The type casting to\r\n * @property {String} name - The type name used for casting\r\n */\r\n class CastNavigation extends Navigation {\r\n constructor({\r\n source,\r\n type,\r\n name = type.name,\r\n }) {\r\n super({\r\n source,\r\n });\r\n\r\n _.chain(this)\r\n .defineConstProperty('type', type)\r\n .defineConstProperty('name', name)\r\n .value();\r\n\r\n defineConstProperty(this, 'path', url.join(source.path, name));\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'function',\r\n name: CastNavigation.navigationName,\r\n parameters: [this.name],\r\n };\r\n }\r\n\r\n static get navigationName() {\r\n return '$cast';\r\n }\r\n\r\n static defineOn(TypeResID) {\r\n /**\r\n * $cast navigation method of the TypeResID\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @param {String} name - The name of the subclass\r\n * @returns {TypeResID} The ResourceIdentifier to access the subclass object\r\n */\r\n function navCastMethod(name) {\r\n const entityType = edm.types.resolve(name, this.type.namespace);\r\n const type = TypeResID.prototype.type instanceof edm.types.CollectionType\r\n ? entityType.collectionType\r\n : entityType;\r\n const navigation = new CastNavigation({ source: this, type: entityType, name });\r\n\r\n return new type.ResourceIdentifier({ navigation });\r\n }\r\n\r\n defineConstProperty(TypeResID.prototype, CastNavigation.navigationName, navCastMethod);\r\n }\r\n }\r\n\r\n /**\r\n * @class WithKeyNavigation\r\n * @extends Navigation\r\n * @property {String|Number} key - The key of the selected entity\r\n */\r\n class WithKeyNavigation extends Navigation {\r\n constructor({\r\n source,\r\n key,\r\n }) {\r\n super({\r\n source,\r\n });\r\n\r\n defineConstProperty(this, 'key', key);\r\n defineConstProperty(this, 'path', (() => {\r\n // In case people pass a decimal string for a integer key\r\n // We cannot use parseInt directly, it would get a wrong number if the\r\n // key is beyond Number.MAX_SAFE_INTEGER\r\n if (_.isString(key)) {\r\n const keyType = _.chain(source)\r\n .result('type')\r\n .result('elementType')\r\n .result('keyProperty')\r\n .result('typeName')\r\n .value();\r\n\r\n if (keyType === 'integer') {\r\n if (key.match(/^[+-]?(0|[1-9][0-9]*)$/)) {\r\n return `${source.path}(${key})`;\r\n }\r\n }\r\n if (keyType === 'string') {\r\n return `${source.path}('${key}')`;\r\n }\r\n }\r\n\r\n return `${source.path}(${JSON.stringify(key)})`;\r\n })());\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'function',\r\n name: WithKeyNavigation.navigationName,\r\n parameters: [this.key],\r\n };\r\n }\r\n\r\n static get navigationName() {\r\n return '$withKey';\r\n }\r\n\r\n static defineOn(TypeResID) {\r\n /**\r\n * $withKey navigation method of the TypeResID\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @param {String} key - The key of the element\r\n * @returns {ResourceIdentifier}\r\n * The ResourceIdentifier to access the element with the given key\r\n */\r\n function navWithKeyMethod(key) {\r\n const navigation = new WithKeyNavigation({ source: this, key });\r\n\r\n return new this.type.elementType.ResourceIdentifier({ navigation });\r\n }\r\n\r\n defineConstProperty(\r\n TypeResID.prototype,\r\n WithKeyNavigation.navigationName,\r\n navWithKeyMethod,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * @class CallNavigation\r\n * @extends Navigation\r\n * @property {Object} parameters - The parameters for the function call\r\n */\r\n class CallNavigation extends Navigation {\r\n constructor({\r\n source,\r\n parameters = {},\r\n }) {\r\n super({\r\n source,\r\n });\r\n defineConstProperty(this, 'parameters', parameters);\r\n\r\n const path = source.type instanceof edm.types.ActionType\r\n ? source.path : `${source.path}(${_.map(parameters, (value, name) => `${name}=${value}`).join(',')})`;\r\n\r\n defineConstProperty(this, 'path', path);\r\n }\r\n\r\n toSelfJSON() {\r\n return {\r\n type: 'function',\r\n name: CallNavigation.navigationName,\r\n // for callable, parameters are named\r\n parameters: [this.parameters],\r\n };\r\n }\r\n\r\n static get navigationName() {\r\n return '$call';\r\n }\r\n\r\n static defineOn(TypeResID) {\r\n /**\r\n * $call navigation method of the TypeResID\r\n * @memberof TypeResID#\r\n * @this TypeResID\r\n * @param {object} parameters - The parameters to call the callable\r\n * @return {ResourceIdentifier}\r\n * The ResourceIdentifier accessing the return value of the callable\r\n */\r\n function navCallMethod(parameters) {\r\n const navigation = new CallNavigation({ source: this, parameters });\r\n\r\n return new this.type.returnType.ResourceIdentifier({ navigation });\r\n }\r\n\r\n defineConstProperty(TypeResID.prototype, CallNavigation.navigationName, navCallMethod);\r\n }\r\n }\r\n\r\n /**\r\n * @class ResourceIdentifier\r\n * @property {Navigation} navigation\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n */\r\n class ResourceIdentifier {\r\n /**\r\n * Create a ResourceIdentifier\r\n * @param {Object} [options] - The constructor options\r\n * @param {Navigation} [options.navigation]\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n * @return {Void} Nothing to return\r\n */\r\n constructor({\r\n navigation,\r\n } = {}) {\r\n if (navigation) {\r\n defineConstProperty(this, 'navigation', navigation);\r\n defineConstProperty(this, 'path', navigation.path);\r\n } else {\r\n defineConstProperty(this, 'path', '');\r\n }\r\n }\r\n\r\n toJSON() {\r\n if (this.navigation) {\r\n return this.navigation.toJSON();\r\n }\r\n\r\n return [];\r\n }\r\n\r\n identifyEntitySet(json) {\r\n // eslint-disable-next-line\r\n let entitySet = this;\r\n\r\n /* eslint guard-for-in: 0 */\r\n /* eslint no-restricted-syntax: 0 */\r\n for (const i in json) {\r\n const item = json[i];\r\n\r\n if (item.type === 'property') {\r\n entitySet = entitySet[item.name];\r\n } else if (item.type === 'function') {\r\n entitySet = entitySet[item.name](...item.parameters);\r\n }\r\n\r\n if (!entitySet) {\r\n return null;\r\n }\r\n }\r\n\r\n return entitySet;\r\n }\r\n }\r\n /**\r\n * @class CollectionResourceIdentifier\r\n * @property {Navigation} navigation\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n */\r\n class CollectionResourceIdentifier extends ResourceIdentifier {\r\n /**\r\n * Create a ResourceIdentifier\r\n * @param {Object} [options] - The constructor options\r\n * @param {Navigation} [options.navigation]\r\n * - The navigation back tracking the parent ResourceIdentifier\r\n * @return {Void} Nothing to return\r\n */\r\n constructor({\r\n navigation,\r\n } = {}) {\r\n super({ navigation });\r\n }\r\n }\r\n\r\n /**\r\n * define ResourceIdentifier type for the given type\r\n * @param {Type} type - An instance of one of the meta types\r\n * @return {Class} the ResourceIdentifier class\r\n */\r\n function resourceIdentifierForType(type) {\r\n // duck type, if the type has a \"baseType\", use its ResourceIdentifier as the super class\r\n const DefaultBase = type instanceof edm.types.CollectionType\r\n ? CollectionResourceIdentifier\r\n : ResourceIdentifier;\r\n const Base = type.baseType ? type.baseType.ResourceIdentifier : DefaultBase;\r\n\r\n const AccessorType = class extends Base {\r\n };\r\n\r\n /**\r\n * @name resId\r\n * @type ResourceIdentifier\r\n * @property {Type} type - The type associated with the ResourceIdentifier\r\n */\r\n defineConstProperty(AccessorType.prototype, 'type', type);\r\n\r\n resourceIdentifiers.register(AccessorType, type.name);\r\n\r\n return AccessorType;\r\n }\r\n\r\n // For each of the meta types defined by the type mixin, define the\r\n // \"ResourceIdentifier\" property\r\n _.each({\r\n\r\n // the root class 'Type' don't have an ResourceIdentifier property\r\n // Type: { factory() { } },\r\n\r\n PrimitiveType: {\r\n\r\n /**\r\n * PrimitiveType ResourceIdentifier type factory\r\n * @memberof PrimitiveType#\r\n * @this PrimitiveType\r\n * @returns {Class} The ResourceIdentifier type of the PrimitiveType\r\n */\r\n factory() {\r\n const PrimitiveTypeResID = resourceIdentifierForType(this);\r\n\r\n return PrimitiveTypeResID;\r\n },\r\n },\r\n\r\n ObjectType: {\r\n\r\n /**\r\n * ObjectType ResourceIdentifier type factory\r\n * @memberof ObjectType#\r\n * @this ObjectType\r\n * @returns {Class} The ResourceIdentifier type of the ObjectType\r\n */\r\n factory() {\r\n const ObjectTypeResID = resourceIdentifierForType(this);\r\n\r\n CastNavigation.defineOn(ObjectTypeResID);\r\n PropertyNavigation.defineOn(ObjectTypeResID, this.navigationProperties);\r\n if (this.callable) {\r\n CallableNavigation.defineOn(ObjectTypeResID, this.callable);\r\n }\r\n return ObjectTypeResID;\r\n },\r\n },\r\n\r\n // fallback to ObjectType.prototype.ResourceIdentifier\r\n // EntityType: { factory () { } },\r\n\r\n // fallback to ObjectType.prototype.ResourceIdentifier\r\n // ComplexType: { factory () { } },\r\n\r\n CollectionType: {\r\n\r\n /**\r\n * CollectionType ResourceIdentifier type factory\r\n * @memberof CollectionType#\r\n * @this CollectionType\r\n * @returns {Class} the ResourceIdentifier type of the CollectionType\r\n */\r\n factory() {\r\n const CollectionTypeResID = resourceIdentifierForType(this);\r\n\r\n CastNavigation.defineOn(CollectionTypeResID);\r\n // Only the entity sets can be navigated with keys\r\n if (this.elementType instanceof edm.types.EntityType) {\r\n WithKeyNavigation.defineOn(CollectionTypeResID);\r\n }\r\n PropertyNavigation.defineOn(CollectionTypeResID, this.navigationProperties);\r\n if (this.callable) {\r\n CallableNavigation.defineOn(CollectionTypeResID, this.callable);\r\n }\r\n\r\n return CollectionTypeResID;\r\n },\r\n },\r\n\r\n CallableType: {\r\n\r\n /**\r\n * CallableType ResourceIdentifier type factory\r\n * @memberof CallableType#\r\n * @this CallableType\r\n * @returns {Class} The ResourceIdentifier type of the CallableType\r\n */\r\n factory() {\r\n const CallableTypeResID = resourceIdentifierForType(this);\r\n\r\n CallNavigation.defineOn(CallableTypeResID);\r\n\r\n return CallableTypeResID;\r\n },\r\n },\r\n\r\n }, (def, typeName) => {\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {Class} ResourceIdentifier - The ResourceIdentifier type of the type\r\n */\r\n defineProducedPropertyOnClass(edm.types[typeName], 'ResourceIdentifier', def.factory);\r\n });\r\n\r\n _.chain(resourceIdentifiers)\r\n .defineConstProperty('ResourceIdentifier', ResourceIdentifier)\r\n .defineConstProperty('CollectionResourceIdentifier', CollectionResourceIdentifier)\r\n .defineConstProperty('Navigation', Navigation)\r\n .defineConstProperty('PropertyNavigation', PropertyNavigation)\r\n .defineConstProperty('CastNavigation', CastNavigation)\r\n .defineConstProperty('WithKeyNavigation', WithKeyNavigation)\r\n .defineConstProperty('CallNavigation', CallNavigation)\r\n .defineConstProperty('CallableNavigation', CallableNavigation)\r\n .value();\r\n\r\n return resourceIdentifiers;\r\n })());\r\n}\r\n\r\nmodule.exports = {\r\n resIdsPlugin,\r\n};\r\n","/**\r\n * the schema plugin module\r\n */\r\n\r\nconst _ = require('underscore');\r\nconst { get } = require('./lodash');\r\nconst { Registry } = require('./registry');\r\nconst {\r\n defineConstProperty,\r\n hasOwnProperty,\r\n} = require('./reflection');\r\n\r\nconst typesPlugin = require('./types-plugin');\r\n\r\nfunction getSchemaName(schema) {\r\n const { $$ODataExtension, name } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.Name;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"name\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return name;\r\n}\r\n\r\nfunction getSchemaBaseTypeName(schema) {\r\n const { $$ODataExtension, clrTypeBase } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.BaseType && $$ODataExtension.BaseType.$ref;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"clrTypeBase\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return clrTypeBase;\r\n}\r\n\r\nfunction getSchemaKey(schema) {\r\n const { $$ODataExtension, key } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.Key;\r\n }\r\n\r\n // deprecated\r\n // There is no such keyword as \"key\" in JSON Schema, it's specific to OData\r\n // See:\r\n // http://json-schema.org/latest/json-schema-core.html\r\n // http://json-schema.org/latest/json-schema-validation.html\r\n return key;\r\n}\r\n\r\nfunction getSchemaNavigationPropertyNames(schema) {\r\n const { $$ODataExtension } = schema;\r\n if ($$ODataExtension) {\r\n return $$ODataExtension.NavigationProperty;\r\n }\r\n\r\n return [];\r\n}\r\n\r\nmodule.exports = (edm, {\r\n schemas = {},\r\n // TODO: deprecated, every schemas should be able to have different namespaces\r\n // we are still using it with legacy schemas\r\n namespace = null,\r\n} = {}) => {\r\n if (hasOwnProperty(edm, 'schema')) {\r\n return;\r\n }\r\n\r\n typesPlugin(edm);\r\n\r\n const {\r\n CollectionType,\r\n EntityType,\r\n PrimitiveType,\r\n ComplexType,\r\n OneOfType,\r\n ActionType,\r\n FunctionType,\r\n } = edm.types;\r\n\r\n defineConstProperty(edm, 'schema', (() => {\r\n function getSchemaFullName(schema, path) {\r\n // $$ref exists in resolved schema\r\n const possiblePath = (_.isString(path) && path) || schema.$$ref || schema.$ref;\r\n return possiblePath\r\n ? possiblePath.replace(/\\//g, '.')\r\n : Registry.getQualifiedName(getSchemaName(schema), namespace);\r\n }\r\n\r\n /**\r\n * Get type name object with its information\r\n * @param {Schema[]} dependencies - An output paramter, a queue of dependent schemas\r\n * @param {Object} typeInfo - The schema information of the property\r\n * @return {String} The type name\r\n */\r\n function getTypeName(dependencies, typeInfo) {\r\n let schema = null;\r\n let typeName = null;\r\n\r\n if (!typeInfo) {\r\n return null;\r\n }\r\n\r\n if (typeInfo.type === 'array') {\r\n return CollectionType.collectionTypeName(getTypeName(dependencies, typeInfo.items));\r\n } if (typeInfo.oneOf) {\r\n return OneOfType.oneOfTypeName(typeInfo.oneOf.map(item => getTypeName(dependencies, item)));\r\n } if (typeInfo.type === 'object') {\r\n ({ schema } = typeInfo);\r\n // it's possible for the schema to be undefined, use 'object' type by default\r\n typeName = getSchemaFullName(schema || typeInfo);\r\n } else if (typeInfo.type === 'string' && typeInfo.enum) {\r\n // enum type is string, but we need to get a meanful name for different enum type\r\n // this is to help us disable cache accurately, as enum can be odata call return type now\r\n typeName = (typeInfo.$$ref || 'string').split('/').join('.');\r\n } else {\r\n // primitive types\r\n typeName = typeInfo.type;\r\n }\r\n\r\n if (schema) {\r\n dependencies.push(schema);\r\n }\r\n\r\n return typeName;\r\n }\r\n\r\n function defineCallableOnType(acts, funcs, type, qualifiedName, forEntityType = true) {\r\n const actions = [];\r\n const functions = [];\r\n\r\n function getCallableTypeName(key) {\r\n return `${key}##${qualifiedName}${forEntityType ? '' : '@@COLL'}`;\r\n }\r\n\r\n _.each(_.keys(acts), key => {\r\n const typeName = getCallableTypeName(key);\r\n const parameters = _.mapObject(\r\n acts[key].Parameter,\r\n parameter => getTypeName([], parameter),\r\n );\r\n\r\n actions.push(new ActionType({\r\n name: typeName,\r\n callableName: key,\r\n parameters,\r\n returnTypeName: getTypeName([], acts[key].ReturnType),\r\n }));\r\n });\r\n\r\n _.each(_.keys(funcs), key => {\r\n const typeName = getCallableTypeName(key);\r\n const parameters = _.mapObject(\r\n funcs[key].Parameter,\r\n parameter => getTypeName([], parameter),\r\n );\r\n\r\n functions.push(new FunctionType({\r\n name: typeName,\r\n callableName: key,\r\n parameters,\r\n returnTypeName: getTypeName([], funcs[key].ReturnType),\r\n }));\r\n });\r\n\r\n defineConstProperty(type, 'callable', {\r\n actions,\r\n functions,\r\n });\r\n }\r\n\r\n /**\r\n * Define an entity type, and its dependencies\r\n *\r\n * @param {Schema} schema - The schema for the entity type\r\n * @param {string} [path] - Possible full path of the schema\r\n * @return {Void} Nothing to return\r\n */\r\n function defineSchemaType(schema, path) {\r\n const qualifiedName = getSchemaFullName(schema, path);\r\n\r\n if (!edm.types.resolve(qualifiedName)) {\r\n const dependencies = [];\r\n const properties = _.mapObject(schema.properties, typeInfo => ({\r\n typeName: getTypeName(dependencies, typeInfo),\r\n }));\r\n\r\n const type = new EntityType({\r\n name: qualifiedName,\r\n baseTypeName: getSchemaBaseTypeName(schema) || 'object',\r\n key: getSchemaKey(schema),\r\n properties,\r\n navigationPropertyNames: getSchemaNavigationPropertyNames(schema),\r\n });\r\n\r\n defineConstProperty(type, 'schema', schema);\r\n\r\n _.each(dependencies, defineSchemaType);\r\n\r\n const entityActions = get(schema, '$$ODataExtension.Action', null);\r\n const entityFunctions = get(schema, '$$ODataExtension.Function', null);\r\n\r\n if (entityActions || entityFunctions) {\r\n defineCallableOnType(entityActions, entityFunctions, type, qualifiedName);\r\n }\r\n\r\n const collCallable = get(schema, '$$ODataExtension.Collection', null);\r\n\r\n if (collCallable) {\r\n defineCallableOnType(\r\n collCallable.Action,\r\n collCallable.Function,\r\n type.collectionType,\r\n qualifiedName,\r\n false,\r\n );\r\n }\r\n }\r\n }\r\n\r\n // Define all the primitive types\r\n _.each({\r\n string: String,\r\n integer: Number,\r\n number: Number,\r\n datetime: Date,\r\n boolean: Boolean,\r\n null: null,\r\n }, (jsType, name) => new PrimitiveType({ name, jsType }));\r\n\r\n // Define the base object type\r\n /* eslint no-new: 0 */\r\n new ComplexType({\r\n name: 'object',\r\n properties: {},\r\n });\r\n\r\n _.each(schemas, (schema, index) => {\r\n if (_.isString(index)) {\r\n defineSchemaType(schema, index);\r\n } else {\r\n defineSchemaType(schema);\r\n }\r\n });\r\n\r\n return _.chain({})\r\n .defineConstProperty('schemas', schemas)\r\n .defineConstProperty('namespace', namespace)\r\n .value();\r\n })());\r\n};\r\n","/* eslint-disable max-classes-per-file */\r\n\r\nconst _ = require('underscore');\r\nconst { Registry } = require('./registry');\r\nconst {\r\n defineConstProperty,\r\n defineProducedProperty,\r\n defineProducedPropertyOnClass,\r\n} = require('./reflection');\r\n\r\nconst ONEOF_TYPE_PREFIX = '@ONEOF';\r\nconst COLLECTION_TYPE_POSTFIX = '@COLL';\r\n\r\nfunction isOneOfType(typeName) {\r\n return typeName.indexOf(ONEOF_TYPE_PREFIX) === 0;\r\n}\r\n\r\nfunction hasPostfix(str, postfix) {\r\n return str.slice(-postfix.length) === postfix;\r\n}\r\n\r\nfunction removePostfix(str, postfix) {\r\n return str.slice(0, -postfix.length);\r\n}\r\n\r\n/**\r\n * @param {EDM} edm - The EDM object to apply this plugin to\r\n * @return {void}\r\n */\r\nmodule.exports = edm => {\r\n if (edm.types) {\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n const oneOfTypes = new Map();\r\n\r\n /**\r\n * @name edm\r\n * @type {EDM}\r\n * @property {Registry} types - A registry of all types\r\n * @property {Class} types.Type - The base type of all meta Types\r\n * @property {Class} types.PrimitiveType - The meta type of primitive types\r\n * @property {Class} types.ObjectType - The meta type of the key/value types\r\n * @property {Class} types.ComplexType - The meta type of the complex types\r\n * @property {Class} types.EntityType - The meta type of the entity types\r\n * @property {Class} types.CollectionType - The meta type of the collection types\r\n * @property {Class} types.CallableType - The meta type of the callable types\r\n */\r\n defineConstProperty(edm, 'types', (() => {\r\n const types = new Registry();\r\n\r\n function resolveType(name, namespace) {\r\n if (hasPostfix(name, COLLECTION_TYPE_POSTFIX)) {\r\n return resolveType(removePostfix(name, COLLECTION_TYPE_POSTFIX), namespace).collectionType;\r\n }\r\n\r\n if (isOneOfType(name)) {\r\n if (!oneOfTypes.has(name)) {\r\n const prefixLength = ONEOF_TYPE_PREFIX.length + 1;\r\n const typeNames = name.substr(prefixLength, name.length - prefixLength - 1).split(',');\r\n // eslint-disable-next-line no-use-before-define\r\n oneOfTypes.set(name, new OneOfType({ typeNames }));\r\n }\r\n\r\n return oneOfTypes.get(name);\r\n }\r\n\r\n return types.resolve(name, namespace);\r\n }\r\n\r\n /**\r\n * @class Property\r\n * @property {String} name - The name of the property\r\n * @property {String} typeName - The name of the property's type\r\n * @property {Type} type - The type of the property\r\n */\r\n class Property {\r\n /**\r\n * Create a property\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the property\r\n * @param {String} options.typeName - The name of the propertie's type\r\n * @param {String} options.namespace - The namespace of the propertie's type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n typeName,\r\n namespace,\r\n }) {\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'typeName', typeName);\r\n defineProducedProperty(this, 'type', () => resolveType(typeName, namespace));\r\n }\r\n }\r\n\r\n /**\r\n * @class Parameter\r\n * @property {String} name - The name of the parameter\r\n * @property {String} typeName - The name of the paramter's type\r\n * @property {type} type - The type of the parameter\r\n */\r\n class Parameter {\r\n /**\r\n * Create a parameter\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the parameter\r\n * @param {String} options.typeName - The name of the parameter's type\r\n * @param {String} options.namespace - The namespace of the parameter's type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n typeName,\r\n namespace,\r\n }) {\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'typeName', typeName);\r\n defineProducedProperty(this, 'type', () => resolveType(typeName, namespace));\r\n }\r\n }\r\n\r\n /**\r\n * @class Type\r\n * @property {String} name - The qualified name of the type\r\n * @property {String} namespace - The namespace of the type\r\n * @property {String} shortName - The short name of the type\r\n */\r\n class Type {\r\n /**\r\n * Create and register a type\r\n * A side effect of Type creation is registering itself to the type registry\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n }) {\r\n defineConstProperty(this, 'name', name);\r\n defineConstProperty(this, 'namespace', Registry.getNamespace(name));\r\n defineConstProperty(this, 'shortName', Registry.getShortName(name));\r\n types.register(this);\r\n }\r\n }\r\n\r\n /**\r\n * @class PrimitiveType\r\n * @extends Type\r\n * @property {Class} jsType - The corresponding JavaScript type\r\n */\r\n class PrimitiveType extends Type {\r\n /**\r\n * Create a PrimitiveType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Class} options.jsType - The JavaScript type of the primitive type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n jsType,\r\n }) {\r\n super({ name });\r\n defineConstProperty(this, 'jsType', jsType);\r\n }\r\n }\r\n\r\n /**\r\n * @class OneOfType\r\n * @extends Type\r\n * @property {Class} types - Data could be one of these types\r\n * @see {@link http://json-schema.org/latest/json-schema-validation.html#rfc.section.6.7.3}\r\n */\r\n class OneOfType extends Type {\r\n /**\r\n * Create a PrimitiveType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Type[]} options.types - The JavaScript type of the primitive type\r\n * @return {void}\r\n */\r\n constructor({\r\n typeNames,\r\n }) {\r\n super({\r\n name: OneOfType.oneOfTypeName(typeNames),\r\n });\r\n\r\n defineConstProperty(this, 'typeNames', typeNames);\r\n defineConstProperty(this, 'types', typeNames.map(typeName => resolveType(typeName, this.namespace)));\r\n }\r\n\r\n /**\r\n * Get the OneOfType's name from it's elements type name\r\n * @param {String[]} typeNames - The name of the elementTypes\r\n * @return {String} The name of the OneOfType\r\n */\r\n static oneOfTypeName(typeNames) {\r\n // We don't support nested one for now\r\n const sortedNames = typeNames\r\n .map(name => types.resolveQualifiedName(name, this.namespace))\r\n .sort();\r\n\r\n return `${ONEOF_TYPE_PREFIX}(${sortedNames.join(',')})`;\r\n }\r\n }\r\n\r\n /**\r\n * @typedef {Object} PropertyInfo\r\n * @property {String} typeName - The name of the propertie's type\r\n *\r\n * @memberof ObjectType#\r\n * @this ObjectType\r\n * @param {Object.} properties - The properties to be compiled\r\n * @return {Object.} a mapping for name to compiled Properties\r\n */\r\n function compileProperties(properties) {\r\n const { namespace } = this;\r\n\r\n return _.mapObject(properties, ({\r\n typeName,\r\n }, name) => new Property({\r\n name,\r\n typeName,\r\n namespace,\r\n }));\r\n }\r\n\r\n /**\r\n * @class ObjectType\r\n * @extends Type\r\n * @property {Object.} properties - The properties of the object type\r\n * @property {String} baseTypeName - The name of the base type\r\n * @property {Type} baseType - The base type\r\n */\r\n class ObjectType extends Type {\r\n /**\r\n * Create an ObjectType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} options.properties - The property definition\r\n * @param {string[]} [options.navigationPropertyNames] - Navigation properties names\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n properties,\r\n navigationPropertyNames = [],\r\n baseTypeName,\r\n }) {\r\n super({ name });\r\n\r\n defineConstProperty(this, 'properties', compileProperties.call(this, properties));\r\n defineConstProperty(this, 'navigationPropertyNames', navigationPropertyNames.slice());\r\n defineProducedProperty(this, 'navigationProperties', () => _.pick(this.properties, (property, propertyName) => _.contains(this.navigationPropertyNames, propertyName)));\r\n if (baseTypeName) {\r\n defineConstProperty(this, 'baseTypeName', baseTypeName);\r\n defineProducedProperty(this, 'baseType', () => resolveType(this.baseTypeName, this.namespace));\r\n }\r\n }\r\n\r\n addProperties(properties) {\r\n _.extend(this.properties, compileProperties.call(this, properties));\r\n // only for backward compability, should use addNavigationProperties for this case\r\n this.navigationPropertyNames.push(..._.keys(properties));\r\n }\r\n\r\n addNavigationProperties(properties) {\r\n this.addProperties(properties);\r\n }\r\n }\r\n\r\n /**\r\n * @class ComplexType\r\n * @extends ObjectType\r\n */\r\n class ComplexType extends ObjectType {\r\n\r\n }\r\n\r\n /**\r\n * @class EntityType\r\n * @extends ObjectType\r\n * @property {String} key - The name of the key property\r\n * @property {Property} keyProperty - The key property of the entity type\r\n * @return {void}\r\n */\r\n class EntityType extends ObjectType {\r\n /**\r\n * Create an EntityType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} options.properties - The property definition\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @param {String} [options.key] - The name of the key property\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n properties,\r\n navigationPropertyNames,\r\n baseTypeName,\r\n key,\r\n }) {\r\n super({\r\n name,\r\n properties,\r\n navigationPropertyNames,\r\n baseTypeName,\r\n });\r\n\r\n if (key) {\r\n defineConstProperty(this, 'key', key);\r\n defineConstProperty(this, 'keyProperty', this.properties[this.key]);\r\n } else if (baseTypeName) {\r\n // The key property is inherited if there's a base type\r\n defineProducedProperty(this, 'key', () => this.baseType.key);\r\n defineProducedProperty(this, 'keyProperty', () => this.baseType.keyProperty);\r\n } else {\r\n throw new Error('The \"key\" property is required for an EntityType');\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @class CollectionType\r\n * @extends ObjectType\r\n * @property {String} elementTypeName - The name of the element type\r\n * @property {Type} elementType - The type of the elements\r\n */\r\n class CollectionType extends ObjectType {\r\n /**\r\n * Create a CollectionType\r\n * @param {Object} options - The constructor options\r\n * @param {Object.} options.properties - The property definition\r\n * @param {String} options.baseTypeName - The name of the base type\r\n * @param {String} options.elementTypeName - The name of the element type\r\n * @return {void}\r\n */\r\n constructor({\r\n properties,\r\n baseTypeName,\r\n elementTypeName,\r\n }) {\r\n super({\r\n name: CollectionType.collectionTypeName(elementTypeName),\r\n properties,\r\n baseTypeName,\r\n });\r\n defineConstProperty(this, 'elementTypeName', elementTypeName);\r\n defineProducedProperty(this, 'elementType', () => resolveType(this.elementTypeName, this.namespace));\r\n }\r\n\r\n /**\r\n * Get the CollectionType's name from it's element type name\r\n * @param {String} typeName - The name of the elementType\r\n * @return {String} The name of the CollectionType\r\n */\r\n static collectionTypeName(typeName) {\r\n return `${typeName}${COLLECTION_TYPE_POSTFIX}`;\r\n }\r\n }\r\n\r\n /**\r\n * @memberof Type#\r\n * @this Type\r\n * @returns {CollectionType} The CollectionType of the given Type\r\n */\r\n function collectionTypeFactory() {\r\n return new CollectionType({ elementTypeName: this.name });\r\n }\r\n\r\n /**\r\n * @name type\r\n * @type Type\r\n * @property {CollectionType} collectionType - The collection type of the given type\r\n */\r\n defineProducedPropertyOnClass(Type, 'collectionType', collectionTypeFactory);\r\n\r\n /**\r\n * @typedef {Object} ParameterInfo\r\n * @property {String} typeName - The name of the parameter's type\r\n *\r\n * @memberof CallableType#\r\n * @this CallableType\r\n * @param {Object.} parameters - The parameters to compile\r\n * @return {Object.} A mapping for name to compiled Parameters\r\n */\r\n function compileParameters(parameters) {\r\n const { namespace } = this;\r\n\r\n return _.mapObject(\r\n parameters,\r\n ({ typeName }, name) => new Parameter({ name, namespace, typeName }),\r\n );\r\n }\r\n\r\n /**\r\n * @class CallableType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class CallableType extends Type {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({ name });\r\n\r\n defineConstProperty(this, 'callableName', callableName);\r\n defineConstProperty(this, 'parameters', compileParameters.call(this, parameters));\r\n defineConstProperty(this, 'returnTypeName', returnTypeName);\r\n defineProducedProperty(this, 'returnType', () => resolveType(returnTypeName, this.namespace));\r\n }\r\n }\r\n\r\n /**\r\n * @class ActionType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class ActionType extends CallableType {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * @class FunctionType\r\n * @property {Parameter[]} parameters - The parameters required to call the callable\r\n * @property {String} returnTypeName - The name of the return type\r\n * @property {Type} returnType - The return type of the callable\r\n */\r\n class FunctionType extends CallableType {\r\n /**\r\n * Create a CallableType\r\n * @param {Object} options - The constructor options\r\n * @param {String} options.name - The name of the type\r\n * @param {Object.} parameters - The parameter definitions\r\n * @param {String} returnTypeName - The name of the return type\r\n * @return {void}\r\n */\r\n constructor({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n }) {\r\n super({\r\n name,\r\n callableName,\r\n parameters,\r\n returnTypeName,\r\n });\r\n }\r\n }\r\n\r\n // TODO: wewei, support EnumType\r\n\r\n defineConstProperty(types, 'Property', Property);\r\n defineConstProperty(types, 'Parameter', Parameter);\r\n defineConstProperty(types, 'Type', Type);\r\n defineConstProperty(types, 'PrimitiveType', PrimitiveType);\r\n defineConstProperty(types, 'OneOfType', OneOfType);\r\n defineConstProperty(types, 'ObjectType', ObjectType);\r\n defineConstProperty(types, 'ComplexType', ComplexType);\r\n defineConstProperty(types, 'EntityType', EntityType);\r\n defineConstProperty(types, 'CollectionType', CollectionType);\r\n defineConstProperty(types, 'CallableType', CallableType);\r\n defineConstProperty(types, 'ActionType', ActionType);\r\n defineConstProperty(types, 'FunctionType', FunctionType);\r\n\r\n return types;\r\n })());\r\n};\r\n","const _ = require('underscore');\r\n\r\nfunction join(first, ...frags) {\r\n return frags.reduce((memo, frag) => {\r\n if (_.isEmpty(frag)) {\r\n return memo;\r\n }\r\n const eSlash = /\\/$/.test(memo);\r\n const sSlash = /^\\//.test(frag);\r\n\r\n if (!eSlash && !sSlash) {\r\n return `${memo}/${frag}`;\r\n }\r\n if (eSlash && sSlash) {\r\n return memo + frag.substring(1);\r\n }\r\n return memo + frag;\r\n }, first);\r\n}\r\n\r\nmodule.exports = {\r\n join,\r\n};\r\n","const _ = require('underscore');\r\nconst queryString = require('query-string');\r\n\r\nconst { parseSearch } = require('./parse-search');\r\n\r\nconst DEFAULT_PAGE_SIZE = 20;\r\n\r\nfunction composeSearchString(variables, edmEntity, isColl = true) {\r\n const { cursorIndex } = variables;\r\n const initialSearch = _.omit(variables, ['locator', 'cursorIndex', 'skip', 'options']);\r\n let search = {\r\n top: DEFAULT_PAGE_SIZE,\r\n count: true,\r\n skip: cursorIndex,\r\n ...initialSearch,\r\n };\r\n\r\n if (!isColl) {\r\n // $filter, $orderby, $count, $skip, and $top are only valid for collections.\r\n search = _.omit(search, ['filter', 'orderby', 'count', 'skip', 'top']);\r\n }\r\n\r\n const parsedSearch = parseSearch(search, edmEntity);\r\n const searchCompact = _.omit(parsedSearch, x => _.isNull(x) || _.isUndefined(x));\r\n const searchString = _.isEmpty(searchCompact) ? '' : `?${queryString.stringify(searchCompact)}`;\r\n\r\n return searchString;\r\n}\r\n\r\nmodule.exports = {\r\n composeSearchString,\r\n};\r\n","const _ = require('underscore');\r\n// support a mongoDB like orderby object for now: { age : -1, name: 1 }\r\n// for backward compatibility, support array format: [['age', 'desc'], ['name', 'asc]]\r\nfunction parseOrderBy(orderby) {\r\n function lowerCaseOrderValue(value) {\r\n return _.map(value, (v, index) => (index === 1 ? v.toLowerCase() : v));\r\n }\r\n\r\n if (_.isEmpty(orderby)) {\r\n return {};\r\n }\r\n\r\n let $orderby;\r\n if (_.isArray(orderby)) {\r\n $orderby = _.map(orderby, value => lowerCaseOrderValue(value).join(' ')).join(',');\r\n } else {\r\n $orderby = _.map(orderby, (value, key) => `${key} ${value > 0 ? 'asc' : 'desc'}`).join(',');\r\n }\r\n\r\n return {\r\n $orderby,\r\n };\r\n}\r\n\r\nfunction parseFilter(filter) {\r\n if (_.isEmpty(filter) || _.isEmpty(filter.where)) {\r\n return {};\r\n }\r\n\r\n return {\r\n $filter: filter.where,\r\n };\r\n}\r\n\r\nfunction parseTop(top) {\r\n if (!top) {\r\n return {};\r\n }\r\n\r\n return {\r\n $top: top,\r\n };\r\n}\r\n\r\nfunction parseSkip(skip) {\r\n if (!skip) {\r\n return {};\r\n }\r\n\r\n return {\r\n $skip: skip,\r\n };\r\n}\r\n\r\nfunction parseCount(count) {\r\n if (count === undefined) {\r\n return {};\r\n }\r\n\r\n return {\r\n $count: count,\r\n };\r\n}\r\n\r\nfunction parseSelect(select, resource) {\r\n if (!select) return {};\r\n const parsed = {};\r\n const elementType = resource.type.elementType ? resource.type.elementType : resource.type;\r\n const { navigationPropertyNames } = elementType;\r\n const $select = select.filter(item => !_.contains(navigationPropertyNames, item)).join(',');\r\n const $expand = select.filter(item => _.contains(navigationPropertyNames, item)).join(',');\r\n\r\n if ($select.length) {\r\n parsed.$select = $select;\r\n }\r\n\r\n if ($expand.length) {\r\n parsed.$expand = $expand;\r\n }\r\n\r\n return parsed;\r\n}\r\n\r\nfunction parseSearchString(search) {\r\n if (!search) {\r\n return {};\r\n }\r\n\r\n return {\r\n $search: search,\r\n };\r\n}\r\n\r\nfunction parseSearch(search, edmResource) {\r\n const {\r\n orderby,\r\n filter,\r\n top,\r\n skip,\r\n count,\r\n select,\r\n search: searchString,\r\n ...nonODataSearch\r\n } = search;\r\n\r\n return {\r\n ...parseOrderBy(orderby),\r\n ...parseFilter(filter),\r\n ...parseTop(top),\r\n ...parseSkip(skip),\r\n ...parseCount(count),\r\n ...parseSelect(select, edmResource),\r\n ...parseSearchString(searchString),\r\n ...nonODataSearch,\r\n };\r\n}\r\n\r\nmodule.exports = {\r\n parseSearch,\r\n};\r\n","const {\r\n useFetch,\r\n useDataRefId,\r\n} = require('@bingads-webui-react/overreact');\r\n\r\nconst { useSpecs } = require('./use-specs');\r\n\r\nfunction useODataCall(specs, path, sideEffectFn, variables) {\r\n const dataRefId = useDataRefId();\r\n const { actionSpec } = useSpecs(specs, path);\r\n\r\n return useFetch(dataRefId, actionSpec, variables);\r\n}\r\n\r\nmodule.exports = {\r\n useODataCall,\r\n};\r\n","const { useCallback, useMemo } = require('react');\r\nconst { useDataRefId, usePagination, useMutation } = require('@bingads-webui-react/overreact');\r\n\r\nconst { useSpecs } = require('./use-specs');\r\n\r\nfunction useODataCollection(specs, path, variables, config) {\r\n const dataRefId = useDataRefId();\r\n const { collSpecs } = useSpecs(specs, path);\r\n\r\n const {\r\n fetch: fetchSpec,\r\n mutation: mutationSpec,\r\n destroy: destroySpec,\r\n add: addSpec,\r\n } = collSpecs;\r\n\r\n // FIXME: extract fetchVariables out from the config\r\n const paginationConfig = useMemo(() => ({\r\n fetchVariables: {\r\n ...variables,\r\n },\r\n ...config,\r\n }), [config, variables]);\r\n\r\n const [data, methods] = usePagination(dataRefId, fetchSpec, paginationConfig);\r\n\r\n const mutateFn = useMutation(dataRefId, mutationSpec, config);\r\n const destroyFn = useMutation(dataRefId, destroySpec, config);\r\n const createFn = useMutation(dataRefId, addSpec, config);\r\n\r\n const update = useCallback((newData, ...rest) => {\r\n mutateFn(variables, newData, ...rest);\r\n }, [mutateFn, variables]);\r\n\r\n // FIXME: likezh: Why would destroy need data?\r\n const destroy = useCallback((newData, ...rest) => {\r\n destroyFn(variables, newData, ...rest);\r\n }, [destroyFn, variables]);\r\n\r\n const create = useCallback((newData, ...rest) => {\r\n createFn(variables, newData, ...rest);\r\n }, [createFn, variables]);\r\n\r\n const { loadMore, hasMore, isLoading } = methods;\r\n\r\n return [data, {\r\n loadMore,\r\n hasMore,\r\n isLoading,\r\n create,\r\n update,\r\n destroy,\r\n }];\r\n}\r\n\r\nmodule.exports = {\r\n useODataCollection,\r\n};\r\n","const { useCallback } = require('react');\r\n\r\nconst { useDataRefId, useFetch, useMutation } = require('@bingads-webui-react/overreact');\r\nconst { useSpecs } = require('./use-specs');\r\n\r\nfunction useODataEntity(specs, path, variables, config = {}) {\r\n const dataRefId = useDataRefId();\r\n const { entitySpecs } = useSpecs(specs, path);\r\n\r\n const {\r\n fetch: fetchSpec,\r\n mutation: mutationSpec,\r\n destroy: destroySpec,\r\n } = entitySpecs;\r\n\r\n const [data, error] = useFetch(dataRefId, fetchSpec, variables, config);\r\n const mutateFn = useMutation(dataRefId, mutationSpec, config);\r\n const destroyFn = useMutation(dataRefId, destroySpec, config);\r\n\r\n const update = useCallback((newData, ...rest) => {\r\n mutateFn(variables, newData, ...rest);\r\n }, [mutateFn, variables]);\r\n\r\n // FIXME: likezh: Why would destroy need data?\r\n const destroy = useCallback((newData, ...rest) => {\r\n destroyFn(variables, newData, ...rest);\r\n }, [destroyFn, variables]);\r\n\r\n return [{ data, error }, { update, destroy }];\r\n}\r\n\r\nmodule.exports = {\r\n useODataEntity,\r\n};\r\n","const { useMemo } = require('react');\r\n\r\nfunction useSpecs(specs, path) {\r\n // find the spec needed from path\r\n return useMemo(() => {\r\n const selectedSpecs = specs[path];\r\n\r\n if (!selectedSpecs) {\r\n return [{ error: `specs for path ${path} not found` }];\r\n }\r\n\r\n return selectedSpecs;\r\n }, [path, specs]);\r\n}\r\n\r\nmodule.exports = {\r\n useSpecs,\r\n};\r\n","import React from 'react';\r\n\r\nexport const EnvironmentContext = React.createContext();\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\nimport _ from 'underscore';\r\nimport React, { useRef, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport { EnvironmentContext } from '../environment/context';\r\n\r\nconst MAX_REQUEST_BATCH_SIZE = 10;\r\nconst FETCH_INTERVAL = 50;\r\nconst INIT_MIDDLEWARE_STATES = { isResponseFromStore: false };\r\n\r\nfunction executeRequests(environment, requests) {\r\n const pendingRequests = [\r\n ...requests,\r\n ];\r\n while (pendingRequests.length > 0) {\r\n const req = pendingRequests.shift();\r\n\r\n const {\r\n requestContract,\r\n spec,\r\n variables,\r\n data,\r\n id,\r\n componentName,\r\n } = req;\r\n\r\n req.middlewareStates = {\r\n ...INIT_MIDDLEWARE_STATES,\r\n };\r\n\r\n const { responseContract } = spec;\r\n const {\r\n verb, uriFactoryFn, headerFactoryFn, payloadFactoryFn,\r\n } = requestContract;\r\n\r\n const uri = uriFactoryFn({ requestContract, variables, data });\r\n const header = headerFactoryFn && headerFactoryFn({ requestContract, variables, data });\r\n const payload = payloadFactoryFn && payloadFactoryFn({ requestContract, variables, data });\r\n\r\n const requestor = environment.getRequestor(\r\n id,\r\n spec,\r\n variables,\r\n req.middlewareStates,\r\n { componentName }\r\n );\r\n\r\n requestor(uri, verb, header, payload).execute({\r\n onComplete: response => {\r\n responseContract.onGetResponse(environment, response, req);\r\n },\r\n onError: error => {\r\n responseContract.onGetError(environment, req, error);\r\n },\r\n });\r\n }\r\n}\r\n\r\nfunction batchRequests(environment, batchSize) {\r\n // console.log(`executing requests for batch size ${batchSize}`);\r\n\r\n // we'll try to batch requests\r\n const requests = [];\r\n while (requests.length < batchSize) {\r\n const request = environment.removeRequest();\r\n requests.push(request);\r\n }\r\n\r\n executeRequests(environment, requests);\r\n}\r\n\r\nexport function useEnvironmentInitialization(environment) {\r\n // const [currentEnvironment, setCurrEnv] = useState(environment);\r\n const timer = useRef(null);\r\n\r\n // TODO: we need better way to subscribe here\r\n // current way will result in memory leak or other bugs when environment change\r\n environment.subscribe(() => {\r\n if (!timer.current) {\r\n clearTimeout(timer.current);\r\n }\r\n\r\n if (environment.requestCount() >= MAX_REQUEST_BATCH_SIZE) {\r\n // immediately execute requests to reduce queue size\r\n batchRequests(environment, MAX_REQUEST_BATCH_SIZE);\r\n } else {\r\n // a few requests outstanding, wait a bit to accumulate more.\r\n timer.current = setTimeout(() => {\r\n batchRequests(environment, environment.requestCount());\r\n }, FETCH_INTERVAL);\r\n }\r\n });\r\n}\r\n\r\n// default top-level data fetcher\r\nexport const DataFetcher = memo(props => {\r\n const {\r\n environment,\r\n environments,\r\n children,\r\n } = props;\r\n useEnvironmentInitialization(environment);\r\n _.each(environments, env => useEnvironmentInitialization(env));\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nDataFetcher.propTypes = {\r\n // eslint-disable-next-line react/forbid-prop-types\r\n environment: PropTypes.object.isRequired,\r\n environments: PropTypes.arrayOf(PropTypes.object),\r\n children: PropTypes.oneOfType([\r\n PropTypes.arrayOf(PropTypes.node),\r\n PropTypes.node,\r\n ]).isRequired,\r\n};\r\n\r\nDataFetcher.defaultProps = {\r\n environments: null,\r\n};\r\n","// Use the basic APIs of ES6 Set. If your site supports browsers not\r\n// having Set natively, you should use a polyfill\r\n\r\n/* Subject to observe */\r\nexport class Subject {\r\n constructor() {\r\n // eslint-disable-next-line no-undef\r\n this.observers = new Set();\r\n }\r\n\r\n /**\r\n * Subscribe an observer to the subject\r\n * @param {Object} observer - The observer subscribing to the subject\r\n * @returns {void}\r\n */\r\n subscribe(observer) {\r\n if (!(observer instanceof Object)) {\r\n throw new Error('Invalid observer');\r\n }\r\n this.observers.add(observer);\r\n }\r\n\r\n /**\r\n * Unsubscribe an observer from the subject\r\n * @param {Object} observer - The observer to unsubscribe\r\n * @returns {void}\r\n */\r\n unsubscribe(observer) {\r\n this.observers.delete(observer);\r\n }\r\n\r\n /**\r\n * Notify the observers for a certain action\r\n * @param {string} action -\r\n * Name of the action, it will map to the handler method name on the observer\r\n * @param {...*} args - Additional arguments\r\n * @returns {void}\r\n */\r\n notify(action, ...args) {\r\n this.observers.forEach(observer => {\r\n if (typeof observer[action] === 'function') {\r\n observer[action](this, ...args);\r\n }\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { Subject } from '../../utils/observer-pattern';\r\n\r\nexport class DataRef extends Subject {\r\n constructor(key) {\r\n super();\r\n this.key = key;\r\n this.idRefs = [];\r\n this.status = {\r\n previousVariables: undefined,\r\n lastUpdateTimestamp: Date.now(),\r\n error: undefined,\r\n };\r\n\r\n this.includes = this.includes.bind(this);\r\n this.push = this.push.bind(this);\r\n this.add = this.add.bind(this);\r\n this.delete = this.delete.bind(this);\r\n this.onUpdate = this.onUpdate.bind(this);\r\n this.updateStatus = this.updateStatus.bind(this);\r\n this.onError = this.onError.bind(this);\r\n this.clearError = this.clearError.bind(this);\r\n this.onEntitiesCreated = this.onEntitiesCreated.bind(this);\r\n this.onEntitiesDeleted = this.onEntitiesDeleted.bind(this);\r\n this.reset = this.reset.bind(this);\r\n\r\n // TODO: use \"cursor\" for specific pagination needs\r\n this.cursor = {};\r\n\r\n this.UiComponents = [];\r\n }\r\n\r\n registerComponent({\r\n componentName,\r\n }) {\r\n this.UiComponents = _.uniq([...this.UiComponents, componentName]);\r\n this.updateDevTools();\r\n }\r\n\r\n unregisterComponent({\r\n componentName,\r\n }) {\r\n this.UiComponents = _.without(this.UiComponents, componentName);\r\n this.updateDevTools();\r\n }\r\n\r\n updateDevTools() {\r\n if (window.__OVERREACT_DEVTOOLS__) {\r\n const { onDataRefChange } = window.__OVERREACT_DEVTOOLS__;\r\n onDataRefChange({\r\n components: this.UiComponents,\r\n key: this.key,\r\n idRefs: this.idRefs,\r\n });\r\n }\r\n }\r\n\r\n includes(id) {\r\n return this.idRefs.includes(id);\r\n }\r\n\r\n push(id) {\r\n const ret = this.idRefs.push(id);\r\n\r\n return ret;\r\n }\r\n\r\n add(id) {\r\n // add/merge an id. If id exists in idRefs, do nothing\r\n if (this.includes(id)) {\r\n return;\r\n }\r\n\r\n this.push(id);\r\n }\r\n\r\n delete(ids) {\r\n if (_.intersection(this.idRefs, ids).length > 0) {\r\n this.idRefs = _.difference(this.idRefs, ids);\r\n }\r\n }\r\n\r\n onError(error, ...args) {\r\n this.status.error = error;\r\n this.notify('onError', error, ...args);\r\n }\r\n\r\n clearError() {\r\n this.onError(undefined);\r\n }\r\n\r\n // currently, we will always add something to this data ref after clear, and trigger event then\r\n // so here we don't trigger a notification anymore: this.notify('update', []);\r\n // otherwise UI component will get a incorrect empty status for short time\r\n clear() {\r\n this.idRefs = [];\r\n this.clearError();\r\n }\r\n\r\n reset(ids) {\r\n this.idRefs = ids;\r\n this.notify('update', ids);\r\n }\r\n\r\n updateStatus(newStatus) {\r\n this.status = {\r\n ...this.status,\r\n ...newStatus,\r\n };\r\n }\r\n\r\n onUpdate(updatedIds, request) {\r\n if (_.intersection(this.idRefs, updatedIds).length > 0) {\r\n this.notify('update', updatedIds, request);\r\n }\r\n }\r\n\r\n onEntitiesCreated(ids) {\r\n if (!_.isEmpty(ids)) {\r\n this.notify('onEntitiesCreated', ids);\r\n }\r\n }\r\n\r\n onEntitiesDeleted(ids) {\r\n if (_.intersection(this.idRefs, ids).length > 0) {\r\n this.delete(ids);\r\n this.notify('update', this.idRefs);\r\n }\r\n }\r\n\r\n toJson() {\r\n return ({\r\n key: this.key,\r\n idRefs: this.idRefs,\r\n status: this.status,\r\n });\r\n }\r\n}\r\n","import { DataRef } from './data-ref';\r\n\r\n// this will be attached to the schema node as an extension\r\n// and represent all data stored under the data path given by the schema node\r\n// each data node contains an array of data IDs\r\n// which refers to the actual data record in the store.\r\nexport class DataNode {\r\n constructor() {\r\n this.dataRefs = {};\r\n\r\n this.getDataRef = this.getDataRef.bind(this);\r\n this.dataRefIdsUpdate = this.dataRefIdsUpdate.bind(this);\r\n this.entitiesCreated = this.entitiesCreated.bind(this);\r\n this.entitiesDeleted = this.entitiesDeleted.bind(this);\r\n }\r\n\r\n getDataRef(key) {\r\n if (!this.dataRefs[key]) {\r\n this.dataRefs[key] = new DataRef(key);\r\n }\r\n\r\n return this.dataRefs[key];\r\n }\r\n\r\n dataRefIdsUpdate(recordGroup, updatedIds, request) {\r\n Object.keys(this.dataRefs).forEach(key => this.dataRefs[key].onUpdate(updatedIds, request));\r\n }\r\n\r\n entitiesCreated(recordGroup, ids) {\r\n Object.keys(this.dataRefs).forEach(key => this.dataRefs[key].onEntitiesCreated(ids));\r\n }\r\n\r\n entitiesDeleted(recordGroup, ids) {\r\n Object.keys(this.dataRefs).forEach(key => this.dataRefs[key].onEntitiesDeleted(ids));\r\n }\r\n\r\n toJson() {\r\n return ({\r\n dataRefs: Object.keys(this.dataRefs).map(k => this.dataRefs[k].toJson()),\r\n });\r\n }\r\n}\r\n","import { DataNode } from './data-node';\r\n\r\nconst EXTENSION_NAME = 'DATA';\r\n\r\nexport function createDataNode(schemaNode, store) {\r\n if (!schemaNode) {\r\n throw new Error('Invalid schema node');\r\n }\r\n\r\n const dataNode = new DataNode();\r\n store.getRecordGroup(schemaNode.modelName).subscribe(dataNode);\r\n\r\n schemaNode.setExtension(EXTENSION_NAME, dataNode);\r\n\r\n return dataNode;\r\n}\r\n\r\nexport function getDataNode(schemaNode) {\r\n if (!schemaNode) {\r\n return null;\r\n }\r\n\r\n return schemaNode.getExtension(EXTENSION_NAME);\r\n}\r\n","export class Record {\r\n constructor(id, type, data) {\r\n this.id = id;\r\n this.type = type;\r\n this.data = data;\r\n\r\n this.setValue = this.setValue.bind(this);\r\n this.getValue = this.getValue.bind(this);\r\n this.setData = this.setData.bind(this);\r\n this.getData = this.getData.bind(this);\r\n }\r\n\r\n setValue(key, value) {\r\n this.data = {\r\n ...this.data,\r\n [key]: value,\r\n };\r\n }\r\n\r\n getValue(key) {\r\n return this.data[key];\r\n }\r\n\r\n setData(data) {\r\n this.data = {\r\n ...this.data,\r\n ...data,\r\n };\r\n }\r\n\r\n getData() {\r\n return this.data;\r\n }\r\n}\r\n","export const OVERREACT_ID_FIELD_NAME = '_OVERREACT_ID';\r\n\r\nexport function createOverreactId(id, parentId, parentType) {\r\n return `${parentType}:${parentId}:${id}`;\r\n}\r\n","import _ from 'underscore';\r\nimport { Record } from './record';\r\nimport { OVERREACT_ID_FIELD_NAME } from './consts';\r\nimport { Subject } from '../utils/observer-pattern';\r\n\r\nexport class RecordGroup extends Subject {\r\n constructor({\r\n schemaType,\r\n store,\r\n }) {\r\n super();\r\n\r\n this.schemaType = schemaType;\r\n this.store = store;\r\n\r\n // records will be kept in chronological order\r\n // new records will always be kept at the end of the list\r\n this.records = [];\r\n\r\n this.addOrUpdateRecords = this.addOrUpdateRecords.bind(this);\r\n\r\n this.getRecords = this.getRecords.bind(this);\r\n this.getRecordsByEntityKeys = this.getRecordsByEntityKeys.bind(this);\r\n }\r\n\r\n findIndex(dataId) {\r\n return this.records.findIndex(r => r.id === dataId);\r\n }\r\n\r\n addOrUpdateRecordInternal(data) {\r\n const dataId = data[OVERREACT_ID_FIELD_NAME];\r\n const recordId = this.findIndex(dataId);\r\n\r\n if (recordId > -1) {\r\n // we're updating\r\n this.records[recordId].setData(data.rawData);\r\n } else {\r\n // \"add\" record - because we'll be appending\r\n const newRecord = new Record(dataId, this.schemaType, data.rawData);\r\n this.records.push(newRecord);\r\n }\r\n\r\n return dataId;\r\n }\r\n\r\n addOrUpdateRecords(dataItems, request) {\r\n const updatedDataIDs = dataItems.map(data => this.addOrUpdateRecordInternal(data));\r\n this.notify('dataRefIdsUpdate', updatedDataIDs, request);\r\n this.notifyUpdate();\r\n }\r\n\r\n deleteRecords(ids) {\r\n this.records = this.records.filter(record => !_.contains(ids, record.id));\r\n this.notifyUpdate();\r\n }\r\n\r\n getRecords(ids) {\r\n return ids.map(id => this.records.find(r => r.id === id));\r\n }\r\n\r\n getRecordsByEntityKeys(keySelector, keys) {\r\n return _.chain(keys)\r\n .map(key => this.records.find(r => keySelector(r.getData()) === key))\r\n .compact()\r\n .value();\r\n }\r\n\r\n notifyUpdate() {\r\n if (window.__OVERREACT_DEVTOOLS__) {\r\n const { onRecordGroupChange } = window.__OVERREACT_DEVTOOLS__;\r\n onRecordGroupChange({\r\n storeId: this.store.uniqueId,\r\n schemaType: this.schemaType,\r\n records: JSON.parse(JSON.stringify(this.records)),\r\n });\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\n// Use the basic APIs of ES6 Map. If your site supports browsers not\r\n// having Map natively, you should use a polyfill\r\nimport { RecordGroup } from './record-group';\r\n\r\nexport class Store {\r\n constructor(uniqueId) {\r\n this.uniqueId = uniqueId || _.uniqueId('Overreact_store_');\r\n this.recordGroups = {};\r\n // eslint-disable-next-line no-undef\r\n this.preemptiveRecords = new Map();\r\n\r\n this.getRecordGroup = this.getRecordGroup.bind(this);\r\n\r\n if (window.__OVERREACT_DEVTOOLS__) {\r\n window.__OVERREACT_DEVTOOLS__.store = this;\r\n window.__OVERREACT_DEVTOOLS__.getStore(this);\r\n }\r\n }\r\n\r\n getRecordGroup(modelName) {\r\n if (!this.recordGroups[modelName]) {\r\n this.recordGroups[modelName] = new RecordGroup({\r\n schemaType: modelName,\r\n store: this,\r\n });\r\n }\r\n return this.recordGroups[modelName];\r\n }\r\n\r\n addPreemptiveRecords(key, records) {\r\n this.preemptiveRecords.set(key, records);\r\n }\r\n\r\n removePreemptiveRecords(key) {\r\n const records = this.preemptiveRecords.get(key);\r\n this.preemptiveRecords.delete(key);\r\n return records;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { getDataNode, createDataNode } from './schema-extension/schema-extension';\r\n\r\nexport function getRecordGroup(store, requestContract) {\r\n if (store) {\r\n const schemaNode = requestContract.getSchemaNode();\r\n const recordGroup = store.getRecordGroup(schemaNode.modelName);\r\n\r\n return recordGroup;\r\n }\r\n return null;\r\n}\r\n\r\nexport function getRecordsById(store, requestContract, ids) {\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n return recordGroup.getRecords(ids);\r\n}\r\n\r\nexport function getRecordsByEntityKey(store, spec, keys) {\r\n const { requestContract, responseContract } = spec;\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n const { keySelector } = responseContract;\r\n return recordGroup.getRecordsByEntityKeys(keySelector, keys);\r\n}\r\n\r\nexport function getRecordsFromResponseDataArray(store, spec, dataArray) {\r\n const { responseContract } = spec;\r\n const { keySelector } = responseContract;\r\n const entityKeys = _.map(dataArray, d => keySelector(d));\r\n return getRecordsByEntityKey(store, spec, entityKeys);\r\n}\r\n\r\nexport function getRecords(store, requestContract, key) {\r\n if (store) {\r\n const schemaNode = requestContract.getSchemaNode();\r\n const dataNode = getDataNode(schemaNode) || createDataNode(schemaNode, store);\r\n\r\n const dataIds = dataNode.getDataRef(key).idRefs;\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n\r\n return recordGroup.getRecords(dataIds);\r\n }\r\n return null;\r\n}\r\n\r\nexport function getDataRef(store, requestContract, dataRefId) {\r\n if (store) {\r\n const schemaNode = requestContract.getSchemaNode();\r\n const dataNode = getDataNode(schemaNode) || createDataNode(schemaNode, store);\r\n return dataNode && dataNode.getDataRef(dataRefId);\r\n }\r\n return null;\r\n}\r\n\r\nexport function updateDataRefWithIds(dataRef, ids) {\r\n dataRef.clear();\r\n _.map(ids, id => {\r\n dataRef.add(id);\r\n });\r\n dataRef.onUpdate(ids);\r\n}\r\n","export const specTypes = {\r\n ADD: 'ADD',\r\n DELETE: 'DELETE',\r\n FETCH: 'FETCH',\r\n MUTATION: 'MUTATION',\r\n PAGINATION: 'PAGINATION',\r\n REFETCH: 'REFETCH',\r\n};\r\n","export const responseTypes = {\r\n ENTITY: 'ENTITY',\r\n COLL: 'COLL',\r\n NONE: 'NONE', // useful when deleting\r\n};\r\n","import _ from 'underscore';\r\nimport stringify from 'json-stable-stringify';\r\n\r\nimport { getRecords, getDataRef } from '../../store';\r\nimport { specTypes } from '../../spec/spec-types';\r\nimport { responseTypes } from '../../spec/response-types';\r\n\r\nexport const DEFAULT_STORE_EXPIRATION_DURATION = 5 * 60 * 1000;\r\n\r\nexport const FetchPolicy = {\r\n StoreOnly: 'StoreOnly',\r\n NetworkOnly: 'NetworkOnly',\r\n StoreOrNetwork: 'StoreOrNetwork',\r\n NetworkOrStore: 'NetworkOrStore',\r\n};\r\n\r\nexport function IsNetworkPolicy(fetchPolicy) {\r\n return fetchPolicy === FetchPolicy.NetworkOnly\r\n || fetchPolicy === FetchPolicy.NetworkOrStore\r\n || fetchPolicy === FetchPolicy.StoreOrNetwork;\r\n}\r\n\r\nexport function IsStorePolicy(fetchPolicy) {\r\n return fetchPolicy === FetchPolicy.StoreOnly\r\n || fetchPolicy === FetchPolicy.StoreOrNetwork\r\n || fetchPolicy === FetchPolicy.NetworkOrStore;\r\n}\r\n\r\nexport function IsStoreSecondaryPolicy(fetchPolicy) {\r\n return fetchPolicy === FetchPolicy.NetworkOrStore;\r\n}\r\n\r\nexport function getFetchPolicy(specType, fetchPolicyOption, fetchPolicyInEnv) {\r\n if (specType === specTypes.FETCH\r\n || specType === specTypes.PAGINATION\r\n || fetchPolicyOption !== FetchPolicy.StoreOnly) {\r\n return fetchPolicyOption || fetchPolicyInEnv;\r\n }\r\n\r\n return fetchPolicyInEnv;\r\n}\r\n\r\nexport function getDataFromStore(store, spec, dataRefId) {\r\n const { requestContract } = spec;\r\n const records = getRecords(store, requestContract, dataRefId);\r\n\r\n const dataInStore = _.map(records, record => record.getData());\r\n if (spec.responseContract.responseType === responseTypes.ENTITY\r\n && !_.isEmpty(dataInStore) && _.isArray(dataInStore)) {\r\n return dataInStore[0];\r\n }\r\n return dataInStore;\r\n}\r\n\r\nexport function shouldForceNetwork({\r\n store, spec, dataRefId, variables, storeExpirationDuration, currentTimestamp, requestFetchPolicy,\r\n}) {\r\n const { requestContract, specType } = spec;\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n const {\r\n status: {\r\n previousVariables,\r\n lastUpdateTimestamp,\r\n } = {},\r\n } = dataRef || {};\r\n\r\n return requestFetchPolicy !== FetchPolicy.StoreOnly\r\n && (stringify(variables) !== stringify(previousVariables)\r\n || currentTimestamp - lastUpdateTimestamp > storeExpirationDuration\r\n || specType === specTypes.ADD\r\n || specType === specTypes.DELETE\r\n || specType === specTypes.MUTATION);\r\n}\r\n\r\nexport function updateDataRefStatus({\r\n store, spec, dataRefId, variables, currentTimestamp,\r\n}) {\r\n const { requestContract } = spec;\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n if (dataRef) {\r\n dataRef.updateStatus({\r\n previousVariables: variables,\r\n lastUpdateTimestamp: currentTimestamp,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport {\r\n FetchPolicy,\r\n IsNetworkPolicy,\r\n IsStorePolicy,\r\n IsStoreSecondaryPolicy,\r\n getFetchPolicy,\r\n getDataFromStore,\r\n shouldForceNetwork,\r\n updateDataRefStatus,\r\n DEFAULT_STORE_EXPIRATION_DURATION,\r\n} from './fetch-policy-utils';\r\n\r\nexport function createFetchPolicyMiddleware(fetchPolicyMiddlewareOptions) {\r\n const {\r\n fetchPolicy = FetchPolicy.StoreOrNetwork,\r\n cacheExpirationDuration = DEFAULT_STORE_EXPIRATION_DURATION,\r\n } = fetchPolicyMiddlewareOptions || {};\r\n\r\n return next => async req => {\r\n const fetchPolicyInReq = (req.variables\r\n && req.variables.options\r\n && req.variables.options.fetchPolicy)\r\n || req.spec.requestContract.fetchPolicy;\r\n const requestFetchPolicy = getFetchPolicy(req.spec.specType, fetchPolicyInReq, fetchPolicy);\r\n\r\n const isStoreSecondaryPolicy = IsStoreSecondaryPolicy(requestFetchPolicy);\r\n let dataInStore = null;\r\n const isNetworkPolicy = IsNetworkPolicy(requestFetchPolicy);\r\n const isStorePolicy = IsStorePolicy(requestFetchPolicy);\r\n\r\n const currentTimestamp = Date.now();\r\n const isForceNetwork = shouldForceNetwork({\r\n store: req.store,\r\n spec: req.spec,\r\n dataRefId: req.dataRefId,\r\n variables: _.omit(req.variables, 'options'),\r\n storeExpirationDuration: cacheExpirationDuration,\r\n currentTimestamp,\r\n requestFetchPolicy,\r\n });\r\n\r\n if (isStorePolicy && !isForceNetwork && !isStoreSecondaryPolicy) {\r\n dataInStore = getDataFromStore(req.store, req.spec, req.dataRefId);\r\n if (!_.isEmpty(dataInStore)) {\r\n req.middlewareStates.isResponseFromStore = true;\r\n return dataInStore;\r\n }\r\n }\r\n\r\n if (isNetworkPolicy) {\r\n const res = await next(req)\r\n .then(response => {\r\n updateDataRefStatus({\r\n store: req.store,\r\n spec: req.spec,\r\n dataRefId: req.dataRefId,\r\n variables: _.omit(req.variables, 'options'),\r\n currentTimestamp,\r\n });\r\n return response;\r\n })\r\n .catch(error => {\r\n // we only try roll back to previous data if policy is networkOrStore\r\n // if policy is storeOrNetwork and we go here, it means we already miss the cache\r\n // or we decided to not trust the cache.\r\n if (requestFetchPolicy === FetchPolicy.NetworkOrStore) {\r\n dataInStore = getDataFromStore(req.store, req.spec, req.dataRefId);\r\n if (!_.isEmpty(dataInStore)) {\r\n req.middlewareStates.isResponseFromStore = true;\r\n return dataInStore;\r\n }\r\n }\r\n throw error;\r\n });\r\n return res;\r\n }\r\n\r\n return next(req);\r\n };\r\n}\r\n","export const middlewareTypes = {\r\n ERROR: 'ERROR',\r\n FETCH_POLICY: 'FETCH_POLICY',\r\n INSTRUMENTATION: 'INSTRUMENTATION',\r\n};\r\n","import {\r\n compose, omit, values, pick,\r\n} from 'underscore';\r\nimport { middlewareTypes } from './middleware-types';\r\n\r\nfunction executeRequestor(wrappedRequestor) {\r\n return wrappedRequestor.executeRequest();\r\n}\r\n\r\nexport function requestWithMiddleware(wrappedRequestor, middlewares) {\r\n const baseMiddlewares = values(omit(middlewares, middlewareTypes.INSTRUMENTATION));\r\n const instrumentationMiddleware = values(pick(middlewares, middlewareTypes.INSTRUMENTATION));\r\n const wrappedRequest = compose(\r\n ...baseMiddlewares,\r\n ...instrumentationMiddleware,\r\n )(executeRequestor);\r\n\r\n // eslint-disable-next-line arrow-body-style\r\n return wrappedRequest(wrappedRequestor).then(response => {\r\n return response;\r\n }).catch(error => {\r\n throw error;\r\n });\r\n}\r\n","export class WrappedRequestor {\r\n constructor(parameter) {\r\n const {\r\n requestor,\r\n uri,\r\n verb,\r\n headers,\r\n payload,\r\n spec,\r\n variables,\r\n store,\r\n dataRefId,\r\n middlewareStates,\r\n } = parameter;\r\n\r\n this.requestor = requestor;\r\n this.uri = uri;\r\n this.verb = verb;\r\n this.headers = headers;\r\n this.payload = payload;\r\n this.variables = variables;\r\n this.spec = spec;\r\n this.store = store;\r\n this.dataRefId = dataRefId;\r\n this.middlewareStates = middlewareStates;\r\n\r\n this.executeRequest = this.executeRequest.bind(this);\r\n }\r\n\r\n executeRequest() {\r\n return this.requestor(this.uri, this.verb, this.headers, this.payload);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function createErrorMiddleware(errorMiddlewareOptions) {\r\n const {\r\n errorProcessor = _.noop,\r\n errorConvertor: envErrorConverter = _.noop,\r\n } = errorMiddlewareOptions || {};\r\n return next => async req => {\r\n const {\r\n spec: {\r\n responseContract: {\r\n errorConvertFn,\r\n } = {},\r\n } = {},\r\n } = req || {};\r\n const errorConvertor = errorConvertFn || envErrorConverter;\r\n\r\n const response = next(req).then(res => {\r\n const error = errorConvertor(res);\r\n if (error) {\r\n throw error;\r\n }\r\n return res;\r\n }).catch(error => {\r\n const processedError = errorConvertor(error) || error;\r\n errorProcessor(processedError);\r\n throw error;\r\n });\r\n\r\n return response;\r\n };\r\n}\r\n","/**\r\n * Get the current timestamp\r\n * @returns {number} - the timestamp since epoch in milliseconds\r\n*/\r\nexport function getTimestamp() {\r\n return Date.now();\r\n}\r\n","import _ from 'underscore';\r\nimport { useRef, useEffect, useDebugValue } from 'react';\r\n\r\nexport function usePrevious(value) {\r\n const ref = useRef();\r\n\r\n useEffect(() => {\r\n ref.current = value;\r\n }, [value]);\r\n\r\n return ref.current;\r\n}\r\n\r\n\r\nexport function useDeepMemo(value) {\r\n const ref = useRef();\r\n\r\n if (!_.isEqual(value, ref.current)) {\r\n ref.current = value;\r\n }\r\n\r\n return ref.current;\r\n}\r\n\r\nexport function useDeepEqualEffect(fn, deps) {\r\n const isFirst = useRef(true);\r\n const prevDeps = useRef(deps);\r\n\r\n useEffect(() => {\r\n const isSame = prevDeps.current.every((obj, key) => _.isEqual(obj, deps[key]));\r\n\r\n if (isFirst.current || !isSame) {\r\n fn();\r\n }\r\n\r\n isFirst.current = false;\r\n prevDeps.current = deps;\r\n }, [deps, fn]);\r\n\r\n useDebugValue('useDeepEqualEffect');\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\n\r\nimport { getTimestamp } from '../../utils/primitive-utilities';\r\n\r\nconst errorToString = error => {\r\n const stringError = error && error.toString();\r\n const stringifiedJson = JSON.stringify(error);\r\n\r\n if ((!_.isEmpty(stringifiedJson) && stringifiedJson !== '{}') || stringError === '[object Object]') {\r\n return stringifiedJson;\r\n }\r\n return stringError;\r\n};\r\n\r\nexport const defaultStubOptions = {\r\n serverErrorCodes: [-1],\r\n\r\n detectError(respData, serverErrorCodes) {\r\n const result = {\r\n pass: true,\r\n status: 400, // hard code to 400 for user-defined error\r\n };\r\n\r\n if (respData\r\n && respData.Errors\r\n && respData.Errors[0]\r\n && respData.Errors[0].Code\r\n && _.isArray(serverErrorCodes)\r\n && _.contains(serverErrorCodes, respData.Errors[0].Code)) {\r\n result.pass = false;\r\n result.message = respData.Errors[0].Message;\r\n result.impactUser = true;\r\n }\r\n return result;\r\n },\r\n\r\n getServerPerf(response) {\r\n if (response && _.isFunction(response.getResponseHeader)) {\r\n const perfTimings = response.getResponseHeader('PerfTimings');\r\n if (perfTimings) {\r\n return perfTimings;\r\n }\r\n const perf = {};\r\n _.each(\r\n ['x-ms-mte2eelapsedtimems', 'x-ms-odataapie2eelapsedtimems', 'x-ms-odataapionlye2eelapsedtimems'],\r\n header => {\r\n const value = response.getResponseHeader(header);\r\n if (value) {\r\n perf[header] = value;\r\n }\r\n },\r\n );\r\n\r\n return JSON.stringify(perf);\r\n }\r\n return '';\r\n },\r\n};\r\n\r\nexport function beforeSendHandler(instrumentationContext, req, perfFunc, shouldAddHeaders) {\r\n instrumentationContext.requestStartTime = getTimestamp();\r\n\r\n if (shouldAddHeaders(instrumentationContext) === true) {\r\n req.headers = {\r\n ...req.headers,\r\n 'x-ms-pagetrackingid': instrumentationContext.pageTrackingId,\r\n 'x-ms-lcid': instrumentationContext.stubOptions.lcid,\r\n lcid: instrumentationContext.stubOptions.lcid,\r\n 'x-ms-requestid': instrumentationContext.requestId,\r\n };\r\n }\r\n\r\n perfFunc({\r\n requestId: instrumentationContext.requestId,\r\n api: instrumentationContext.url,\r\n isMethodEnter: true,\r\n httpMethod: instrumentationContext.httpMethod,\r\n timeTaken: 0,\r\n pass: true,\r\n message: '',\r\n });\r\n}\r\n\r\nexport function successHandler(instrumentationContext, response, errorFunc, perfFunc) {\r\n const requestTimeTaken = getTimestamp() - instrumentationContext.requestStartTime;\r\n const result = instrumentationContext.stubOptions.detectError(response);\r\n instrumentationContext.requestTimeTaken = requestTimeTaken;\r\n\r\n if (!result.pass) {\r\n instrumentationContext.requestResult = false;\r\n instrumentationContext.error = result.message;\r\n\r\n errorFunc({\r\n message: instrumentationContext.error,\r\n api: instrumentationContext.url,\r\n requestId: instrumentationContext.requestId,\r\n impactUser: result.impactUser,\r\n httpMethod: instrumentationContext.httpMethod,\r\n statusCode: result.status,\r\n });\r\n }\r\n\r\n perfFunc({\r\n requestId: instrumentationContext.requestId,\r\n api: instrumentationContext.url,\r\n isMethodEnter: false,\r\n httpMethod: instrumentationContext.httpMethod,\r\n timeTaken: instrumentationContext.requestTimeTaken,\r\n pass: instrumentationContext.requestResult,\r\n message: instrumentationContext.stubOptions.getServerPerf(response),\r\n statusCode: 200,\r\n });\r\n}\r\n\r\nexport function errorHandler(\r\n instrumentationContext, error, isUserError,\r\n traceFunc, errorFunc, perfFunc,\r\n) {\r\n const requestTimeTaken = getTimestamp() - instrumentationContext.requestStartTime;\r\n instrumentationContext.requestTimeTaken = requestTimeTaken;\r\n\r\n if (error && error.status !== 0 && error.status) {\r\n instrumentationContext.responseJSON = error.responseJSON;\r\n instrumentationContext.requestResult = false;\r\n\r\n instrumentationContext.error = `Overreact server response error: [${error.status}], error: ${JSON.stringify(error)}`;\r\n\r\n if (error.responseJSON) {\r\n instrumentationContext.error += (`, responseJSON: ${errorToString(error.responseJSON)}`);\r\n }\r\n\r\n switch (error.status) {\r\n case 400:\r\n case 404:\r\n // If error maps to a user error, log at trace level\r\n if (isUserError(error)) {\r\n instrumentationContext.requestResult = true;\r\n }\r\n break;\r\n case 401:\r\n // Log 401 unauthorized error at trace level\r\n instrumentationContext.requestResult = true;\r\n break;\r\n default:\r\n instrumentationContext.requestResult = false;\r\n }\r\n } else {\r\n // If error maps to a user error, log at trace level\r\n if (isUserError(error)) {\r\n instrumentationContext.requestResult = true;\r\n } else {\r\n instrumentationContext.requestResult = false;\r\n }\r\n const errMsg = _.isError(error) ? error : JSON.stringify(error);\r\n instrumentationContext.error = `Overreact general error: ${errMsg}`;\r\n }\r\n\r\n const logFunc = instrumentationContext.requestResult ? traceFunc : errorFunc;\r\n logFunc({\r\n message: instrumentationContext.error,\r\n api: instrumentationContext.url,\r\n requestId: instrumentationContext.requestId,\r\n httpMethod: instrumentationContext.httpMethod,\r\n statusCode: error.status,\r\n });\r\n\r\n perfFunc({\r\n requestId: instrumentationContext.requestId,\r\n api: instrumentationContext.url,\r\n isMethodEnter: false,\r\n httpMethod: instrumentationContext.httpMethod,\r\n timeTaken: instrumentationContext.requestTimeTaken,\r\n pass: instrumentationContext.requestResult,\r\n statusCode: error.status,\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { defaultStubOptions } from './instrumentation-utils';\r\n\r\nexport class InstrumentationContext {\r\n constructor(parameter) {\r\n const {\r\n pageTrackingId,\r\n errorMappers,\r\n url,\r\n requestId,\r\n httpMethod,\r\n stubOptions,\r\n } = parameter;\r\n\r\n this.pageTrackingId = pageTrackingId;\r\n this.errorMappers = errorMappers;\r\n this.url = url;\r\n this.requestId = requestId;\r\n this.httpMethod = httpMethod;\r\n this.stubOptions = _.defaults(stubOptions || {}, defaultStubOptions);\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport _ from 'underscore';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport { InstrumentationContext } from './instrumentation-context';\r\nimport { beforeSendHandler, successHandler, errorHandler } from './instrumentation-utils';\r\n\r\nexport function createInstrumentationMiddleware(instrumentationOptions) {\r\n const {\r\n pageTrackingId,\r\n errorMappers,\r\n stubOptions,\r\n loggerFunc: {\r\n traceFunc = _.noop,\r\n errorFunc = _.noop,\r\n perfFunc = _.noop,\r\n } = {},\r\n } = instrumentationOptions || {};\r\n\r\n const shouldAddHeaders = instrumentationOptions.shouldAddHeaders || _.constant(true);\r\n\r\n function isUserError(error) {\r\n return _.any(errorMappers, errorMapper => errorMapper.check(error));\r\n }\r\n\r\n return next => async req => {\r\n const {\r\n headers: {\r\n 'x-ms-requestid': requestId = uuidv4(),\r\n } = {},\r\n } = req;\r\n\r\n const instrumentationContext = new InstrumentationContext({\r\n pageTrackingId,\r\n errorMappers,\r\n url: req.uri,\r\n requestId,\r\n httpMethod: req.spec.requestContract.verb,\r\n stubOptions,\r\n });\r\n\r\n beforeSendHandler(instrumentationContext, req, perfFunc, shouldAddHeaders);\r\n\r\n const response = next(req).then(res => {\r\n successHandler(instrumentationContext, res, errorFunc, perfFunc);\r\n return res;\r\n }).catch(error => {\r\n errorHandler(instrumentationContext, error, isUserError, traceFunc, errorFunc, perfFunc);\r\n throw error;\r\n });\r\n\r\n return response;\r\n };\r\n}\r\n","import 'regenerator-runtime/runtime';\r\n\r\nimport { requestWithMiddleware, WrappedRequestor } from '../middleware';\r\n\r\nexport class Environment {\r\n constructor(networkRequestor, schema, store, middlewares, tag) {\r\n this.networkRequestor = networkRequestor;\r\n\r\n this.schema = schema;\r\n\r\n // an FIFO queue\r\n this.requestQueue = [];\r\n this.dataFetcherSubscriber = [];\r\n\r\n // initialize the store\r\n this.store = store;\r\n\r\n this.middlewares = middlewares || {};\r\n\r\n this.tag = tag;\r\n\r\n this.notifyObservers = this.notifyObservers.bind(this);\r\n this.pushRequest = this.pushRequest.bind(this);\r\n this.removeRequest = this.removeRequest.bind(this);\r\n this.requestCount = this.requestCount.bind(this);\r\n\r\n this.subscribe = this.subscribe.bind(this);\r\n this.unsubscribe = this.unsubscribe.bind(this);\r\n\r\n this.getSchema = this.getSchema.bind(this);\r\n this.getRequestor = this.getRequestor.bind(this);\r\n\r\n this.dataRefIdPool = {};\r\n }\r\n\r\n getRequestor(id, spec, variables, middlewareStates, additionalParams) {\r\n const requestorWithDevTools = (uri, verb, headers, payload) => {\r\n const requestor = this.networkRequestor(uri, verb, headers, payload);\r\n\r\n if (window.__OVERREACT_DEVTOOLS__) {\r\n const { onRequest, onError } = window.__OVERREACT_DEVTOOLS__;\r\n const { componentName } = additionalParams;\r\n return requestor\r\n .then(value => {\r\n onRequest({\r\n id,\r\n uri,\r\n verb,\r\n headers,\r\n payload,\r\n spec: spec.toString(),\r\n componentName,\r\n responseValue: value,\r\n });\r\n return value;\r\n })\r\n .catch(ex => {\r\n onError({\r\n id,\r\n uri,\r\n verb,\r\n headers,\r\n payload,\r\n spec: spec.toString(),\r\n componentName,\r\n exception: ex,\r\n });\r\n\r\n throw ex;\r\n });\r\n }\r\n\r\n return requestor;\r\n };\r\n\r\n return (uri, verb, headers, payload) => ({\r\n execute: sink => {\r\n if (!this.middlewares || this.middlewares.length === 0) {\r\n requestorWithDevTools(uri, verb, headers, payload)\r\n .then(value => sink.onComplete(value))\r\n .catch(err => sink.onError(err));\r\n } else {\r\n const wrappedRequestor = new WrappedRequestor({\r\n requestor: requestorWithDevTools,\r\n uri,\r\n verb,\r\n headers,\r\n payload,\r\n spec,\r\n variables,\r\n store: this.store,\r\n dataRefId: id,\r\n middlewareStates,\r\n });\r\n const res = requestWithMiddleware(wrappedRequestor, this.middlewares);\r\n\r\n res\r\n .then(value => sink.onComplete(value))\r\n .catch(err => sink.onError(err));\r\n }\r\n },\r\n });\r\n }\r\n\r\n getSchema() {\r\n return this.schema;\r\n }\r\n\r\n notifyObservers() {\r\n for (let i = 0; i < this.dataFetcherSubscriber.length; i += 1) {\r\n this.dataFetcherSubscriber[i].notify(this.requestQueue);\r\n }\r\n }\r\n\r\n /*\r\n The request will have the following shape:\r\n\r\n {\r\n id,\r\n requestContract,\r\n spec,\r\n variables,\r\n data,\r\n dataCb,\r\n }\r\n */\r\n pushRequest(request) {\r\n this.requestQueue.push(request);\r\n\r\n this.notifyObservers();\r\n }\r\n\r\n removeRequest() {\r\n return this.requestQueue.shift();\r\n }\r\n\r\n requestCount() {\r\n return this.requestQueue.length;\r\n }\r\n\r\n subscribe(notifyCb) {\r\n this.dataFetcherSubscriber.push({\r\n notify: notifyCb,\r\n });\r\n\r\n return this.dataFetcherSubscriber.length - 1;\r\n }\r\n\r\n unsubscribe(id) {\r\n return this.dataFetcherSubscriber.splice(id, 1).length;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { useContext } from 'react';\r\nimport { EnvironmentContext } from './context';\r\n\r\nexport function useEnvironment(environmentLookupFn) {\r\n const [environment, environments] = useContext(EnvironmentContext);\r\n if (_.isFunction(environmentLookupFn)) {\r\n const specificEnv = _.find(environments, env => env && env.tag && environmentLookupFn(env.tag));\r\n if (!_.isEmpty(specificEnv)) {\r\n return specificEnv;\r\n }\r\n }\r\n return environment || _.first(environments);\r\n}\r\n","export const requestVerbs = {\r\n GET: 'GET',\r\n POST: 'POST',\r\n DELETE: 'DELETE',\r\n PATCH: 'PATCH',\r\n PUT: 'PUT',\r\n};\r\n","export class RequestContract {\r\n constructor({\r\n schema,\r\n dataPath,\r\n verb,\r\n fetchPolicy,\r\n uriFactoryFn,\r\n headerFactoryFn,\r\n payloadFactoryFn,\r\n keySelector,\r\n parentKeySelector,\r\n }) {\r\n this.schema = schema;\r\n this.dataPath = dataPath;\r\n this.verb = verb;\r\n this.fetchPolicy = fetchPolicy;\r\n this.uriFactoryFn = uriFactoryFn;\r\n this.headerFactoryFn = headerFactoryFn;\r\n this.payloadFactoryFn = payloadFactoryFn;\r\n this.keySelector = keySelector;\r\n this.parentKeySelector = parentKeySelector;\r\n\r\n this.getSchemaNode = this.getSchemaNode.bind(this);\r\n }\r\n\r\n getSchemaNode() {\r\n // schema is the root of the schema tree that current app has built\r\n // need to either find an existing path in the tree,\r\n // or construct a new path in the tree\r\n\r\n // note that the schema tree is only a sub-tree (or more precisely a sub-graph)\r\n // of the original data schema, such as one found in OData.\r\n return this.schema.insert(this.dataPath);\r\n }\r\n}\r\n\r\nexport function createRequestContract({\r\n schema,\r\n dataPath,\r\n verb,\r\n fetchPolicy,\r\n uriFactoryFn,\r\n headerFactoryFn,\r\n payloadFactoryFn,\r\n keySelector,\r\n parentKeySelector,\r\n}) {\r\n if (!dataPath) {\r\n throw new Error('dataPath cannot be empty');\r\n }\r\n\r\n return new RequestContract({\r\n schema,\r\n dataPath,\r\n verb,\r\n fetchPolicy,\r\n uriFactoryFn,\r\n headerFactoryFn,\r\n payloadFactoryFn,\r\n keySelector,\r\n parentKeySelector,\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { OVERREACT_ID_FIELD_NAME, createOverreactId } from '../../store/consts';\r\n\r\nexport function getSideEffectCacheStoreHelpers(environment) {\r\n const { store, schema: { schemaToModelMapping } } = environment;\r\n const tryMergeItemsToCacheStore = ({\r\n items,\r\n schemaName,\r\n itemKeySelector,\r\n parentSchemaName,\r\n parentId,\r\n }) => {\r\n const modelName = schemaToModelMapping[schemaName];\r\n const recordGroup = store.getRecordGroup(modelName);\r\n const keysInCache = recordGroup.records.map(r => itemKeySelector(r.data));\r\n const itemsToAdd = _.filter(items, item => !_.include(keysInCache, itemKeySelector(item)));\r\n const itemsToAddWithOverreactId = itemsToAdd.map(item => {\r\n const overreactId = createOverreactId(\r\n itemKeySelector(item),\r\n parentId,\r\n parentSchemaName,\r\n );\r\n\r\n return {\r\n rawData: item,\r\n [OVERREACT_ID_FIELD_NAME]: overreactId,\r\n };\r\n });\r\n recordGroup.addOrUpdateRecords(itemsToAddWithOverreactId);\r\n const ids = itemsToAddWithOverreactId.map(item => item[OVERREACT_ID_FIELD_NAME]);\r\n recordGroup.notify('entitiesCreated', ids);\r\n\r\n const itemsToMerge = _.filter(items, item => _.include(keysInCache, itemKeySelector(item)));\r\n const itemsMerged = itemsToMerge.map(itemToMerge => {\r\n const key = itemKeySelector(itemToMerge);\r\n const records = recordGroup.getRecordsByEntityKeys(itemKeySelector, [key]);\r\n\r\n return {\r\n rawData: {\r\n ...records[0].data,\r\n ...itemToMerge,\r\n },\r\n [OVERREACT_ID_FIELD_NAME]: records[0].id,\r\n };\r\n });\r\n recordGroup.addOrUpdateRecords(itemsMerged);\r\n };\r\n\r\n const tryDeleteItemsInCacheStore = ({\r\n keysToDelete,\r\n schemaName,\r\n itemKeySelector,\r\n }) => {\r\n const modelName = schemaToModelMapping[schemaName];\r\n const recordGroup = store.getRecordGroup(modelName);\r\n\r\n const recordsToRemove = recordGroup.getRecordsByEntityKeys(itemKeySelector, keysToDelete);\r\n const recordsIdsToRemove = recordsToRemove.map(r => r.id);\r\n\r\n recordGroup.deleteRecords(recordsIdsToRemove);\r\n recordGroup.notify('entitiesDeleted', recordsIdsToRemove);\r\n };\r\n\r\n return {\r\n tryMergeItemsToCacheStore,\r\n tryDeleteItemsInCacheStore,\r\n };\r\n}\r\n","/* eslint-disable no-console */\r\n/* eslint-disable max-len */\r\nimport { OVERREACT_ID_FIELD_NAME, createOverreactId } from '../store/consts';\r\nimport { specTypes } from './spec-types';\r\n\r\nimport fetchResponseHandler from './response-handler/fetch';\r\nimport mutationResponseHandler from './response-handler/mutation';\r\nimport refetchResponseHandler from './response-handler/refetch';\r\nimport errorResponseHandler from './response-handler/error';\r\n\r\nexport class ResponseContract {\r\n constructor({\r\n requestContract, responseType, keySelector, processorFn, errorConvertFn,\r\n }) {\r\n this.requestContract = requestContract;\r\n this.responseType = responseType;\r\n this.keySelector = keySelector;\r\n this.processorFn = processorFn;\r\n this.errorConvertFn = errorConvertFn;\r\n this.schemaNode = this.requestContract.getSchemaNode();\r\n\r\n this.selectKey = this.selectKey.bind(this);\r\n this.onGetResponse = this.onGetResponse.bind(this);\r\n this.onGetError = this.onGetError.bind(this);\r\n\r\n this.applyId = this.applyId.bind(this);\r\n }\r\n\r\n selectKey(variables) {\r\n return this.keySelector(variables);\r\n }\r\n\r\n applyId(entity, parentId) {\r\n // create a new OVERREACT_ID_FIELD,\r\n // this will be used to uniquely identify a Record instance.\r\n // Basically we'll append the entity's parent type and ID\r\n // to the ID of the entity itself, which will comes handy\r\n // during the clean-up if the parent entity is deleted.\r\n\r\n const overreactId = createOverreactId(\r\n this.keySelector(entity),\r\n parentId,\r\n this.schemaNode.parentNode.name,\r\n );\r\n\r\n return {\r\n rawData: entity,\r\n [OVERREACT_ID_FIELD_NAME]: overreactId,\r\n };\r\n }\r\n\r\n onGetResponse(environment, response, request) {\r\n let processedResponse = response;\r\n const { spec } = request;\r\n const { specType } = spec;\r\n\r\n if (!request.middlewareStates.isResponseFromStore && this.processorFn) {\r\n processedResponse = this.processorFn(response, request);\r\n }\r\n\r\n switch (specType) {\r\n case specTypes.FETCH:\r\n case specTypes.PAGINATION: {\r\n return fetchResponseHandler(environment, processedResponse, request)(this);\r\n }\r\n case specTypes.ADD:\r\n case specTypes.DELETE:\r\n case specTypes.MUTATION: {\r\n return mutationResponseHandler(environment, processedResponse, request)(this);\r\n }\r\n case specTypes.REFETCH: {\r\n return refetchResponseHandler(environment, processedResponse, request)(this);\r\n }\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n onGetError(environment, request, error) {\r\n return errorResponseHandler(environment, request, error)(this);\r\n }\r\n}\r\n\r\nexport function createResponseContract({\r\n requestContract,\r\n responseType,\r\n keySelector,\r\n processorFn,\r\n errorConvertFn,\r\n}) {\r\n return new ResponseContract({\r\n requestContract, responseType, keySelector, processorFn, errorConvertFn,\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { getDataNode, createDataNode } from '../../store';\r\nimport { responseTypes } from '../response-types';\r\nimport { OVERREACT_ID_FIELD_NAME } from '../../store/consts';\r\nimport { getSideEffectCacheStoreHelpers } from './sideEffectFnHelper';\r\n\r\nexport default function handler(environment, processedResponse, request) {\r\n return context => {\r\n const { id: dataRefId, variables, spec } = request;\r\n const { locator } = variables;\r\n\r\n const { store } = environment;\r\n\r\n let dataNode = getDataNode(context.schemaNode);\r\n\r\n if (!dataNode) {\r\n dataNode = createDataNode(context.schemaNode, store);\r\n }\r\n\r\n const dataRef = dataNode.getDataRef(dataRefId);\r\n dataRef.clearError();\r\n\r\n const { descriptor, order } = locator;\r\n const { requestContract, sideEffectFn } = spec;\r\n const { parentKeySelector } = requestContract;\r\n let parentId = parentKeySelector ? parentKeySelector(variables) : undefined;\r\n let dataWithOverreactId = null;\r\n\r\n // after the response has been processed, it will either be\r\n // - a single entity\r\n // - an array of entities\r\n if (context.responseType === responseTypes.ENTITY) {\r\n if (!parentId && order.length > 1) {\r\n parentId = descriptor[order[order.length - 2]];\r\n }\r\n\r\n // step 1 - generate _overreact_id\r\n dataWithOverreactId = context.applyId(processedResponse, parentId);\r\n const overreactId = dataWithOverreactId[OVERREACT_ID_FIELD_NAME];\r\n\r\n // step 2 - add/merge _overreact_id to current dataRef\r\n dataRef.add(overreactId);\r\n\r\n // step 3 - insert the data into store, this will trigger callbacks\r\n // in data nodes, which will in turn trigger dataRef refresh.\r\n store.getRecordGroup(context.schemaNode.modelName)\r\n .addOrUpdateRecords([dataWithOverreactId], request);\r\n } else if (context.responseType === responseTypes.COLL) {\r\n // when requests for COLL, the parentId is the last element in the locator\r\n if (!parentId && order.length > 0) {\r\n parentId = descriptor[order[order.length - 1]];\r\n }\r\n dataWithOverreactId = processedResponse.map(entity => {\r\n const data = context.applyId(entity, parentId);\r\n const overreactId = data[OVERREACT_ID_FIELD_NAME];\r\n\r\n dataRef.add(overreactId);\r\n\r\n return data;\r\n });\r\n\r\n store.getRecordGroup(context.schemaNode.modelName)\r\n .addOrUpdateRecords(dataWithOverreactId, request);\r\n\r\n // when the return value is empty, we still need to notify the hook who trigger this call\r\n if (dataWithOverreactId.length === 0) {\r\n dataRef.notify('update', [], request);\r\n }\r\n }\r\n\r\n if (sideEffectFn && !_.isEmpty(dataWithOverreactId)) {\r\n const cacheStoreHelper = getSideEffectCacheStoreHelpers(environment);\r\n sideEffectFn(processedResponse, request, spec, cacheStoreHelper);\r\n }\r\n };\r\n}\r\n","import { responseTypes } from '../response-types';\r\nimport { specTypes } from '../spec-types';\r\nimport { getSideEffectCacheStoreHelpers } from './sideEffectFnHelper';\r\n\r\nexport default function handler(environment, processedResponse, request) {\r\n return context => {\r\n const { variables, dataCb, spec } = request;\r\n const { locator } = variables;\r\n const { requestContract, sideEffectFn } = spec;\r\n const { parentKeySelector } = requestContract;\r\n let parentId = parentKeySelector ? parentKeySelector(variables) : undefined;\r\n let dataWithOverreactId = null;\r\n\r\n const { descriptor, order } = locator;\r\n if (context.responseType === responseTypes.COLL || request.spec.specType === specTypes.ADD) {\r\n // when requests for COLL or create entity, the parentId is the last element in the locator\r\n if (!parentId && order.length > 0) {\r\n parentId = descriptor[order[order.length - 1]];\r\n }\r\n const responseArr = Array.isArray(processedResponse)\r\n ? processedResponse\r\n : [processedResponse];\r\n dataWithOverreactId = responseArr.map(entity => context.applyId(entity, parentId));\r\n\r\n dataCb(dataWithOverreactId, request);\r\n } else if (context.responseType === responseTypes.ENTITY) {\r\n if (!parentId && order.length > 1) {\r\n parentId = descriptor[order[order.length - 2]];\r\n }\r\n\r\n // step 1 - generate _overreact_id\r\n dataWithOverreactId = context.applyId(processedResponse, parentId);\r\n\r\n dataCb([dataWithOverreactId], request);\r\n } else if (context.responseType === responseTypes.NONE) {\r\n // TODO: we need to deal with DELETE\r\n dataCb(null, request);\r\n }\r\n\r\n if (sideEffectFn) {\r\n const cacheStoreHelper = getSideEffectCacheStoreHelpers(environment);\r\n sideEffectFn(processedResponse, request, spec, cacheStoreHelper);\r\n }\r\n };\r\n}\r\n","import { getDataNode, createDataNode } from '../../store';\r\nimport { responseTypes } from '../response-types';\r\nimport { OVERREACT_ID_FIELD_NAME } from '../../store/consts';\r\nimport { getSideEffectCacheStoreHelpers } from './sideEffectFnHelper';\r\n\r\nexport default function handler(environment, processedResponse, request) {\r\n return context => {\r\n const {\r\n id: dataRefId,\r\n variables,\r\n dataCb,\r\n spec,\r\n } = request;\r\n const { locator } = variables;\r\n const { store } = environment;\r\n\r\n let dataNode = getDataNode(context.schemaNode);\r\n\r\n if (!dataNode) {\r\n dataNode = createDataNode(context.schemaNode, store);\r\n }\r\n\r\n const dataRef = dataNode.getDataRef(dataRefId);\r\n dataRef.clear();\r\n\r\n const { descriptor, order } = locator;\r\n const { requestContract, sideEffectFn } = spec;\r\n const { parentKeySelector } = requestContract;\r\n let parentId = parentKeySelector ? parentKeySelector(variables) : undefined;\r\n let dataWithOverreactId = null;\r\n\r\n if (context.responseType === responseTypes.ENTITY) {\r\n if (!parentId && order.length > 1) {\r\n parentId = descriptor[order[order.length - 2]];\r\n }\r\n\r\n dataWithOverreactId = context.applyId(processedResponse, parentId);\r\n const overreactId = dataWithOverreactId[OVERREACT_ID_FIELD_NAME];\r\n\r\n dataRef.add(overreactId);\r\n\r\n store.getRecordGroup(context.schemaNode.modelName)\r\n .addOrUpdateRecords([dataWithOverreactId], request);\r\n\r\n dataCb(processedResponse, request);\r\n } else if (context.responseType === responseTypes.COLL) {\r\n if (!parentId && order.length > 0) {\r\n parentId = descriptor[order[order.length - 1]];\r\n }\r\n dataWithOverreactId = processedResponse.map(entity => {\r\n const data = context.applyId(entity, parentId);\r\n const overreactId = data[OVERREACT_ID_FIELD_NAME];\r\n\r\n dataRef.add(overreactId);\r\n\r\n return data;\r\n });\r\n\r\n store.getRecordGroup(context.schemaNode.modelName)\r\n .addOrUpdateRecords(dataWithOverreactId, request);\r\n\r\n // when the return value is empty, we still need to notify the hook who trigger this call\r\n if (dataWithOverreactId.length === 0) {\r\n dataRef.notify('update', [], request);\r\n }\r\n\r\n dataCb(processedResponse, request);\r\n }\r\n\r\n if (sideEffectFn) {\r\n const cacheStoreHelper = getSideEffectCacheStoreHelpers(environment);\r\n sideEffectFn(processedResponse, request, spec, cacheStoreHelper);\r\n }\r\n };\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { getDataNode, createDataNode } from '../../store';\r\n\r\nexport default function handler(environment, request, error) {\r\n return context => {\r\n const { id: dataRefId, errorCb } = request;\r\n\r\n const { store } = environment;\r\n\r\n let dataNode = getDataNode(context.schemaNode);\r\n\r\n if (!dataNode) {\r\n dataNode = createDataNode(context.schemaNode, store);\r\n }\r\n\r\n const dataRef = dataNode.getDataRef(dataRefId);\r\n dataRef.onError(error, request);\r\n\r\n if (_.isFunction(errorCb)) {\r\n errorCb(error, request);\r\n }\r\n };\r\n}\r\n","export function createSpec(\r\n requestContract,\r\n responseContract,\r\n specType,\r\n sideEffectFn,\r\n environmentLookupFn,\r\n) {\r\n // FIXME: only the basics. Need to create more based on specType\r\n return {\r\n requestContract,\r\n responseContract,\r\n specType,\r\n sideEffectFn,\r\n environmentLookupFn,\r\n };\r\n}\r\n","export class SchemaNode {\r\n constructor(name, modelName, parentNode, modelSchema) {\r\n this.name = name;\r\n this.childNodes = [];\r\n this.parentNode = parentNode;\r\n this.modelName = modelName;\r\n this.modelSchema = modelSchema;\r\n\r\n // extensions will serve as an extension point\r\n // where we can attach arbitrary information to\r\n // a schema node.\r\n // this is useful when we want to extend the schema\r\n // tree to include data.\r\n this.extensions = {};\r\n\r\n this.append = this.append.bind(this);\r\n this.setExtension = this.setExtension.bind(this);\r\n this.getExtension = this.getExtension.bind(this);\r\n }\r\n\r\n append(node) {\r\n this.childNodes.push(node);\r\n }\r\n\r\n setExtension(name, ext) {\r\n this.extensions[name] = ext;\r\n }\r\n\r\n getExtension(name) {\r\n return this.extensions[name];\r\n }\r\n\r\n toJson() {\r\n return ({\r\n name: this.name,\r\n modelName: this.modelName,\r\n // modelSchema: this.modelSchema, Can contain non-serializable properties\r\n childNodes: this.childNodes.length > 0 ? this.childNodes.map(c => c.toJson()) : undefined,\r\n extensions: Object.keys(this.extensions).length > 0\r\n ? Object.keys(this.extensions).map(k => this.extensions[k].toJson()) : undefined,\r\n });\r\n }\r\n}\r\n","import { SchemaNode } from './schema-node';\r\n\r\nconst PATH_DELIMITER = ':';\r\n\r\nexport class Schema {\r\n constructor(schemaToModelMapping, modelGetter) {\r\n this.root = new SchemaNode('$ROOT', null, null);\r\n this.schemaToModelMapping = schemaToModelMapping;\r\n this.modelGetter = modelGetter;\r\n\r\n this.modelToSchemaMapping = {};\r\n\r\n this.buildModelToSchemaMap();\r\n\r\n this.insert = this.insert.bind(this);\r\n this.getSchemaNames = this.getSchemaNames.bind(this);\r\n }\r\n\r\n buildModelToSchemaMap() {\r\n const keys = Object.keys(this.schemaToModelMapping);\r\n keys.forEach(schemaName => {\r\n const modelName = this.schemaToModelMapping[schemaName];\r\n if (!this.modelToSchemaMapping[modelName]) {\r\n this.modelToSchemaMapping[modelName] = [];\r\n }\r\n this.modelToSchemaMapping[modelName].push(schemaName);\r\n });\r\n }\r\n\r\n getSchemaNames(modelName) {\r\n return this.modelToSchemaMapping[modelName];\r\n }\r\n\r\n insert(path) {\r\n const parts = path.split(PATH_DELIMITER);\r\n let currentNode = this.root;\r\n\r\n for (let i = 0; i < parts.length; i += 1) {\r\n const partName = parts[i];\r\n\r\n let existingPathFound = false;\r\n for (let j = 0; j < currentNode.childNodes.length; j += 1) {\r\n const t = currentNode.childNodes[j];\r\n if (t.name === partName) {\r\n currentNode = t;\r\n existingPathFound = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!existingPathFound) {\r\n const modelName = this.schemaToModelMapping[partName];\r\n if (!modelName) {\r\n throw new Error(`Model name not found for schema name(data path) ${partName}`);\r\n }\r\n const modelSchema = this.modelGetter(this.schemaToModelMapping[partName]);\r\n const newNode = new SchemaNode(partName, modelName, currentNode, modelSchema);\r\n\r\n currentNode.childNodes.push(newNode);\r\n currentNode = newNode;\r\n }\r\n }\r\n\r\n if (window.__OVERREACT_DEVTOOLS__) {\r\n const { getSchema } = window.__OVERREACT_DEVTOOLS__;\r\n\r\n getSchema(this.root.toJson());\r\n }\r\n\r\n return currentNode;\r\n }\r\n}\r\n","export class OverreactRequest {\r\n constructor(options) {\r\n Object.assign(this, options);\r\n\r\n if (!this.id || !this.requestContract) {\r\n throw new Error('id and requestContract are required fields to build request object');\r\n }\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { getRecordGroup } from '../store';\r\n\r\nexport function getCacheIds({\r\n store,\r\n requestContract,\r\n variables,\r\n lookupFn,\r\n}) {\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n const { records } = recordGroup;\r\n const cacheRawItems = _.map(records, record => record.data);\r\n const cacheHit = lookupFn(cacheRawItems, variables);\r\n const overreactIds = _.chain(_.flatten([cacheHit], true))\r\n .map(data => {\r\n const record = _.find(records, r => r.data === data);\r\n return record ? record.id : undefined;\r\n })\r\n .compact()\r\n .value();\r\n\r\n return overreactIds;\r\n}\r\n","import _ from 'underscore';\r\nimport { responseTypes } from '../spec';\r\nimport { FetchPolicy } from '../middleware';\r\n\r\nexport function getDataFromRecords(records, responseContract) {\r\n const values = _.map(records, record => record.getData());\r\n return responseContract.responseType === responseTypes.COLL ? values : values[0];\r\n}\r\n\r\nfunction getDefaultLookupCacheFn(varKeySelector, dataKeySelector) {\r\n return (items, variables) => _.find(items,\r\n item => dataKeySelector(item) === varKeySelector(variables));\r\n}\r\n\r\nexport function getLookupCacheFn(lookupCacheFn, spec, fetchPolicy) {\r\n const { requestContract, responseContract } = spec;\r\n if (fetchPolicy === FetchPolicy.StoreOrNetwork) {\r\n if (lookupCacheFn) {\r\n return lookupCacheFn;\r\n }\r\n\r\n if (_.isFunction(requestContract.keySelector)\r\n && _.isFunction(responseContract.keySelector)\r\n && responseContract.responseType === responseTypes.ENTITY) {\r\n return getDefaultLookupCacheFn(requestContract.keySelector, responseContract.keySelector);\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n","import { useMemo } from 'react';\r\n\r\n/* eslint-disable no-continue */\r\nexport function useComponent() {\r\n // TODO: Detect DEBUG mode\r\n return useMemo(() => {\r\n try {\r\n throw new Error('fake error');\r\n } catch (ex) {\r\n const { stack } = ex;\r\n const stacks = stack.split('\\n');\r\n\r\n for (let i = 0; i < stacks.length; i += 1) {\r\n if (i === 0) {\r\n // first line will be 'Error: fake error'\r\n continue;\r\n }\r\n\r\n // a typical stack line looks like this:\r\n // \"at useComponent (webpack://1:2:3)\"\r\n const stackSegs = stacks[i].trim().split(' ');\r\n\r\n // we only need the 2nd segment, which is the function name\r\n const funcName = stackSegs[1] || '';\r\n\r\n // we'll ignore anything that is a React hook\r\n if (!funcName\r\n || funcName === 'eval'\r\n || funcName === 'mountMemo'\r\n || funcName === 'Object.useMemo'\r\n || funcName.startsWith('use')) {\r\n continue;\r\n }\r\n\r\n // we'll return on the first non-hook function name, which is most likely\r\n // to be our calling component name;\r\n return funcName;\r\n }\r\n }\r\n\r\n return '__noname__';\r\n }, []);\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n useRef, useReducer, useCallback, useMemo, useEffect,\r\n} from 'react';\r\nimport { useEnvironment } from '../environment';\r\nimport { useDeepEqualEffect, useDeepMemo } from '../utils/primitive-utilities';\r\nimport {\r\n getDataNode, createDataNode, getRecords, getDataRef, getRecordsById, updateDataRefWithIds,\r\n} from '../store';\r\nimport { OverreactRequest } from './overreact-request';\r\nimport { getCacheIds } from './lookup-cache';\r\nimport { getDataFromRecords, getLookupCacheFn } from './helper';\r\nimport { useComponent } from './use-component';\r\n\r\nexport function equalityFn(newData, oldData) {\r\n return _.isEqual(newData, oldData);\r\n}\r\n\r\nexport function useFetch(dataRefId, spec, variables, config) {\r\n // DEBUG ONLY\r\n const componentName = useComponent();\r\n const memoedConfig = useDeepMemo(config);\r\n\r\n const {\r\n requestContract,\r\n responseContract,\r\n environmentLookupFn,\r\n } = spec;\r\n\r\n const requestRequired = useRef(true);\r\n const currentData = useRef(undefined);\r\n const currentError = useRef(undefined);\r\n\r\n const [, forceRender] = useReducer(x => x + 1, 0);\r\n\r\n const environment = useEnvironment(environmentLookupFn);\r\n const { postponeRead, lookupCacheByVariables } = memoedConfig || {};\r\n const { options: { fetchPolicy: fetchPolicyInReq } = {} } = variables || {};\r\n const fetchPolicy = fetchPolicyInReq || requestContract.fetchPolicy;\r\n\r\n const lookupFn = useMemo(\r\n () => getLookupCacheFn(lookupCacheByVariables, spec, fetchPolicy),\r\n [fetchPolicy, lookupCacheByVariables, spec],\r\n );\r\n\r\n // TODO: dataCallback shall take a param, which is a set of\r\n // overreact IDs, to efficiently compare data and force render\r\n const dataCallback = useCallback(() => {\r\n // fetch data from store\r\n if (environment) {\r\n const { store } = environment;\r\n\r\n const records = getRecords(store, requestContract, dataRefId);\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n dataRef.registerComponent({ componentName });\r\n\r\n if (records) {\r\n const data = getDataFromRecords(records, responseContract);\r\n if (equalityFn(data, currentData.current)) {\r\n return;\r\n }\r\n\r\n currentData.current = data;\r\n\r\n forceRender();\r\n }\r\n }\r\n }, [componentName, dataRefId, environment, requestContract, responseContract]);\r\n\r\n const errorCallback = useCallback(() => {\r\n if (environment) {\r\n const { store } = environment;\r\n\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n const {\r\n status: {\r\n error,\r\n } = {},\r\n } = dataRef;\r\n\r\n if (equalityFn(error, currentError.current)) {\r\n return;\r\n }\r\n\r\n currentError.current = error;\r\n forceRender();\r\n }\r\n }, [dataRefId, environment, requestContract]);\r\n\r\n const dataObserver = useMemo(() => ({\r\n update: dataCallback,\r\n onError: errorCallback,\r\n }), [dataCallback, errorCallback]);\r\n\r\n useEffect(() => {\r\n if (environment) {\r\n const schemaNode = requestContract.getSchemaNode();\r\n const { store } = environment;\r\n const dataNode = getDataNode(schemaNode) || createDataNode(schemaNode, store);\r\n const dataRef = dataNode.getDataRef(dataRefId);\r\n dataRef.subscribe(dataObserver);\r\n\r\n return () => dataRef.unsubscribe(dataObserver);\r\n }\r\n return _.noop;\r\n }, [dataObserver, dataRefId, environment, requestContract]);\r\n\r\n useEffect(() => {\r\n if (environment && !currentData.current && _.isFunction(lookupFn)) {\r\n const schemaNode = requestContract.getSchemaNode();\r\n const { store } = environment;\r\n const dataNode = getDataNode(schemaNode) || createDataNode(schemaNode, store);\r\n const dataRef = dataNode.getDataRef(dataRefId);\r\n\r\n try {\r\n const overreactIds = getCacheIds({\r\n store,\r\n requestContract,\r\n variables,\r\n lookupFn,\r\n });\r\n\r\n if (!_.isEmpty(overreactIds)) {\r\n updateDataRefWithIds(dataRef, overreactIds);\r\n const records = getRecordsById(store, requestContract, overreactIds);\r\n currentData.current = getDataFromRecords(records, responseContract);\r\n requestRequired.current = false;\r\n forceRender();\r\n }\r\n } catch (error) {\r\n // TODO: log error and send request\r\n }\r\n }\r\n // we only try hit cache once when environment is ready\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [environment]);\r\n\r\n useDeepEqualEffect(() => {\r\n if (requestRequired.current && environment) {\r\n if (!postponeRead) {\r\n const request = new OverreactRequest({\r\n id: dataRefId,\r\n requestContract,\r\n spec,\r\n variables,\r\n data: null,\r\n componentName,\r\n });\r\n environment.pushRequest(request);\r\n }\r\n requestRequired.current = false;\r\n }\r\n // TODO: need to unregister this request\r\n }, [dataCallback, environment, requestContract, spec, variables]);\r\n\r\n return [currentData.current, currentError.current];\r\n}\r\n","import { isFunction } from 'underscore';\r\n\r\nexport function getMergedConfig(config, origin) {\r\n // create new instance of origin, origin is also required to be an object\r\n const newInstance = { ...origin };\r\n\r\n if (!config) {\r\n return newInstance;\r\n }\r\n\r\n if (isFunction(config)) {\r\n return config(newInstance);\r\n }\r\n\r\n return {\r\n ...origin,\r\n ...config,\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { useCallback, useRef } from 'react';\r\nimport { useEnvironment } from '../environment';\r\nimport {\r\n getRecords, getDataRef, getRecordGroup, getRecordsByEntityKey,\r\n} from '../store';\r\nimport { specTypes } from '../spec/spec-types';\r\nimport { OVERREACT_ID_FIELD_NAME } from '../store/consts';\r\nimport { responseTypes } from '../spec/response-types';\r\nimport { OverreactRequest } from './overreact-request';\r\nimport { getMergedConfig } from './merge-config';\r\nimport { useDeepMemo } from '../utils/primitive-utilities';\r\n\r\nimport { useComponent } from './use-component';\r\n\r\nconst getRawData = data => data && _.map(data, d => d.rawData);\r\n\r\nconst getDataWithOverreactIdFromRecords = records => _.map(records, r => ({\r\n rawData: r.getData(),\r\n [OVERREACT_ID_FIELD_NAME]: r.id,\r\n}));\r\n\r\nfunction mutateRecords(\r\n store,\r\n requestContract,\r\n recordsBeforeMutation,\r\n newRecords,\r\n) {\r\n if (store) {\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n\r\n recordGroup.addOrUpdateRecords(recordsBeforeMutation);\r\n recordGroup.addOrUpdateRecords(newRecords);\r\n }\r\n}\r\n\r\nfunction addRecords(\r\n store,\r\n requestContract,\r\n records,\r\n) {\r\n if (store && records && records.length > 0) {\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n recordGroup.addOrUpdateRecords(records);\r\n const ids = records.map(record => record[OVERREACT_ID_FIELD_NAME]);\r\n\r\n // notify hooks, so that they can adjust the refIds accordingly\r\n recordGroup.notify('entitiesCreated', ids);\r\n }\r\n}\r\n\r\nfunction deleteRecords(store, requestContract, records = []) {\r\n if (store) {\r\n const recordGroup = getRecordGroup(store, requestContract);\r\n const ids = records.map(record => record[OVERREACT_ID_FIELD_NAME]);\r\n\r\n recordGroup.deleteRecords(ids);\r\n recordGroup.notify('entitiesDeleted', ids);\r\n }\r\n}\r\n\r\nfunction addPreemptiveRecords(store, requestContract, request, records) {\r\n if (store) {\r\n store.addPreemptiveRecords(request, records);\r\n addRecords(store, requestContract, records);\r\n }\r\n}\r\n\r\nfunction replacePreemptiveRecords(store, requestContract, request, records) {\r\n const preemptiveRecords = store.removePreemptiveRecords(request);\r\n deleteRecords(store, requestContract, preemptiveRecords);\r\n addRecords(store, requestContract, records);\r\n}\r\n\r\nfunction applyId(variables, spec, data, specType) {\r\n const { locator } = variables;\r\n const { requestContract, responseContract } = spec;\r\n const { parentKeySelector } = requestContract;\r\n let parentId = parentKeySelector ? parentKeySelector(variables) : undefined;\r\n\r\n const { descriptor, order } = locator;\r\n\r\n if (responseContract.responseType === responseTypes.COLL || specType === specTypes.ADD) {\r\n // when requests for COLL or create entity, the parentId is the last element in the locator\r\n if (!parentId && order.length > 0) {\r\n parentId = descriptor[order[order.length - 1]];\r\n }\r\n const dataArr = Array.isArray(data) ? data : [data];\r\n return dataArr.map(entity => responseContract.applyId(entity, parentId));\r\n }\r\n\r\n if (responseContract.responseType === responseTypes.ENTITY) {\r\n if (!parentId && order.length > 1) {\r\n parentId = descriptor[order[order.length - 2]];\r\n }\r\n\r\n // step 1 - generate _overreact_id\r\n return responseContract.applyId(data, parentId);\r\n }\r\n\r\n throw new Error('unknown response type, cannot apply id');\r\n}\r\n\r\nexport function useMutation(dataRefId, spec, config) {\r\n // DEBUG ONLY\r\n const componentName = useComponent();\r\n const memoedConfig = useDeepMemo(config);\r\n\r\n const {\r\n requestContract,\r\n responseContract,\r\n specType,\r\n environmentLookupFn,\r\n } = spec;\r\n const recordsBeforeMutationRef = useRef();\r\n const environment = useEnvironment(environmentLookupFn);\r\n\r\n const dataCallback = useCallback((dataWithOverreactId, request) => {\r\n if (environment) {\r\n const { store } = environment;\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n dataRef.clearError();\r\n\r\n const {\r\n onComplete,\r\n preemptiveResponseFn,\r\n } = (request && request.mergedConfig) || {};\r\n\r\n if (preemptiveResponseFn) {\r\n if (specType === specTypes.MUTATION) {\r\n const recordsBeforeMutation = recordsBeforeMutationRef.current || [];\r\n const dataBeforeWithId = getDataWithOverreactIdFromRecords(recordsBeforeMutation);\r\n mutateRecords(\r\n store,\r\n requestContract,\r\n dataBeforeWithId,\r\n dataWithOverreactId,\r\n );\r\n } else if (specType === specTypes.ADD) {\r\n replacePreemptiveRecords(\r\n store,\r\n requestContract,\r\n request,\r\n dataWithOverreactId,\r\n );\r\n }\r\n } else if (specType === specTypes.ADD) {\r\n addRecords(store, requestContract, dataWithOverreactId);\r\n } else if (specType === specTypes.MUTATION) {\r\n mutateRecords(\r\n store,\r\n requestContract,\r\n [],\r\n dataWithOverreactId,\r\n );\r\n }\r\n\r\n if (specType === specTypes.DELETE) {\r\n const { data } = request;\r\n const dataArray = Array.isArray(data) ? data : [data];\r\n const { keySelector } = responseContract;\r\n const keys = dataArray.map(d => keySelector(d));\r\n const records = getRecordsByEntityKey(store, spec, keys);\r\n const dataWithId = getDataWithOverreactIdFromRecords(records);\r\n\r\n deleteRecords(store, requestContract, dataWithId);\r\n }\r\n\r\n const data = getRawData(dataWithOverreactId);\r\n\r\n if (onComplete) {\r\n onComplete(data);\r\n }\r\n }\r\n }, [dataRefId, environment, requestContract, responseContract, spec, specType]);\r\n\r\n const errorCallback = useCallback((error, request) => {\r\n if (environment) {\r\n const { store } = environment;\r\n const {\r\n onError,\r\n preemptiveResponseFn,\r\n } = (request && request.mergedConfig) || {};\r\n\r\n const recordsBeforeMutation = recordsBeforeMutationRef.current || [];\r\n const dataBeforeWithId = getDataWithOverreactIdFromRecords(recordsBeforeMutation);\r\n\r\n if (preemptiveResponseFn) {\r\n if (specType === specTypes.MUTATION) {\r\n mutateRecords(\r\n store,\r\n requestContract,\r\n dataBeforeWithId,\r\n [],\r\n );\r\n } else if (specType === specTypes.ADD) {\r\n replacePreemptiveRecords(\r\n store,\r\n requestContract,\r\n request,\r\n [],\r\n );\r\n }\r\n }\r\n\r\n if (onError) {\r\n onError(error);\r\n }\r\n }\r\n }, [environment, requestContract, specType]);\r\n\r\n const mutateFn = useCallback((variables, mutationData, ...rest) => {\r\n if (environment) {\r\n const { store } = environment;\r\n const requestConfig = rest.slice(-1)[0];\r\n const mergedConfig = getMergedConfig(requestConfig, memoedConfig);\r\n const { preemptiveResponseFn } = mergedConfig;\r\n\r\n // stash current value. This will be useful when preemptive updates is enabled,\r\n // and we need to revert to original state before applying actual response from server.\r\n if (dataRefId) {\r\n const recordsBeforeMutation = getRecords(store, requestContract, dataRefId);\r\n if (recordsBeforeMutation) {\r\n recordsBeforeMutationRef.current = recordsBeforeMutation;\r\n }\r\n }\r\n\r\n const request = new OverreactRequest({\r\n id: dataRefId,\r\n requestContract,\r\n spec,\r\n variables,\r\n data: mutationData,\r\n dataCb: dataCallback,\r\n errorCb: errorCallback,\r\n mergedConfig,\r\n componentName,\r\n });\r\n\r\n // we can perform preemptive updates right now (before actual request)\r\n // the store will be reverted/merged with response in data callbacks - when the response\r\n // comes back.\r\n if (preemptiveResponseFn) {\r\n if (specType === specTypes.MUTATION) {\r\n const recordsBeforeMutation = recordsBeforeMutationRef.current || [];\r\n const dataBeforeWithId = getDataWithOverreactIdFromRecords(recordsBeforeMutation);\r\n const dataBefore = _.map(dataBeforeWithId, d => d.rawData);\r\n const preemptiveData = preemptiveResponseFn(dataBefore, mutationData);\r\n\r\n const { keySelector } = responseContract;\r\n const dataWithOverreactId = _.map(preemptiveData, d => {\r\n const key = keySelector(d);\r\n const [record] = getRecordsByEntityKey(store, spec, [key]);\r\n return {\r\n rawData: d,\r\n [OVERREACT_ID_FIELD_NAME]: record.id,\r\n };\r\n });\r\n\r\n mutateRecords(\r\n store,\r\n requestContract,\r\n dataBeforeWithId,\r\n dataWithOverreactId,\r\n );\r\n } else if (specType === specTypes.ADD) {\r\n const data = preemptiveResponseFn(mutationData);\r\n const records = applyId(request.variables, spec, data, specType);\r\n addPreemptiveRecords(\r\n store,\r\n requestContract,\r\n request,\r\n records,\r\n );\r\n }\r\n }\r\n\r\n // Register the request to be issued - in this implementation the request will go to the\r\n // request queue in DataFetcher, waiting to be invoked. So one shall not assume\r\n // the request will go out immediately.\r\n environment.pushRequest(request);\r\n }\r\n }, [\r\n componentName,\r\n dataCallback,\r\n dataRefId,\r\n environment,\r\n errorCallback,\r\n memoedConfig,\r\n requestContract,\r\n responseContract,\r\n spec,\r\n specType,\r\n ]);\r\n\r\n return mutateFn;\r\n}\r\n","import _ from 'underscore';\r\nimport { useCallback } from 'react';\r\nimport { useEnvironment } from '../environment';\r\nimport { getRecords, getDataRef, updateDataRefWithIds } from '../store';\r\nimport { OverreactRequest } from './overreact-request';\r\nimport { getMergedConfig } from './merge-config';\r\nimport { getCacheIds } from './lookup-cache';\r\nimport { getDataFromRecords, getLookupCacheFn } from './helper';\r\nimport { useDeepMemo } from '../utils/primitive-utilities';\r\n\r\nimport { useComponent } from './use-component';\r\n\r\nexport function useRefetch(dataRefId, spec, config) {\r\n // DEBUG ONLY\r\n const componentName = useComponent();\r\n const memoedConfig = useDeepMemo(config);\r\n\r\n const {\r\n requestContract,\r\n responseContract,\r\n environmentLookupFn,\r\n } = spec;\r\n const environment = useEnvironment(environmentLookupFn);\r\n\r\n const dataCallback = useCallback((dataItems, request) => {\r\n if (environment) {\r\n const {\r\n onComplete,\r\n } = (request && request.mergedConfig) || {};\r\n\r\n const { store } = environment;\r\n const records = getRecords(store, requestContract, dataRefId);\r\n const data = getDataFromRecords(records, responseContract);\r\n\r\n if (onComplete) {\r\n onComplete(data);\r\n }\r\n }\r\n }, [dataRefId, environment, requestContract, responseContract]);\r\n\r\n const errorCallback = useCallback((error, request) => {\r\n const {\r\n onError = _.noop,\r\n } = (request && request.mergedConfig) || {};\r\n onError(error);\r\n }, []);\r\n\r\n const refetchFn = useCallback((parameter, ...rest) => {\r\n if (environment) {\r\n const { store } = environment;\r\n const requestConfig = rest.slice(-1)[0];\r\n const mergedConfig = getMergedConfig(requestConfig, memoedConfig);\r\n const { lookupCacheByVariables } = mergedConfig;\r\n\r\n const {\r\n variables,\r\n payload,\r\n } = parameter;\r\n const { options: { fetchPolicy: fetchPolicyInReq } = {} } = variables || {};\r\n const fetchPolicy = fetchPolicyInReq || requestContract.fetchPolicy;\r\n\r\n const request = new OverreactRequest({\r\n id: dataRefId,\r\n requestContract,\r\n spec,\r\n variables,\r\n data: payload,\r\n dataCb: dataCallback,\r\n errorCb: errorCallback,\r\n mergedConfig,\r\n componentName,\r\n });\r\n\r\n const lookupFn = getLookupCacheFn(lookupCacheByVariables, spec, fetchPolicy);\r\n\r\n if (_.isFunction(lookupFn)) {\r\n try {\r\n const overreactIds = getCacheIds({\r\n store,\r\n requestContract,\r\n variables,\r\n lookupFn,\r\n });\r\n\r\n if (!_.isEmpty(overreactIds)) {\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n\r\n updateDataRefWithIds(dataRef, overreactIds);\r\n\r\n const records = getRecords(store, requestContract, dataRefId);\r\n const data = getDataFromRecords(records, responseContract);\r\n\r\n dataCallback(data, request);\r\n\r\n return;\r\n }\r\n } catch (error) {\r\n // TODO: log error and send request\r\n }\r\n }\r\n environment.pushRequest(request);\r\n }\r\n }, [\r\n componentName,\r\n dataCallback,\r\n dataRefId,\r\n environment,\r\n errorCallback,\r\n memoedConfig,\r\n requestContract,\r\n responseContract,\r\n spec,\r\n ]);\r\n\r\n return refetchFn;\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n useState, useCallback, useMemo, useRef, useEffect,\r\n} from 'react';\r\n\r\nimport { useEnvironment } from '../environment';\r\nimport {\r\n getDataNode, createDataNode, getRecords, getDataRef, getRecordsById, updateDataRefWithIds,\r\n getRecordsFromResponseDataArray,\r\n} from '../store';\r\nimport { OverreactRequest } from './overreact-request';\r\nimport { getMergedConfig } from './merge-config';\r\nimport { getLookupCacheFn } from './helper';\r\nimport { getCacheIds } from './lookup-cache';\r\nimport { useDeepMemo } from '../utils/primitive-utilities';\r\n\r\nimport { useComponent } from './use-component';\r\n\r\nconst getRecordsDataInDataRef = (store, requestContract, dataRefId) => {\r\n const records = getRecords(store, requestContract, dataRefId);\r\n\r\n return records && records.map(record => record.getData());\r\n};\r\n\r\nconst getRecordsDataById = (store, requestContract, ids) => {\r\n const records = getRecordsById(store, requestContract, ids);\r\n return records && records.map(record => record.getData());\r\n};\r\n\r\nexport function usePagination(dataRefId, spec, config) {\r\n // DEBUG ONLY\r\n const componentName = useComponent();\r\n const memoedConfig = useDeepMemo(config);\r\n\r\n const {\r\n fetchVariables,\r\n strictMode = false,\r\n mergeNewRecords,\r\n lookupCacheByVariables,\r\n } = memoedConfig;\r\n const refId = useRef(dataRefId);\r\n const { requestContract, environmentLookupFn } = spec;\r\n\r\n const cursorIndex = useRef(0);\r\n const loadingId = useRef(null);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const environment = useEnvironment(environmentLookupFn);\r\n\r\n const [data, setData] = useState(undefined);\r\n const [error, setError] = useState(undefined);\r\n\r\n const resetInternalState = useCallback(() => {\r\n loadingId.current = null;\r\n setIsLoading(false);\r\n cursorIndex.current = 0;\r\n }, []);\r\n\r\n if (refId.current !== dataRefId) {\r\n refId.current = dataRefId;\r\n resetInternalState();\r\n }\r\n\r\n const setInternalStateOnResponse = useCallback(records => {\r\n cursorIndex.current = records.length;\r\n }, []);\r\n\r\n // using registerRequest to fire request, we cannot get the total count\r\n // so we set it to true for now\r\n const hasMore = useCallback(() => true, []);\r\n\r\n const loadMoreCallback = useCallback((__, updatedIds, request) => {\r\n const { store } = environment;\r\n const recordsData = getRecordsDataInDataRef(store, requestContract, dataRefId);\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n dataRef.clearError();\r\n setInternalStateOnResponse(recordsData);\r\n setData(recordsData);\r\n\r\n // setData first, then setIsLoading as false\r\n loadingId.current = null;\r\n setIsLoading(false);\r\n\r\n dataRef.registerComponent({ componentName });\r\n\r\n const {\r\n onComplete,\r\n } = (request && request.mergedConfig) || {};\r\n\r\n if (onComplete && request.id === dataRefId) {\r\n onComplete(recordsData);\r\n }\r\n }, [componentName, dataRefId, environment, requestContract, setInternalStateOnResponse]);\r\n\r\n const onErrorCallback = useCallback((__, err, request) => {\r\n if (environment) {\r\n const { store } = environment;\r\n\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n const {\r\n status: {\r\n error: currentError,\r\n } = {},\r\n } = dataRef;\r\n\r\n if (currentError) {\r\n loadingId.current = null;\r\n setIsLoading(false);\r\n }\r\n setError(currentError);\r\n\r\n const {\r\n onError,\r\n } = (request && request.mergedConfig) || {};\r\n\r\n if (onError && request.id === dataRefId && !_.isUndefined(err)) {\r\n onError(err);\r\n }\r\n }\r\n }, [dataRefId, environment, requestContract]);\r\n\r\n const onEntitiesCreated = useCallback((dataRef, newIds) => {\r\n if (_.isFunction(mergeNewRecords)) {\r\n const { store } = environment;\r\n const records = getRecordsDataInDataRef(store, requestContract, dataRefId);\r\n const newRecords = getRecordsDataById(store, requestContract, newIds);\r\n const recordsToShow = mergeNewRecords(records, newRecords);\r\n const storeRecordsToShow = getRecordsFromResponseDataArray(store, spec, recordsToShow);\r\n const overreactIds = _.map(storeRecordsToShow, r => r.id);\r\n\r\n dataRef.reset(overreactIds);\r\n }\r\n }, [dataRefId, environment, mergeNewRecords, requestContract, spec]);\r\n\r\n const dataObserver = useMemo(() => ({\r\n update: loadMoreCallback,\r\n onError: onErrorCallback,\r\n onEntitiesCreated,\r\n }), [loadMoreCallback, onEntitiesCreated, onErrorCallback]);\r\n\r\n useEffect(() => {\r\n if (environment) {\r\n const schemaNode = requestContract.getSchemaNode();\r\n const { store } = environment;\r\n const dataNode = getDataNode(schemaNode) || createDataNode(schemaNode, store);\r\n const dataRef = dataNode.getDataRef(dataRefId);\r\n dataRef.subscribe(dataObserver);\r\n\r\n return () => dataRef.unsubscribe(dataObserver);\r\n }\r\n return _.noop;\r\n }, [dataObserver, dataRefId, environment, requestContract]);\r\n\r\n const loadMore = useCallback(requestConfig => {\r\n if (loadingId.current) {\r\n return;\r\n }\r\n\r\n if (!environment) {\r\n return;\r\n }\r\n const { pageSize, options: { fetchPolicy: fetchPolicyInReq } = {} } = fetchVariables;\r\n const { store } = environment;\r\n const recordsData = getRecordsDataInDataRef(store, requestContract, dataRefId);\r\n const mergedConfig = getMergedConfig(requestConfig, memoedConfig);\r\n\r\n if (recordsData && recordsData.length >= cursorIndex.current + pageSize) {\r\n cursorIndex.current = recordsData.length;\r\n setData(recordsData);\r\n if (mergedConfig && mergedConfig.onComplete) {\r\n mergedConfig.onComplete(recordsData);\r\n }\r\n\r\n return;\r\n }\r\n\r\n const fetchPolicy = fetchPolicyInReq || requestContract.fetchPolicy;\r\n const lookupFn = getLookupCacheFn(lookupCacheByVariables, spec, fetchPolicy);\r\n\r\n if (_.isFunction(lookupFn)) {\r\n try {\r\n const overreactIds = getCacheIds({\r\n store,\r\n requestContract,\r\n variables: fetchVariables,\r\n lookupFn,\r\n });\r\n\r\n if (!_.isEmpty(overreactIds)) {\r\n const dataRef = getDataRef(store, requestContract, dataRefId);\r\n\r\n updateDataRefWithIds(dataRef, overreactIds);\r\n\r\n return;\r\n }\r\n } catch (err) {\r\n // TODO: log error and send request\r\n }\r\n }\r\n\r\n const requestVars = {\r\n ...fetchVariables,\r\n cursorIndex: strictMode\r\n ? cursorIndex.current - (cursorIndex.current % pageSize)\r\n : cursorIndex.current,\r\n };\r\n\r\n const myId = _.uniqueId();\r\n\r\n loadingId.current = myId;\r\n setIsLoading(true);\r\n\r\n const request = new OverreactRequest({\r\n id: dataRefId,\r\n requestContract,\r\n spec,\r\n variables: requestVars,\r\n data: null,\r\n mergedConfig,\r\n componentName,\r\n });\r\n environment.pushRequest(request);\r\n }, [\r\n componentName,\r\n dataRefId,\r\n environment,\r\n fetchVariables,\r\n lookupCacheByVariables,\r\n memoedConfig,\r\n requestContract,\r\n spec,\r\n strictMode,\r\n ]);\r\n\r\n const ret = useMemo(() => [{ data, error }, {\r\n isLoading,\r\n hasMore,\r\n loadMore,\r\n }], [data, error, hasMore, isLoading, loadMore]);\r\n\r\n return ret;\r\n}\r\n","// this hook is used to create/retrieve a dataRefId, which\r\n// will then be used/shared amongst useFetch/useMutation/usePagination/etc hooks.\r\n// In a React component settings, this will act as a \"component ID\", where\r\n// all the custom hooks share a same dataRefId, so they can work on the same\r\n// set of data records.\r\n// For example, a \"usePagination\" hook will retrieve a set of records, and store\r\n// the data IDs in a certain dataRefId \"A\". Consequent \"useMutation\" call\r\n// bound to the same dataRefId will have immediate access to the current data from pagination.\r\n// Next time the mutation call tries to CREATE a new entity, it will now where\r\n// to append the new entity.\r\n\r\n// The hook adds/retrieves dataRefId from a pool in context. An optional \"name\"\r\n// can be given so a compnent can restore previous data state even after unmounting.\r\n// A direct example will be when a Paginated timeline component was unmounted/remounted,\r\n// previously loaded feeds and scroll position can be reinstiated.\r\nimport { useRef } from 'react';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { useEnvironment } from '../environment';\r\n\r\nfunction generateNewDataRefId() {\r\n return uuidv4();\r\n}\r\n\r\nexport function useDataRefId(name, environmentLookupFn) {\r\n const environment = useEnvironment(environmentLookupFn);\r\n const dataRefIdRef = useRef(null);\r\n\r\n if (!name && dataRefIdRef.current) {\r\n return dataRefIdRef.current;\r\n }\r\n\r\n if (environment) {\r\n if (name) {\r\n // when using named dataRefId, we'll want to preserve it.\r\n if (!environment.dataRefIdPool[name]) {\r\n environment.dataRefIdPool[name] = generateNewDataRefId();\r\n }\r\n\r\n dataRefIdRef.current = environment.dataRefIdPool[name];\r\n } else {\r\n dataRefIdRef.current = generateNewDataRefId();\r\n }\r\n }\r\n\r\n return dataRefIdRef.current;\r\n}\r\n","import { useMemo } from 'react';\r\nimport Promise from 'bluebird';\r\n\r\nexport function usePromisify(actions) {\r\n return useMemo(() => actions.map(action => (...args) => new Promise((resolve, reject) => {\r\n const configBuilder = config => ({\r\n ...config,\r\n onComplete: processedResponse => {\r\n if (config.onComplete) {\r\n config.onComplete(processedResponse);\r\n }\r\n resolve(processedResponse);\r\n },\r\n onError: error => {\r\n if (config.onError) {\r\n config.onError(error);\r\n }\r\n reject(error);\r\n },\r\n });\r\n\r\n const mergedArgs = [...args, configBuilder];\r\n action(...mergedArgs);\r\n })), actions); // eslint-disable-line react-hooks/exhaustive-deps\r\n}\r\n","import _ from 'underscore';\r\nimport { useContext, useCallback } from 'react';\r\nimport { EnvironmentContext } from '../environment/context';\r\n\r\nexport function useCleanAllCache() {\r\n const [, environments] = useContext(EnvironmentContext);\r\n\r\n const cleanAllCache = useCallback(() => {\r\n _.each(environments, environment => {\r\n if (environment) {\r\n const { store } = environment;\r\n const allRecordGroups = store.recordGroups;\r\n _.each(allRecordGroups, recordGroup => {\r\n const allRecords = recordGroup && recordGroup.records;\r\n const allRecordsIdsToRemove = _.pluck(allRecords, 'id');\r\n if (allRecordsIdsToRemove && allRecordsIdsToRemove.length > 0) {\r\n recordGroup.deleteRecords(allRecordsIdsToRemove);\r\n recordGroup.notify('entitiesDeleted', allRecordsIdsToRemove);\r\n }\r\n });\r\n }\r\n });\r\n }, [environments]);\r\n\r\n return cleanAllCache;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Text } from '@bingads-webui-react/fabric-control';\r\n\r\nconst ErrorReason = ({ reason }) => (\r\n
\r\n {reason}\r\n
\r\n);\r\n\r\nErrorReason.propTypes = {\r\n reason: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const ExclusionErrors = ({ errors }) => (\r\n errors.map(error => (\r\n
\r\n {_.isEmpty(error.Value) ? : error.Value.map(value => (\r\n \r\n {value}:\r\n \r\n \r\n ))}\r\n
\r\n ))\r\n);\r\n\r\nExclusionErrors.propTypes = {\r\n errors: PropTypes.shape([]),\r\n};\r\n\r\nExclusionErrors.defaultProps = {\r\n errors: [],\r\n};\r\n","import React, { useState, useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { TextField, Text, Stack } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { ExclusionErrors } from './exclusion-errors';\r\n\r\nconst textStyles = { root: { fontWeight: 600 } };\r\n\r\nexport const IpExclusions = ({\r\n exclusions, placeholder, handleExclusionInputChange, errors,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const [exclusionList, setExclusionList] = useState(exclusions);\r\n\r\n useMemo(() => {\r\n setExclusionList(exclusions);\r\n }, [exclusions]);\r\n\r\n const handleExclusionTextFieldChange = useCallback(\r\n (input) => {\r\n setExclusionList(input.target.value);\r\n handleExclusionInputChange({ value: input.target.value, type: 'ExcludedIPs' });\r\n },\r\n [setExclusionList, handleExclusionInputChange]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {i18n.getString(_TL_('IP address'))}\r\n \r\n \r\n\r\n \r\n {!placeholder && (\r\n {i18n.getString(_TL_('Enter IP addresses or a range of IP addresses that will be blocked from seeing your ad, one IP address per line.'))}\r\n )}\r\n \r\n\r\n {errors && errors.length > 0 && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nIpExclusions.propTypes = {\r\n exclusions: PropTypes.string.isRequired,\r\n placeholder: PropTypes.string,\r\n handleExclusionInputChange: PropTypes.func.isRequired,\r\n errors: PropTypes.shape([]),\r\n};\r\n\r\nIpExclusions.defaultProps = {\r\n errors: [],\r\n placeholder: '',\r\n};\r\n","\r\nexport const getStyles = () => ({\r\n link: {\r\n paddingLeft: 10,\r\n },\r\n});\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withSiteMap, getRoutePathById } from '@bingads-webui-react/with-site-map';\r\nimport { Link, Text } from '@fluentui/react-components';\r\nimport { MessageBar, MessageBarTitle, MessageBarBody } from '@fluentui/react-message-bar';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { ScopeLevel } from '@bingads-webui-campaign-react/constants';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { getStyles } from './styles/site-exclusion-note-style';\r\n\r\nconst SiteExclusionNoteBase = ({ level, siteMap }) => {\r\n const i18n = useContext(I18nContext);\r\n const path = getRoutePathById(siteMap, 'site-exclusion-lists-entrypoint');\r\n const classes = useDefaultStyles(getStyles);\r\n const { dynamic: { AWFWebExclusionsWarning: showAWFWarning } } = useContext(PermissionsContext);\r\n\r\n return (\r\n
\r\n \r\n \r\n {i18n.getString(_TL_('Note'))}\r\n {level === ScopeLevel.AdGroup ? (\r\n {showAWFWarning ? i18n.getString(_TL_('Add websites to exclude at the ad group level below. Any account-level website exclusion lists will also be applied to this ad group. Please note that Audience campaigns will always serve on Microsoft sites (e.g., Microsoft Bing, Microsoft Casual Games, MSN, and Outlook.com) even if you\\'ve added website exclusions for them.')) : i18n.getString(_TL_('Add websites to exclude at the ad group level below. Any account-level website exclusion lists will also be applied to this ad group.'))}\r\n ) : (\r\n {showAWFWarning ? i18n.getString(_TL_('Add websites to exclude at the campaign level below. Any account-level website exclusion lists will also be applied to this campaign. Please note that Audience campaigns will always serve on Microsoft sites (e.g., Microsoft Bing, Microsoft Casual Games, MSN, and Outlook.com) even if you\\'ve added website exclusions for them.')) : i18n.getString(_TL_('Add websites to exclude at the campaign level below. Any account-level website exclusion lists will also be applied to this campaign.'))}\r\n )}\r\n {path && (\r\n \r\n \r\n \r\n {i18n.getString(_TL_('View account-level website exclusion lists'))}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nSiteExclusionNoteBase.propTypes = {\r\n level: PropTypes.string.isRequired,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const SiteExclusionNote = withSiteMap(SiteExclusionNoteBase);\r\n","import React, { useState, useCallback, useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { TextField, Text, Stack } from '@bingads-webui-react/fabric-control';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { HelpButton } from '@bingads-webui-react/help-popup';\r\nimport { ScopeLevel } from '@bingads-webui-campaign-react/constants';\r\nimport { ExclusionErrors } from './exclusion-errors';\r\nimport { SiteExclusionNote } from './site-exclusions-note';\r\n\r\nconst textFieldStyles = { fieldGroup: { borderColor: '#D1D1D1' } };\r\nconst textStyles = { root: { fontWeight: 600 } };\r\n\r\nexport const SiteExclusions = ({\r\n level, placeholder, exclusions, readOnlyExclusions, handleExclusionInputChange, errors,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const [exclusionList, setExclusionList] = useState(exclusions);\r\n\r\n useMemo(() => {\r\n setExclusionList(exclusions);\r\n }, [exclusions]);\r\n\r\n const handleExclusionTextFieldChange = useCallback(\r\n (input) => {\r\n setExclusionList(input.target.value);\r\n handleExclusionInputChange({ value: input.target.value, type: 'ExcludedSites' });\r\n },\r\n [setExclusionList, handleExclusionInputChange]\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {i18n.getString(_TL_('Website'))}\r\n \r\n \r\n {!placeholder && (\r\n {i18n.getString(_TL_('Enter websites to exclude from showing your ads, one website per line.'))}\r\n )}\r\n \r\n\r\n {errors && errors.length > 0 && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n\r\n \r\n\r\n {level === ScopeLevel.AdGroup && (\r\n \r\n {i18n.getString(_TL_('Campaign-level website exclusions'))}\r\n \r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nSiteExclusions.propTypes = {\r\n level: PropTypes.string.isRequired,\r\n placeholder: PropTypes.string,\r\n exclusions: PropTypes.string.isRequired,\r\n readOnlyExclusions: PropTypes.string,\r\n siteMap: PropTypes.shape({}).isRequired,\r\n handleExclusionInputChange: PropTypes.func.isRequired,\r\n errors: PropTypes.shape([]),\r\n};\r\n\r\nSiteExclusions.defaultProps = {\r\n placeholder: '',\r\n readOnlyExclusions: '',\r\n errors: [],\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport { ScopeLevel } from '@bingads-webui-campaign-react/constants';\r\nimport {\r\n Accordion,\r\n AccordionItem,\r\n AccordionHeader,\r\n AccordionPanel,\r\n} from '@fluentui/react-components';\r\nimport { IpExclusions } from './ip-exclusions';\r\nimport { SiteExclusions } from './site-exclusions';\r\n\r\nexport const WebExclusions = ({\r\n showSiteExclusion,\r\n showIPExclusion,\r\n showAccordion,\r\n siteInputProps,\r\n ipInputProps,\r\n level,\r\n exclusionData,\r\n setExclusionsCallback,\r\n errors,\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n const siteExclusions =\r\n level === ScopeLevel.Campaign\r\n ? _.result(\r\n exclusionData && exclusionData.campaignExclusions,\r\n 'ExcludedSites'\r\n )\r\n : _.result(\r\n exclusionData && exclusionData.adgroupExclusions,\r\n 'ExcludedSites'\r\n ) || '';\r\n const campaignReadOnlySiteExclusions =\r\n level === ScopeLevel.AdGroup\r\n ? _.result(\r\n exclusionData && exclusionData.campaignExclusions,\r\n 'ExcludedSites'\r\n )\r\n : '';\r\n const ipExclusions =\r\n _.result(\r\n exclusionData && exclusionData.campaignExclusions,\r\n 'ExcludedIPs'\r\n ) || '';\r\n\r\n const hasSiteExclusionsErrors = errors.find(error => 'NegativeSitesResult' in error);\r\n const hasIpExclusionsErrors = errors.find(error => 'NegativeIPsResult' in error);\r\n\r\n const siteExclusionsError = hasSiteExclusionsErrors\r\n ? hasSiteExclusionsErrors.NegativeSitesResult\r\n : [];\r\n const ipExclusionsError = hasIpExclusionsErrors\r\n ? hasIpExclusionsErrors.NegativeIPsResult\r\n : [];\r\n\r\n const handleExclusionInputChange = ({ value, type }) => {\r\n setExclusionsCallback(value, type);\r\n };\r\n\r\n const siteExclusionsInput = (\r\n \r\n );\r\n\r\n const ipExclusionsInput = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n {showAccordion ? (\r\n \r\n {showSiteExclusion && (\r\n \r\n {i18n.getString(_TL_('Add websites'))}\r\n \r\n {siteExclusionsInput}\r\n \r\n \r\n )}\r\n {showIPExclusion && (\r\n \r\n {i18n.getString(_TL_('Manually add IP addresses'))}\r\n \r\n {ipExclusionsInput}\r\n \r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {showSiteExclusion && siteExclusionsInput}\r\n {showIPExclusion && ipExclusionsInput}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nWebExclusions.propTypes = {\r\n showSiteExclusion: PropTypes.bool,\r\n showIPExclusion: PropTypes.bool,\r\n showAccordion: PropTypes.bool,\r\n siteInputProps: PropTypes.shape({}),\r\n ipInputProps: PropTypes.shape({}),\r\n level: PropTypes.string.isRequired,\r\n exclusionData: PropTypes.shape({}).isRequired,\r\n setExclusionsCallback: PropTypes.func.isRequired,\r\n errors: PropTypes.shape([]),\r\n};\r\n\r\nWebExclusions.defaultProps = {\r\n showSiteExclusion: false,\r\n showIPExclusion: false,\r\n showAccordion: false,\r\n siteInputProps: {},\r\n ipInputProps: {},\r\n errors: [],\r\n};\r\n","import _ from 'underscore';\r\nimport { ScopeLevel } from '@bingads-webui-campaign-react/constants';\r\n\r\nexport const entitySeparator = '-------------------------';\r\n\r\nexport const formatInvalidEntities = ({\r\n InvalidEntities,\r\n ValidEntities,\r\n}: {\r\n InvalidEntities: string[];\r\n ValidEntities: string[];\r\n}): string => _.compact(_.union(InvalidEntities, _.isEmpty(ValidEntities) ? [] : [entitySeparator], ValidEntities)).join('\\r\\n');\r\n\r\nconst getExclusionCount = exclusionData => _.compact(exclusionData.split(/\\r?\\n/)).length;\r\n\r\nexport const getSummary = (level, exclusionData, i18n) => {\r\n if (level === ScopeLevel.Campaign) {\r\n const siteExclusions = _.result(exclusionData && exclusionData.campaignExclusions, 'ExcludedSites', '');\r\n const ipExclusions = _.result(exclusionData && exclusionData.campaignExclusions, 'ExcludedIPs', '');\r\n const siteExclusionsCount = getExclusionCount(siteExclusions);\r\n const ipExclusionsCount = getExclusionCount(ipExclusions);\r\n return i18n.getString(_TL_('{{siteExclusionsCount}} website(s) excluded at the ad level. {{ipExclusionsCount}} IP address(es) excluded at the ad level.'), { siteExclusionsCount, ipExclusionsCount });\r\n }\r\n\r\n const siteExclusions = _.result(exclusionData && exclusionData.adgroupExclusions, 'ExcludedSites', '');\r\n const campaignReadOnlySiteExclusions = _.result(exclusionData && exclusionData.campaignExclusions, 'ExcludedSites', '');\r\n const adgroupLevelExclusionCount = getExclusionCount(siteExclusions);\r\n const campaignLevelExclusionCount = getExclusionCount(campaignReadOnlySiteExclusions);\r\n return i18n.getString(_TL_('{{adgroupLevelExclusionCount}} website(s) excluded at the ad level. {{campaignLevelExclusionCount}} website(s) excluded at the campaign level.'), { adgroupLevelExclusionCount, campaignLevelExclusionCount });\r\n};\r\n","import {\r\n withFormError,\r\n propertyIs,\r\n} from '@bingads-webui-campaign-react/form-error';\r\nimport React from 'react';\r\nimport {\r\n FormErrorBeaconAdapter, ValidationBeaconAdapter,\r\n} from '@bingads-webui-campaign-react/error-handling';\r\nimport { withAttentionBeacon } from '@bingads-webui-campaign-react/attention-beacon';\r\nimport { withCustomValidation } from '@bingads-webui-react/validation';\r\nimport { ScopeLevel } from '@bingads-webui-campaign-react/constants';\r\nimport { WebExclusions } from './web-exclusions';\r\n\r\nexport const webExclusionPropertyVal = propertyIs('webExclusions');\r\n\r\nexport const ServerValidatedWebExclusions = withAttentionBeacon(\r\n withFormError(WebExclusions, { showError: false }),\r\n { Adapters: [FormErrorBeaconAdapter, ValidationBeaconAdapter] }\r\n);\r\n\r\nconst WebExclusionsInternal = ({\r\n updateValidation,\r\n parentData,\r\n level,\r\n ...rest\r\n}) => {\r\n const onChange = (exclusionsData, type) => {\r\n const keyName = level === ScopeLevel.Campaign ? 'campaignExclusions' : 'adgroupExclusions';\r\n const patchExclusions = {\r\n exclusions: {\r\n ...(parentData.exclusions || {}),\r\n [keyName]: {\r\n ...(parentData.exclusions && parentData.exclusions[keyName] ? parentData.exclusions[keyName] : {}),\r\n [type]: exclusionsData,\r\n },\r\n },\r\n };\r\n\r\n updateValidation([], patchExclusions);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst WebExclusionsWithValidation = withCustomValidation(WebExclusionsInternal);\r\n\r\nexport const ServerValidatedWebExclusionsWithValidation = withAttentionBeacon(\r\n withFormError(WebExclusionsWithValidation, { showError: false }),\r\n { Adapters: [FormErrorBeaconAdapter, ValidationBeaconAdapter] }\r\n);\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Stack } from '@bingads-webui-react/fabric-control';\r\nimport {\r\n TextTitle,\r\n ValidatedPanel,\r\n getPanelErrorProps,\r\n} from '@bingads-webui-campaign/wizard-jumbo-card';\r\nimport { ServerValidatedWebExclusions, webExclusionPropertyVal } from './server-validated-web-exclusions';\r\nimport { getSummary } from '../util/web-exclusions.util';\r\nimport image from './media/website-exclusion.svg';\r\n\r\nexport const WebExclusionsSection = ({\r\n showSiteExclusion, showIPExclusion, level, exclusionData, setExclusionsCallback, errors, expand, ...rest\r\n}) => {\r\n const i18n = useContext(I18nContext);\r\n\r\n return (\r\n }\r\n attentionBeaconProps={{ getExtraProps: getPanelErrorProps }}\r\n actuationProps={{\r\n expand,\r\n expandKey: 'web-exclusions',\r\n }}\r\n {...rest}\r\n >\r\n \r\n \r\n {i18n.getString(_TL_('Which websites should not show your ads and which IP addresses should be blocked from seeing your ads?'))}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nWebExclusionsSection.propTypes = {\r\n showSiteExclusion: PropTypes.bool,\r\n showIPExclusion: PropTypes.bool,\r\n level: PropTypes.string.isRequired,\r\n exclusionData: PropTypes.shape({}).isRequired,\r\n setExclusionsCallback: PropTypes.func.isRequired,\r\n errors: PropTypes.shape([]),\r\n expand: PropTypes.func.isRequired,\r\n};\r\n\r\nWebExclusionsSection.defaultProps = {\r\n showSiteExclusion: false,\r\n showIPExclusion: false,\r\n errors: [],\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nexport const withProps = (extraProps, WrappedComponent) => {\r\n const HoC = (props) => {\r\n const finalProps = _.isFunction(extraProps) ?\r\n extraProps(props) :\r\n _.extend({}, props, extraProps);\r\n return (\r\n \r\n );\r\n };\r\n\r\n HoC.displayName = `WithProps(${getDisplayName(WrappedComponent)})`;\r\n hoistNonReactStatics(HoC, WrappedComponent);\r\n\r\n return HoC;\r\n};\r\n","import React from 'react';\r\nimport { useTheme, withTheme } from 'react-jss';\r\nimport hoistNonReactStatics from 'hoist-non-react-statics';\r\nimport { getDisplayName } from '@bingads-webui-react/hoc-utils';\r\n\r\nconst defaultGetStyles = () => ({});\r\n\r\nexport function withRawStyles(WrappedComponent, getStyles = defaultGetStyles) {\r\n const StyledComponent = withTheme((props) => {\r\n const { theme, ...rest } = props || {};\r\n const { components = {}, core = {} } = theme || {};\r\n const styles = getStyles(components, core);\r\n return ;\r\n });\r\n\r\n StyledComponent.displayName = `withFluentUIStyles(${getDisplayName(WrappedComponent)})`;\r\n hoistNonReactStatics(StyledComponent, WrappedComponent);\r\n\r\n return StyledComponent;\r\n}\r\n\r\nexport function useRawStyles(getStyles = defaultGetStyles) {\r\n const theme = useTheme();\r\n const { components = {}, core = {} } = theme || {};\r\n const styles = getStyles(components, core);\r\n return styles;\r\n}\r\n","/* eslint-disable */\r\nvar maxAdTitleLength = 25, maxAdDescriptionLength = 71, maxTextDisplayUrlLength = 35, maxUrlLength = 1024, maxAppStoreIdLength = 1024, maxEditorialAppealJustificationLength = 1000;\r\nexport default {\r\n maxAdTitleLength: maxAdTitleLength,\r\n maxAdDescriptionLength: maxAdDescriptionLength,\r\n maxTextDisplayUrlLength: maxTextDisplayUrlLength,\r\n maxUrlLength: maxUrlLength,\r\n maxAppStoreIdLength: maxAppStoreIdLength,\r\n maxEditorialAppealJustificationLength: maxEditorialAppealJustificationLength\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nfunction mapCampaignApiErrorCode(errorCode, args) {\r\n var i18nArgs = ['Error_Campaign_API_' + errorCode, errorCode ? errorCode : i18n.getString('Error')];\r\n if (args) {\r\n i18nArgs = i18nArgs.concat(args);\r\n }\r\n return i18n.getStringOrDefault.apply(i18n, i18nArgs);\r\n}\r\nfunction mapCampaignApiErrorCodeShort(errorCode, args) {\r\n var i18nArgs = ['Error_Campaign_API_' + errorCode + '_Short'].concat(args);\r\n return i18n.getString.apply(i18n, i18nArgs);\r\n}\r\nfunction mapEditorialErrorCode(apiErrorCode, rawErrorCode) {\r\n return rawErrorCode ? i18n.getString('Error_Editorial_Raw_' + rawErrorCode) : i18n.getString('Error_Editorial_API_' + apiErrorCode);\r\n}\r\nfunction _mapSingleEditorialError(error, countryKey, countryName) {\r\n return _.extend({\r\n countryKey: countryKey,\r\n countryName: countryName,\r\n message: mapEditorialErrorCode(error.Error, error.RawEditorialErrorCode)\r\n }, error);\r\n}\r\nfunction _mapSingleCountryErrors(countryErrors) {\r\n var countryName = i18n.getString('PublisherCountry_' + countryErrors.Key);\r\n return {\r\n countryKey: countryErrors.Key,\r\n countryName: countryName,\r\n errors: _.map(countryErrors.Value, function (error) {\r\n return _mapSingleEditorialError(error, countryErrors.Key, countryName);\r\n })\r\n };\r\n}\r\nfunction mapEditorialErrors(errors, flatten) {\r\n if (!_.isArray(errors) || errors.length === 0) {\r\n return [];\r\n }\r\n var grouppedErrors = _.map(errors, _mapSingleCountryErrors);\r\n return !flatten ? grouppedErrors : _.chain(grouppedErrors).pluck('errors').flatten().value();\r\n}\r\nexport default {\r\n mapCampaignApiErrorCode: mapCampaignApiErrorCode,\r\n mapEditorialErrorCode: mapEditorialErrorCode,\r\n mapEditorialErrors: mapEditorialErrors,\r\n mapCampaignApiErrorCodeShort: mapCampaignApiErrorCodeShort\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nfunction build(pattern, param) {\r\n var url = pattern || '';\r\n _.each(param, function (value, key, list) {\r\n if (_.first(key) != '$') {\r\n if (!_.isUndefined(value)) {\r\n var str = value;\r\n if (_.isObject(value)) {\r\n str = encodeURIComponent(JSON.stringify(value));\r\n }\r\n url = url.replace(new RegExp('\\\\(?/:' + key + '\\\\)?'), '/' + str);\r\n }\r\n }\r\n });\r\n url = url.replace(/(\\w+?)\\/:(\\1)_id\\//g, '');\r\n url = url.replace(/\\((.*?)\\)/g, '');\r\n return url;\r\n}\r\nfunction isOptional(pattern, key) {\r\n var reg = new RegExp('\\\\(/:' + key + '\\\\)');\r\n return !_.isNull(reg.exec(pattern));\r\n}\r\nfunction isValidString(value) {\r\n return !(_.isString(value) && value[0] === ':');\r\n}\r\nfunction check(pattern, param) {\r\n return _.every(param, function (value, key, list) {\r\n return isOptional(pattern, key) ? isValidString(value) : !_.isUndefined(value) && !_.isNull(value) && isValidString(value);\r\n });\r\n}\r\nexport default {\r\n build: build,\r\n check: check\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport backbone from 'backbone';\r\nvar defaults = {\r\n schedule: undefined,\r\n task: undefined,\r\n asyncInterface: 'promise',\r\n timeout: 0,\r\n cancellationToken: undefined,\r\n overlapping: 'allow'\r\n};\r\nvar Task = function (options) {\r\n this.options = _.defaults({}, options, defaults);\r\n if (!this.options.schedule) {\r\n throw new Error('asyncScheduler: schedule option must be provided');\r\n }\r\n if (!this.options.task) {\r\n throw new Error('asyncScheduler: task option must be provided');\r\n }\r\n};\r\nTask.prototype.start = function () {\r\n this.isRunning = true;\r\n this._scheduleNext();\r\n return this;\r\n};\r\nTask.prototype.stop = function () {\r\n this.isRunning = false;\r\n if (this.next) {\r\n clearTimeout(this.next);\r\n }\r\n return this;\r\n};\r\nTask.prototype._scheduleNext = function (current) {\r\n this.next = setTimeout(_.bind(this._iteration, this, current), this.options.schedule);\r\n};\r\nTask.prototype._iteration = function (previous) {\r\n if (previous && !previous.completed && this.options.overlapping === 'wait') {\r\n previous.isAwait = true;\r\n return;\r\n }\r\n var iteration = this._startTask();\r\n if (this.isRunning === true) {\r\n this._scheduleNext(iteration);\r\n if (this.options.timeout) {\r\n this._scheduleTimeout(iteration);\r\n }\r\n }\r\n};\r\nTask.prototype._startTask = function () {\r\n var iteration = {\r\n completed: false,\r\n isOverlapped: false\r\n };\r\n if (this.options.asyncInterface === 'callback') {\r\n var callback = _.bind(this._callback, this, iteration);\r\n iteration.token = this.options.task(callback);\r\n } else {\r\n iteration.token = this.options.task();\r\n iteration.token.then(_.bind(this._callback, this, iteration, null), _.bind(this._callback, this, iteration));\r\n }\r\n return iteration;\r\n};\r\nTask.prototype._callback = function (iteration, error, data) {\r\n if (iteration.completed) {\r\n return;\r\n }\r\n clearTimeout(iteration.timeout);\r\n iteration.completed = true;\r\n if (iteration.isAwait) {\r\n this._iteration(iteration);\r\n }\r\n this.trigger(error ? 'error' : 'success', {\r\n error: error,\r\n data: data,\r\n stopTask: _.bind(this.stop, this)\r\n });\r\n};\r\nTask.prototype._scheduleTimeout = function (iteration) {\r\n if (this.options.cancellationToken && !_.isFunction(iteration.token[this.options.cancellationToken])) {\r\n throw new Error('asyncScheduler: \"cancel\" function is not found in task returned value');\r\n }\r\n iteration.timeout = setTimeout(_.bind(this._processTimeout, this, iteration), this.options.timeout);\r\n};\r\nTask.prototype._processTimeout = function (iteration) {\r\n if (this.options.cancellationToken) {\r\n iteration.token[this.options.cancellationToken]();\r\n }\r\n iteration.completed = true;\r\n if (iteration.isAwait) {\r\n this._iteration(iteration);\r\n }\r\n this.trigger('timeout', {\r\n stopTask: _.bind(this.stop, this)\r\n });\r\n};\r\n_.extend(Task.prototype, backbone.Events);\r\nvar createTask = function (options) {\r\n return new Task(options);\r\n};\r\nexport default {\r\n createTask: createTask\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nfunction run(app) {\r\n _.templateSettings = {\r\n interpolate: /\\{\\{(.+?)\\}\\}/g\r\n };\r\n}\r\nexport default {\r\n run: run\r\n};\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport odata from '@bingads-webui-static-legacy/communication/channel/odata';\r\nimport resultsStatus from '@bingads-webui-static-legacy/schema/bulkEdit/resultsStatus';\r\nimport * as alertHelper from '@bingads-webui-campaign/alert-helper';\r\nimport templateConfig from '@bingads-webui-static-legacy/app/config/template';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\ntemplateConfig.run();\r\nvar urlTmpls = _.mapObject({\r\n getJobs: '/Advertiser/Customers()/Accounts()/BulkEditSessions?$top={{top}}&$skip={{skip}}',\r\n getSingleJob: '/Advertiser/Customers()/{{accountInUrl ? \\'Accounts()/\\' : \\'\\'}}BulkEditSessions(\\'{{jobId}}\\')?',\r\n getJobResults: '/Advertiser/Customers()/{{accountInUrl ? \\'Accounts()/\\' : \\'\\'}}BulkEditSessions(\\'{{jobId}}\\')/BulkEditResults?$top={{top}}&$skip={{skip}}',\r\n filterSuffix: '&$filter={{statusFilter}}'\r\n}, function (url) {\r\n return _.template(url);\r\n}), exports = {};\r\nfunction getHistory(skip, take) {\r\n return odata.get(urlTmpls.getJobs({\r\n skip: skip,\r\n top: take\r\n })).then(function (response) {\r\n return {\r\n items: _.map(response.value, mapJobObject),\r\n total: response['@odata.count']\r\n };\r\n }).catch(function (response) {\r\n var errors = response && response.errorResponseBody && response.errorResponseBody.value ? response.errorResponseBody.value : [];\r\n var isCustomerMigrationError = _.find(errors, function (item) {\r\n return item.Code === 'CustomerUnderMigration';\r\n });\r\n if (isCustomerMigrationError) {\r\n var alert = new alertHelper.AlertHelper({\r\n i18n: i18n\r\n });\r\n var migrationMsg = i18n.getString('Error_Campaign_API_CustomerUnderMigration');\r\n alert.showError(migrationMsg);\r\n }\r\n });\r\n}\r\n;\r\nfunction mapJobObject(job) {\r\n return _.extend({}, job, {\r\n CreationTime: job.CreationTime && new Date(job.CreationTime),\r\n CompletionTime: job.CompletionTime && new Date(job.CompletionTime)\r\n });\r\n}\r\nfunction getJobs(jobModels) {\r\n if (!jobModels || jobModels.length === 0) {\r\n throw new Error('Provided Jobs array is empty or undefined');\r\n }\r\n var singleModel = jobModels.length === 1 ? jobModels[0] : null;\r\n if (singleModel) {\r\n return odata.get(urlTmpls.getSingleJob({\r\n jobId: singleModel.id,\r\n accountInUrl: singleModel.attributes.Entity !== 'Account'\r\n })).then(function (jobData) {\r\n return [mapJobObject(jobData)];\r\n });\r\n }\r\n return exports.getJobsByIds(_.pluck(jobModels, 'id'));\r\n}\r\n;\r\nfunction getJobsByIds(jobIds) {\r\n return getHistory(0, 20).then(function (jobsData) {\r\n return _.filter(jobsData.items, function (job) {\r\n return _.contains(jobIds, job.Id);\r\n });\r\n });\r\n}\r\nfunction getJobResults(jobId, statusFilter, skip, take, entity) {\r\n var url = urlTmpls.getJobResults({\r\n jobId: jobId,\r\n top: take,\r\n skip: skip,\r\n accountInUrl: !entity || entity !== 'Account'\r\n });\r\n var filter = '';\r\n if (statusFilter === resultsStatus.OnlyErrors) {\r\n filter = 'Errors/any() or EditorialErrors/any()';\r\n } else if (statusFilter === resultsStatus.OnlySuccessful) {\r\n filter = 'not (Errors/any() or EditorialErrors/any())';\r\n }\r\n if (filter !== '') {\r\n url += urlTmpls.filterSuffix({\r\n statusFilter: filter\r\n });\r\n }\r\n return odata.get(url);\r\n}\r\nexport default _.extend(exports, {\r\n getHistory: getHistory,\r\n getJobsByIds: getJobsByIds,\r\n getJobs: getJobs,\r\n getJobResults: getJobResults\r\n});\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n'use strict;';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'Campaign',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n 'Property': 'Budget/Amount',\r\n 'ActionType': 'Set',\r\n 'Value': '',\r\n 'SearchString': '',\r\n 'Options': 'None'\r\n }]\r\n }\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n'use strict;';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'Campaign',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n 'Property': 'Budget/Amount',\r\n 'ActionType': 'Set',\r\n 'Value': '',\r\n 'SearchString': '',\r\n 'Options': 'None'\r\n }]\r\n }\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n'use strict;';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'Campaign',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n 'Property': 'BidAmount/Bid/Amount',\r\n 'ActionType': 'SetToAmount'\r\n }]\r\n }\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n'use strict;';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'Campaign',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n 'Property': 'Status',\r\n 'ActionType': 'Set',\r\n 'Value': '',\r\n 'SearchString': '',\r\n 'Options': 'None'\r\n }]\r\n }\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport Backbone from 'backbone';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n'use strict;';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'Campaign',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n 'Property': 'BiddingScheme',\r\n 'ActionType': 'Set',\r\n 'Value': '{\"Type\":1}'\r\n }]\r\n }\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\n'use strict;';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n Entity: 'Campaign',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n 'Property': 'CampaignSettings/RSAAutoGeneratedAssetsEnabled',\r\n 'ActionType': 'Set',\r\n 'Value': '',\r\n 'SearchString': '',\r\n 'Options': 'None'\r\n }]\r\n }\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport backbone from 'backbone';\r\nimport scheduler from '@bingads-webui-static-legacy/async-scheduler';\r\nimport repository from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/bulkEditRepository';\r\nimport bulkEditStatus from '@bingads-webui-static-legacy/schema/bulkEdit/status';\r\nvar Poller = function (options) {\r\n this._options = options || ({});\r\n this.successiveFailureCount = 0;\r\n this.recurringTask = scheduler.createTask({\r\n task: _.bind(this._taskIteration, this),\r\n schedule: this._options.schedule || 2000\r\n });\r\n this.recurringTask.on('success', _.bind(this._successHandler, this));\r\n this.recurringTask.on('error', _.bind(this._errorHandler, this));\r\n};\r\nPoller.prototype.maxSuccessiveFailureCount = 6;\r\nPoller.prototype.start = function (jobModels) {\r\n this._jobModels = new backbone.Collection(jobModels);\r\n if (this._getPendingJobs().length > 0) {\r\n this.recurringTask.start();\r\n }\r\n return this;\r\n};\r\nPoller.prototype.stop = function () {\r\n this.recurringTask.stop();\r\n return this;\r\n};\r\nPoller.prototype._taskIteration = function () {\r\n return repository.getJobs(this._getPendingJobs());\r\n};\r\nPoller.prototype._successHandler = function (eventArgs) {\r\n var self = this;\r\n this.successiveFailureCount = 0;\r\n if (eventArgs && eventArgs.data && _.isArray(eventArgs.data)) {\r\n _.each(eventArgs.data, function (jobData) {\r\n self._jobModels.get(jobData.Id).set(jobData);\r\n });\r\n }\r\n if (this._options.success && _.isFunction(this._options.success)) {\r\n this._options.success(this._jobModels);\r\n }\r\n if (this._getPendingJobs().length === 0) {\r\n eventArgs.stopTask();\r\n }\r\n};\r\nPoller.prototype._errorHandler = function (eventArgs) {\r\n this.successiveFailureCount++;\r\n if (this.maxSuccessiveFailureCount <= this.successiveFailureCount) {\r\n this.recurringTask.stop();\r\n if (this._options.error && _.isFunction(this._options.error)) {\r\n this._options.error(eventArgs);\r\n }\r\n }\r\n};\r\nPoller.prototype._getPendingJobs = function () {\r\n return this._jobModels.filter(function (model) {\r\n return model.get('Status') === bulkEditStatus.inProgress || model.get('Status') === bulkEditStatus.pendingStart || model.get('Status') === 'PendingFileUpload';\r\n });\r\n};\r\nexport default Poller;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport repository from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/bulkEditRepository';\r\nimport Poller from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/jobStatePoller';\r\nimport JobModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\nimport bulkEditStatus from '@bingads-webui-static-legacy/schema/bulkEdit/status';\r\nimport cacheManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nvar getPendingJobs = function (jobs) {\r\n return _.filter(jobs, function (item) {\r\n var status = item.get('Status');\r\n return status === bulkEditStatus.inProgress || status === bulkEditStatus.pendingStart || status === 'PendingFileUpload';\r\n });\r\n};\r\nvar successHandler = function (pendingJobModels) {\r\n var jobs = _.filter(pendingJobModels.models, function (item) {\r\n var status = item.get('Status');\r\n return status === bulkEditStatus.completed || status === bulkEditStatus.completedWithErrors || status === bulkEditStatus.failed;\r\n });\r\n if (jobs && jobs.length > 0) {\r\n cacheManager.updateContext(['KeywordGrid']);\r\n }\r\n};\r\nexport default {\r\n init: function () {\r\n repository.getHistory(0, 20).then(function (response) {\r\n if (response && response.items && response.items.length > 0) {\r\n var poller = new Poller({\r\n success: successHandler,\r\n schedule: 7000\r\n });\r\n var jobModels = _.map(response.items, function (item) {\r\n return new JobModel(item);\r\n });\r\n var pendingJobModels = getPendingJobs(jobModels);\r\n pendingJobModels.length > 0 && poller.start(pendingJobModels);\r\n }\r\n });\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport legacy_jquery from 'jquery';\r\nimport status from '@bingads-webui-static-legacy/schema/bulkEdit/status';\r\nimport resultsStatus from '@bingads-webui-static-legacy/schema/bulkEdit/resultsStatus';\r\nimport StatusPoller from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/jobStatePoller';\r\nimport cacheManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport filterConverter from '@bingads-webui-static-legacy/odata-filter-converter';\r\nimport * as filterMetadataToLegacy from '@bingads-webui/filter-commons';\r\nimport odata from '@bingads-webui-component-legacy/http/channel/odata';\r\nimport * as _AppEventDelegator from '@bingads-webui-component-legacy/app-event-delegator/index';\r\nimport blockerExtension from '@bingads-webui-static-legacy/extension/promise/withUiBlock';\r\nimport repository from '@bingads-webui-static-legacy/bulk-edit/bulkEdit/bulkEditRepository';\r\nimport errorMapper from '@bingads-webui-static-legacy/api-error-mapper-service';\r\nimport gridFilterSerializer from '@bingads-webui-campaign-legacy/bulk-operation/util/grid-filter-serializer';\r\nimport * as toast from '@bingads-webui-component-legacy/toast/index';\r\nimport gridHelper from '@bingads-webui-static-legacy/shared/view/gridHelper';\r\nimport cacheService from '@bingads-webui-static-legacy/bulk-edit-cache-service';\r\nimport actionMap from '@bingads-webui-static-legacy/summary/SummaryGridsActionMap';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport legacyRouter from '@bingads-webui-component-legacy/legacy-router/index';\r\nimport setting from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\nimport logger from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\nimport appState from '@bingads-webui-component-legacy/state/index';\r\nimport '@bingads-webui-static-legacy/instrumentation/instrumentation';\r\nvar osd = window.osd;\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar activePollers = 0;\r\nvar AppEventDelegator = _AppEventDelegator.default;\r\nvar vNextCacheNotify = function vNextCacheNotify(context, skipEntityCallPaths) {\r\n var entity = context.model.get('Entity');\r\n cacheManager.successEmitter.trigger('invalidate', entity, skipEntityCallPaths);\r\n};\r\nvar onProgressNotification = function () {\r\n var currentStatus = this.model.get('Status');\r\n if (currentStatus === status.pendingStart || currentStatus === 'PendingFileUpload') {\r\n return;\r\n }\r\n var totalCount = this.model.get('TotalRowCount');\r\n var successCount = this.model.get('SuccessRowCount');\r\n var errorCount = this.model.get('ErrorRowCount');\r\n this.ko_model.totalCount(totalCount);\r\n this.ko_model.successCount(successCount);\r\n this.ko_model.errorCount(errorCount);\r\n if (_.isFunction(this.getProgressText)) {\r\n this.ko_model.statusText(this.getProgressText().replace('{1}', totalCount).replace('{0}', successCount + errorCount));\r\n }\r\n if (currentStatus === status.completed) {\r\n if (activePollers > 0) {\r\n activePollers -= 1;\r\n this.onJobSuccess(this.model);\r\n this.refresh();\r\n this.refreshGrid();\r\n }\r\n vNextCacheNotify(this);\r\n } else if (currentStatus === status.completedWithErrors) {\r\n this.ko_model.completedWithErrorsBulkEditResultsString(i18n.getString('CampaignAdGroupCopyPaste_CompletedWithErrorsText_NewUI'));\r\n activePollers -= 1;\r\n this.onJobFailure();\r\n this.showErrors();\r\n this.ko_model.showButtonBar(false);\r\n this.ko_model.showCloseButton(true);\r\n if (this.model.get('SuccessRowCount') > 0) {\r\n gridHelper.refresh(this.grid);\r\n this.refreshGrid();\r\n }\r\n vNextCacheNotify(this);\r\n } else if (currentStatus === status.failed && this.operationCancelled) {\r\n activePollers -= 1;\r\n this.refresh();\r\n } else if (currentStatus === status.failed) {\r\n activePollers -= 1;\r\n if (!this.handleUserError()) {\r\n legacy_jquery.advertiser.ajaxError();\r\n }\r\n }\r\n};\r\nvar getDateRangeQueryArgs = function () {\r\n try {\r\n var dateRange;\r\n if (!!osd && !!osd.ui && !!osd.ui.Controls && !!osd.ui.Controls.DateRangeFilter && _.isFunction(osd.ui.Controls.DateRangeFilter.getParsedDateRange)) {\r\n dateRange = osd.ui.Controls.DateRangeFilter.getParsedDateRange();\r\n } else {\r\n dateRange = window.App && window.App.state ? window.App.state.get('$daterange') : null;\r\n }\r\n var startdate = dateRange.start.getMonth() + 1 + '/' + dateRange.start.getDate() + '/' + dateRange.start.getFullYear(), enddate = dateRange.end.getMonth() + 1 + '/' + dateRange.end.getDate() + '/' + dateRange.end.getFullYear();\r\n return 'startdate=' + startdate + '&enddate=' + enddate;\r\n } catch (e) {\r\n return '';\r\n }\r\n};\r\nvar view = Backbone.View.extend({\r\n initialize: function (options) {\r\n this.poller = new StatusPoller({\r\n success: _.bind(onProgressNotification, this),\r\n error: function () {\r\n legacy_jquery.advertiser.ajaxError();\r\n }\r\n });\r\n this.grid = options.grid;\r\n this.isSkipEntityCache = options.isSkipEntityCache;\r\n this.onOperationSuccess = options.onOperationSuccess;\r\n this.onOperationFailure = options.onOperationFailure;\r\n this.instrumentationActivity = options.activity;\r\n this.eventDelegator = _.result({}, 'eventDelegator', new AppEventDelegator());\r\n },\r\n render: function () {\r\n this.$el.html(this.template({\r\n i18n: i18n,\r\n PageContext: PageContext,\r\n viewModel: this.ko_model,\r\n isForVNext: true\r\n }));\r\n if (this.$el.length > 0) {\r\n ko.cleanNode(this.$el[0]);\r\n }\r\n ko.applyBindings(this.ko_model, this.$el[0]);\r\n _.bindAll(this, 'submitJob', 'previewChanges', 'hideView', 'hideProgress', 'cancelJob', 'stopCopyPaste');\r\n this.$('#save').click(this.submitJob);\r\n this.$('#preview').click(this.previewChanges);\r\n this.$('#cancel').click(this.cancelJob);\r\n this.$('#runInBackground').click(this.hideProgress);\r\n this.$('#close').click(this.hideView);\r\n this.$('#stopCopyPaste').click(this.stopCopyPaste);\r\n var link = 'javascript:void(0);';\r\n this.$('#historyPageLink').attr('href', link);\r\n var firstVisibleEnabledElement = this.$el.find(':input:enabled:visible:first');\r\n if (_.isFunction(firstVisibleEnabledElement.focus)) {\r\n firstVisibleEnabledElement.focus();\r\n }\r\n return this;\r\n },\r\n events: function () {\r\n return {\r\n 'click a#historyPageLink': function () {\r\n legacyRouter.legacyRouter.navigateToRoute('bulk_edit');\r\n }\r\n };\r\n },\r\n hideView: function () {\r\n this.$el.empty();\r\n gridHelper.onBulkEditViewHide(this, this.grid);\r\n },\r\n hideProgress: function () {\r\n this.$el.empty();\r\n cacheService.init();\r\n gridHelper.onBulkEditViewHide(this, this.grid);\r\n },\r\n stopCopyPaste: function () {\r\n this.showPreview(false);\r\n var cId = PageContext.CurrentCustomer.Id;\r\n var aId = PageContext.CurrentAccount.Id;\r\n var sessionId = this.model.get('Id');\r\n var url = '/Customers(' + cId + ')/Accounts(' + aId + ')/BulkEditSessions(\\'' + sessionId + '\\')/Default.Cancel';\r\n odata.get(url, {\r\n data: null\r\n }).catch(function () {\r\n return null;\r\n });\r\n this.operationCancelled = true;\r\n },\r\n getCurrentFilter: function () {\r\n var filters = {}, idBased = false;\r\n if (!this.ko_model.ignoreRowSelection() && gridHelper.allPageSelected(this.grid)) {\r\n if (this.grid && (this.grid.filterService || this.grid.pgridPlugins && this.grid.pgridPlugins.filterService)) {\r\n var filterServiceFilters = (this.grid.filterService || this.grid.pgridPlugins.filterService).getCombinedFilter();\r\n filters.FilterExpressions = filterMetadataToLegacy.toLegacyFilter(filterServiceFilters);\r\n } else if (this.grid && this.grid.pgridPlugins) {\r\n if (this.grid.pgridPlugins.filterState) {\r\n var pluginFilters = this.grid.pgridPlugins.filterState.getAllFilters();\r\n filters.FilterExpressions = filterMetadataToLegacy.toLegacyFilter(pluginFilters);\r\n } else if (this.grid.pgridPlugins.filter) {\r\n var pluginFilters = this.grid.pgridPlugins.filter.getCurrentFilter();\r\n filters.FilterExpressions = filterMetadataToLegacy.toLegacyFilter(pluginFilters);\r\n }\r\n } else {\r\n filters = this.grid.getFilters(true);\r\n }\r\n } else if (_.isFunction(this.getIdFilter)) {\r\n idBased = true;\r\n filters = this.getIdFilter();\r\n if (this.grid && (this.grid.filterService || this.grid.pgridPlugins && this.grid.pgridPlugins.filterService)) {\r\n filterServiceFilters = (this.grid.filterService || this.grid.pgridPlugins.filterService).getCombinedFilter();\r\n var additionalFilterExpressions = filterMetadataToLegacy.toLegacyFilter(filterServiceFilters);\r\n if (additionalFilterExpressions && additionalFilterExpressions.length >= 2 && additionalFilterExpressions[0]['SelectedColumn'] === 'Criterion' && additionalFilterExpressions[1]['SelectedColumn'] === 'LevelOfDetails') {\r\n filters.FilterExpressions = _.union(additionalFilterExpressions, filters.FilterExpressions);\r\n }\r\n }\r\n }\r\n if (_.isFunction(this.getCustomFilter)) {\r\n var customFilter = this.getCustomFilter(filters) || ({\r\n FilterExpressions: []\r\n });\r\n if (filters && filters.FilterExpressions) {\r\n filters.FilterExpressions = _.union(filters.FilterExpressions, customFilter.FilterExpressions);\r\n } else {\r\n filters = {\r\n FilterExpressions: customFilter.FilterExpressions\r\n };\r\n }\r\n }\r\n return {\r\n FilterExpressions: filters && filters.FilterExpressions || [],\r\n idBased: idBased\r\n };\r\n },\r\n getFilterURLParam: function (filter, entity) {\r\n return filterConverter.convertToURLParam(filter.FilterExpressions, entity);\r\n },\r\n getCurrentSelection: function (simulateResults) {\r\n var entity = this.model.get('Entity');\r\n var query = null, campaignId = -1, adGroupId = -1, dateRangeQs = null, filter = this.getCurrentFilter();\r\n if (this.ko_model.ignoreRowSelection()) {\r\n if (_.isFunction(this.getCampaignId)) {\r\n campaignId = this.getCampaignId();\r\n }\r\n if (_.isFunction(this.getAdGroupId)) {\r\n adGroupId = this.getAdGroupId();\r\n }\r\n if (_.isFunction(this.getDateRangeQuery)) {\r\n dateRangeQs = this.getDateRangeQuery();\r\n }\r\n } else {\r\n campaignId = Number(legacy_jquery.advertiser.getUrlParameter('cmpid')) || Number(appState.get('campaign_id'));\r\n adGroupId = Number(legacy_jquery.advertiser.getUrlParameter('adgid')) || Number(appState.get('adgroup_id'));\r\n dateRangeQs = getDateRangeQueryArgs();\r\n }\r\n if (simulateResults) {\r\n var pageSize = gridHelper.getPageSize(this.grid);\r\n var currentPage = gridHelper.getCurrentPage(this.grid);\r\n var sortInfo = gridHelper.getSortInfo(entity, this.grid);\r\n query = '$top=' + pageSize + '&$skip=' + currentPage * pageSize + '&$orderby=' + sortInfo;\r\n }\r\n if (filter) {\r\n var addendum = dateRangeQs ? dateRangeQs : '';\r\n var filterURLParam = this.getFilterURLParam(filter, entity);\r\n if (filterURLParam) {\r\n if (addendum) {\r\n addendum += '&';\r\n }\r\n addendum += filterURLParam;\r\n }\r\n query = query === null ? addendum : query + '&' + addendum;\r\n }\r\n return {\r\n 'QueryString': query,\r\n 'CampaignId': campaignId > 0 ? campaignId : null,\r\n 'AdGroupId': adGroupId > 0 ? adGroupId : null\r\n };\r\n },\r\n onJobSuccess: function (model) {\r\n if (_.isFunction(this.onOperationSuccess)) {\r\n this.onOperationSuccess(model);\r\n }\r\n },\r\n onJobFailure: function (model) {\r\n if (_.isFunction(this.onOperationFailure)) {\r\n this.onOperationFailure(model);\r\n }\r\n },\r\n onValidateFailure: function () {},\r\n refresh: function () {\r\n gridHelper.refresh(this.grid, this.hideView.bind(this));\r\n },\r\n submitJob: function () {\r\n this.showPreview(false);\r\n this.makeChanges(false);\r\n },\r\n cancelJob: function () {\r\n this.hideView();\r\n },\r\n previewChanges: function () {\r\n this.makeChanges(true);\r\n },\r\n isValuesArrayEmpty: function (filterExpressions) {\r\n var isEmpty = false;\r\n if (filterExpressions.length > 0) {\r\n _.each(filterExpressions, function (item) {\r\n if (item.Values.length === 0) {\r\n isEmpty = true;\r\n }\r\n });\r\n }\r\n return isEmpty;\r\n },\r\n makeChanges: (function (simulateResults) {\r\n activePollers = 0;\r\n if (this.ko_model.ignoreRowSelection() || this.hasSelectedEntities()) {\r\n if (this.ko_model.validate(this)) {\r\n if (!simulateResults) {\r\n this.ko_model.isDisabled(true);\r\n }\r\n this.model.unset('PreviewEntityIds');\r\n if (simulateResults) {\r\n this.model.url = 'Advertiser/Customers()/Accounts()/BulkEditSessions?$expand=BulkEditResults&preview=true';\r\n if (gridHelper.allPageSelected(this.grid)) {\r\n this.model.set('PreviewEntityIds', gridHelper.getSelectedEntityIds(this.grid));\r\n }\r\n } else {\r\n var isCustomerLevelLabel = this._scope && this._scope === 'Customer';\r\n var accountValueInUrl = isCustomerLevelLabel ? '' : 'Accounts()/';\r\n this.model.url = 'Advertiser/Customers()/' + accountValueInUrl + 'BulkEditSessions?';\r\n }\r\n if (_.isFunction(this.setAction)) {\r\n this.setAction(simulateResults);\r\n }\r\n this.model.set('Selection', this.getCurrentSelection(simulateResults));\r\n var currentFilter = this.getCurrentFilter();\r\n if (currentFilter.idBased && this.isValuesArrayEmpty(currentFilter.FilterExpressions)) {\r\n this.refresh();\r\n return;\r\n }\r\n if (!currentFilter.idBased && (_.contains(currentFilter.FilterExpressions, null) || _.contains(currentFilter.FilterExpressions, undefined))) {\r\n try {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'bulkeditsessions/makeChanges/nullFilter', JSON.stringify({\r\n BatchAction: this.model.get('BatchAction'),\r\n filter: currentFilter\r\n }));\r\n } catch (ex) {}\r\n }\r\n this.model.set('Description', gridFilterSerializer.toDescription(currentFilter));\r\n legacy_jquery.advertiser.clearErrorSummary();\r\n if (actionMap) {\r\n actionMap.registerActionMapExtension('bulkeditsessions', _.bind(this.model.updateSummaryDataContext, this.model));\r\n }\r\n this.model.save({}, {\r\n success: _.bind(function (model) {\r\n let skipEntityCallPaths = null;\r\n if (this.isSkipEntityCache && currentFilter.idBased && currentFilter.FilterExpressions.length > 0) {\r\n const entityName = this.model.get('Entity');\r\n skipEntityCallPaths = _.flatten(_.map(currentFilter.FilterExpressions, filterExpressions => _.map(filterExpressions.Values, value => `${entityName}s(${value})`)));\r\n }\r\n vNextCacheNotify(this, skipEntityCallPaths);\r\n if (this.model.attributes.BatchAction.Actions) {\r\n _.each(this.model.attributes.BatchAction.Actions, function (element, index) {\r\n if (element['@odata.type'] === '#Model.TextAction' && element.ActionType === 'Set' && element.Property === 'Status' && element.Value === 'Excluded') {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'bulkeditsessions/AudienceBulkEditExclusion', '{\"result\": \"1\"}');\r\n } else if (element['@odata.type'] === '#Model.AudienceAssociationAction' && element.AssociationList && element.ExclusionList) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'bulkeditsessions/AdgroupAudienceExclusionList', '{\"result\": \"1\", \"AssociationList\": \"' + element.AssociationList.length + '\", \"ExclusionList\": \"' + element.AssociationList.length + '\"}');\r\n }\r\n });\r\n }\r\n var currentStatus = model.get('Status');\r\n if (model.url && model.url.toLowerCase().indexOf('preview=true') > 0) {\r\n this.ko_model.totalCount(model.get('TotalRowCount'));\r\n var results = model.get('BulkEditResults');\r\n if (_.isFunction(this.formatPreviewResults)) {\r\n results = this.formatPreviewResults(results, model);\r\n }\r\n this.ko_model.currentPageChangeCount(results.length);\r\n this.ko_model.results(results);\r\n this.showPreview(true);\r\n } else if (currentStatus === status.pendingStart || currentStatus === 'PendingFileUpload') {\r\n this.showProgress(true);\r\n this.ko_model.showCheckBoxes(false);\r\n this.ko_model.showButtonBar(false);\r\n activePollers += 1;\r\n this.poller.start(model);\r\n } else if (currentStatus === status.completed) {\r\n this.onJobSuccess(model);\r\n this.refresh();\r\n } else if (currentStatus === status.completedWithErrors) {\r\n this.onJobFailure(model);\r\n this.ko_model.errorCount(this.model.get('ErrorRowCount'));\r\n this.showErrors();\r\n this.ko_model.showButtonBar(false);\r\n this.ko_model.showCloseButton(true);\r\n if (this.model.get('SuccessRowCount') > 0) {\r\n gridHelper.refresh(this.grid);\r\n }\r\n if (this.ko_model.showPanel === false) {\r\n gridHelper.onBulkEditViewHide(this, this.grid);\r\n }\r\n }\r\n if (this.instrumentationActivity && _.isFunction(this.instrumentationActivity.stop)) {\r\n this.instrumentationActivity.stop();\r\n }\r\n }, this),\r\n error: _.bind(function (model, response) {\r\n if (this.model.attributes.BatchAction.Actions) {\r\n _.each(this.model.attributes.BatchAction.Actions, function (element, index) {\r\n if (element['@odata.type'] === '#Model.TextAction' && element.ActionType === 'Set' && element.Property === 'Status' && element.Value === 'Excluded') {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'bulkeditsessions/AudienceBulkEditExclusion', '{\"result\": \"0\"}');\r\n } else if (element['@odata.type'] === '#Model.AudienceAssociationAction' && element.AssociationList && element.ExclusionList) {\r\n logger.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, 'bulkeditsessions/AdgroupAudienceExclusionList', '{\"result\": \"0\", \"AssociationList\": \"' + element.AssociationList.length + '\", \"ExclusionList\": \"' + element.AssociationList.length + '\"}');\r\n }\r\n });\r\n }\r\n var errors = response && response.responseJSON && response.responseJSON.value || [];\r\n if (_.isEmpty(errors) || !errors[0] || !errors[0].Code) {\r\n legacy_jquery.advertiser.ajaxError();\r\n } else {\r\n var code = errors[0].Code;\r\n var msg = errorMapper.mapCampaignApiErrorCodeShort(code) || errorMapper.mapCampaignApiErrorCode(code);\r\n legacy_jquery.advertiser.clearErrorSummary();\r\n legacy_jquery.advertiser.appendErrorSummary(msg);\r\n }\r\n }, this)\r\n }).withUiBlock();\r\n } else {\r\n this.onValidateFailure();\r\n }\r\n } else {\r\n alert(i18n.getString('Grid_RowSelectionRequired'));\r\n }\r\n }).asLoggingStart(setting.ACTIVITYNAME.BulkEditSessions, setting.SCENARIONAME.BulkEditSessions),\r\n showProgress: function (visibility) {\r\n this.ko_model.showProgress(visibility);\r\n },\r\n showPreview: function (visibility) {\r\n this.ko_model.showPreview(visibility);\r\n },\r\n showErrors: function () {\r\n repository.getJobResults(this.model.get('Id'), resultsStatus.OnlyErrors, 0, this.ko_model.maxInlineErrorCount, this.model.get('Entity')).withUiBlock().done(_.bind(function (response) {\r\n if (response && response.value) {\r\n _.each(response.value, function (item) {\r\n item.combinedErrors = this.localizeErrors(item);\r\n }, this);\r\n if (_.isFunction(this.formatErrors)) {\r\n response.value = this.formatErrors(response.value, this.model);\r\n }\r\n this.ko_model.inlineErrors(response.value);\r\n }\r\n this.ko_model.showProgress(false);\r\n this.ko_model.showErrors(true);\r\n this.$('.errorCountLink').off('click');\r\n this.$('.errorCountLink').click(_.bind(function () {\r\n this.ko_model.showErrorGrid(!this.ko_model.showErrorGrid());\r\n }, this));\r\n if (!_.isFunction(this.onOperationFailure) && !gridHelper.allPageSelected(this.grid)) {\r\n this.toastErrors();\r\n }\r\n }, this)).fail(legacy_jquery.advertiser.ajaxError);\r\n },\r\n refreshGrid: function () {\r\n if (PageContext.CurrentTabId == 'Campaign') {\r\n cacheManager.getContext('/campaign/NewCampaign/Create?');\r\n this.eventDelegator && this.eventDelegator.trigger('campaignReload');\r\n } else if (PageContext.CurrentTabId == 'AdGroup') {\r\n cacheManager.getContext('/campaign/MewAdGroup/Create?');\r\n this.eventDelegator && this.eventDelegator.trigger('adGroupReload');\r\n }\r\n },\r\n toastErrors: function () {\r\n var inlineErrors = _.map(this.ko_model.inlineErrors(), function (error) {\r\n return error.combinedErrors;\r\n });\r\n var toastErrors = new Set();\r\n _.each(inlineErrors, function (errors) {\r\n _.each(errors, function (error) {\r\n toastErrors.add(error);\r\n });\r\n });\r\n toastErrors.forEach(function (error) {\r\n toast.showError(error);\r\n });\r\n },\r\n handleUserError: function () {\r\n var userErrors = this.model.get('UserErrors');\r\n var customColumnErrors = _.chain(userErrors).map(function (userError) {\r\n if (userError.Code === 'CustomColumnIdIsInvalid') {\r\n return {\r\n ErrorCode: 'EntityDoesNotExist',\r\n Id: userError.Property.replace('CustomColumn', '')\r\n };\r\n }\r\n if (userError.Code === 'CustomColumnIsUnsupported') {\r\n return {\r\n ErrorCode: 'EntityIsUnsupported',\r\n Id: userError.Property.replace('CustomColumn', '')\r\n };\r\n }\r\n return null;\r\n }).compact().value();\r\n if (_.isEmpty(customColumnErrors)) {\r\n return false;\r\n }\r\n if (this.grid.gridView) {\r\n this.grid.gridView.trigger('hasInvalidOrDeletedCustomColumns', customColumnErrors);\r\n }\r\n this.onJobFailure();\r\n this.ko_model.showProgress(false);\r\n this.ko_model.showButtonBar(false);\r\n this.ko_model.showCloseButton(true);\r\n this.refreshGrid();\r\n window.App.views.alertCenter.toastWarning(i18n.getString('BulkEdit_Notification_CustomColumn_Errors'));\r\n return true;\r\n },\r\n updateSelectedEntityCount: function (count) {\r\n this.ko_model && this.ko_model.selectedEntityCount(count);\r\n },\r\n localizeErrors: function (entityResult) {\r\n var apiErrorMessages = _.isArray(entityResult.Errors) ? _.map(entityResult.Errors, function (error) {\r\n return errorMapper.mapCampaignApiErrorCodeShort(error) || errorMapper.mapCampaignApiErrorCode(error);\r\n }) : [], editorialErrors = _.isArray(entityResult.EditorialErrors) ? errorMapper.mapEditorialErrors(entityResult.EditorialErrors, true) : [];\r\n if (_.isFunction(this.transformErrors)) {\r\n this.transformErrors(editorialErrors);\r\n }\r\n var editorialErrorMessages = _.map(editorialErrors, function (error) {\r\n return i18n.getString('BulkEdit_HistoryJobDetails_EditorialError', error.countryName, error.message);\r\n });\r\n return apiErrorMessages.concat(editorialErrorMessages);\r\n },\r\n hasSelectedEntities: function () {\r\n var selectedRowIds = gridHelper.getSelectedRowIds(this.grid);\r\n return _.isArray(selectedRowIds) ? selectedRowIds.length > 0 : false;\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nimport actions from '@bingads-webui-static-legacy/schema/bulkEdit/changeBudgetActions';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport { getBudgetRange } from '@bingads-webui-campaign-legacy/common-grid-config/budget/get-budget-range';\r\n\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar i18nAmdLoader = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/campaigns-tab/campaigns');\r\nvar OUT_OF_RANGE = 'OutOfRange';\r\nvar INVALID = 'InvalidNumber';\r\nvar budgetType = {\r\n monthly: 'Monthly',\r\n daily: 'Daily',\r\n lifetimeBudgetStandard: 'LifetimeBudgetStandard'\r\n};\r\nvar actionOptions = [{\r\n Value: actions.Set,\r\n Text: i18n.getString('BulkEdit_Campaign_SetBudgetOption')\r\n}, {\r\n Value: actions.Increase,\r\n Text: i18n.getString('BulkEdit_Campaign_IncreaseBudgetOption')\r\n}, {\r\n Value: actions.Decrease,\r\n Text: i18n.getString('BulkEdit_Campaign_DecreaseBudgetOption')\r\n}];\r\nvar unitOptions = [{\r\n Value: 'percentage',\r\n Text: '%'\r\n}, {\r\n Value: 'absolute',\r\n Text: PageContext.AccountCurrencyCode\r\n}];\r\nvar budgetTypeOptions = [{\r\n Value: budgetType.monthly,\r\n Text: i18n.getString('BulkEdit_Campaign_MonthlyBudget')\r\n}, {\r\n Value: budgetType.daily,\r\n Text: i18n.getString('BulkEdit_Campaign_DailyBudget')\r\n},{\r\n Value: budgetType.lifetimeBudgetStandard,\r\n Text: i18n.getString('BulkEdit_Campaign_LifetimeBudget')\r\n}];\r\nvar regEx = new RegExp(/^[0-9]*\\.?[0-9]+$/g);\r\nvar validateNumber = function (value, usePercentValidation, budgetValidation) {\r\n if (!i18nAmdLoader.isValidDecimal(value)) {\r\n return INVALID;\r\n }\r\n\r\n var minValue, maxValue;\r\n var budgetRange = getBudgetRange(PageContext.AccountCurrencyCode);\r\n\r\n if (budgetValidation === budgetType.daily) {\r\n minValue = usePercentValidation ? 0 : budgetRange.Daily.Min;\r\n maxValue = usePercentValidation ? Number.MAX_VALUE : budgetRange.Daily.Max;\r\n } else if (budgetValidation === budgetType.lifetimeBudgetStandard) {\r\n minValue = usePercentValidation ? 0 : budgetRange.Lifetime.Min;\r\n maxValue = usePercentValidation ? Number.MAX_VALUE : budgetRange.Lifetime.Max;\r\n }\r\n\r\n value = i18nAmdLoader.parseDecimal(value, 2).toString();\r\n if (value.match(regEx)) {\r\n if (value < minValue && !usePercentValidation || value <= minValue && usePercentValidation || value > maxValue) {\r\n return OUT_OF_RANGE;\r\n }\r\n } else {\r\n return INVALID;\r\n }\r\n return '';\r\n};\r\nvar ViewModel = function (model) {\r\n Base.call(this);\r\n this.actions = actionOptions;\r\n this.selectedAction = ko.observable(actions.Set);\r\n this.limitValueErrorMessage = ko.observable('');\r\n this.selectedAction.subscribe(function () {\r\n this.errorMessage('');\r\n this.limitValueErrorMessage('');\r\n }, this);\r\n this.budgetTypes = budgetTypeOptions;\r\n this.selectedBudget = ko.observable(model.get('budgetType'));\r\n if (ko.isObservable(model.get('budgetType'))) {\r\n model.get('budgetType').subscribe(function (newBudgetType) {\r\n this.selectedBudget(newBudgetType);\r\n }, this);\r\n }\r\n this.selectedBudget.subscribe(function () {\r\n this.errorMessage('');\r\n this.limitValueErrorMessage('');\r\n }, this);\r\n this.isDailyBudget = ko.computed(function () {\r\n return this.selectedBudget() === budgetType.daily;\r\n }, this);\r\n this.isLifetimeBudget = ko.computed(function () {\r\n return this.selectedBudget() === budgetType.lifetimeBudgetStandard;\r\n }, this);\r\n this.getLifetimeBudgetLabel = function () {\r\n if (this.isDailyBudget()) {\r\n return i18n.getString('BulkEdit_Campaign_DailyBudget');\r\n } else if (this.isLifetimeBudget()) {\r\n return i18n.getString('BulkEdit_Campaign_LifetimeBudget');\r\n }\r\n return '';\r\n }\r\n this.showSetPanel = ko.computed(function () {\r\n return this.selectedAction() === actions.Set;\r\n }, this);\r\n this.showChangeByPanel = ko.computed(function () {\r\n return this.selectedAction() === actions.Increase || this.selectedAction() === actions.Decrease;\r\n }, this);\r\n this.showIncreaseBudgetHelp = ko.computed(function () {\r\n return this.selectedAction() === actions.Increase;\r\n }, this);\r\n this.units = unitOptions;\r\n this.selectedUnit = ko.observable('percentage');\r\n this.budget = ko.observable();\r\n this.budgetValue = ko.computed({\r\n read: function () {\r\n return this.budget();\r\n },\r\n write: function (value) {\r\n this.errorMessage('');\r\n this.limitValueErrorMessage('');\r\n this.budget(value);\r\n },\r\n owner: this\r\n });\r\n this.limit = ko.observable();\r\n this.limitValue = ko.computed({\r\n read: function () {\r\n return this.limit();\r\n },\r\n write: function (value) {\r\n this.errorMessage('');\r\n this.limitValueErrorMessage('');\r\n this.limit(value);\r\n },\r\n owner: this\r\n });\r\n this.useLimitValue = ko.observable();\r\n this.limitBudgetLabelText = ko.computed(function () {\r\n if (this.selectedAction() === actions.Increase) return i18n.getString('BulkEdit_Campaign_UpperBudgetLimit'); else if (this.selectedAction() === actions.Decrease) return i18n.getString('BulKEdit_Campaign_LowerBudgetLimit');\r\n }, this);\r\n this.selectedEntityCount(model.get('selectedEntityCount'));\r\n this.titleText = ko.computed(function () {\r\n return i18n.getString('BulkEdit_Campaign_ChangeBudgetTitle').replace('{0}', this.selectedEntityCount());\r\n }, this);\r\n this.validate = function () {\r\n this.errorMessage('');\r\n if (this.selectedEntityCount() === 0) {\r\n alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return false;\r\n }\r\n var selectedAction = this.selectedAction();\r\n var usePercentValidation = (selectedAction === actions.Increase || selectedAction === actions.Decrease) && this.selectedUnit() === 'percentage';\r\n var budgetValue = this.budgetValue();\r\n if (!budgetValue) {\r\n if (selectedAction === actions.Set) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_MissingBudgetError'));\r\n } else {\r\n if (this.selectedUnit() === 'percentage') {\r\n this.errorMessage(i18n.getString('BulkEdit_Keyword_MissingPercentageError'));\r\n } else {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_MissingBudgetError'));\r\n }\r\n }\r\n return false;\r\n }\r\n if (budgetValue) {\r\n var result = validateNumber(budgetValue, usePercentValidation, this.selectedBudget());\r\n if (result === OUT_OF_RANGE) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_BudgetOutOfRangeError'));\r\n return false;\r\n } else if (result === INVALID) {\r\n if (this.selectedUnit() === 'percentage') {\r\n this.errorMessage(i18n.getString('BulkEdit_Keyword_InvalidPercentageError'));\r\n } else {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_InvalidBudgetError'));\r\n }\r\n return false;\r\n }\r\n }\r\n if (this.useLimitValue() && selectedAction !== actions.Set) {\r\n var limit = this.limitValue();\r\n if (!limit) {\r\n this.limitValueErrorMessage(i18n.getString('BulkEdit_Campaign_MissingBudgetLimitError'));\r\n return false;\r\n } else {\r\n var result = validateNumber(limit, false, this.selectedBudget());\r\n if (result === OUT_OF_RANGE) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_BudgetOutOfRangeError'));\r\n return false;\r\n } else if (result === INVALID) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_InvalidBudgetError'));\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport ChangeBudgetViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/campaign/changeBudget';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/campaign/changeBudget.pug';\r\nimport ChangeBudgetModel from '@bingads-webui-static-legacy/bulk-edit/model/campaign/changeBudget';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport numericActionTypes from '@bingads-webui-static-legacy/schema/bulkEdit/numericActionType';\r\nimport actions from '@bingads-webui-static-legacy/schema/bulkEdit/changeBudgetActions';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport budgetTypes from '@bingads-webui-static-legacy/schema/campaign/budgetTypes';\r\nimport helpDirective from '@bingads-webui-static-legacy/directive/help';\r\nimport * as Persistence from '@bingads-webui-component-legacy/ko-persistence/observable-localstorage';\r\nimport * as instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar selectedUnitPreferenceName = 'WebApp.CampaignUI.CampaignGrid.changeBudget.selectedUnit.user(' + PageContext.CurrentUser.Id + ')';\r\nvar formatBudget = function (rows) {\r\n if (rows) {\r\n _.each(rows, function (value) {\r\n value.Entity = _.find(value.EntityKey, function (item) {\r\n return item.Key === 'CampaignName';\r\n });\r\n value.data = [];\r\n value.data.push({\r\n value: value.Entity && value.Entity.Value ? value.Entity.Value : '',\r\n isHtml: false\r\n });\r\n if (value.Changes && value.Changes.length) {\r\n value.data.push({\r\n value: decimalNumber.fromFloatToString(value.Changes[0].OriginalValue, 2),\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: decimalNumber.fromFloatToString(value.Changes[0].NewValue, 2),\r\n isHtml: false\r\n });\r\n } else {\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n }\r\n });\r\n }\r\n return rows;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n var senario = instrumentation.default.bulkEditCampaignBudget.create();\r\n var activity = senario.bulkEditCampaignBudget.create();\r\n activity.start();\r\n options.activity = activity;\r\n BaseView.prototype.initialize.call(this, options);\r\n this.ko_model = new ChangeBudgetViewModel(this.model);\r\n this.template = template;\r\n Persistence.on(this.ko_model.selectedUnit, selectedUnitPreferenceName);\r\n },\r\n render: function () {\r\n BaseView.prototype.render.apply(this, arguments);\r\n helpDirective.run(this.$el);\r\n return this;\r\n },\r\n setAction: function () {\r\n var action = null;\r\n var selectedAction = this.ko_model.selectedAction();\r\n var limitValue = selectedAction !== actions.Set && this.ko_model.useLimitValue() ? decimalNumber.fromLocalToFloat(this.ko_model.limitValue()) : null;\r\n var budgetAmount = decimalNumber.fromLocalToFloat(this.ko_model.budgetValue());\r\n if (selectedAction === actions.Decrease) {\r\n budgetAmount *= -1;\r\n }\r\n var actionType = selectedAction === actions.Set ? numericActionTypes.setAmount : this.ko_model.selectedUnit() === 'percentage' ? numericActionTypes.changeByPercent : numericActionTypes.changeByAmount;\r\n action = {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n Property: 'Budget/Amount',\r\n ActionType: actionType,\r\n Value: budgetAmount,\r\n Limit: limitValue\r\n }]\r\n };\r\n this.model.set('BatchAction', action);\r\n },\r\n getIdFilter: function () {\r\n var filter = filterHelper.getIdFilter(this.grid, 'Campaign');\r\n return filter;\r\n },\r\n getProgressText: function () {\r\n return i18n.getString('BulkEdit_Campaigns_ProgressText');\r\n },\r\n getCustomFilter: function () {\r\n var value = this.ko_model.isDailyBudget() ? [budgetTypes.dailyAccelerated, budgetTypes.dailyStandard] : [budgetTypes.lifetimeBudgetStandard];\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: 'BudgetType',\r\n SelectedOperator: 'Equal',\r\n Values: value\r\n }]\r\n };\r\n },\r\n formatErrors: function (errors) {\r\n return formatBudget(errors);\r\n },\r\n formatPreviewResults: function (results) {\r\n return formatBudget(results);\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nimport actions from '@bingads-webui-static-legacy/schema/bulkEdit/changeBudgetActions';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar i18nAmdLoader = window.globalLegacyI18n.get('@bingads-webui/i18n-amd-loader!campaignui/feature/campaigns-tab/campaigns');\r\nvar OUT_OF_RANGE = 'OutOfRange';\r\nvar INVALID = 'InvalidNumber';\r\nvar actionOptions = [{\r\n Value: actions.Set,\r\n Text: i18n.getString('BulkEdit_Campaign_SetBudgetOption')\r\n}, {\r\n Value: actions.Increase,\r\n Text: i18n.getString('BulkEdit_Campaign_IncreaseBudgetOption')\r\n}, {\r\n Value: actions.Decrease,\r\n Text: i18n.getString('BulkEdit_Campaign_DecreaseBudgetOption')\r\n}];\r\nvar unitOptions = [{\r\n Value: 'percentage',\r\n Text: '%'\r\n}, {\r\n Value: 'absolute',\r\n Text: PageContext.AccountCurrencyCode\r\n}];\r\nvar regEx = new RegExp(/^[0-9]*\\.?[0-9]+$/g);\r\nvar validateNumber = function (value, usePercentValidation) {\r\n if (!i18nAmdLoader.isValidDecimal(value)) {\r\n return INVALID;\r\n }\r\n var minValue = usePercentValidation ? 0 : PageContext.BudgetRange.DailyRange.FloorValue;\r\n var maxValue = usePercentValidation ? Number.MAX_VALUE : PageContext.BudgetRange.DailyRange.CeilingValue;\r\n value = i18nAmdLoader.parseDecimal(value, 2).toString();\r\n if (value.match(regEx)) {\r\n if (value < minValue && !usePercentValidation || value <= minValue && usePercentValidation || value > maxValue) {\r\n return OUT_OF_RANGE;\r\n }\r\n } else {\r\n return INVALID;\r\n }\r\n return '';\r\n};\r\nvar ViewModel = function (model) {\r\n Base.call(this);\r\n this.actions = actionOptions;\r\n this.selectedAction = ko.observable(actions.Set);\r\n this.selectedAction.subscribe(function () {\r\n this.errorMessage('');\r\n }, this);\r\n this.showSetPanel = ko.computed(function () {\r\n return this.selectedAction() === actions.Set;\r\n }, this);\r\n this.showChangeByPanel = ko.computed(function () {\r\n return this.selectedAction() === actions.Increase || this.selectedAction() === actions.Decrease;\r\n }, this);\r\n this.showIncreaseBudgetHelp = ko.computed(function () {\r\n return this.selectedAction() === actions.Increase;\r\n }, this);\r\n this.units = unitOptions;\r\n this.selectedUnit = ko.observable('percentage');\r\n this.budget = ko.observable();\r\n this.budgetValue = ko.computed({\r\n read: function () {\r\n return this.budget();\r\n },\r\n write: function (value) {\r\n this.errorMessage('');\r\n this.budget(value);\r\n },\r\n owner: this\r\n });\r\n this.limit = ko.observable();\r\n this.limitValue = ko.computed({\r\n read: function () {\r\n return this.limit();\r\n },\r\n write: function (value) {\r\n this.errorMessage('');\r\n this.limit(value);\r\n },\r\n owner: this\r\n });\r\n this.useLimitValue = ko.observable();\r\n this.limitBudgetLabelText = ko.computed(function () {\r\n if (this.selectedAction() === actions.Increase) return i18n.getString('BulkEdit_Campaign_UpperCashbackBudgetLimit'); else if (this.selectedAction() === actions.Decrease) return i18n.getString('BulKEdit_Campaign_LowerCashbackBudgetLimit');\r\n }, this);\r\n this.selectedEntityCount(model.get('selectedEntityCount'));\r\n this.titleText = ko.computed(function () {\r\n return i18n.getString('BulkEdit_Campaign_ChangeCashbackBudgetTitle').replace('{0}', this.selectedEntityCount());\r\n }, this);\r\n this.validate = function () {\r\n this.errorMessage('');\r\n if (this.selectedEntityCount() === 0) {\r\n alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return false;\r\n }\r\n var selectedAction = this.selectedAction();\r\n var usePercentValidation = (selectedAction === actions.Increase || selectedAction === actions.Decrease) && this.selectedUnit() === 'percentage';\r\n var budgetValue = this.budgetValue();\r\n if (!budgetValue) {\r\n if (selectedAction === actions.Set) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_MissingBudgetError'));\r\n } else {\r\n if (this.selectedUnit() === 'percentage') {\r\n this.errorMessage(i18n.getString('BulkEdit_Keyword_MissingPercentageError'));\r\n } else {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_MissingBudgetError'));\r\n }\r\n }\r\n return false;\r\n }\r\n if (budgetValue) {\r\n var result = validateNumber(budgetValue, usePercentValidation);\r\n if (result === OUT_OF_RANGE) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_BudgetOutOfRangeError'));\r\n return false;\r\n } else if (result === INVALID) {\r\n if (this.selectedUnit() === 'percentage') {\r\n this.errorMessage(i18n.getString('BulkEdit_Keyword_InvalidPercentageError'));\r\n } else {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_InvalidBudgetError'));\r\n }\r\n return false;\r\n }\r\n }\r\n if (this.useLimitValue() && selectedAction !== actions.Set) {\r\n var limit = this.limitValue();\r\n if (!limit) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_MissingBudgetLimitError'));\r\n return false;\r\n } else {\r\n var result = validateNumber(limit, false);\r\n if (result === OUT_OF_RANGE) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_BudgetOutOfRangeError'));\r\n return false;\r\n } else if (result === INVALID) {\r\n this.errorMessage(i18n.getString('BulkEdit_Campaign_InvalidBudgetError'));\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport ChangeCashbackBudgetViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/campaign/changeCashbackBudget';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/campaign/changeCashbackBudget.pug';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport numericActionTypes from '@bingads-webui-static-legacy/schema/bulkEdit/numericActionType';\r\nimport actions from '@bingads-webui-static-legacy/schema/bulkEdit/changeBudgetActions';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport helpDirective from '@bingads-webui-static-legacy/directive/help';\r\nimport * as Persistence from '@bingads-webui-component-legacy/ko-persistence/observable-localstorage';\r\nimport * as instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar selectedUnitPreferenceName = 'WebApp.CampaignUI.CampaignGrid.changeCashbackBudget.selectedUnit.user(' + PageContext.CurrentUser.Id + ')';\r\nvar formatBudget = function (rows) {\r\n if (rows) {\r\n _.each(rows, function (value) {\r\n value.Entity = _.find(value.EntityKey, function (item) {\r\n return item.Key === 'CampaignName';\r\n });\r\n value.data = [];\r\n value.data.push({\r\n value: value.Entity && value.Entity.Value ? value.Entity.Value : '',\r\n isHtml: false\r\n });\r\n if (value.Changes && value.Changes.length) {\r\n value.data.push({\r\n value: decimalNumber.fromFloatToString(value.Changes[0].OriginalValue, 2),\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: decimalNumber.fromFloatToString(value.Changes[0].NewValue, 2),\r\n isHtml: false\r\n });\r\n } else {\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n }\r\n });\r\n }\r\n return rows;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n var senario = instrumentation.default.bulkEditCampaignCashbackBudget.create();\r\n var activity = senario.bulkEditCampaignCashbackBudget.create();\r\n activity.start();\r\n options.activity = activity;\r\n BaseView.prototype.initialize.call(this, options);\r\n this.ko_model = new ChangeCashbackBudgetViewModel(this.model);\r\n this.template = template;\r\n Persistence.on(this.ko_model.selectedUnit, selectedUnitPreferenceName);\r\n },\r\n render: function () {\r\n BaseView.prototype.render.apply(this, arguments);\r\n helpDirective.run(this.$el);\r\n return this;\r\n },\r\n setAction: function () {\r\n var action = null;\r\n var selectedAction = this.ko_model.selectedAction();\r\n var limitValue = selectedAction !== actions.Set && this.ko_model.useLimitValue() ? decimalNumber.fromLocalToFloat(this.ko_model.limitValue()) : null;\r\n var budgetAmount = decimalNumber.fromLocalToFloat(this.ko_model.budgetValue());\r\n if (selectedAction === actions.Decrease) {\r\n budgetAmount *= -1;\r\n }\r\n var actionType = selectedAction === actions.Set ? numericActionTypes.setAmount : this.ko_model.selectedUnit() === 'percentage' ? numericActionTypes.changeByPercent : numericActionTypes.changeByAmount;\r\n action = {\r\n Actions: [{\r\n '@odata.type': '#Model.NumericAction',\r\n Property: 'CampaignCashback/MonthlyBudget',\r\n ActionType: actionType,\r\n Value: budgetAmount,\r\n Limit: limitValue\r\n }]\r\n };\r\n this.model.set('BatchAction', action);\r\n },\r\n getIdFilter: function () {\r\n var filter = filterHelper.getIdFilter(this.grid, 'Campaign');\r\n return filter;\r\n },\r\n getProgressText: function () {\r\n return i18n.getString('BulkEdit_Campaigns_ProgressText');\r\n },\r\n formatErrors: function (errors) {\r\n return formatBudget(errors);\r\n },\r\n formatPreviewResults: function (results) {\r\n return formatBudget(results);\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/campaign/changeCashbackPercent.pug';\r\nimport viewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/shared/changeCashbackPercent';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport numericActionType from '@bingads-webui-static-legacy/schema/bulkEdit/numericActionType';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar formatBid = function (rows) {\r\n if (rows) {\r\n _.each(rows, function (value) {\r\n value.Entity = _.find(value.EntityKey, function (item) {\r\n return item.Key === 'CampaignName';\r\n });\r\n value.data = [];\r\n value.data.push({\r\n value: value.Entity && value.Entity.Value ? value.Entity.Value : '',\r\n isHtml: false\r\n });\r\n if (value.Changes && value.Changes.length) {\r\n var newValue = value.Changes[0].NewValue;\r\n var newValueText;\r\n if (+newValue === -1 || newValue === '') {\r\n newValueText = '-';\r\n } else {\r\n newValueText = decimalNumber.fromFloatToPercentString(value.Changes[0].NewValue, 2);\r\n }\r\n var originalValue = value.Changes[0].OriginalValue;\r\n value.data.push({\r\n value: originalValue === '' || +originalValue === -1 ? '-' : decimalNumber.fromFloatToPercentString(value.Changes[0].OriginalValue, 2),\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: newValueText,\r\n isHtml: false\r\n });\r\n } else {\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n }\r\n });\r\n }\r\n return rows;\r\n ;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n this.options = options || ({});\r\n BaseView.prototype.initialize.apply(this, arguments);\r\n this.template = template;\r\n this.entityType = options.entityType;\r\n this.ko_model = new viewModel({\r\n isCampaignBulkEdit: true,\r\n cashbackPercentDescription: i18n.getString('BulkEdit_Campaign_CashbackPercentMessage')\r\n });\r\n },\r\n render: function () {\r\n BaseView.prototype.render.apply(this, arguments);\r\n return this;\r\n },\r\n setAction: function () {\r\n this.model.set('Entity', 'Campaign');\r\n var oDataType = '#Model.NumericAction';\r\n var oDataProperty = 'CampaignCashback/Percent';\r\n var actionType = numericActionType.setAmount;\r\n var action = {\r\n Actions: [{\r\n '@odata.type': oDataType,\r\n Property: oDataProperty,\r\n ActionType: actionType,\r\n Value: this.ko_model.getCashbackPercentValueByAction()\r\n }]\r\n };\r\n this.model.set('BatchAction', action);\r\n },\r\n getIdFilter: function () {\r\n var filter = filterHelper.getIdFilter(this.grid, 'Campaign');\r\n return filter;\r\n },\r\n formatErrors: function (errors) {\r\n return formatBid(errors);\r\n },\r\n formatPreviewResults: function (results) {\r\n return formatBid(results);\r\n },\r\n getProgressText: function () {\r\n return i18n.getString('BulkEdit_Campaigns_ProgressText');\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nimport campaignStatus from '@bingads-webui-static-legacy/schema/campaign/status';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar ViewModel = function (model) {\r\n Base.call(this);\r\n var status = model.get('BatchAction').Actions[0].Value;\r\n this.showPanel = true;\r\n this.selectedEntityCount(model.get('selectedEntityCount'));\r\n this.titleText = ko.computed(function () {\r\n if (status === campaignStatus.Deleted) {\r\n return i18n.getString('BulkEdit_Campaign_DeleteTitle').replace('{0}', this.selectedEntityCount());\r\n } else if (status === campaignStatus.Active) {\r\n return i18n.getString('BulkEdit_Campaign_ResumeTitle').replace('{0}', this.selectedEntityCount());\r\n } else {\r\n return i18n.getString('BulkEdit_Campaign_PauseTitle').replace('{0}', this.selectedEntityCount());\r\n }\r\n }, this);\r\n this.validate = function () {\r\n this.errorMessage('');\r\n if (this.selectedEntityCount() === 0) {\r\n alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return false;\r\n }\r\n return true;\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport StatusViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/campaign/changeStatus';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/campaign/changeStatus.pug';\r\nimport actionLinkTemplate from '@bingads-webui-static-legacy/bulk-edit/template/campaign/actionLink.pug';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport gridHelper from '@bingads-webui-static-legacy/shared/view/gridHelper';\r\nimport urlUtil from '@bingads-webui-static-legacy/app/router/lib/url';\r\nimport state from '@bingads-webui-component-legacy/state/index';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar formatStatus = function (rows) {\r\n if (rows) {\r\n _.each(rows, function (item) {\r\n item.Entity = _.find(item.EntityKey, function (item) {\r\n return item.Key === 'CampaignName';\r\n });\r\n item.data = [];\r\n item.data.push({\r\n value: item.Entity && item.Entity.Value ? item.Entity.Value : '',\r\n isHtml: false\r\n });\r\n if (item.Changes && item.Changes.length) {\r\n item.data.push({\r\n value: i18n.getString('EntityStatus_' + item.Changes[0].OriginalValue),\r\n isHtml: false\r\n });\r\n item.data.push({\r\n value: i18n.getString('EntityStatus_' + item.Changes[0].NewValue),\r\n isHtml: false\r\n });\r\n } else {\r\n item.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n item.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n }\r\n });\r\n }\r\n return rows;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n BaseView.prototype.initialize.apply(this, arguments);\r\n this.ko_model = new StatusViewModel(this.model);\r\n this.template = template;\r\n this.bulkEditUrl = options.bulkEditUrl;\r\n },\r\n render: function () {\r\n if (!gridHelper.isCrossPageAllSelected(this.grid)) {\r\n this.ko_model.showPanel = false;\r\n }\r\n BaseView.prototype.render.apply(this, arguments);\r\n if (!gridHelper.isCrossPageAllSelected(this.grid)) {\r\n this.submitJob();\r\n }\r\n return this;\r\n },\r\n showErrors: function () {\r\n if (this.ko_model.showPanel) {\r\n return BaseView.prototype.showErrors.apply(this, arguments);\r\n }\r\n var alertId = 'alert-bulkedit-campaignstatus';\r\n var message = i18n.getString('BulkEdit_CampaignStatus_PartialSuccess', this.model.get('ErrorRowCount'), this.model.get('TotalRowCount'));\r\n var actionLink = actionLinkTemplate({\r\n alertId: alertId,\r\n href: `${this.bulkEditUrl ? this.bulkEditUrl : ''}bulkeditoperation?cid=` + state.get('customer_id') + '&aid=' + state.get('account_id'),\r\n text: i18n.getString('BulkEdit_ViewDetails')\r\n });\r\n window.App.views.alertCenter.show({\r\n message: message + ' ' + actionLink,\r\n dismissible: true,\r\n level: 'Error'\r\n }, alertId);\r\n },\r\n getIdFilter: function () {\r\n return filterHelper.getIdFilter(this.grid, 'Campaign');\r\n },\r\n getProgressText: function () {\r\n return i18n.getString('BulkEdit_Campaigns_ProgressText');\r\n },\r\n formatPreviewResults: function (results) {\r\n return formatStatus(results);\r\n },\r\n formatErrors: function (errors) {\r\n return formatStatus(errors);\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\nvar model = BaseModel.extend({\r\n defaults: _.extend({}, BaseModel.prototype.defaults, {\r\n Entity: '',\r\n BatchAction: {\r\n Actions: [{\r\n '@odata.type': '#Model.CopyAction',\r\n DestinationParentEntityIds: []\r\n }],\r\n EditCopy: false\r\n },\r\n Description: 'Copy Paste'\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as DatePicker from '@bingads-webui-campaign/campaigns-date-picker';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar disableKeywordDestinationUrl = PageContext.Permissions.IsKeywordDestinationURLDisabled;\r\nvar titleStrings = {\r\n 'ad': function (count) {\r\n if (count === 1) {\r\n return i18n.getString('BulkEdit_PasteOneAd_Title');\r\n } else if (count > 1) {\r\n return i18n.getString('BulkEdit_PasteNAds_Title', count);\r\n } else {\r\n return i18n.getString('BulkEdit_PasteUnknownAds_Title');\r\n }\r\n },\r\n 'keyword': function (count) {\r\n if (count === 1) {\r\n return i18n.getString('BulkEdit_PasteOneKeyword_Title');\r\n } else if (count > 1) {\r\n return i18n.getString('BulkEdit_PasteNKeywords_Title', count);\r\n } else {\r\n return i18n.getString('BulkEdit_PasteUnknownKeywords_Title');\r\n }\r\n },\r\n 'campaign': function (count) {\r\n if (count === 1) {\r\n return i18n.getString('BulkEdit_PasteOneCampaign_Title');\r\n } else if (count > 1) {\r\n return i18n.getString('BulkEdit_PasteNCampaigns_Title', count);\r\n } else {\r\n return i18n.getString('BulkEdit_PasteUnknownCampaigns_Title');\r\n }\r\n },\r\n 'adgroup': function (count) {\r\n if (count === 1) {\r\n return i18n.getString('BulkEdit_PasteOneAdGroup_Title');\r\n } else if (count > 1) {\r\n return i18n.getString('BulkEdit_PasteNAdGroups_Title', count);\r\n } else {\r\n return i18n.getString('BulkEdit_PasteUnknownAdGroups_Title');\r\n }\r\n },\r\n 'assetgroup': function (count) {\r\n if (count === 1) {\r\n return i18n.getString('BulkEdit_PasteOneAssetGroup_Title');\r\n } else if (count > 1) {\r\n return i18n.getString('BulkEdit_PasteNAssetGroups_Title', count);\r\n } else {\r\n return i18n.getString('BulkEdit_PasteUnknownAssetGroups_Title');\r\n }\r\n }\r\n};\r\nvar ViewModel = function (model, startDatePicker, endDatePicker) {\r\n Base.call(this);\r\n this.contentType = ko.observable('');\r\n this.includeBids = ko.observable(true);\r\n this.disableKeywordDestinationUrl = disableKeywordDestinationUrl;\r\n this.includeDestinationURLs = ko.observable(true);\r\n this.pauseAfterPasting = ko.observable(false);\r\n this.ignoreRowSelection = ko.observable(true);\r\n this.showPreviewButton = ko.observable(false);\r\n this.actionButtonText = ko.observable(i18n.getString('BulkEdit_PasteButton'));\r\n this.statusText = ko.observable(i18n.getString('BulkEdit_Paste_InitialStatus'));\r\n this.adjustStartAndEndDates = ko.observable(false);\r\n this.endDateModification = ko.observable(null);\r\n this.showCheckBoxes = ko.observable(true);\r\n this.isCampaignAdGroupCopyPasteOperation = ko.observable(model.attributes.content.type === 'campaign' || model.attributes.content.type === 'adgroup');\r\n this.culture = config.get('culture') || 'en-US';\r\n this.format = config.get('globalization.datetime.shortDatePattern') || 'M/d/yyyy';\r\n this.titleText = ko.computed(function () {\r\n var title = titleStrings[this.contentType()];\r\n return title ? title(model.get('content').count) : '';\r\n }, this);\r\n startDatePicker.on('dateChanged', () => {\r\n this.errorMessage('');\r\n });\r\n endDatePicker.on('dateChanged', () => {\r\n this.errorMessage('');\r\n });\r\n this.validate = function () {\r\n if (this.adjustStartAndEndDates() && this.endDateModification() === 'Selected') {\r\n var startDate = startDatePicker.getState().selectedDate;\r\n var endDate = endDatePicker.getState().selectedDate;\r\n if (startDate > endDate) {\r\n this.errorMessage(i18n.getString('DatePicker_StartDateCannotBeLaterThanEndDate'));\r\n return false;\r\n }\r\n }\r\n return ViewModel.validateTab(this.contentType());\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport CopyPasteViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/copypaste/copyPaste';\r\nimport adTemplate from '@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteAd.pug';\r\nimport keywordTemplate from '@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteKeyword.pug';\r\nimport campaignTemplate from '@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteCampaign.pug';\r\nimport adGroupTemplate from '@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteAdGroup.pug';\r\nimport assetGroupTemplate from '@bingads-webui-static-legacy/bulk-edit/template/copypaste/copyPasteAssetGroup.pug';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport helpDirective from '@bingads-webui-static-legacy/directive/help';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as datePicker from '@bingads-webui-campaign/campaigns-date-picker';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar pasteOptions = [{\r\n flag: function (ko_model) {\r\n return !ko_model.includeBids();\r\n },\r\n data: {\r\n '@odata.type': '#Model.NumericAction',\r\n Property: 'Bid/Amount',\r\n ActionType: 'SetToAmount',\r\n Value: null,\r\n Limit: null\r\n }\r\n}, {\r\n flag: function (ko_model) {\r\n return !ko_model.includeDestinationURLs();\r\n },\r\n data: {\r\n '@odata.type': '#Model.TextAction',\r\n Property: 'DestinationUrl',\r\n ActionType: 'Set',\r\n Value: null\r\n }\r\n}, {\r\n flag: function (ko_model) {\r\n return ko_model.pauseAfterPasting();\r\n },\r\n data: {\r\n '@odata.type': '#Model.TextAction',\r\n Property: 'Status',\r\n ActionType: 'Set',\r\n Value: 'Paused'\r\n }\r\n}];\r\nvar tabs = {\r\n 'ad': {\r\n key: 'AdTitle',\r\n secondary: 'AdText',\r\n progress: i18n.getString('BulkEdit_PasteAds_ProgressText'),\r\n template: adTemplate\r\n },\r\n 'keyword': {\r\n key: 'Keyword',\r\n progress: i18n.getString('BulkEdit_PasteKeywords_ProgressText'),\r\n template: keywordTemplate\r\n },\r\n 'campaign': {\r\n key: 'Campaign',\r\n progress: i18n.getString('BulkEdit_PasteCampaigns_ProgressTextWithoutTotalEntities'),\r\n template: campaignTemplate\r\n },\r\n 'adgroup': {\r\n key: 'AdGroup',\r\n progress: i18n.getString('BulkEdit_PasteAdGroups_ProgressTextWithoutTotalEntities'),\r\n template: adGroupTemplate\r\n },\r\n 'assetgroup': {\r\n key: 'AssetGroup',\r\n progress: i18n.getString('BulkEdit_PasteAssetGroups_ProgressTextWithoutTotalEntities'),\r\n template: assetGroupTemplate\r\n }\r\n};\r\nvar clipboard = null;\r\nvar formatCampaignAdGroup = function (campaign, adgroup) {\r\n var value = campaign ? campaign : '';\r\n value += ' >';\r\n if (adgroup) {\r\n value += '
';\r\n value += adgroup;\r\n }\r\n return value;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n if (options.perfMarker) {\r\n this.perfMarker = options.perfMarker;\r\n }\r\n BaseView.prototype.initialize.apply(this, arguments);\r\n this.startDatePicker = new datePicker.CampaignsDatePicker({\r\n minDate: new Date(),\r\n selectedDate: new Date()\r\n });\r\n var nextYear = new Date();\r\n nextYear.setFullYear(nextYear.getFullYear() + 1);\r\n this.endDatePicker = new datePicker.CampaignsDatePicker({\r\n minDate: new Date(),\r\n selectedDate: nextYear\r\n });\r\n this.ko_model = new CopyPasteViewModel(this.model, this.startDatePicker, this.endDatePicker);\r\n clipboard = this.model.get('content');\r\n this.ko_model.contentType(clipboard.type);\r\n this.template = tabs[clipboard.type] && tabs[clipboard.type].template;\r\n },\r\n render: function () {\r\n if (this.perfMarker) {\r\n this.perfMarker.willRender();\r\n }\r\n BaseView.prototype.render.apply(this, arguments);\r\n helpDirective.run(this.$el);\r\n this.startDatePicker.render();\r\n this.$('.start-date-picker').html(this.startDatePicker.$el);\r\n this.endDatePicker.render();\r\n this.$('.end-date-picker').html(this.endDatePicker.$el);\r\n var tmp = this.endDatePicker.getChild('date-picker');\r\n var that = this;\r\n tmp.on('rendered', function () {\r\n tmp.datePicker.enable(false);\r\n that.ko_model.endDateModification.subscribe(function (endDateModification) {\r\n var shouldEnable = endDateModification === 'Selected';\r\n tmp.datePicker.enable(shouldEnable);\r\n });\r\n if (that.perfMarker) {\r\n that.perfMarker.done();\r\n }\r\n });\r\n return this;\r\n },\r\n setAction: function () {\r\n var adgroup = PageContext.CurrentAdGroup;\r\n if (adgroup) {\r\n this.setActionWithinAdGroup(adgroup);\r\n } else {\r\n var campaign = PageContext.CurrentCampaign;\r\n if (campaign) {\r\n this.setActionOutsideAdGroup(campaign);\r\n } else {\r\n this.setActionOutsideAdGroup(null);\r\n }\r\n }\r\n },\r\n setActionWithinAdGroup: function (adgroup) {\r\n switch (this.ko_model.contentType()) {\r\n case 'keyword':\r\n this.model.set('Entity', 'Keyword');\r\n break;\r\n case 'ad':\r\n this.model.set('Entity', 'Ad');\r\n break;\r\n default:\r\n return;\r\n }\r\n this.setActionWithAdGroupId(adgroup.Id);\r\n },\r\n setActionOutsideAdGroup: function (campaign) {\r\n switch (this.ko_model.contentType()) {\r\n case 'adgroup':\r\n this.model.set('Entity', 'AdGroup');\r\n break;\r\n case 'campaign':\r\n this.model.set('Entity', 'Campaign');\r\n break;\r\n case 'assetgroup':\r\n this.model.set('Entity', 'AssetGroup');\r\n break;\r\n default:\r\n return;\r\n }\r\n var campaignId = campaign ? campaign.Id : null;\r\n this.setActionWithDates(campaignId);\r\n },\r\n setActionWithAdGroupId: function (adgroupId) {\r\n var action = {\r\n Actions: [{\r\n '@odata.type': '#Model.CopyAction',\r\n DestinationParentEntityIds: adgroupId ? [adgroupId] : null\r\n }],\r\n EditCopy: false\r\n };\r\n _.each(pasteOptions, (function (option) {\r\n if (option.flag(this.ko_model)) {\r\n action.Actions.push(option.data);\r\n }\r\n }).bind(this));\r\n this.model.set('BatchAction', action);\r\n },\r\n setActionWithDates: function (campaignId) {\r\n var action = {\r\n Actions: [{\r\n '@odata.type': '#Model.CopyAction',\r\n DestinationParentEntityIds: campaignId ? [campaignId] : [0],\r\n StartDate: this.ko_model.adjustStartAndEndDates() ? this.startDatePicker.getState().selectedDate : null,\r\n EndDate: this.ko_model.endDateModification() === 'Selected' ? this.endDatePicker.getState().selectedDate : null,\r\n EndDateAction: this.ko_model.adjustStartAndEndDates() ? this.ko_model.endDateModification() : 'NoChange'\r\n }],\r\n EditCopy: false\r\n };\r\n _.each(pasteOptions, (function (option) {\r\n if (option.flag(this.ko_model)) {\r\n action.Actions.push(option.data);\r\n }\r\n }).bind(this));\r\n this.model.set('BatchAction', action);\r\n },\r\n getCampaignId: function () {\r\n return clipboard ? clipboard.campaignId : -1;\r\n },\r\n getAdGroupId: function () {\r\n return clipboard ? clipboard.adGroupId : -1;\r\n },\r\n getIdFilter: function () {\r\n return clipboard ? clipboard.filters : null;\r\n },\r\n getDateRangeQuery: function () {\r\n return clipboard ? clipboard.dateRange : null;\r\n },\r\n getProgressText: function () {\r\n var tab = tabs[this.ko_model.contentType()];\r\n return tab && tab.progress || '';\r\n },\r\n formatErrors: function (errors) {\r\n if (!errors) {\r\n return errors;\r\n }\r\n var entityKey = tabs[this.ko_model.contentType()] && tabs[this.ko_model.contentType()].key;\r\n var secondaryKey = tabs[this.ko_model.contentType()] && tabs[this.ko_model.contentType()].secondary;\r\n _.each(errors, function (error) {\r\n var copyFromCampaign, copyFromAdGroup, pasteToCampaign, pasteToAdGroup;\r\n var entity = entityKey ? _.find(error.EntityKey, function (item) {\r\n return item.Key === entityKey;\r\n }) : null;\r\n if (!entity) {\r\n entity = _.find(error.EntityKey, function (item) {\r\n return item.Key === secondaryKey;\r\n });\r\n }\r\n error.data = [];\r\n error.data.push({\r\n value: entity && entity.Value ? entity.Value : '',\r\n isHtml: false\r\n });\r\n _.each(error.Changes, function (change) {\r\n switch (change.Property) {\r\n case 'AdgroupName':\r\n copyFromAdGroup = change.OriginalValue;\r\n pasteToAdGroup = change.NewValue;\r\n break;\r\n case 'CampaignName':\r\n copyFromCampaign = change.OriginalValue;\r\n pasteToCampaign = change.NewValue;\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n error.data.push({\r\n value: formatCampaignAdGroup(copyFromCampaign, copyFromAdGroup),\r\n isHtml: true\r\n });\r\n error.data.push({\r\n value: formatCampaignAdGroup(pasteToCampaign, pasteToAdGroup),\r\n isHtml: true\r\n });\r\n });\r\n return errors;\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nimport * as Toast from '@bingads-webui-component-legacy/toast/index';\r\nimport LocalStorage from '@bingads-webui-component-legacy/storage/localStorage';\r\nimport CopyPasteModel from '@bingads-webui-static-legacy/bulk-edit/model/copypaste/copyPaste';\r\nimport CopyPasteView from '@bingads-webui-static-legacy/bulk-edit/view/copypaste/copyPaste';\r\nimport FilterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport gridHelper from '@bingads-webui-static-legacy/shared/view/gridHelper';\r\nimport ViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/copypaste/copyPaste';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar osd = window.osd;\r\nvar isCampaignsTab = function () {\r\n return PageContext.CurrentTabId === 'Campaign' || PageContext.CurrentTabId === 'Campaigns';\r\n};\r\nvar isAdGroupsTab = function () {\r\n return PageContext.CurrentCampaign && (PageContext.CurrentTabId === 'AdGroup' || PageContext.CurrentTabId === 'Adgroups');\r\n};\r\nvar isKeywordsTab = function () {\r\n return PageContext.CurrentAdGroup && PageContext.CurrentTabId === 'Keywords';\r\n};\r\nvar isAdsTab = function () {\r\n return PageContext.CurrentAdGroup && PageContext.CurrentTabId === 'Ads';\r\n};\r\nvar isAssetGroupsTab = function () {\r\n return PageContext.CurrentCampaign && PageContext.CurrentTabId === 'Assetgroups';\r\n}\r\nvar getClipboardName = function () {\r\n return ('clipboard-').concat(PageContext.CurrentAccount.Id);\r\n};\r\nvar getDateRangeQueryArgs = function () {\r\n var dateRange;\r\n if (!!osd && !!osd.ui && !!osd.ui.Controls && !!osd.ui.Controls.DateRangeFilter && _.isFunction(osd.ui.Controls.DateRangeFilter.getParsedDateRange)) {\r\n dateRange = osd.ui.Controls.DateRangeFilter.getParsedDateRange();\r\n } else {\r\n dateRange = window.App && window.App.state ? window.App.state.get('$daterange') : null;\r\n }\r\n if (dateRange) {\r\n var startdate = (dateRange.start || dateRange.RangeStartDate).toISOString(), enddate = (dateRange.end || dateRange.RangeEndDate).toISOString();\r\n return 'startdate=' + startdate + '&enddate=' + enddate;\r\n }\r\n return '';\r\n};\r\nvar tabIdToClipboardType = {\r\n Campaign: 'campaign',\r\n Campaigns: 'campaign',\r\n AdGroup: 'adgroup',\r\n Adgroups: 'adgroup',\r\n Ads: 'ad',\r\n Keywords: 'keyword',\r\n Assetgroups: 'assetgroup',\r\n};\r\nvar tabs = {\r\n 'ad': {\r\n validate: isAdsTab,\r\n strings: {\r\n wrongTab: i18n.getString('BulkEdit_PasteAds_WrongTab'),\r\n wrongType: i18n.getString('BulkEdit_PasteAds_WrongType'),\r\n copyOneSuccess_OldUI: i18n.getString('BulkEdit_CopyOneAd_Success_OldUI'),\r\n copyNSuccess_OldUI: i18n.getString('BulkEdit_CopyNAds_Success_OldUI'),\r\n copyOneSuccess_NewUI: i18n.getString('BulkEdit_CopyOneAd_Success_NewUI'),\r\n copyNSuccess_NewUI: i18n.getString('BulkEdit_CopyNAds_Success_NewUI')\r\n },\r\n filters: function (grid) {\r\n return FilterHelper.getIdFilter(grid, 'Ad');\r\n }\r\n },\r\n 'keyword': {\r\n validate: isKeywordsTab,\r\n strings: {\r\n wrongTab: i18n.getString('BulkEdit_PasteKeywords_WrongTab'),\r\n wrongType: i18n.getString('BulkEdit_PasteKeywords_WrongType'),\r\n copyOneSuccess_OldUI: i18n.getString('BulkEdit_CopyOneKeyword_Success_OldUI'),\r\n copyNSuccess_OldUI: i18n.getString('BulkEdit_CopyNKeywords_Success_OldUI'),\r\n copyOneSuccess_NewUI: i18n.getString('BulkEdit_CopyOneKeyword_Success_NewUI'),\r\n copyNSuccess_NewUI: i18n.getString('BulkEdit_CopyNKeywords_Success_NewUI')\r\n },\r\n filters: function (grid) {\r\n return FilterHelper.getIdFilter(grid, 'Keyword');\r\n }\r\n },\r\n 'campaign': {\r\n validate: isCampaignsTab,\r\n strings: {\r\n wrongTab: i18n.getString('BulkEdit_PasteCampaigns_WrongTab'),\r\n wrongType: i18n.getString('BulkEdit_PasteCampaigns_WrongType'),\r\n copyOneSuccess_OldUI: i18n.getString('BulkEdit_CopyOneCampaign_Success_OldUI'),\r\n copyNSuccess_OldUI: i18n.getString('BulkEdit_CopyNCampaigns_Success_OldUI'),\r\n copyOneSuccess_NewUI: i18n.getString('BulkEdit_CopyOneCampaign_Success_NewUI'),\r\n copyNSuccess_NewUI: i18n.getString('BulkEdit_CopyNCampaigns_Success_NewUI')\r\n },\r\n filters: function (grid) {\r\n return FilterHelper.getIdFilter(grid, 'Campaign');\r\n }\r\n },\r\n 'adgroup': {\r\n validate: isAdGroupsTab,\r\n strings: {\r\n wrongTab: i18n.getString('BulkEdit_PasteAdGroups_WrongTab'),\r\n wrongType: i18n.getString('BulkEdit_PasteAdGroups_WrongType'),\r\n copyOneSuccess_OldUI: i18n.getString('BulkEdit_CopyOneAdGroup_Success_OldUI'),\r\n copyNSuccess_OldUI: i18n.getString('BulkEdit_CopyNAdGroups_Success_OldUI'),\r\n copyOneSuccess_NewUI: i18n.getString('BulkEdit_CopyOneAdGroup_Success_NewUI'),\r\n copyNSuccess_NewUI: i18n.getString('BulkEdit_CopyNAdGroups_Success_NewUI')\r\n },\r\n filters: function (grid) {\r\n return FilterHelper.getIdFilter(grid, 'AdGroup');\r\n }\r\n },\r\n 'assetgroup': {\r\n validate: isAssetGroupsTab,\r\n strings: {\r\n wrongTab: i18n.getString('BulkEdit_PasteAssetGroups_WrongTab'),\r\n wrongType: i18n.getString('BulkEdit_PasteAssetGroups_WrongType'),\r\n copyOneSuccess_OldUI: i18n.getString('BulkEdit_CopyOneAssetGroup_Success_OldUI'),\r\n copyNSuccess_OldUI: i18n.getString('BulkEdit_CopyNAssetGroups_Success_OldUI'),\r\n copyOneSuccess_NewUI: i18n.getString('BulkEdit_CopyOneAssetGroup_Success_NewUI'),\r\n copyNSuccess_NewUI: i18n.getString('BulkEdit_CopyNAssetGroups_Success_NewUI')\r\n },\r\n filters: function (grid) {\r\n return FilterHelper.getIdFilter(grid, 'AssetGroup');\r\n }\r\n }\r\n};\r\nvar validateTab = function (type) {\r\n var isValid = false;\r\n var tab = tabs[type];\r\n var expectedType = tabIdToClipboardType[PageContext.CurrentTabId];\r\n if (expectedType && expectedType !== type) {\r\n alert(tabs[expectedType].strings.wrongType);\r\n } else if (tab) {\r\n isValid = tab.validate();\r\n if (!isValid) {\r\n alert(tab.strings.wrongTab);\r\n }\r\n } else {\r\n if (PageContext.CurrentTabId === 'Campaign') {\r\n alert(i18n.getString('BulkEdit_PasteCampaigns_NothingCopied'));\r\n } else if (PageContext.CurrentTabId === 'AdGroup') {\r\n alert(i18n.getString('BulkEdit_PasteAdGroups_NothingCopied'));\r\n } else if (PageContext.CurrentTabId === 'Assetgroups') {\r\n alert(i18n.getString('BulkEdit_PasteAssetGroups_NothingCopied'));\r\n } else {\r\n alert(i18n.getString('BulkEdit_PasteAdsOrKeywords_NothingCopied'));\r\n }\r\n }\r\n return isValid;\r\n};\r\nViewModel.validateTab = validateTab;\r\nexport default {\r\n validateTab: validateTab,\r\n copy: function (type, grid) {\r\n var copyPerfMarker;\r\n if (grid.perfMarker) {\r\n copyPerfMarker = grid.perfMarker.createChild('pgrid-Copy-action');\r\n copyPerfMarker.willInit();\r\n }\r\n var selectedItemsLength = gridHelper.getSelectedRowsCount(grid);\r\n if (!type || !grid || selectedItemsLength === 0) {\r\n return;\r\n }\r\n if (type === 'campaign') {\r\n var selectedRows = gridHelper.getSelectedRows(grid);\r\n for (var i = 0; i < selectedRows.length; i++) {\r\n if (selectedRows[i].CampaignType === 'Smart') {\r\n Toast.showError(i18n.getString('CopyPasteSmartCampaigns_ErrorMessage'));\r\n LocalStorage.set(getClipboardName(), null);\r\n return;\r\n }\r\n }\r\n }\r\n var count = 0;\r\n var filters = null;\r\n if (gridHelper.isCrossPageAllSelected(grid)) {\r\n if (type === 'campaign' || type === 'adgroup') {\r\n Toast.showError(i18n.getString('CopyPasteCampaignAdGroupCrossPage_ErrorMessage'));\r\n LocalStorage.set(getClipboardName(), null);\r\n return;\r\n }\r\n count = gridHelper.getTotalRowsCount(grid);\r\n filters = FilterHelper.getFiltersIncludeWaterfall(grid);\r\n } else {\r\n count = selectedItemsLength;\r\n filters = tabs[type] && tabs[type].filters(grid);\r\n }\r\n LocalStorage.set(getClipboardName(), {\r\n 'type': type,\r\n 'count': count,\r\n 'campaignId': PageContext.CurrentCampaign ? PageContext.CurrentCampaign.Id : -1,\r\n 'adGroupId': PageContext.CurrentAdGroup ? PageContext.CurrentAdGroup.Id : -1,\r\n 'dateRange': getDateRangeQueryArgs(),\r\n 'filters': filters ? $.extend(true, {}, filters) : null\r\n });\r\n if (tabs[type]) {\r\n if ((type === 'campaign' || type === 'adgroup') && !PageContext.Permissions.IsCampaignAdGroupCopyPasteEnabled) {\r\n return;\r\n }\r\n Toast.showSuccess(count === 1 ? tabs[type].strings.copyOneSuccess_NewUI : _.template(tabs[type].strings.copyNSuccess_NewUI)({\r\n count: count\r\n }));\r\n }\r\n if (copyPerfMarker) {\r\n copyPerfMarker.done();\r\n }\r\n },\r\n paste: function (grid) {\r\n var pastePerfMarker;\r\n if (grid.perfMarker) {\r\n pastePerfMarker = grid.perfMarker.createChild('pgrid-Paste-action');\r\n pastePerfMarker.willInit();\r\n }\r\n var clipboard = LocalStorage.get(getClipboardName());\r\n if (clipboard) {\r\n if (!this.validateTab(clipboard.type)) {\r\n return;\r\n }\r\n switch (clipboard.type) {\r\n case 'ad':\r\n case 'keyword':\r\n case 'campaign':\r\n case 'adgroup':\r\n case 'assetgroup':\r\n var view = new CopyPasteView({\r\n perfMarker: pastePerfMarker,\r\n model: new CopyPasteModel({\r\n content: clipboard\r\n }),\r\n grid: grid,\r\n onOperationSuccess: function () {\r\n Toast.showSuccess(i18n.getString('BulkEdit_Notification_Success'));\r\n grid.gridView.refresh(false);\r\n },\r\n onOperationFailure: function () {\r\n if (clipboard.type === 'campaign' || clipboard.type === 'adgroup') {\r\n Toast.showError(i18n.getString('CampaignAdGroupCopyPaste_CompletedWithErrorsText_NewUI'));\r\n } else {\r\n Toast.showError(i18n.getString('BulkEdit_Notification_Failure'));\r\n }\r\n }\r\n });\r\n view.render();\r\n return view;\r\n break;\r\n default:\r\n alert(i18n.getString('BulkEdit_PasteAdsOrKeywords_NothingCopied'));\r\n break;\r\n }\r\n } else {\r\n if (isCampaignsTab()) {\r\n alert(i18n.getString('BulkEdit_PasteCampaigns_NothingCopied'));\r\n } else if (PageContext.CurrentTabId === 'AdGroup' || PageContext.CurrentTabId === 'Adgroups') {\r\n alert(i18n.getString('BulkEdit_PasteAdGroups_NothingCopied'));\r\n } else if (PageContext.CurrentTabId === 'Assetgroups') {\r\n alert(i18n.getString('BulkEdit_PasteAssetGroups_NothingCopied'));\r\n } else {\r\n alert(i18n.getString('BulkEdit_PasteAdsOrKeywords_NothingCopied'));\r\n }\r\n }\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport gridHelper from '@bingads-webui-static-legacy/shared/view/gridHelper';\r\nimport * as filterMetadataToLegacy from '@bingads-webui/filter-commons';\r\nexport default {\r\n getFiltersIncludeWaterfall: function (grid) {\r\n if (grid && (grid.filterService || grid.pgridPlugins && grid.pgridPlugins.filterService)) {\r\n var filterServiceFilters = (grid.filterService || grid.pgridPlugins.filterService).getCombinedFilter();\r\n return {\r\n FilterExpressions: filterMetadataToLegacy.toLegacyFilter(filterServiceFilters)\r\n };\r\n } else {\r\n return grid.getFilters(true);\r\n }\r\n },\r\n getIdFilter: function (grid, entityType) {\r\n if (grid) {\r\n var ids = gridHelper.getSelectedRowIds(grid);\r\n if (entityType === 'Keyword' && !grid.gridView) {\r\n ids = _.map(ids, function (value) {\r\n return value.substring(0, value.indexOf('_'));\r\n });\r\n }\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: entityType + 'Id',\r\n SelectedOperator: 'Equal',\r\n Values: ids\r\n }]\r\n };\r\n }\r\n },\r\n getIdFilterNoEntityType: function (grid) {\r\n if (grid) {\r\n var ids = gridHelper.getSelectedRowIds(grid);\r\n ids = _.map(ids, function (id) {\r\n return Number(id);\r\n });\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: 'Id',\r\n SelectedOperator: 'Equal',\r\n Values: ids\r\n }]\r\n };\r\n }\r\n },\r\n getProductGroupIdFilter: function (grid) {\r\n if (grid) {\r\n var isOnAdGroupLevel = pageContext.CurrentAdGroup != null;\r\n var rows = gridHelper.getSelectedRows(grid);\r\n if (isOnAdGroupLevel) {\r\n var completeIds = _.map(rows, function (row) {\r\n return row.Id;\r\n });\r\n var groupSize = 200;\r\n var idGroups = _.reduce(completeIds, function (result, id) {\r\n var lastGroup = result[result.length - 1];\r\n if (lastGroup == null || lastGroup.length === groupSize) {\r\n result.push([id]);\r\n } else {\r\n lastGroup.push(id);\r\n }\r\n return result;\r\n }, []);\r\n var compositeIds = _.map(idGroups, function (group) {\r\n return group.join(',');\r\n });\r\n var filterExpressions = [{\r\n SelectedColumn: 'IdString',\r\n SelectedOperator: 'eq',\r\n Values: compositeIds\r\n }];\r\n return {\r\n FilterExpressions: filterExpressions\r\n };\r\n } else {\r\n var hasInvalidParam = false;\r\n var compositeIds = _.map(rows, function (row) {\r\n var campaignId = pageContext.CurrentCampaign && pageContext.CurrentCampaign.Id != null ? pageContext.CurrentCampaign.Id : row.CampaignId;\r\n var adGroupId = pageContext.CurrentAdGroup && pageContext.CurrentAdGroup.Id != null ? pageContext.CurrentAdGroup.Id : row.AdGroupId;\r\n if (campaignId == null || adGroupId == null) {\r\n hasInvalidParam = true;\r\n }\r\n return 'CampaignId=' + campaignId + ',AdGroupId=' + adGroupId + ',ProductGroupId=' + row.Id;\r\n });\r\n var filterExpressions = [{\r\n SelectedColumn: 'IdString',\r\n SelectedOperator: 'eq',\r\n Values: !hasInvalidParam ? compositeIds : []\r\n }];\r\n return {\r\n FilterExpressions: filterExpressions\r\n };\r\n }\r\n }\r\n },\r\n getPerformanceTargetIdFilter: function (grid) {\r\n if (grid) {\r\n var ids = gridHelper.getSelectedRowIds(grid);\r\n ids = _.map(ids, function (value) {\r\n return Number(value);\r\n });\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: 'Id',\r\n SelectedOperator: 'Equal',\r\n Values: ids\r\n }]\r\n };\r\n }\r\n },\r\n getAdGroupIdFilterExcludingContentOnly: function (grid) {\r\n if (grid) {\r\n var rows = gridHelper.getSelectedRows(grid);\r\n var ids = [];\r\n _.each(rows, function (key, value) {\r\n if (!_.contains(['2', 'Content'], key.Medium)) {\r\n ids[ids.length] = key.Id;\r\n }\r\n });\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: 'AdGroupId',\r\n SelectedOperator: 'Equal',\r\n Values: ids\r\n }]\r\n };\r\n }\r\n },\r\n getCampaignIdFilter: function (grid) {\r\n if (grid) {\r\n var rows = gridHelper.getSelectedRows(grid);\r\n var ids = _.map(rows, function (r) {\r\n return r.Id;\r\n });\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: 'CampaignId',\r\n SelectedOperator: 'Equal',\r\n Values: ids\r\n }]\r\n };\r\n }\r\n },\r\n getAudienceIdFilter: function (grid, shouldExclude) {\r\n if (grid) {\r\n var ids = [];\r\n if (!shouldExclude) {\r\n ids = gridHelper.getSelectedRowIds(grid);\r\n } else {\r\n var rows = gridHelper.getSelectedRows(grid);\r\n _.each(rows, function (row) {\r\n if (row.Status !== 'Excluded') {\r\n ids.push(row.Id);\r\n }\r\n });\r\n }\r\n return {\r\n FilterExpressions: [{\r\n SelectedColumn: 'AudienceAssociationId',\r\n SelectedOperator: 'Equal',\r\n Values: ids\r\n }]\r\n };\r\n }\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport BaseModel from '@bingads-webui-campaign-legacy/bulk-operation/util/bulk-edit-job';\r\nvar model = BaseModel.extend({\r\n defaults: $.extend({}, BaseModel.prototype.defaults, {\r\n 'BatchAction': {\r\n 'Actions': [{\r\n '@data.type': '#Model.LabelAssociationAction',\r\n 'AssociationList': []\r\n }]\r\n },\r\n 'Entity': '',\r\n 'RequestProperties': [],\r\n 'CurrentCustomerId': ''\r\n })\r\n});\r\nexport default model;\r\n\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar ViewModel = function (model) {\r\n Base.call(this);\r\n this.selectedEntityCount(model.get('selectedEntityCount'));\r\n this.showPreviewButton(false);\r\n this.showPanel = ko.observable(true);\r\n this.titleText = ko.computed(function () {\r\n return i18n.getString('label_association_panel_title', this.selectedEntityCount());\r\n }, this);\r\n this._inlineErrors = ko.observable([]);\r\n this.inlineErrors = ko.computed({\r\n read: function () {\r\n return this._inlineErrors();\r\n },\r\n write: function (value) {\r\n var err = value.map(function (errorObject) {\r\n var errorKey = errorObject.Errors[0];\r\n var entityName = errorObject.EntityKey[0].Value;\r\n return {\r\n error: i18n.getString('Error_Campaign_API_' + errorKey),\r\n name: entityName\r\n };\r\n });\r\n this._inlineErrors(err);\r\n }\r\n }, this);\r\n this.validate = function () {\r\n this.errorMessage('');\r\n if (this.selectedEntityCount() === 0) {\r\n alert(i18n.getString('Grid_RowSelectionRequired'));\r\n return false;\r\n }\r\n return true;\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport Model from '@bingads-webui-static-legacy/bulk-edit/model/label/association';\r\nimport ViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/label/association';\r\nimport instrumentationSettings from '@bingads-webui-static-legacy/instrumentation/campaignSchemaAndSetting';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar deserialize = function (key) {\r\n return JSON.parse(key);\r\n};\r\nvar getId = function (key) {\r\n var id = key.Id || key;\r\n return parseInt(id);\r\n};\r\nvar getChanged = function (state, stats) {\r\n return _.keys(stats.changed).filter(function (key) {\r\n var change = stats.changed[key];\r\n return change.after.state === state;\r\n }).map(deserialize);\r\n};\r\nvar getAdded = function (stats) {\r\n var changed = getChanged('checked', stats);\r\n var added = _.keys(stats.added || ({})).map(deserialize).concat(changed);\r\n return _.uniq(added);\r\n};\r\nvar getRemoved = function (stats) {\r\n var changed = getChanged('unchecked', stats);\r\n var removed = _.keys(stats.removed).map(deserialize).concat(changed);\r\n return _.uniq(removed);\r\n};\r\nvar getByScope = function (labels) {\r\n var result = {\r\n Account: [],\r\n Customer: []\r\n };\r\n labels.forEach(function (label) {\r\n if (!label.Scope || label.Scope !== 'Customer') {\r\n result.Account.push(label);\r\n } else {\r\n result.Customer.push(label);\r\n }\r\n });\r\n return result;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n this._stats = options.stats;\r\n this._entity = options.entity;\r\n this._scope = options.scope;\r\n this._loadDirectlyLinkedAccounts = options.loadDirectlyLinkedAccounts;\r\n this.template = options.template;\r\n this._isManagementRequest = options.isManagementRequest;\r\n this.model = new Model();\r\n BaseView.prototype.initialize.apply(this, arguments);\r\n this.ko_model = new ViewModel(this.model);\r\n },\r\n render: (function () {\r\n if (this.grid.getSelectionScope() === 'AllPages') {\r\n this.ko_model.showProgress(true);\r\n this.ko_model.showButtonBar(false);\r\n } else {\r\n this.ko_model.showPanel = false;\r\n }\r\n BaseView.prototype.render.apply(this, arguments);\r\n this.submitJob();\r\n return this;\r\n }).asLoggingStart(instrumentationSettings.ACTIVITYNAME.LabelAssociation, instrumentationSettings.SCENARIONAME.LabelAssociation),\r\n renderBulkEditJobView: function () {\r\n BaseView.prototype.render.apply(this, arguments);\r\n },\r\n setAction: function () {\r\n var action = [];\r\n var added;\r\n var removed;\r\n var currentCustomerId;\r\n if (!this._scope || this._scope !== 'Customer') {\r\n currentCustomerId = pageContext.CurrentCustomer.Id;\r\n }\r\n if (!_.isEmpty(this._stats)) {\r\n added = getAdded(this._stats);\r\n removed = getRemoved(this._stats);\r\n if (added.length > 0) {\r\n const addedByScope = getByScope(added);\r\n if (addedByScope.Account.length > 0) {\r\n action.push({\r\n '@odata.type': '#Model.LabelAssociationAction',\r\n 'AssociationList': addedByScope.Account.map(getId),\r\n 'Scope': 'Account'\r\n });\r\n }\r\n if (addedByScope.Customer.length > 0) {\r\n action.push({\r\n '@odata.type': '#Model.LabelAssociationAction',\r\n 'AssociationList': addedByScope.Customer.map(getId),\r\n 'Scope': 'Customer'\r\n });\r\n }\r\n }\r\n if (removed.length > 0) {\r\n const removedByScope = getByScope(removed);\r\n if (removedByScope.Account.length > 0) {\r\n action.push({\r\n '@odata.type': '#Model.LabelDisassociationAction',\r\n 'AssociationList': removedByScope.Account.map(getId),\r\n 'Scope': 'Account'\r\n });\r\n }\r\n if (removedByScope.Customer.length > 0) {\r\n action.push({\r\n '@odata.type': '#Model.LabelDisassociationAction',\r\n 'AssociationList': removedByScope.Customer.map(getId),\r\n 'Scope': 'Customer'\r\n });\r\n }\r\n }\r\n }\r\n this.model.set('Entity', this._entity);\r\n this.model.set('BatchAction', {\r\n 'Actions': action\r\n });\r\n this.model.set('currentCustomerIdFirst', true);\r\n if (this._entity === 'Account' && this.selectionInfo.allPages) {\r\n this._isManagementRequest = this._isManagementRequest || false;\r\n var RequestProperties = [{\r\n 'Key': 'IsManagementRequest',\r\n 'Value': this._isManagementRequest + ''\r\n }, {\r\n 'Key': 'LoadDirectlyLinkedAccounts',\r\n 'Value': this._loadDirectlyLinkedAccounts\r\n }];\r\n this.model.set('RequestProperties', RequestProperties);\r\n }\r\n if (currentCustomerId) {\r\n this.model.set('CurrentCustomerId', currentCustomerId);\r\n }\r\n },\r\n getIdFilter: function () {\r\n var isCustomerLevelLabel = this._scope && this._scope === 'Customer';\r\n return isCustomerLevelLabel ? filterHelper.getIdFilterNoEntityType(this.grid) : filterHelper.getIdFilter(this.grid, this._entity);\r\n },\r\n getProgressText: function () {\r\n return i18n.getString('label_progress_text');\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar ViewModel = function (model, settingView) {\r\n Base.call(this);\r\n this.entityType = model.get('Entity');\r\n this.settingView = settingView;\r\n this.selectedEntityCount(model.get('selectedEntityCount'));\r\n this.titleText = ko.computed(function () {\r\n var totalCount = this.selectedEntityCount();\r\n switch (this.entityType) {\r\n case 'Campaign':\r\n return totalCount > 1 ? i18n.getString('BidStrategySetting_Campaigns_BulkEditTitle').replace('{0}', totalCount) : i18n.getString('BidStrategySetting_Campaign_BulkEditTitle').replace('{0}', totalCount);\r\n case 'AdGroup':\r\n return totalCount > 1 ? i18n.getString('BidStrategySetting_AdGroups_BulkEditTitle').replace('{0}', totalCount) : i18n.getString('BidStrategySetting_AdGroup_BulkEditTitle').replace('{0}', totalCount);\r\n case 'Keyword':\r\n return totalCount > 1 ? i18n.getString('BidStrategySetting_Keywords_BulkEditTitle').replace('{0}', totalCount) : i18n.getString('BidStrategySetting_Keyword_BulkEditTitle').replace('{0}', totalCount);\r\n }\r\n }, this);\r\n this.entityHeaderName = ko.computed(function () {\r\n switch (this.entityType) {\r\n case 'Keyword':\r\n return i18n.getString('BulkEdit_Keyword_EntityNameHeader');\r\n break;\r\n case 'AdGroup':\r\n return i18n.getString('BulkEdit_AdGroup_EntityNameHeader');\r\n break;\r\n case 'Campaign':\r\n return i18n.getString('BulkEdit_Campaign_EntityNameHeader');\r\n break;\r\n default:\r\n return 'unknown entity';\r\n break;\r\n }\r\n }, this);\r\n this.showButtonBar = ko.observable(true);\r\n this.showCloseButton = ko.observable(false);\r\n this.validate = function () {\r\n return this.settingView.validate();\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/shared/changeBiddingStrategy.pug';\r\nimport changeBiddingStrategyViewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/shared/changeBiddingStrategy';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport * as _settingView from '@bingads-webui-campaign-legacy/bidding-strategy/view/setting';\r\nimport biddingStrategyType from '@bingads-webui-campaign-legacy/bidding-strategy/bidding-strategy-type';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nimport * as safeJSON from '@bingads-webui/safe-json';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar settingView = _settingView.default;\r\nvar allowedEntities = ['Campaign', 'AdGroup', 'Keyword'];\r\nvar parseType = function (value) {\r\n if (!_.isString(value)) {\r\n return '';\r\n }\r\n var typeReg = /.*\"Type\":([0-9]+).*$/;\r\n var matches = value.match(typeReg);\r\n if (matches && matches[1] && _.contains(_.keys(biddingStrategyType.biddingStrategyType), matches[1])) {\r\n return i18n.getString('BidStrategy_' + matches[1]);\r\n } else {\r\n return '';\r\n }\r\n};\r\nvar formatTypes = function (rows, entityType) {\r\n if (!rows) {\r\n return rows;\r\n }\r\n _.each(rows, function (value) {\r\n value.Entity = _.find(value.EntityKey, function (item) {\r\n var keyName = '';\r\n switch (entityType) {\r\n case 'Campaign':\r\n keyName = 'CampaignName';\r\n break;\r\n case 'AdGroup':\r\n keyName = 'AdgroupName';\r\n break;\r\n case 'Keyword':\r\n keyName = 'Keyword';\r\n break;\r\n }\r\n return item.Key === keyName;\r\n });\r\n value.data = [];\r\n value.data.push({\r\n value: value.Entity && value.Entity.Value ? value.Entity.Value : '',\r\n isHtml: false\r\n });\r\n if (value.Changes && value.Changes.length) {\r\n if (value.Changes[0].Property === 'CampaignBidStrategyId') {\r\n var originalValue = safeJSON.parseSync(value.Changes[0].OriginalValue) || ({});\r\n var newValue = safeJSON.parseSync(value.Changes[0].NewValue) || ({});\r\n if (originalValue.Id) {\r\n value.data.push({\r\n value: originalValue.Name,\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: newValue.Name,\r\n isHtml: false\r\n });\r\n } else {\r\n var originalIBS = _.result(_.find(value.EntityKey, {\r\n Key: 'BiddingScheme'\r\n }), 'Value');\r\n value.data.push({\r\n value: parseType(originalIBS),\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: newValue.Name,\r\n isHtml: false\r\n });\r\n }\r\n } else {\r\n var originalPBS = safeJSON.parseSync(_.result(_.find(value.EntityKey, {\r\n Key: 'BidStrategyId'\r\n }), 'Value')) || ({});\r\n if (originalPBS.Id) {\r\n value.data.push({\r\n value: originalPBS.Name,\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: parseType(value.Changes[0].NewValue),\r\n isHtml: false\r\n });\r\n } else {\r\n value.data.push({\r\n value: parseType(value.Changes[0].OriginalValue),\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: parseType(value.Changes[0].NewValue),\r\n isHtml: false\r\n });\r\n }\r\n }\r\n } else {\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n value.data.push({\r\n value: '',\r\n isHtml: false\r\n });\r\n }\r\n });\r\n return rows;\r\n};\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n this.options = options || ({});\r\n BaseView.prototype.initialize.apply(this, arguments);\r\n this.template = template;\r\n this.entityType = options.entityType;\r\n this.biddingStrategyType = options.biddingStrategyType;\r\n this.settingView = new settingView({\r\n entityType: this.entityType,\r\n biddingStrategyType: this.biddingStrategyType,\r\n isBulkEdit: true,\r\n i18nNewDesign: this.options.i18nNewDesign,\r\n campaignType: options.campaignType,\r\n campaignSubType: options.campaignSubType,\r\n getCampaignTypeGlobalFilter: options.getCampaignTypeGlobalFilter\r\n });\r\n this.ko_model = new changeBiddingStrategyViewModel(this.model, this.settingView);\r\n },\r\n render: function () {\r\n BaseView.prototype.render.apply(this, arguments);\r\n this.$('.section-container.form-horizontal').empty().html(this.settingView.render().el);\r\n return this;\r\n },\r\n setAction: function () {\r\n this.model.set('BatchAction', this.settingView.action());\r\n this.model.set('Entity', this.entityType);\r\n },\r\n formatPreviewResults: function (results) {\r\n return formatTypes(results, this.entityType);\r\n },\r\n formatErrors: function (rows) {\r\n if (rows) {\r\n _.each(rows, function (value) {\r\n value.Entity = _.find(value.EntityKey, function (item) {\r\n return item.Key === 'CampaignName';\r\n });\r\n value.data = [];\r\n value.data.push({\r\n value: value.Entity && value.Entity.Value ? value.Entity.Value : '',\r\n isHtml: false\r\n });\r\n });\r\n }\r\n return rows;\r\n },\r\n getIdFilter: function () {\r\n var result = null;\r\n var entity = this.model.get('Entity');\r\n if (_.contains(allowedEntities, entity)) {\r\n result = filterHelper.getIdFilter(this.grid, entity);\r\n }\r\n return result;\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar ViewModel = function (model) {\r\n Base.call(this);\r\n this.selectedEntityCount(model.get('selectedEntityCount'));\r\n this.titleText = ko.computed(function () {\r\n return i18n.getString('BulkEdit_Campaign_ChangeRsaAutoAssets').replace('{0}', this.selectedEntityCount());\r\n }, this);\r\n this.isRsaAutoAssetsSettingChecked = ko.observable(false);\r\n this.showPreviewButton(false);\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport template from '@bingads-webui-static-legacy/bulk-edit/template/shared/changeRsaAutoAssets.pug';\r\nimport viewModel from '@bingads-webui-static-legacy/bulk-edit/viewmodel/shared/changeRsaAutoAssets';\r\nimport BaseView from '@bingads-webui-static-legacy/bulk-edit/view/bulkEditJob';\r\nimport filterHelper from '@bingads-webui-static-legacy/bulk-edit/view/filterHelper';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar view = BaseView.extend({\r\n initialize: function (options) {\r\n this.options = options || ({});\r\n BaseView.prototype.initialize.apply(this, arguments);\r\n this.template = template;\r\n this.entity = options.entity;\r\n this.ko_model = new viewModel(this.model);\r\n },\r\n render: function () {\r\n BaseView.prototype.render.apply(this, arguments);\r\n return this;\r\n },\r\n setAction: function () {\r\n var action = {\r\n Actions: [{\r\n '@odata.type': '#Model.TextAction',\r\n Property: 'CampaignSettings/RSAAutoGeneratedAssetsEnabled',\r\n ActionType: 'Set',\r\n Value: this.ko_model.isRsaAutoAssetsSettingChecked().toString(),\r\n SearchString: '',\r\n Options: 'None'\r\n }]\r\n };\r\n this.model.set('BatchAction', action);\r\n this.model.set('Entity', 'Campaign');\r\n },\r\n getIdFilter: function () {\r\n return filterHelper.getIdFilter(this.grid, 'Campaign');\r\n },\r\n getProgressText: function () {\r\n return i18n.getString('BulkEdit_Campaigns_ProgressText');\r\n },\r\n formatErrors: function (rows) {\r\n if (rows) {\r\n _.each(rows, function (item) {\r\n item.Entity = _.find(item.EntityKey, function (item) {\r\n return item.Key === 'CampaignName';\r\n });\r\n item.data = [];\r\n item.data.push({\r\n value: item.Entity && item.Entity.Value ? item.Entity.Value : '',\r\n isHtml: false\r\n });\r\n });\r\n }\r\n return rows;\r\n }\r\n});\r\nexport default view;\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport ko from 'knockout';\r\nimport PageContext from '@bingads-webui-static-legacy/page-context';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nexport default function () {\r\n this.results = ko.observable([]);\r\n this.errorMessage = ko.observable('');\r\n this.selectedEntityCount = ko.observable(0);\r\n this.showButtonBar = ko.observable(true);\r\n this.showCloseButton = ko.observable(false);\r\n this.isDisabled = ko.observable(false);\r\n this.showPreviewButton = ko.observable(true);\r\n this.ignoreRowSelection = ko.observable(false);\r\n this.actionButtonText = ko.observable(i18n.getString('BulkEdit_MakeChanges'));\r\n this.statusText = ko.observable(i18n.getString('BulkEdit_InitialStatus'));\r\n this.showProgress = ko.observable(false);\r\n this.isCampaignAdGroupCopyPasteOperation = ko.observable(false);\r\n this.successCount = ko.observable(0);\r\n this.totalCount = ko.observable(0);\r\n this.completePercentage = ko.computed(function () {\r\n var total = this.totalCount();\r\n if (total === 0) {\r\n return '1%';\r\n }\r\n var success = this.successCount();\r\n var error = this.errorCount();\r\n var completed = Math.floor((success + error) * 100 / total);\r\n return completed < 1 ? completed + 1 + '%' : completed + '%';\r\n }, this);\r\n this.maxInlineErrorCount = 100;\r\n this.showErrors = ko.observable(false);\r\n this.showErrorGrid = ko.observable(false);\r\n this.errorCount = ko.observable(0);\r\n this.errorCountString = ko.computed(function () {\r\n return i18n.getString('BulkEdit_InlineError_ErrorCount').replace('{0}', this.errorCount());\r\n }, this);\r\n this.completedWithErrorsBulkEditResultsString = ko.observable(i18n.getString('CampaignAdGroupCopyPaste_CompletedWithErrorsText_OldUI').replace('{0}', PageContext.CurrentCustomer.Id).replace('{1}', PageContext.CurrentUser.Id).replace('{2}', PageContext.CurrentCustomer.Id).replace('{3}', PageContext.CurrentAccount.Id));\r\n this.inlineErrors = ko.observable();\r\n this.errorCountLinkText = ko.computed(function () {\r\n if (this.showErrorGrid()) {\r\n return i18n.getString('BulkEdit_InlineError_HideErrorLink');\r\n } else {\r\n var errorCount = this.errorCount() > this.maxInlineErrorCount ? this.maxInlineErrorCount : this.errorCount();\r\n return i18n.getString('BulkEdit_InlineError_ErrorLink').replace('{0}', errorCount);\r\n }\r\n }, this);\r\n this.showPreview = ko.observable(false);\r\n this.showCheckBoxes = ko.observable(false);\r\n this.currentPageChangeCount = ko.observable(0);\r\n this.changeText = ko.computed(function () {\r\n if (this.totalCount() === 0) {\r\n return i18n.getString('BulkEdit_Preview_NoChange');\r\n } else {\r\n if (this.currentPageChangeCount() > 0) {\r\n return i18n.getString('BulkEdit_Preview_SomeChanges').replace('{0}', this.totalCount());\r\n } else {\r\n return i18n.getString('BulkEdit_Preview_NoCurrentPageChange').replace('{0}', this.totalCount());\r\n }\r\n }\r\n }, this);\r\n this.validate = function () {\r\n return true;\r\n };\r\n}\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport Base from '@bingads-webui-static-legacy/bulk-edit/viewmodel/bulkEditJob';\r\nimport actions from '@bingads-webui-static-legacy/schema/bulkEdit/changeBidActions';\r\nimport * as POUtils from '@bingads-webui-campaign/target-bid-adjustment';\r\nimport numericActionType from '@bingads-webui-static-legacy/schema/bulkEdit/numericActionType';\r\nimport decimalNumber from '@bingads-webui-component-legacy/humanize/decimal';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nvar i18nAudience = window.globalLegacyI18n.get('component/i18n/loader!campaignui/feature/audience-campaign');\r\nvar validateNumber = function (value) {\r\n return POUtils.isCashbackPercentValid(value, decimalNumber);\r\n};\r\nvar ViewModel = function (options) {\r\n Base.call(this);\r\n var actionOptions = _.compact([{\r\n Value: 'SetAmount',\r\n Text: i18n.getString('BulkEdit_AdGroup_SetBidOption_CashbackPercent')\r\n }, !options.isCampaignBulkEdit && ({\r\n Value: 'Remove',\r\n Text: i18n.getString('BulkEdit_CashbackPercent_SetToInherit')\r\n }), {\r\n Value: 'NoCashback',\r\n Text: i18n.getString('BulkEdit_CashbackPercent_SetToNoCashback')\r\n }]);\r\n this.actions = actionOptions;\r\n this.selectedAction = ko.observable(actions.Set);\r\n this.selectedAction.subscribe(function () {\r\n this.errorMessage('');\r\n }, this);\r\n this.showSetPanel = ko.computed(function () {\r\n var result = this.selectedAction() === actions.SetAmount;\r\n return result;\r\n }, this);\r\n this.selectedUnit = ko.observable('%');\r\n this.cashbackPercent = ko.observable();\r\n this.cashbackPercentValue = ko.computed({\r\n read: function () {\r\n return this.cashbackPercent();\r\n },\r\n write: function (value) {\r\n this.errorMessage('');\r\n this.cashbackPercent(value);\r\n },\r\n owner: this\r\n });\r\n this.titleText = ko.computed(function () {\r\n return i18n.getString('BulkEdit_CashbackPercent_HeaderText');\r\n }, this);\r\n this.doesIncludeExcludeItems = ko.observable(false);\r\n this.doesIncludeExcludeItemsText = ko.observable(i18n.getString('BulkEdit_ProductGroup_IncludeExcludedItems'));\r\n this.getCashbackPercentValueByAction = function () {\r\n var selectedAction = this.selectedAction();\r\n var cashbackPercentValue;\r\n switch (selectedAction) {\r\n case numericActionType.remove:\r\n cashbackPercentValue = -1;\r\n break;\r\n case numericActionType.noCashback:\r\n cashbackPercentValue = 0;\r\n break;\r\n default:\r\n if (cashbackPercentValue === '') {\r\n cashbackPercentValue = -1;\r\n } else {\r\n cashbackPercentValue = decimalNumber.fromLocalToFloat(this.cashbackPercentValue());\r\n }\r\n break;\r\n }\r\n return cashbackPercentValue;\r\n };\r\n this.cashbackPercentDescription = ko.observable(options.cashbackPercentDescription);\r\n this.validate = function () {\r\n this.errorMessage('');\r\n var selectedAction = this.selectedAction();\r\n var cashbackPercentValue = this.cashbackPercentValue();\r\n if (!cashbackPercentValue && selectedAction !== 'Remove' && selectedAction !== 'NoCashback') {\r\n return true;\r\n }\r\n if (cashbackPercentValue && selectedAction !== 'Remove' && selectedAction !== 'NoCashback') {\r\n var result = validateNumber(cashbackPercentValue);\r\n if (!result) {\r\n this.errorMessage(POUtils.getCashbackPercentValidationError(cashbackPercentValue, i18nAudience, decimalNumber));\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n};\r\nexport default ViewModel;\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nfunction from(params, from_version) {\r\n delete params.$format;\r\n if (params.$inlinecount) {\r\n delete params.$inlinecount;\r\n params.$count = true;\r\n }\r\n if (!(_.isString(params.$filter) && params.$filter.length)) {\r\n delete params.$filter;\r\n }\r\n if (params.$filter) {\r\n params.$filter = params.$filter.replace(/substringof\\(('.*?'),(tolower\\([\\w\\/]+?\\))\\)/g, 'contains($2, $1)');\r\n params.$filter = params.$filter.replace(/substringof\\(('.*?'),([\\w\\/]+?)\\)/g, 'contains($2, $1)');\r\n params.$filter = params.$filter.replace(/'Enum\\.(\\w+)''((\\w+,?)+)'''/g, 'Enum.$1\\'$2\\'');\r\n params.$filter = params.$filter.replace(/datetime'(.*?)'/g, '$1+00:00');\r\n }\r\n return params;\r\n}\r\nexport default {\r\n from: from\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n imagePath: '',\r\n enums: {\r\n alertEntity: {\r\n none: 0,\r\n import: 1,\r\n migration: 4,\r\n budgetOpportunity: 5,\r\n keywordOpportunity: 6,\r\n disapproved: 7,\r\n maintenance: 11,\r\n accountSuspended: 12,\r\n introBingAdsforioS: 20,\r\n incompatibleBrowsers: 22,\r\n adBlockWarning: 26,\r\n productsLimitation: 1000000\r\n },\r\n alertType: {\r\n none: 0,\r\n info: 1,\r\n warn: 2,\r\n error: 3\r\n },\r\n accountStatus: {\r\n none: 0,\r\n creditHold: 18,\r\n lockedForUpdate: 28,\r\n pendingPaymentInstrument: 29,\r\n draft: 30,\r\n active: 31,\r\n inActive: 32,\r\n deleted: 33,\r\n proposed: 34,\r\n pendingCreditCheck: 35,\r\n noHold: 36,\r\n soldToOnly: 37,\r\n creditWarning: 38,\r\n hold: 39,\r\n locked: 40,\r\n noLock: 41,\r\n userPaused: 42,\r\n suspended: 43,\r\n writeOff: 223,\r\n paused: 234,\r\n taxOnHold: 253,\r\n userHold: 254\r\n },\r\n accountInactiveReason: {\r\n notSet: 0,\r\n pausedDueToSystemIssue: 1,\r\n pausedZeroBalance: 2,\r\n pausedNoValidiO: 3,\r\n processing: 4,\r\n pendingPaymentMethod: 5,\r\n pendingNewCustomer: 6,\r\n inactive: 7,\r\n hold: 8,\r\n deleted: 9\r\n }\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport $ from 'jquery';\r\nvar handler = function (event) {\r\n window.PopupController.PopupJsClick(this);\r\n event.stopPropagation();\r\n};\r\nexport default {\r\n run: function ($scope) {\r\n $scope = $scope || $('body');\r\n if ($scope.jquery) {\r\n var helpLinks = $scope.find('a[data-help]');\r\n helpLinks.off('click', handler).on('click', handler);\r\n }\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport dn from '@bingads-webui-component-legacy/humanize/decimal';\r\nimport $ from 'jquery';\r\n\r\nexport default {\r\n editBudget: function editBudget(fieldId, combinedBudget) {\r\n if (typeof combinedBudget == 'string') {\r\n combinedBudget = JSON.parse(combinedBudget.replace(/"/g, '\"'));\r\n }\r\n var editor = $.tmpl($('#budgetEditorTemplate'), {\r\n budgetValue: combinedBudget ? combinedBudget.BudgetAmount : '',\r\n budgetTypes: window.budgetTypes\r\n });\r\n if (combinedBudget) {\r\n $('.inline-budget-edit-type', editor).val(combinedBudget.SimplifiedBudgetLimitType);\r\n }\r\n return editor;\r\n },\r\n getBudget: function getBudget(control) {\r\n var budgetAmount = $(control).find('.inline-budget-edit-value').val();\r\n var budgetType = $(control).find('.inline-budget-edit-type').val();\r\n if (!(budgetAmount && budgetType)) {\r\n var currentValue = $(control).find('.combinedBudgetGridCellValue');\r\n budgetAmount = currentValue.data('budgetamount');\r\n budgetType = currentValue.data('budgettype');\r\n }\r\n return JSON.stringify({\r\n BudgetAmount: dn.fromLocalToStringStrict(budgetAmount),\r\n SimplifiedBudgetLimitType: budgetType\r\n });\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport kendo from '@bingads-webui/kendo/kendo.data.odata';\r\nimport odata_4 from '@bingads-webui-static-legacy/communication/adapter/odata-4';\r\nimport * as filterMetadata from '@bingads-webui/filter-commons';\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nimport dateUtils from '@bingads-webui-static-legacy/utils/date';\r\nimport decimal from '@bingads-webui-component-legacy/humanize/decimal';\r\nfunction convertDateToStandardFormat(dateString) {\r\n return dateUtils.parse(dateString);\r\n}\r\nfunction convertToPoPField(field, popOption) {\r\n if (popOption && popOption != 0) {\r\n if (field.indexOf('/') != -1) {\r\n var strings = field.split('/');\r\n if (strings.length >= 2) {\r\n var category = strings[0];\r\n var column = strings[1];\r\n if (popOption == 1) {\r\n category = 'PoP' + category;\r\n } else if (popOption == 2) {\r\n category = 'PoP' + category + 'Change';\r\n } else if (popOption == 3) {\r\n category = 'PoP' + category + 'ChangePercentage';\r\n } else {\r\n return field;\r\n }\r\n var result = category + '/' + column;\r\n return result;\r\n }\r\n }\r\n } else {\r\n return field;\r\n }\r\n}\r\nfunction toKendo(filterExpressions, entityType) {\r\n var filters = [];\r\n _.each(filterExpressions, function (item) {\r\n if (!item) {\r\n return;\r\n }\r\n var selectedColumn = item.SelectedColumn;\r\n var popOption = item.PeriodComparisonOption;\r\n var popPrefix = 'PoP';\r\n if ((/^PoP/).test(selectedColumn)) {\r\n var change = 'Change';\r\n var changePercent = 'ChangePercent';\r\n if (selectedColumn.match(change + '$')) {\r\n popOption = 2;\r\n selectedColumn = selectedColumn.slice(popPrefix.length, -change.length);\r\n } else if (selectedColumn.match(changePercent + '$')) {\r\n popOption = 3;\r\n selectedColumn = selectedColumn.slice(popPrefix.length, -changePercent.length);\r\n } else {\r\n popOption = 1;\r\n selectedColumn = selectedColumn.slice(popPrefix.length);\r\n }\r\n }\r\n var type = filterMetadata.columnTypeMapper(selectedColumn);\r\n var filterExpression = {\r\n field: filterMetadata.columnNameMapper(selectedColumn, entityType),\r\n operator: filterMetadata.operatorMapper(item.SelectedOperator, type)\r\n };\r\n if (popOption && popOption != 0) {\r\n filterExpression.field = convertToPoPField(filterExpression.field, popOption);\r\n }\r\n if (_.isArray(item.Values)) {\r\n if (item.Values.length > 1) {\r\n var opr = filterExpression.operator, subExpressions = [];\r\n _.each(item.Values, function (valueItem, index) {\r\n if (type === 'date') {\r\n valueItem = convertDateToStandardFormat(valueItem);\r\n }\r\n if (_.isArray(filterExpression.operator)) {\r\n opr = filterExpression.operator[index];\r\n }\r\n subExpressions.push({\r\n field: filterExpression.field,\r\n operator: opr,\r\n value: filterMetadata.valueFormatter(valueItem, type, filterExpression.field, entityType, decimal)\r\n });\r\n });\r\n filters.push({\r\n logic: _.isArray(filterExpression.operator) ? 'and' : 'or',\r\n filters: subExpressions\r\n });\r\n } else {\r\n if (type === 'date') {\r\n item.Values[0] = convertDateToStandardFormat(item.Values[0]);\r\n }\r\n filterExpression.value = filterMetadata.valueFormatter(item.Values[0], type, filterExpression.field, entityType, decimal);\r\n filters.push(filterExpression);\r\n }\r\n }\r\n });\r\n return {\r\n filters: filters\r\n };\r\n}\r\nfunction convertForLambdaExpression(filterExpressions, entityType) {\r\n var url = '';\r\n var indexToDelete = [];\r\n _.each(filterExpressions, function (item, index) {\r\n if (!item) {\r\n return;\r\n }\r\n var lambdaMappedResult = filterMetadata.lambdaMapper(item.SelectedOperator, item.SelectedColumn, entityType, item.Values);\r\n if (!_.isEmpty(lambdaMappedResult) && !_.isEmpty(item.Values)) {\r\n var partialUrl = lambdaExpressionMapping(item, lambdaMappedResult, entityType);\r\n if (url.length > 0) {\r\n url += ' and (';\r\n url += partialUrl;\r\n url += ')';\r\n } else {\r\n url += partialUrl;\r\n }\r\n indexToDelete.push(index);\r\n }\r\n });\r\n _.each(indexToDelete, function (index) {\r\n delete filterExpressions[index];\r\n });\r\n filterExpressions = _.without(filterExpressions, undefined);\r\n return url;\r\n}\r\nfunction lambdaExpressionMapping(item, lambdaMappedResult, entityType) {\r\n var partialUrl = '';\r\n var columnName = filterMetadata.columnNameMapper(item.SelectedColumn, entityType);\r\n var type = filterMetadata.columnTypeMapper(item.SelectedColumn);\r\n var fieldId = lambdaMappedResult.fieldId;\r\n if (lambdaMappedResult.mapToShorterVersion) {\r\n partialUrl += columnName;\r\n partialUrl += '/' + lambdaMappedResult.secondLogic + '(d:';\r\n }\r\n _.each(item.Values, function (value, index) {\r\n if (index > 0) {\r\n partialUrl += ' ' + lambdaMappedResult.logic + ' ';\r\n }\r\n var mappedOperatorAndValue = '';\r\n if (!_.isEmpty(lambdaMappedResult.operator)) {\r\n mappedOperatorAndValue = ' ' + lambdaMappedResult.operator + ' ' + (_.isUndefined(lambdaMappedResult.value) ? filterMetadata.valueFormatter(value, type, columnName, entityType, decimal) : lambdaMappedResult.value);\r\n }\r\n if (lambdaMappedResult.mapToShorterVersion) {\r\n partialUrl += fieldId + mappedOperatorAndValue;\r\n } else {\r\n partialUrl += columnName;\r\n partialUrl += '/' + lambdaMappedResult.secondLogic + '(' + fieldId + mappedOperatorAndValue + ')';\r\n }\r\n });\r\n if (lambdaMappedResult.mapToShorterVersion) {\r\n partialUrl += ')';\r\n }\r\n return partialUrl;\r\n}\r\nfunction convert(filterExpressions, entityType) {\r\n var filterExpressionsCopy = _.isEmpty(filterExpressions) ? {} : $.extend(true, {}, filterExpressions);\r\n var lamdaExpressionUrlPart = convertForLambdaExpression(filterExpressionsCopy, entityType);\r\n var odata_params = kendo.data.transports.odata.parameterMap({\r\n filter: toKendo(filterExpressionsCopy, entityType)\r\n }, 'read');\r\n var result = odata_4.from(odata_params);\r\n if (!_.isEmpty(lamdaExpressionUrlPart) && lamdaExpressionUrlPart.length > 0) {\r\n result.$filter = result.$filter || '';\r\n result.$filter += result.$filter.length > 0 ? ' and ' : '';\r\n result.$filter += lamdaExpressionUrlPart;\r\n }\r\n return result;\r\n}\r\nfunction convertToURLParam(filterExpressions, entityType) {\r\n var expression = convert(filterExpressions, entityType);\r\n if (expression && expression.$filter) {\r\n return '$filter=' + encodeURIComponent(expression.$filter);\r\n }\r\n return '';\r\n}\r\nexport default {\r\n toKendo: toKendo,\r\n convertForLambdaExpression: convertForLambdaExpression,\r\n convert: convert,\r\n convertToURLParam: convertToURLParam\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Template from '@bingads-webui-static-legacy/shared/template/popup.pug';\r\nimport uiBlocker from '@bingads-webui-component-legacy/uiblocker/service/uiBlocker';\r\nvar container;\r\nvar popupContentContainer;\r\nvar containerSelector = '.popup-container';\r\nvar contentSelector = '.popup-content';\r\nvar dialogSelector = '.popup-dialog';\r\nvar defaultHeight = 400;\r\nvar blocked = false;\r\nvar render = function (renderHtml, height) {\r\n preparePopupContainer();\r\n if (popupContentContainer && popupContentContainer.length > 0) {\r\n popupContentContainer.html(renderHtml);\r\n if (popupContentContainer.length > 0) {\r\n _.each(popupContentContainer.children(), function (child) {\r\n $(child).addClass('center-block');\r\n });\r\n }\r\n }\r\n if (!_.isUndefined(height) && _.isNumber(height)) {\r\n container.find(dialogSelector).css({\r\n 'height': height + 'px'\r\n });\r\n } else {\r\n container.find(dialogSelector).css({\r\n 'height': defaultHeight + 'px'\r\n });\r\n }\r\n show();\r\n};\r\nvar drag_start = function (event) {\r\n event.originalEvent.dataTransfer.setData('text', event.clientX + ',' + event.clientY);\r\n};\r\nvar drop = function (event, draggableItem) {\r\n var eventStart = event.originalEvent.dataTransfer.getData('text').split(',');\r\n var moveOnYAxis = event.clientY - parseInt(eventStart[1], 10);\r\n var moveOnXAxis = event.clientX - parseInt(eventStart[0], 10);\r\n var originOffset = draggableItem.offset();\r\n draggableItem.offset({\r\n top: originOffset.top + moveOnYAxis,\r\n left: originOffset.left + moveOnXAxis\r\n });\r\n event.preventDefault();\r\n return false;\r\n};\r\nvar drag_over = function (event) {\r\n event.preventDefault();\r\n return false;\r\n};\r\nvar draggable = function (draggableItem, draggableContainer) {\r\n draggableItem.on('dragstart', drag_start);\r\n draggableContainer.on('dragover', drag_over);\r\n draggableContainer.on('drop', function (event) {\r\n drop(event, $(draggableItem[0]));\r\n });\r\n};\r\nvar bindDraggable = _.once(function (container) {\r\n draggable(container, $('body'));\r\n});\r\nvar preparePopupContainer = function () {\r\n container = $(containerSelector);\r\n popupContentContainer = container.length > 0 ? container.find(contentSelector) : null;\r\n if (container.length === 0 || !popupContentContainer || popupContentContainer.length === 0) {\r\n container.remove();\r\n var oldBlocker = $('.blocker-panel');\r\n if (oldBlocker.length == 1) {\r\n $(Template()).insertBefore(oldBlocker);\r\n } else {\r\n $('body').append(Template());\r\n }\r\n container = $(containerSelector);\r\n popupContentContainer = container.find(contentSelector);\r\n } else {\r\n popupContentContainer.empty();\r\n }\r\n $(document).unbind('click.popup');\r\n $(document).bind('click.popup', closePopupByClick);\r\n bindDraggable(popupContentContainer);\r\n};\r\nvar show = function () {\r\n if (!_.isUndefined(container) && container != null) {\r\n container.removeClass('fade');\r\n container.addClass('show');\r\n }\r\n};\r\nvar hide = function () {\r\n if (!_.isUndefined(container) && container !== null) {\r\n container.removeClass('show');\r\n container.addClass('fade');\r\n if (blocked) {\r\n uiBlocker.unblock(container, 'popupBlocker');\r\n }\r\n }\r\n};\r\nvar resizeBlockingImg = function () {\r\n $.advertiser.showLoadingPanel();\r\n $('.blocker-panel').css({\r\n 'left': 0,\r\n 'top': '0 !important'\r\n });\r\n};\r\nvar block = function () {\r\n if (!_.isUndefined(container) && container !== null) {\r\n uiBlocker.block(container, 'popupBlocker');\r\n blocked = true;\r\n }\r\n};\r\nvar closePopupByClick = function (e) {\r\n const $target = $(e.target);\r\n if ($target.closest('.popup-content').length === 1 || $target.attr('data-role') === 'droptarget') {\r\n return;\r\n }\r\n closePopup();\r\n};\r\nvar closePopup = function (e) {\r\n hide();\r\n $(document).unbind('click.popup');\r\n};\r\nexport default {\r\n render: render,\r\n close: closePopup,\r\n show: show,\r\n block: block,\r\n resizeBlockingImg: resizeBlockingImg\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n SetAmount: 'SetAmount',\r\n IncreaseBid: 'IncreaseBid',\r\n DecreaseBid: 'DecreaseBid',\r\n BestBid: 'BestBid',\r\n FirstPageBid: 'FirstPageBid',\r\n ExcludeBid: 'ExcludeBid'\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n Set: 'SetAmount',\r\n Increase: 'IncreaseBudget',\r\n Decrease: 'DecreaseBudget'\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n changeByPercent: 'ChangeByPercent',\r\n changeByAmount: 'ChangeByAmount',\r\n setAmount: 'SetToAmount',\r\n excludeBid: 'Set',\r\n remove: 'Remove',\r\n noCashback: 'NoCashback'\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n All: 'all',\r\n OnlyErrors: 'errors',\r\n OnlySuccessful: 'success'\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n pendingStart: 'Pending',\r\n inProgress: 'InProgress',\r\n completed: 'Completed',\r\n completedWithErrors: 'CompletedWithErrors',\r\n failed: 'Failed'\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n monthly: 'Monthly',\r\n dailyStandard: 'DailyStandard',\r\n dailyAccelerated: 'DailyAccelerated',\r\n lifetimeBudgetStandard: 'LifetimeBudgetStandard'\r\n};\r\n\r\n","/* eslint-disable */\r\nexport default {\r\n Active: 'Active',\r\n Deleted: 'Deleted',\r\n Paused: 'UserPaused',\r\n Suspended: 'Suspended',\r\n InProgress: 'InProgress',\r\n EnumPaused: 124,\r\n EnumBudgetPaused: 126,\r\n EnumBudgetUserPaused: 127\r\n};\r\n\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport Backbone from 'backbone';\r\nimport $ from 'jquery';\r\nimport * as filterMetadata from '@bingads-webui/filter-commons';\r\nexport default {\r\n refresh: function (grid, cb) {\r\n if (grid.gridView) {\r\n grid.gridView.refresh(true);\r\n if (_.isFunction(cb)) {\r\n grid.gridView.once('didReload', cb);\r\n }\r\n } else {\r\n _.isFunction(cb) ? grid.go().then(cb, cb) : grid.go();\r\n }\r\n },\r\n onBulkEditViewHide: function (view, grid) {\r\n if (grid.gridView) {\r\n view.trigger('hide');\r\n } else {\r\n grid.gridDom.trigger('showToolbar');\r\n }\r\n },\r\n unbindRowSelection: function (grid) {\r\n if (!grid.gridView) {\r\n grid.gridDom.unbind(grid.rowSelectionChanged + '.ruleAuthoringEvents');\r\n }\r\n },\r\n getSelectedRowIds: function (grid) {\r\n if (grid) {\r\n return grid.gridView ? grid.gridView.selectedKeys() : grid.getSelectedRowIds();\r\n }\r\n return null;\r\n },\r\n isCrossPageAllSelected: function (grid) {\r\n if (grid.gridView) {\r\n return grid.pgridPlugins.crossPageSelectAll.isAllSelected;\r\n } else {\r\n return grid.getSelectionScope() === 'AllPages';\r\n }\r\n },\r\n getTotalRowsCount: function (grid) {\r\n if (grid.gridView) {\r\n return grid.gridView.totalCountRows;\r\n } else {\r\n return grid.getTotalRecordCount();\r\n }\r\n },\r\n getSelectedRows: function (grid) {\r\n if (grid) {\r\n return grid.gridView ? grid.gridView.selectedItems() : grid.getSelectedRowItems();\r\n }\r\n return [];\r\n },\r\n getSelectedRowsCount: function (grid) {\r\n if (grid) {\r\n var isCrossPageAllSelected = this.isCrossPageAllSelected(grid);\r\n return isCrossPageAllSelected ? this.getTotalRowsCount(grid) : this.getSelectedRowIds(grid).length;\r\n }\r\n return 0;\r\n },\r\n deselectAll: function (grid) {\r\n if (grid.gridView) {\r\n return grid.gridView.deselectAll();\r\n } else {\r\n return grid.toggleAllRows(false, true);\r\n }\r\n },\r\n getSelectedEntityIds: function (grid) {\r\n if (grid) {\r\n var ids = grid.gridView ? grid.gridView.selectedKeys() : grid.getSelectedRowIds();\r\n ids = _.map(ids, function (value) {\r\n var indexOf_ = value.indexOf('_');\r\n if (indexOf_ < 0) return parseInt(value);\r\n return parseInt(value.substring(0, value.indexOf('_')));\r\n });\r\n return ids;\r\n }\r\n return null;\r\n },\r\n allPageSelected: function (grid) {\r\n if (grid.crossPageSelectAll) {\r\n return grid.crossPageSelectAll.isAllSelected;\r\n } else if (grid.pgridPlugins) {\r\n return grid.pgridPlugins.crossPageSelectAll && grid.pgridPlugins.crossPageSelectAll.isAllSelected;\r\n } else {\r\n return grid.getSelectionScope() === 'AllPages';\r\n }\r\n },\r\n getPageSize: function (grid) {\r\n return grid.pgridPlugins && grid.pgridPlugins.pagination ? grid.pgridPlugins.pagination.pageSize : grid.getPageSize();\r\n },\r\n getCurrentPage: function (grid) {\r\n return grid.pgridPlugins && grid.pgridPlugins.pagination ? grid.pgridPlugins.pagination.pageNumber : grid.getCurrentPage();\r\n },\r\n getColumnValue: function (grid, rowId, columnName) {\r\n if (grid.gridView) {\r\n return _.result(grid.gridView.itemWithKey(rowId), columnName);\r\n }\r\n return grid.getColumnValue(rowId, columnName);\r\n },\r\n getSortInfo: function (entity, grid) {\r\n var sortParams = {};\r\n var sortInfo = '';\r\n if (grid.gridView) {\r\n var sort = grid.gridView.get('sortableHeader');\r\n sortParams.ColumnId = sort.name;\r\n sortParams.Direction = sort.direction <= 0 ? 'd' : 'a';\r\n } else {\r\n sortParams = grid.sortInfo;\r\n }\r\n if (sortParams && sortParams.ColumnId) {\r\n if (grid.gridView) {\r\n var orderby = grid.gridView.get('query').orderby;\r\n if (orderby && orderby.length > 0) {\r\n sortInfo = orderby[0].key;\r\n }\r\n } else {\r\n sortInfo = filterMetadata.columnNameMapper(sortParams.ColumnId, entity);\r\n }\r\n if (sortParams.Direction === 'd') {\r\n sortInfo += ' desc';\r\n }\r\n }\r\n return sortInfo;\r\n },\r\n hideToolbar: function (grid) {\r\n if (grid.gridView) {\r\n grid.toolbar.gridToolbarGroup.hideAllToolbars();\r\n } else {\r\n grid.gridDom.trigger('hideToolbar');\r\n }\r\n },\r\n showToolbar: function (grid) {\r\n if (grid.gridView) {\r\n grid.toolbar.gridToolbarGroup.showAllToolbars();\r\n } else {\r\n grid.gridDom.trigger('showToolbar');\r\n }\r\n },\r\n hideGroupMenu: function (grid) {\r\n if (!grid.gridView) {\r\n grid.hideGroupMenu();\r\n }\r\n },\r\n loadPage: function (grid, data) {\r\n if (grid.gridView) {\r\n grid.gridView.refresh(true);\r\n } else {\r\n grid.loadPage(data);\r\n }\r\n }\r\n};\r\n\r\n","/* eslint-disable */\r\nimport pageContext from '@bingads-webui-static-legacy/page-context';\r\nvar i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\nfunction addTargetedTriggerFunc(triggerId, featureName, areaName, targetId) {\r\n var _userVoice = window.UserVoice || [];\r\n _userVoice.push(['identify', {\r\n id: pageContext.CurrentUser.Id,\r\n account: {\r\n id: pageContext.CurrentAccount.Id,\r\n name: pageContext.CurrentAccount.AccountNumber\r\n }\r\n }]);\r\n _userVoice.push(['set', {\r\n ticket_custom_fields: {\r\n 'UserAgent': navigator.userAgent,\r\n 'Feature': featureName,\r\n 'FeatureArea': areaName,\r\n 'URL': window.location.href,\r\n 'AccountNumber': pageContext.CurrentAccount.AccountNumber,\r\n 'AccountName': pageContext.CurrentAccount.Name,\r\n 'AccountID': pageContext.CurrentAccount.Id,\r\n 'CustomerID': pageContext.CurrentCustomer.Id,\r\n 'CustomerName': pageContext.CurrentCustomer.Name,\r\n 'PageHTML': ''\r\n },\r\n smartvote_enabled: false,\r\n target: targetId,\r\n screenshot_enabled: false,\r\n strings: {\r\n contact_menu_label: i18n.getString('UserVoice_WidgetText_ContactMenuLabel'),\r\n contact_title: i18n.getString('UserVoice_WidgetText_ContactTitle'),\r\n contact_message_placeholder: i18n.getString('UserVoice_WidgetText_ContactMessagePlaceholder'),\r\n contact_skip_instant_answers_button: i18n.getString('UserVoice_WidgetText_ContactSkipInstantAnswersButton'),\r\n contact_details_title: i18n.getString('UserVoice_WidgetText_ContactDetailsTitle'),\r\n contact_submit_button: i18n.getString('UserVoice_WidgetText_ContactSubmitButton'),\r\n contact_success_title: i18n.getString('UserVoice_WidgetText_ContactSuccessTitle'),\r\n contact_success_body: i18n.getString('UserVoice_WidgetText_ContactSuccessBody'),\r\n email_address_label: i18n.getString('UserVoice_WidgetText_EmailAddressLabel'),\r\n email_address_placeholder: i18n.getString('UserVoice_WidgetText_EmailAddressPlaceholder')\r\n }\r\n }]);\r\n _userVoice.push(['addTrigger', triggerId, {\r\n mode: 'contact'\r\n }]);\r\n}\r\n;\r\nfunction addTriggerFunc(triggerId, featureName, areaName) {\r\n addTargetedTriggerFunc(triggerId, featureName, areaName, 'self');\r\n}\r\n;\r\nexport default {\r\n addTrigger: addTriggerFunc,\r\n addTargetedTrigger: addTargetedTriggerFunc\r\n};\r\n\r\n","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (alertId, href, text) {pug_html = pug_html + \"\\u003Ca\" + (pug.attr(\"href\", href, true, true)+pug.attr(\"onclick\", 'window.App.views.alertCenter.dismiss(\"' + alertId + '\")', true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";}.call(this,\"alertId\" in locals_for_with?locals_for_with.alertId:typeof alertId!==\"undefined\"?alertId:undefined,\"href\" in locals_for_with?locals_for_with.href:typeof href!==\"undefined\"?href:undefined,\"text\" in locals_for_with?locals_for_with.text:typeof text!==\"undefined\"?text:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, viewModel) {pug_mixins[\"previewGrid\"] = pug_interp = function(columns){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showPreview\\\"\\u003E\\u003Cdiv data-bind=\\\"html: changeText\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"if: results().length > 0, visible: results().length > 0\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: previewGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: results\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\" data-bind=\\\"foreach: $data.data\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\nvar pageTitle = viewModel.isNewAudienceEnabled ? i18n.getString('AudiencesAssociation_BulkEditAssociation_Audience_Title') : i18n.getString('AudiencesAssociation_BulkEditAssociation_Title');\npug_html = pug_html + (\"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading bulkAssociation\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = pageTitle) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp));\nvar header1 = i18n.getString('BulkEdit_AudienceAssociation_EntityNameHeader_Campaign')\nvar header2 = i18n.getString('BulkEdit_AudienceAssociation_OldAssociationHeader')\nvar header3 = i18n.getString('BulkEdit_AudienceAssociation_NewAssociationHeader')\npug_mixins[\"previewGrid\"]([header1, header2, header3]);\nvar header5 = i18n.getString('BulkEdit_AudienceAssociation_EntityNameHeader_Campaign')\nvar header6 = i18n.getString('BulkEdit_AudienceAssociation_OldAssociationHeader')\nvar header7 = i18n.getString('BulkEdit_AudienceAssociation_AttemptedAssociationHeader')\npug_mixins[\"errorsGrid\"]([header5, header6, header7], true);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"viewModel\" in locals_for_with?locals_for_with.viewModel:typeof viewModel!==\"undefined\"?viewModel:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (PageContext, i18n) {pug_mixins[\"previewGrid\"] = pug_interp = function(columns){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showPreview\\\"\\u003E\\u003Cdiv data-bind=\\\"html: changeText\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"if: results().length > 0, visible: results().length > 0\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: previewGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: results\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\" data-bind=\\\"foreach: $data.data\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this); event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"pull-left control-label\\\" for=\\\"bulkedit-action\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_Action')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-2\\\"\\u003E\\u003Cselect class=\\\"form-control\\\" id=\\\"bulkedit-action\\\" data-bind=\\\"options: actions, optionsText: "Text", optionsValue: "Value", value: selectedAction, disable: isDisabled\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-inline\\\"\\u003E\\u003Cspan class=\\\"control-label pull-left\\\" id=\\\"bulkedit-budget-label\\\" data-bind=\\\"text: getLifetimeBudgetLabel()\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6 form-inline\\\" data-bind=\\\"visible: showSetPanel\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" aria-labelledby=\\\"bulkedit-budget-label\\\" data-bind=\\\"value: budgetValue, valueUpdate: "input", disable: isDisabled\\\"\\u003E\\u003Cspan class=\\\"control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = PageContext.AccountCurrencyCode) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"](\"pop_BA_BulkEditBudgetSet\", i18n.getString('BulkEdit_ChangeBudget_SetBudget'), i18n);\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-7 form-inline\\\" data-bind=\\\"visible: showChangeByPanel\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" aria-labelledby=\\\"bulkedit-budget-label\\\" data-bind=\\\"value: budgetValue, valueUpdate: "input", disable: isDisabled\\\"\\u003E\\u003Cselect class=\\\"bulkEdit-units form-control\\\" aria-labelledby=\\\"bulkedit-budget-label\\\" data-bind=\\\"options: units, optionsText: "Text", optionsValue: "Value", value: selectedUnit, disable: isDisabled\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003Clabel class=\\\"bulkEdit-limit-label checkbox-inline\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-limit\\\" type=\\\"checkbox\\\" data-bind=\\\"css: { checked: useLimitValue }, checked: useLimitValue, disable: isDisabled\\\"\\u003E\\u003Cspan id=\\\"bulkedit-limitbudgetlabel\\\" data-bind=\\\"html: limitBudgetLabelText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv style=\\\"display: inline-block; vertical-align: top;\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" aria-labelledby=\\\"bulkedit-limitbudgetlabel\\\" data-bind=\\\"value: limitValue, enable: !isDisabled() ? useLimitValue : false, valueUpdate: "input"\\\"\\u003E\\u003Clabel class=\\\"bulk-edit-currency control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = PageContext.AccountCurrencyCode) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"control-label\\\" data-bind=\\\"visible: showIncreaseBudgetHelp\\\"\\u003E\";\npug_mixins[\"popupHelp\"](\"pop_BA_BulkEditBudgetIncrease\", i18n.getString('AutomatedRules_RuleAuthoring_IncreaseBudget'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"control-label\\\" data-bind=\\\"visible: !showIncreaseBudgetHelp()\\\"\\u003E\";\npug_mixins[\"popupHelp\"](\"pop_BA_BulkEditBudgetDecrease\", i18n.getString('AutomatedRules_RuleAuthoring_DecreaseBudget'), i18n);\npug_html = pug_html + (\"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: limitValueErrorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp));\nvar header1 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header2 = i18n.getString('BulkEdit_Campaign_OldBudgetHeader')\nvar header3 = i18n.getString('BulkEdit_Campaign_NewBudgetHeader')\npug_mixins[\"previewGrid\"]([header1, header2, header3]);\nvar header5 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header6 = i18n.getString('BulkEdit_Campaign_OldBudgetHeader')\nvar header7 = i18n.getString('BulkEdit_Campaign_AttemptedBudgetHeader')\npug_mixins[\"errorsGrid\"]([header5, header6, header7]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"PageContext\" in locals_for_with?locals_for_with.PageContext:typeof PageContext!==\"undefined\"?PageContext:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (PageContext, i18n) {pug_mixins[\"previewGrid\"] = pug_interp = function(columns){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showPreview\\\"\\u003E\\u003Cdiv data-bind=\\\"html: changeText\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"if: results().length > 0, visible: results().length > 0\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: previewGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: results\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\" data-bind=\\\"foreach: $data.data\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this); event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"pull-left control-label\\\" for=\\\"bulkedit-action\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_Action')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-2\\\"\\u003E\\u003Cselect class=\\\"form-control\\\" id=\\\"bulkedit-action\\\" data-bind=\\\"options: actions, optionsText: "Text", optionsValue: "Value", value: selectedAction, disable: isDisabled\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-inline\\\"\\u003E\\u003Cspan class=\\\"control-label pull-left\\\" id=\\\"bulkedit-budget-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_Campaign_MonthlyCashbackBudget')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6 form-inline\\\" data-bind=\\\"visible: showSetPanel\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" aria-labelledby=\\\"bulkedit-budget-label\\\" data-bind=\\\"value: budgetValue, valueUpdate: "input", disable: isDisabled\\\"\\u003E\\u003Cspan class=\\\"control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = PageContext.AccountCurrencyCode) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"](\"pop_BA_BulkEditBudgetSet\", i18n.getString('BulkEdit_ChangeBudget_SetBudget'), i18n);\npug_html = pug_html + \"\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-7 form-inline\\\" data-bind=\\\"visible: showChangeByPanel\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" aria-labelledby=\\\"bulkedit-budget-label\\\" data-bind=\\\"value: budgetValue, valueUpdate: "input", disable: isDisabled\\\"\\u003E\\u003Cselect class=\\\"bulkEdit-units form-control\\\" aria-labelledby=\\\"bulkedit-budget-label\\\" data-bind=\\\"options: units, optionsText: "Text", optionsValue: "Value", value: selectedUnit, disable: isDisabled\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003Clabel class=\\\"bulkEdit-limit-label checkbox-inline\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-limit\\\" type=\\\"checkbox\\\" data-bind=\\\"css: { checked: useLimitValue }, checked: useLimitValue, disable: isDisabled\\\"\\u003E\\u003Cspan id=\\\"bulkedit-limitbudgetlabel\\\" data-bind=\\\"html: limitBudgetLabelText\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Flabel\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" aria-labelledby=\\\"bulkedit-limitbudgetlabel\\\" data-bind=\\\"value: limitValue, enable: !isDisabled() ? useLimitValue : false, valueUpdate: "input"\\\"\\u003E\\u003Clabel class=\\\"bulk-edit-currency control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = PageContext.AccountCurrencyCode) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"control-label\\\" data-bind=\\\"visible: showIncreaseBudgetHelp\\\"\\u003E\";\npug_mixins[\"popupHelp\"](\"pop_BA_BulkEditBudgetIncrease\", i18n.getString('AutomatedRules_RuleAuthoring_IncreaseBudget'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Clabel class=\\\"control-label\\\" data-bind=\\\"visible: !showIncreaseBudgetHelp()\\\"\\u003E\";\npug_mixins[\"popupHelp\"](\"pop_BA_BulkEditBudgetDecrease\", i18n.getString('AutomatedRules_RuleAuthoring_DecreaseBudget'), i18n);\npug_html = pug_html + (\"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp));\nvar header1 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header2 = i18n.getString('BulkEdit_Campaign_OldCashbackBudgetHeader')\nvar header3 = i18n.getString('BulkEdit_Campaign_NewCashbackBudgetHeader')\npug_mixins[\"previewGrid\"]([header1, header2, header3]);\nvar header5 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header6 = i18n.getString('BulkEdit_Campaign_OldCashbackBudgetHeader')\nvar header7 = i18n.getString('BulkEdit_Campaign_AttemptedCashbackBudgetHeader')\npug_mixins[\"errorsGrid\"]([header5, header6, header7]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"PageContext\" in locals_for_with?locals_for_with.PageContext:typeof PageContext!==\"undefined\"?PageContext:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"previewGrid\"] = pug_interp = function(columns){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showPreview\\\"\\u003E\\u003Cdiv data-bind=\\\"html: changeText\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"if: results().length > 0, visible: results().length > 0\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: previewGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: results\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\" data-bind=\\\"foreach: $data.data\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"changeCashbackPercentBase\"] = pug_interp = function(i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Ch2 class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fh2\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Clabel class=\\\"pull-left control-label\\\" id=\\\"actionLabel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_Action')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"col-sm-2\\\"\\u003E\\u003Cselect class=\\\"form-control\\\" data-bind=\\\"options: actions, optionsText: "Text", optionsValue: "Value", value: selectedAction, disable: isDisabled\\\" aria-labelledby=\\\"actionLabel\\\"\\u003E\\u003C\\u002Fselect\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-6 form-inline\\\" data-bind=\\\"visible: showSetPanel\\\"\\u003E\\u003Cinput class=\\\"bulkEdit-bid form-control\\\" type=\\\"text\\\" data-bind=\\\"value: cashbackPercentValue, valueUpdate: "input", disable: isDisabled\\\" aria-describedby=\\\"percentLabel\\\"\\u003E\\u003Cspan class=\\\"control-label\\\" id=\\\"currencyLabel1\\\" data-bind=\\\"html: selectedUnit\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko if: cashbackPercentDescription() != null--\\u003E\\u003Cdiv class=\\\"alert alert-info\\\" role=\\\"alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert__content\\\"\\u003E\\u003Cspan class=\\\"alert__message\\\" data-bind=\\\"html: cashbackPercentDescription\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\";\npug_mixins[\"changeCashbackPercentBase\"](i18n);\npug_html = pug_html + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp);\nvar header1 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header2 = i18n.getString('BulkEdit_OldCashbackPercentHeader')\nvar header3 = i18n.getString('BulkEdit_NewCashbackPercentHeader')\npug_mixins[\"previewGrid\"]([header1, header2, header3]);\nvar header5 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header6 = i18n.getString('BulkEdit_OldCashbackPercentHeader')\nvar header7 = i18n.getString('BulkEdit_AttemptedCashbackPercentHeader')\npug_mixins[\"errorsGrid\"]([header5, header6, header7], true);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"previewGrid\"] = pug_interp = function(columns){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showPreview\\\"\\u003E\\u003Cdiv data-bind=\\\"html: changeText\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"if: results().length > 0, visible: results().length > 0\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: previewGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: results\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\" data-bind=\\\"foreach: $data.data\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"panel\\\" data-bind=\\\"visible: showPanel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp));\nvar header1 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header2 = i18n.getString('BulkEdit_OldStatusHeader')\nvar header3 = i18n.getString('BulkEdit_NewStatusHeader')\npug_mixins[\"previewGrid\"]([header1, header2, header3]);\nvar header5 = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar header6 = i18n.getString('BulkEdit_OldStatusHeader')\nvar header7 = i18n.getString('BulkEdit_AttemptedStatusHeader')\npug_mixins[\"errorsGrid\"]([header5, header6, header7]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel copy-paste-container\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cul\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: pauseAfterPasting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteAds_PauseAfterPasting')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar showStopButton = false\npug_html = pug_html + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp);\nvar entityNameHeader = i18n.getString('BulkEdit_Ad_EntityNameHeader')\nvar copiedHeader = i18n.getString('BulkEdit_Copied_Header')\nvar pastedHeader = i18n.getString('BulkEdit_Pasted_Header')\npug_mixins[\"errorsGrid\"]([entityNameHeader, copiedHeader, pastedHeader]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this); event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"panel copy-paste-container\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cul data-bind=\\\"visible: showCheckBoxes()\\\"\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: pauseAfterPasting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteAdGroups_PauseAfterPasting')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: adjustStartAndEndDates\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Adjust_StartEndDates')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_CopyPaste_StartEndDate_AdGroup', i18n.getString('Adjust_StartEndDates'), i18n);\npug_html = pug_html + (\"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"form-horizontal bulkeditdate\\\" data-bind=\\\"visible: adjustStartAndEndDates()\\\"\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding adGroup-startEndDate-spacing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DateFilter_Label_StartDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 start-date-picker\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding adGroup-startEndDate-spacing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DateFilter_Label_EndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 copyPaste-radio-topBottomPadding copyPaste-radio-label\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"None\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Schedule_NoEndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding copyPaste-radio-label endBy-before-date-picker\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"Selected\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('EndBy')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 date-picker-within-radio end-date-picker form-control-static\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-3 copyPaste-radio-topBottomPadding copyPaste-radio-label\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"CopyDuration\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UseOriginalDuration')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_CopyPaste_OrigDuration_AdGroup', i18n.getString('UseOriginalDuration'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar showStopButton = true\npug_html = pug_html + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp);\nvar entityNameHeader = i18n.getString('BulkEdit_AdGroup_EntityNameHeader')\nvar copiedHeader = i18n.getString('BulkEdit_Copied_Header')\nvar pastedHeader = i18n.getString('BulkEdit_Pasted_Header')\npug_mixins[\"errorsGrid\"]([entityNameHeader, copiedHeader, pastedHeader]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this); event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"panel copy-paste-container\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cul data-bind=\\\"visible: showCheckBoxes()\\\"\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: pauseAfterPasting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteAssetGroups_PauseAfterPasting')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: adjustStartAndEndDates\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Adjust_StartEndDates')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_CopyPaste_StartEndDate_AssetGroup', i18n.getString('Adjust_StartEndDates'), i18n);\npug_html = pug_html + (\"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"form-horizontal bulkeditdate\\\" data-bind=\\\"visible: adjustStartAndEndDates()\\\"\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding adGroup-startEndDate-spacing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DateFilter_Label_StartDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 start-date-picker\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding adGroup-startEndDate-spacing\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DateFilter_Label_EndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 copyPaste-radio-topBottomPadding copyPaste-radio-label\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"None\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Schedule_NoEndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding copyPaste-radio-label endBy-before-date-picker\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"Selected\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('EndBy')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 date-picker-within-radio end-date-picker form-control-static\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-3 copyPaste-radio-topBottomPadding copyPaste-radio-label\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"CopyDuration\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UseOriginalDuration')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_CopyPaste_OrigDuration_AssetGroup', i18n.getString('UseOriginalDuration'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar showStopButton = true\npug_html = pug_html + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp);\nvar entityNameHeader = i18n.getString('BulkEdit_AssetGroup_EntityNameHeader')\nvar copiedHeader = i18n.getString('BulkEdit_Copied_Header')\nvar pastedHeader = i18n.getString('BulkEdit_Pasted_Header')\npug_mixins[\"errorsGrid\"]([entityNameHeader, copiedHeader, pastedHeader]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this); event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"panel copy-paste-container\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cul data-bind=\\\"visible: showCheckBoxes()\\\"\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: pauseAfterPasting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteCampaigns_PauseAfterPasting')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: adjustStartAndEndDates\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Adjust_StartEndDates')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_CopyPaste_StartEndDate_Campaign', i18n.getString('Adjust_StartEndDates'), i18n);\npug_html = pug_html + (\"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"form-horizontal bulkeditdate\\\" data-bind=\\\"visible: adjustStartAndEndDates()\\\"\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DateFilter_Label_StartDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 start-date-picker\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('DateFilter_Label_EndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 copyPaste-radio-topBottomPadding copyPaste-radio-label\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"None\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Schedule_NoEndDate')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-1 copyPaste-radio-topBottomPadding copyPaste-radio-label endBy-before-date-picker\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"Selected\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('EndBy')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-2 date-picker-within-radio end-date-picker form-control-static\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group radio\\\"\\u003E\\u003Cdiv class=\\\"col-sm-1\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"col-sm-3 copyPaste-radio-topBottomPadding copyPaste-radio-label\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"radio\\\" value=\\\"CopyDuration\\\" data-bind=\\\"checked: endDateModification\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('UseOriginalDuration')) ? \"\" : pug_interp)));\npug_mixins[\"popupHelp\"]('pop_BA_CopyPaste_OrigDuration_Campaign', i18n.getString('UseOriginalDuration'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorMessage\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar showStopButton = true\npug_html = pug_html + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp);\nvar entityNameHeader = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\nvar copiedHeader = i18n.getString('BulkEdit_Copied_Header')\nvar pastedHeader = i18n.getString('BulkEdit_Pasted_Header')\npug_mixins[\"errorsGrid\"]([entityNameHeader, copiedHeader, pastedHeader]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel copy-paste-container\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"form-group col-sm-12\\\"\\u003E\\u003Cul\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: includeBids\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteKeywords_IncludeBids')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003Cli data-bind=\\\"visible: !disableKeywordDestinationUrl\\\"\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: includeDestinationURLs\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteKeywords_IncludeDestinationURLs')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003Cli\\u003E\\u003Cdiv class=\\\"checkbox\\\"\\u003E\\u003Clabel\\u003E\\u003Cinput type=\\\"checkbox\\\" data-bind=\\\"checked: pauseAfterPasting\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PasteKeywords_PauseAfterPasting')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fli\\u003E\\u003C\\u002Ful\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar showStopButton = false\npug_html = pug_html + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp);\nvar entityNameHeader = i18n.getString('BulkEdit_Keyword_EntityNameHeader')\nvar copiedHeader = i18n.getString('BulkEdit_Copied_Header')\nvar pastedHeader = i18n.getString('BulkEdit_Pasted_Header')\npug_mixins[\"errorsGrid\"]([entityNameHeader, copiedHeader, pastedHeader]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, viewModel) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showButtonBar\\\"\\u003E\\u003Cbutton class=\\\"btn btn-primary\\\" id=\\\"save\\\"\\u003E\" + (pug.escape(null == (pug_interp = viewModel.actionButtonText()) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" id=\\\"preview\\\" data-bind=\\\"visible : showPreviewButton\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_PreviewChanges')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" id=\\\"cancel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_Cancel')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showCloseButton\\\"\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" id=\\\"close\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_Close')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"viewModel\" in locals_for_with?locals_for_with.viewModel:typeof viewModel!==\"undefined\"?viewModel:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors\\\"\\u003E\\u003Cdiv data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText, href:"javascript:void(0)"\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.name\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.error\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + (\"\\u003Cdiv class=\\\"panel\\\" data-bind=\\\"visible: showPanel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\" + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp));\nvar header1 = i18n.getString('label_association_error_grid_header_entity')\nvar header2 = i18n.getString('label_association_error_grid_header_text')\npug_mixins[\"errorsGrid\"]([header1, header2]);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, viewModel) {pug_mixins[\"previewGrid\"] = pug_interp = function(columns){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showPreview\\\"\\u003E\\u003Cdiv data-bind=\\\"html: changeText\\\" role=\\\"alert\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"if: results().length > 0, visible: results().length > 0\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: previewGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.previewGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: results\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\" data-bind=\\\"foreach: $data.data\\\"\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index1 = 0, $$l = $$obj.length; pug_index1 < $$l; pug_index1++) {\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index1 in $$obj) {\n $$l++;\n var column = $$obj[pug_index1];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"section-container form-horizontal\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\nvar header1 = viewModel.entityHeaderName()\nvar header2 = i18n.getString('BulkEdit_BidStrategy_CurrentBidStrategy')\nvar header3 = i18n.getString('BulkEdit_BidStrategy_NewBidStrategy')\npug_mixins[\"previewGrid\"]([header1, header2, header3]);\npug_mixins[\"errorsGrid\"]([header1], true);\npug_html = pug_html + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"viewModel\" in locals_for_with?locals_for_with.viewModel:typeof viewModel!==\"undefined\"?viewModel:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n) {pug_mixins[\"errorsGrid\"] = pug_interp = function(columns, errorColumnIsHtml){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && !isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: errorCountString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Ca class=\\\"errorCountLink\\\" data-bind=\\\"html: errorCountLinkText\\\" href=\\\"javascript:void(0)\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003Cbr\\u003E\\u003Cdiv class=\\\"previewTable grid\\\" data-bind=\\\"visible: showErrorGrid\\\"\\u003E\\u003Ctable\\u003E\\u003Cthead\\u003E\\u003C!--ko if: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\" data-bind=\\\"foreach: errorsGrids\\\"\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\" data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--ko if: $index() === $parent.errorsGrids().length - 1--\\u003E\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C!--ko ifnot: $root.errorsGrids--\\u003E\\u003Ctr class=\\\"grid-header-row\\\"\\u003E\";\n// iterate columns\n;(function(){\n var $$obj = columns;\n if ('number' == typeof $$obj.length) {\n for (var pug_index0 = 0, $$l = $$obj.length; pug_index0 < $$l; pug_index0++) {\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n } else {\n var $$l = 0;\n for (var pug_index0 in $$obj) {\n $$l++;\n var column = $$obj[pug_index0];\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = column) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\";\n }\n }\n}).call(this);\n\npug_html = pug_html + \"\\u003Cth class=\\\"grid-header-cell grid-disabledsort\\\"\\u003E\\u003Cdiv class=\\\"grid-header-textcontainer\\\"\\u003E\\u003Ca class=\\\"grid-header-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_InlineError_ErrorHeader')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fth\\u003E\\u003C\\u002Ftr\\u003E\\u003C!--\\u002Fko--\\u003E\\u003C\\u002Fthead\\u003E\\u003Ctbody data-bind=\\\"foreach: inlineErrors\\\"\\u003E\\u003Ctr class=\\\"grid-row\\\"\\u003E\\u003C!-- ko foreach: $data.data--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003C!-- ko if: $data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"html: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C!-- ko if: !$data.isHtml--\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" data-bind=\\\"text: $data.value\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003C\\u002Ftd\\u003E\\u003C!-- \\u002Fko--\\u003E\\u003Ctd class=\\\"grid-cell\\\"\\u003E\\u003Cdiv class=\\\"grid-content-container\\\" role=\\\"alert\\\"\\u003E\\u003C!-- ko foreach: $data.combinedErrors --\\u003E\";\nif (errorColumnIsHtml) {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"html: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan data-bind=\\\"text: $data\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003Cbr\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Ftd\\u003E\\u003C\\u002Ftr\\u003E\\u003C\\u002Ftbody\\u003E\\u003C\\u002Ftable\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\" data-bind=\\\"visible: showErrors() && isCampaignAdGroupCopyPasteOperation()\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"html: completedWithErrorsBulkEditResultsString\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n};\npug_mixins[\"popupHelp\"] = pug_interp = function(popupId, ariaLabelContext, i18n){\nvar block = (this && this.block), attributes = (this && this.attributes) || {};\nvar templateString = (i18n && i18n.get && i18n.get('Click to learn more about {{item}}')) || (i18n && i18n.getString && i18n.getString('Click to learn more about {{item}}')) || null\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"helpbutton\\\"\"+\" type=\\\"helppopup\\\" role=\\\"button\\\"\"+pug.attr(\"topic\", popupId, true, true)+pug.attr(\"data-help\", true, true, true)+\" onclick=\\\"PopupController.PopupJsClick(this); event.stopPropagation();\\\" href=\\\"javascript:void(0);\\\"\"+pug.attr(\"aria-label\", templateString ? templateString.replace('{{item}}', ariaLabelContext) : ariaLabelContext, true, true)) + \"\\u003E\\u003C\\u002Fa\\u003E\";\n};\npug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003C!-- RSA Auto Assets settings--\\u003E\\u003Cdiv class=\\\"panel-heading\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\" data-bind=\\\"html: titleText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12 rsa-auto-assets-setting-container\\\"\\u003E\\u003Cdiv class=\\\"rsa-auto-assets-switch-container\\\"\\u003E\\u003Clabel class=\\\"checkbox-inline\\\"\\u003E\\u003Cinput class=\\\"rsa-auto-assets-switch\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: isRsaAutoAssetsSettingChecked\\\"\\u003E\\u003Cspan class=\\\"text\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CampaignSetting_RsaAutoAssets_Enable')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\npug_mixins[\"popupHelp\"]('pop_BA_RSA_AutoAssets', i18n.getString('CampaignSetting_RsaAutoAssets_Enable'), i18n);\npug_html = pug_html + \"\\u003C\\u002Flabel\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- Bulk edit progress--\\u003E\" + (null == (pug_interp = require(\"../status.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C!-- Bulk edit error grid--\\u003E\";\nvar campaignHeader = i18n.getString('BulkEdit_Campaign_EntityNameHeader')\npug_mixins[\"errorsGrid\"]([campaignHeader]);\npug_html = pug_html + \"\\u003C!-- Footer--\\u003E\" + (null == (pug_interp = require(\"../footer.pug\").call(this, locals)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, showStopButton) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel-body\\\" data-bind=\\\"visible: showProgress\\\" role=\\\"alert\\\"\\u003E\";\nvar link = '' + i18n.getString('BulkEdit_GoToBulkEditsPage') + ''\npug_html = pug_html + \"\\u003Cdiv data-bind=\\\"html: statusText\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulk-edit-progress-bar\\\"\\u003E\\u003Cdiv class=\\\"progress\\\"\\u003E\\u003Cdiv class=\\\"progress-bar\\\" data-bind=\\\"style:{width: completePercentage}, attr:{"aria-valuenow": completePercentage}\\\" role=\\\"progressbar\\\" aria-valuemin=\\\"0%\\\" aria-valuemax=\\\"100%\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"bulkeditlink\\\"\\u003E\" + (null == (pug_interp = i18n.getString('BulkEdit_RunInBackground_Description').replace('{0}', link)) ? \"\" : pug_interp) + \"\\u003C\\u002Fdiv\\u003E\\u003Cbutton class=\\\"btn btn-default\\\" id=\\\"runInBackground\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('BulkEdit_RunInBackground')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\nif (showStopButton) {\npug_html = pug_html + \"\\u003Cbutton class=\\\"btn btn-default\\\" id=\\\"stopCopyPaste\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Preview_Button_Stop')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"showStopButton\" in locals_for_with?locals_for_with.showStopButton:typeof showStopButton!==\"undefined\"?showStopButton:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv class=\\\"modal popup-container fade\\\" role=\\\"dialog\\\"\\u003E\\u003Cdiv class=\\\"popup-dialog\\\"\\u003E\\u003Cdiv class=\\\"popup-content center-block\\\" draggable=\\\"true\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;"],"names":["ROTATION_OPTIONS","Object","freeze","OPTIMIZED_FOR_CLICKS","ROTATE_ADS_EVENLY","ROTATION_OPTION_TO_TEXT","_defineProperty","_TL_","RotationItems","id","text","ValidatedAdRotation","_ref","value","field","disableOptions","i18n","useContext","I18nContext","_jsx","className","children","_jsxs","Stack","tokens","childrenGap","RadioGroupLite","validationProps","data","map","option","Radio","label","getString","disabled","MessageBar","intent","layout","MessageBarBody","defaultProps","AdRotationSection","rest","_objectWithoutProperties","_excluded","ValidatedPanel","_objectSpread","title","TextTitle","titleKey","details","AdRotation","icon","adRotationIcon","iconStyles","width","topicKey","attentionBeaconProps","getExtraProps","getPanelErrorProps","BudgetInput","budgetTitle","classes","showDropdown","legacyI18n","onBudgetInputValidate","onBudgetChange","validationKey","RANGE_STEP","schema","isCurrencyDisabled","onSelectCurrency","selectedCurrencyText","currencies","onRenderInlineHelp","onRenderCurrencyDropDown","inputClassName","showCurrencyOnly","useMemo","classNames","currencyText","displayCurrencySelection","dropdownContainer","inline","Dropdown","onSelect","DropdownToggle","DropdownMenu","_","itemValue","MenuItem","eventKey","currency","currencyLocalizationKey","_Fragment","horizontal","htmlFor","budgetDetailsContainer","budgetInputContainer","ValidationGroup","onValidate","Input","name","step","inputText","onChange","undefined","EstimatedMonthlyBudget","budgetMonthly","CompetitorSliderView","memo","props","budgetSuggestion","CompetitorBudgetLowerBound","CompetitorBudgetUpperBound","inlineHelpStyle","rawWidth","MinimumBudget","MaximumBudget","DailyBudget","getCompRangeWidth","rawLeft","getCompRangePosition","concat","left","textAlign","React","sliderOverlay","style","competitorHelpIndicator","competitorHelpText","iconButtonStyles","root","color","marginLeft","marginTop","marginRight","cancelIcon","iconName","CloseIconButton","closeButtonAriaLabel","onClick","IconButton","styles","iconProps","ariaLabel","headerTextStyles","mergeStyles","fontStyle","fontWeight","fontSize","lineHeight","Header","onCloseButtonClick","horizontalAlign","verticalAlign","marginBottom","buttonStyles","height","withCustomStyle","Component","ComponentWithStyles","DefaultButton","FluentDefaultButton","PrimaryButton","FluentPrimaryButton","redemptionStepStyles","position","backgroundColor","zIndex","top","right","bottom","cursor","minHeight","stepStyles","RedemptionStep","stepNumber","description","alt","src","couponDaysLeftStyles","DaysRemaining","diffDays","getDaysToExpiration","expirationDateString","expirationDate","Date","parse","today","now","diff","Math","abs","ceil","redemptionStepsStyles","couponTermsStyles","CouponDescription","coupon","steps","daysToExpiration","displayDaysLeft","stepIndex","rightHandButtonsStackTokens","Frontdoor","onNotInterested","onDismiss","onActivate","onRemindLater","couponLightboxTitle","displayRemindLater","descriptionStyles","NotInterested","couponDetailsUrl","Link","href","confirmationButtonStyles","RemindLater","onConfirm","Claimed","buildCouponCalloutStateKey","couponId","aid","getDaysFromNow","days","date","setDate","getDate","FAC_STATUS_ACTIVE","CCUIConstants","RecommendationAdoptionStatus","Active","CALLOUT_STATES","FRONTDOOR","NOT_INTERESTED","REMIND_LATER","CLAIMED","modalStyles","padding","overlayStyles","FacCalloutInternal","userPreferenceService","siteMap","legacyScope","legacyInstrumentation","scenarioName","refreshUserPreferencesCache","_ref$shouldHideForDay","shouldHideForDaysAfterDismiss","_useBoolean","useBoolean","_useBoolean2","_slicedToArray","isModalOpen","_useBoolean2$","showModal","setTrue","hideModal","setFalse","_useState","useState","_useState2","currentStep","setCurrentStep","logWithPrefix","useCallback","log","couponSteps","RecommendationIcon","CouponIcon","scope","ScopeContext","finalScope","_finalScope$values","values","uid","cid","URI","getRoutePathById","search","e","useEffect","rawData","Status","_useHideCalloutPrefer","_ref$scope","_ref$refreshUserPrefe","userPreferencesLoaded","setUserPreferencesLoaded","_useState3","_useState4","hideCalloutPreference","setHideCalloutPreference","_scope$values","instrumentation","InstrumentationContext","activity","createScenarioAndActivity","activityName","findAll","then","length","userPreferences","userPreference","upkey","resultAsJsonString","preferenceJson","JSON","decodeURIComponent","hideCouponCallout","SyntaxError","trace","setCalloutState","stateData","couponCalloutStateKey","stringify","create","unhideCallout","displayCouponCalloutData","hide","endDate","hideCallout","hideCouponCalloutData","hideCalloutForEver","hideCalloutFor7Days","hideCalloutFor14Days","isPreferenceSetToHidden","isAfterDismissEndDate","isDisplayCalloutQuery","displayQueryCallout","isCalloutVisible","isCalloutHidden","useHideCalloutPreference","hideForever","onNotInterestedFrontdoorClick","onRemindMeLaterFrontdoorClick","onRemindMeLaterClick","onActivateClick","onClaimedConfirmClick","onDismissClick","modalContent","Callout","Modal","isOpen","overlay","isBlocking","CalloutWithLock","withLock","force","FacCallout","withSiteMap","processorSet","basic","couponCalloutSharedKeyMap","FAC_Coupon_Banner_Title","Coupon_TermsAndConditions","Button_Close","Button_Confirm","Button_Cancel","Coupon_GotIt","Coupon_TagMessageNew","Coupon_TagFlyoutMessage","Coupon_OfferExpirationDateMessage","Coupon_LightboxTitleNew","Coupon_LightboxStepNumberNew","Coupon_LightboxStep3Title","Coupon_LightboxStep3Description","Coupon_LightboxStep3DescriptionNew","Coupon_Lightbox_LimitedTimeOffer","Coupon_Lightbox_LimitedTimeOffer_ActBy","GenericFACAdoptionStartErrorMessage","FACDepletedErrorMessage","Button_NotInterested","Button_ActivateNow","Button_RemindMeLater","Not_Interested_Title","Not_Interested_Description","Coupon_Page","RemindLater_Title","RemindLater_Description_Expiration","RemindLater_Description_Expiration_OneDay","RemindLater_Description_ActivationMessage_1","RemindLater_Description_ActivationMessageLink","RemindLater_Description_ActivationMessage_2","Button_Confirmation","Claimed_Title","Claimed_ConfirmationButton","Claimed_DontShowAgain","CloseButtonAria","couponCalloutShoppingKeyMap","Coupon_LightboxTitleNew_Shopping_Campaign","Summary_Card_Coupon_Title_Shopping_Campaign","Summary_Card_Coupon_Description_Title_Shopping_Campaign","Summary_Card_Coupon_Description_Shopping_Campaign","Summary_Card_Coupon_Tag_Message_Shopping_Campaign","Coupon_LightboxStep1Description_Shopping_Campaign","Coupon_LightboxStep2Description_Shopping_Campaign","Coupon_LightboxStep3Description_Shopping_Campaign","couponCalloutConversionTrackingKeyMap","Summary_Card_Coupon_Title_Conversion_Tracking","Summary_Card_Coupon_Description_Title_Conversion_Tracking","Summary_Card_Coupon_Description_Conversion_Tracking","Summary_Card_Coupon_Tag_Message_Conversion_Tracking","Coupon_LightboxStep1Description","Coupon_LightboxStep2Description","merchantcenterLink","location","origin","getFACShoppingCampaignSteps","ReactTemplate","model","link","template","ScheduledIcon","FACCalloutView","_Backbone$View","_classCallCheck","_callSuper","arguments","_inherits","_createClass","key","this","ReactDOM","el","_superPropGet","Backbone","EDM","require","resIdsPlugin","defineConstProperty","useODataCall","useODataCollection","useODataEntity","composeSearchString","module","exports","typesPlugin","schemaPlugin","options","get","object","path","defaultValue","sub","i","keyPath","isArray","has","compact","split","castPath","isObject","isUndefined","obj","defineProperty","enumerable","writable","defineProducedProperty","factory","apply","configurable","defineProducedPropertyOnClass","Class","random","symbol","prototype","hasOwnProperty","call","defineComputedProperty","getter","mixin","getOwnPropertyDescriptor","Namespace","parent","segments","reduce","ns","seg","resolve","pop","Error","join","worker","each","Registry","rootNamespace","qualifiedNames","Map","namespace","realName","isObjectWithName","register","set","last","_require2","url","edm","resourceIdentifiers","Navigation","source","_toConsumableArray","toJSON","toSelfJSON","PropertyNavigation","_Navigation","_ref2","_this","property","type","TypeResID","navigationProperties","ResourceIdentifier","navigation","CallableNavigation","_Navigation2","_ref3","_this2","callable","defineCallableOn","resID","callableTypes","callableName","actions","functions","CastNavigation","_Navigation3","_ref4","_this3","_ref4$name","chain","navigationName","parameters","entityType","types","CollectionType","collectionType","WithKeyNavigation","_Navigation4","_ref5","_this4","isString","keyType","result","match","elementType","CallNavigation","_Navigation5","_ref6","_this5","_ref6$parameters","ActionType","returnType","json","entitySet","item","_entitySet","CollectionResourceIdentifier","_ResourceIdentifier","resourceIdentifierForType","DefaultBase","AccessorType","_Base","baseType","PrimitiveType","ObjectType","ObjectTypeResID","defineOn","CollectionTypeResID","EntityType","CallableType","CallableTypeResID","def","typeName","_require3","getSchemaBaseTypeName","$$ODataExtension","clrTypeBase","BaseType","$ref","getSchemaKey","Key","getSchemaNavigationPropertyNames","NavigationProperty","_ref$schemas","schemas","_ref$namespace","_edm$types","ComplexType","OneOfType","FunctionType","getSchemaFullName","possiblePath","$$ref","replace","getQualifiedName","Name","getSchemaName","getTypeName","dependencies","typeInfo","collectionTypeName","items","oneOf","oneOfTypeName","enum","push","defineCallableOnType","acts","funcs","qualifiedName","forEntityType","getCallableTypeName","keys","mapObject","Parameter","parameter","returnTypeName","ReturnType","defineSchemaType","properties","baseTypeName","navigationPropertyNames","entityActions","entityFunctions","collCallable","Action","Function","string","String","integer","Number","number","datetime","boolean","Boolean","null","jsType","index","ONEOF_TYPE_PREFIX","COLLECTION_TYPE_POSTFIX","oneOfTypes","resolveType","postfix","slice","str","removePostfix","indexOf","typeNames","substr","Property","Type","getNamespace","getShortName","_Type","_Type2","sortedNames","resolveQualifiedName","sort","compileProperties","_Type3","_ref7","_ref7$navigationPrope","pick","propertyName","contains","_this$navigationPrope","extend","addProperties","_ObjectType","_ObjectType2","_ref8","keyProperty","_ObjectType3","_ref9","_this6","elementTypeName","compileParameters","_ref10","_Type4","_ref11","_this7","_CallableType","_ref12","_CallableType2","_ref13","first","_len","frags","Array","_key","frag","isEmpty","eSlash","test","sSlash","substring","queryString","parseSearch","variables","edmEntity","isColl","cursorIndex","initialSearch","omit","count","skip","parsedSearch","searchCompact","x","isNull","parseOrderBy","orderby","$orderby","v","toLowerCase","lowerCaseOrderValue","edmResource","filter","select","searchString","nonODataSearch","where","$filter","parseFilter","$top","parseTop","$skip","parseSkip","$count","parseCount","resource","parsed","$select","$expand","parseSelect","$search","parseSearchString","_require","useFetch","useDataRefId","useSpecs","specs","sideEffectFn","dataRefId","actionSpec","usePagination","useMutation","config","collSpecs","fetchSpec","fetch","mutationSpec","mutation","destroySpec","destroy","addSpec","add","paginationConfig","fetchVariables","_usePagination","_usePagination2","methods","mutateFn","destroyFn","createFn","update","newData","_len2","_key2","_len3","_key3","loadMore","hasMore","isLoading","entitySpecs","_useFetch","_useFetch2","error","selectedSpecs","EnvironmentContext","MAX_REQUEST_BATCH_SIZE","FETCH_INTERVAL","INIT_MIDDLEWARE_STATES","isResponseFromStore","batchRequests","environment","batchSize","requests","request","removeRequest","pendingRequests","_loop","req","shift","requestContract","spec","componentName","middlewareStates","responseContract","verb","uriFactoryFn","headerFactoryFn","payloadFactoryFn","uri","header","payload","getRequestor","requestor","execute","onComplete","response","onGetResponse","onError","onGetError","executeRequests","useEnvironmentInitialization","timer","useRef","subscribe","current","clearTimeout","requestCount","setTimeout","DataFetcher","environments","env","Provider","Subject","observers","Set","observer","delete","action","args","forEach","DataRef","_Subject","idRefs","status","previousVariables","lastUpdateTimestamp","includes","bind","onUpdate","updateStatus","clearError","onEntitiesCreated","onEntitiesDeleted","reset","UiComponents","updateDevTools","window","__OVERREACT_DEVTOOLS__","onDataRefChange","components","ids","notify","newStatus","updatedIds","DataNode","dataRefs","getDataRef","dataRefIdsUpdate","entitiesCreated","entitiesDeleted","recordGroup","k","toJson","EXTENSION_NAME","createDataNode","schemaNode","store","dataNode","getRecordGroup","modelName","setExtension","getDataNode","getExtension","Record","setValue","getValue","setData","getData","OVERREACT_ID_FIELD_NAME","createOverreactId","parentId","parentType","RecordGroup","schemaType","records","addOrUpdateRecords","getRecords","getRecordsByEntityKeys","dataId","findIndex","r","recordId","newRecord","dataItems","updatedDataIDs","addOrUpdateRecordInternal","notifyUpdate","record","find","keySelector","onRecordGroupChange","storeId","uniqueId","Store","recordGroups","preemptiveRecords","getStore","getSchemaNode","getRecordsById","getRecordsByEntityKey","getRecordsFromResponseDataArray","dataArray","d","dataIds","updateDataRefWithIds","dataRef","clear","specTypes","ADD","DELETE","FETCH","MUTATION","PAGINATION","REFETCH","responseTypes","ENTITY","COLL","NONE","DEFAULT_STORE_EXPIRATION_DURATION","FetchPolicy","StoreOnly","NetworkOnly","StoreOrNetwork","NetworkOrStore","IsNetworkPolicy","fetchPolicy","IsStorePolicy","IsStoreSecondaryPolicy","getDataFromStore","dataInStore","responseType","shouldForceNetwork","storeExpirationDuration","currentTimestamp","requestFetchPolicy","specType","_ref2$status","_ref2$status2","updateDataRefStatus","createFetchPolicyMiddleware","fetchPolicyMiddlewareOptions","_ref$fetchPolicy","_ref$cacheExpirationD","cacheExpirationDuration","next","_asyncToGenerator","_regeneratorRuntime","mark","_callee","fetchPolicyInReq","isStoreSecondaryPolicy","isNetworkPolicy","isStorePolicy","isForceNetwork","res","wrap","_context","prev","fetchPolicyOption","fetchPolicyInEnv","abrupt","catch","sent","stop","_x","middlewareTypes","ERROR","FETCH_POLICY","INSTRUMENTATION","executeRequestor","wrappedRequestor","executeRequest","WrappedRequestor","headers","createErrorMiddleware","errorMiddlewareOptions","_ref$errorProcessor","errorProcessor","_ref$errorConvertor","errorConvertor","envErrorConverter","_ref3$spec","_ref3$spec2$responseC","errorConvertFn","processedError","getTimestamp","useDeepMemo","ref","errorToString","stringError","toString","stringifiedJson","defaultStubOptions","serverErrorCodes","detectError","respData","pass","Errors","Code","message","Message","impactUser","getServerPerf","getResponseHeader","perfTimings","perf","beforeSendHandler","instrumentationContext","perfFunc","shouldAddHeaders","requestStartTime","pageTrackingId","stubOptions","lcid","requestId","api","isMethodEnter","httpMethod","timeTaken","successHandler","errorFunc","requestTimeTaken","requestResult","statusCode","errorHandler","isUserError","traceFunc","responseJSON","errMsg","errorMappers","createInstrumentationMiddleware","instrumentationOptions","_ref$loggerFunc","loggerFunc","_ref$loggerFunc2","_ref$loggerFunc2$trac","_ref$loggerFunc2$erro","_ref$loggerFunc2$perf","errorMapper","check","_req$headers","_req$headers2$xMsRe","uuidv4","Environment","networkRequestor","middlewares","tag","requestQueue","dataFetcherSubscriber","notifyObservers","pushRequest","unsubscribe","getSchema","dataRefIdPool","additionalParams","requestorWithDevTools","_window$__OVERREACT_D","onRequest","responseValue","ex","exception","sink","baseMiddlewares","instrumentationMiddleware","compose","wrappedRequest","requestWithMiddleware","err","notifyCb","splice","useEnvironment","environmentLookupFn","_useContext","_useContext2","specificEnv","requestVerbs","GET","POST","PATCH","PUT","RequestContract","dataPath","parentKeySelector","insert","createRequestContract","getSideEffectCacheStoreHelpers","schemaToModelMapping","tryMergeItemsToCacheStore","schemaName","itemKeySelector","parentSchemaName","keysInCache","itemsToAddWithOverreactId","overreactId","itemsMerged","itemToMerge","tryDeleteItemsInCacheStore","keysToDelete","recordsIdsToRemove","deleteRecords","ResponseContract","processorFn","selectKey","applyId","entity","parentNode","processedResponse","context","locator","descriptor","order","dataWithOverreactId","cacheStoreHelper","fetchResponseHandler","dataCb","mutationResponseHandler","refetchResponseHandler","errorCb","errorResponseHandler","createResponseContract","createSpec","SchemaNode","modelSchema","childNodes","extensions","append","node","ext","c","Schema","modelGetter","modelToSchemaMapping","buildModelToSchemaMap","getSchemaNames","parts","currentNode","partName","existingPathFound","j","t","newNode","OverreactRequest","assign","getCacheIds","lookupFn","cacheHit","getDataFromRecords","getLookupCacheFn","lookupCacheFn","varKeySelector","dataKeySelector","useComponent","stacks","stack","funcName","trim","startsWith","equalityFn","oldData","memoedConfig","requestRequired","currentData","currentError","_useReducer","useReducer","forceRender","postponeRead","lookupCacheByVariables","_ref2$options","dataCallback","registerComponent","errorCallback","_dataRef$status","dataObserver","overreactIds","fn","deps","isFirst","prevDeps","isSame","every","useDebugValue","useDeepEqualEffect","getMergedConfig","newInstance","isFunction","getRawData","getDataWithOverreactIdFromRecords","mutateRecords","recordsBeforeMutation","newRecords","addRecords","replacePreemptiveRecords","removePreemptiveRecords","recordsBeforeMutationRef","mergedConfig","preemptiveResponseFn","dataBeforeWithId","dataWithId","mutationData","preemptiveData","_getRecordsByEntityKe","addPreemptiveRecords","useRefetch","_ref2$onError","refetchFn","_ref3$options","getRecordsDataInDataRef","getRecordsDataById","_memoedConfig$strictM","strictMode","mergeNewRecords","refId","loadingId","setIsLoading","_useState5","_useState6","setError","resetInternalState","setInternalStateOnResponse","loadMoreCallback","__","recordsData","onErrorCallback","newIds","recordsToShow","storeRecordsToShow","requestConfig","pageSize","_fetchVariables$optio","requestVars","myId","generateNewDataRefId","dataRefIdRef","usePromisify","Promise","reject","mergedArgs","useCleanAllCache","allRecordGroups","allRecords","allRecordsIdsToRemove","ErrorReason","reason","Text","variant","ExclusionErrors","errors","Value","display","textStyles","IpExclusions","exclusions","placeholder","handleExclusionInputChange","exclusionList","setExclusionList","handleExclusionTextFieldChange","input","target","HelpButton","topic","TextField","multiline","rows","resizable","getStyles","paddingLeft","SiteExclusionNote","level","useDefaultStyles","showAWFWarning","PermissionsContext","dynamic","AWFWebExclusionsWarning","MessageBarTitle","ScopeLevel","AdGroup","size","rel","textFieldStyles","fieldGroup","borderColor","SiteExclusions","readOnlyExclusions","readOnly","WebExclusions","showSiteExclusion","showIPExclusion","showAccordion","siteInputProps","ipInputProps","exclusionData","setExclusionsCallback","siteExclusions","Campaign","campaignExclusions","adgroupExclusions","campaignReadOnlySiteExclusions","ipExclusions","hasSiteExclusionsErrors","hasIpExclusionsErrors","siteExclusionsError","NegativeSitesResult","ipExclusionsError","NegativeIPsResult","siteExclusionsInput","ipExclusionsInput","Accordion","multiple","collapsible","AccordionItem","AccordionHeader","AccordionPanel","entitySeparator","formatInvalidEntities","InvalidEntities","ValidEntities","getExclusionCount","getSummary","siteExclusionsCount","ipExclusionsCount","adgroupLevelExclusionCount","campaignLevelExclusionCount","webExclusionPropertyVal","propertyIs","ServerValidatedWebExclusions","withAttentionBeacon","withFormError","showError","Adapters","FormErrorBeaconAdapter","ValidationBeaconAdapter","WebExclusionsWithValidation","withCustomValidation","updateValidation","parentData","exclusionsData","keyName","patchExclusions","ServerValidatedWebExclusionsWithValidation","WebExclusionsSection","expand","image","actuationProps","expandKey","formErrorProps","withProps","extraProps","WrappedComponent","HoC","finalProps","displayName","getDisplayName","hoistNonReactStatics","defaultGetStyles","withRawStyles","StyledComponent","withTheme","theme","_ref2$components","_ref2$core","core","useRawStyles","useTheme","_ref3$components","_ref3$core","maxAdTitleLength","maxAdDescriptionLength","maxTextDisplayUrlLength","maxUrlLength","maxAppStoreIdLength","maxEditorialAppealJustificationLength","globalLegacyI18n","mapEditorialErrorCode","apiErrorCode","rawErrorCode","_mapSingleCountryErrors","countryErrors","countryName","countryKey","RawEditorialErrorCode","_mapSingleEditorialError","mapCampaignApiErrorCode","errorCode","i18nArgs","getStringOrDefault","mapEditorialErrors","flatten","grouppedErrors","pluck","mapCampaignApiErrorCodeShort","isValidString","build","pattern","param","list","encodeURIComponent","RegExp","reg","exec","isOptional","defaults","schedule","task","asyncInterface","timeout","cancellationToken","overlapping","Task","start","isRunning","_scheduleNext","_iteration","previous","completed","iteration","_startTask","_scheduleTimeout","isAwait","isOverlapped","callback","_callback","token","trigger","stopTask","_processTimeout","backbone","createTask","run","app","interpolate","templateConfig","urlTmpls","getJobs","getSingleJob","getJobResults","filterSuffix","getHistory","take","odata","mapJobObject","total","errorResponseBody","alert","alertHelper","migrationMsg","job","CreationTime","CompletionTime","getJobsByIds","jobIds","jobsData","Id","jobModels","singleModel","jobId","accountInUrl","attributes","Entity","jobData","statusFilter","resultsStatus","OnlyErrors","OnlySuccessful","BaseModel","$","BatchAction","Actions","Poller","_options","successiveFailureCount","recurringTask","scheduler","_taskIteration","on","_successHandler","_errorHandler","maxSuccessiveFailureCount","_jobModels","_getPendingJobs","repository","eventArgs","self","success","bulkEditStatus","inProgress","pendingStart","pendingJobModels","jobs","models","completedWithErrors","failed","cacheManager","updateContext","poller","JobModel","osd","activePollers","AppEventDelegator","_AppEventDelegator","vNextCacheNotify","skipEntityCallPaths","successEmitter","onProgressNotification","currentStatus","totalCount","successCount","errorCount","ko_model","getProgressText","statusText","onJobSuccess","refresh","refreshGrid","completedWithErrorsBulkEditResultsString","onJobFailure","showErrors","showButtonBar","showCloseButton","gridHelper","grid","operationCancelled","handleUserError","legacy_jquery","ajaxError","initialize","StatusPoller","isSkipEntityCache","onOperationSuccess","onOperationFailure","instrumentationActivity","eventDelegator","render","$el","html","PageContext","viewModel","isForVNext","ko","click","submitJob","previewChanges","cancelJob","hideProgress","hideView","stopCopyPaste","attr","firstVisibleEnabledElement","focus","events","legacyRouter","navigateToRoute","empty","onBulkEditViewHide","cacheService","showPreview","CurrentCustomer","CurrentAccount","getCurrentFilter","filters","idBased","ignoreRowSelection","allPageSelected","filterService","pgridPlugins","filterServiceFilters","getCombinedFilter","FilterExpressions","filterMetadataToLegacy","filterState","pluginFilters","getAllFilters","getFilters","getIdFilter","additionalFilterExpressions","getCustomFilter","customFilter","getFilterURLParam","filterConverter","convertToURLParam","getCurrentSelection","simulateResults","query","campaignId","adGroupId","dateRangeQs","getCampaignId","getAdGroupId","getDateRangeQuery","getUrlParameter","appState","dateRange","ui","Controls","DateRangeFilter","getParsedDateRange","App","state","getMonth","getFullYear","end","getDateRangeQueryArgs","getPageSize","getCurrentPage","getSortInfo","addendum","filterURLParam","onValidateFailure","makeChanges","isValuesArrayEmpty","filterExpressions","Values","hasSelectedEntities","validate","isDisabled","unset","getSelectedEntityIds","accountValueInUrl","_scope","setAction","currentFilter","logger","logMessage","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","gridFilterSerializer","toDescription","clearErrorSummary","actionMap","registerActionMapExtension","updateSummaryDataContext","save","entityName","element","AssociationList","ExclusionList","results","formatPreviewResults","currentPageChangeCount","showProgress","showCheckBoxes","showPanel","code","msg","appendErrorSummary","withUiBlock","asLoggingStart","setting","ACTIVITYNAME","BulkEditSessions","SCENARIONAME","visibility","maxInlineErrorCount","done","combinedErrors","localizeErrors","formatErrors","inlineErrors","off","showErrorGrid","toastErrors","fail","CurrentTabId","getContext","toast","userErrors","customColumnErrors","userError","ErrorCode","gridView","views","alertCenter","toastWarning","updateSelectedEntityCount","selectedEntityCount","entityResult","apiErrorMessages","editorialErrors","EditorialErrors","transformErrors","editorialErrorMessages","selectedRowIds","getSelectedRowIds","i18nAmdLoader","OUT_OF_RANGE","INVALID","budgetType","actionOptions","Increase","Decrease","unitOptions","AccountCurrencyCode","budgetTypeOptions","regEx","validateNumber","usePercentValidation","budgetValidation","isValidDecimal","minValue","maxValue","budgetRange","getBudgetRange","Daily","Min","MAX_VALUE","Max","Lifetime","parseDecimal","Base","selectedAction","limitValueErrorMessage","errorMessage","budgetTypes","selectedBudget","newBudgetType","isDailyBudget","isLifetimeBudget","getLifetimeBudgetLabel","showSetPanel","showChangeByPanel","showIncreaseBudgetHelp","units","selectedUnit","budget","budgetValue","read","write","owner","limit","limitValue","useLimitValue","limitBudgetLabelText","titleText","selectedUnitPreferenceName","CurrentUser","formatBudget","EntityKey","isHtml","Changes","decimalNumber","fromFloatToString","OriginalValue","NewValue","view","BaseView","bulkEditCampaignBudget","ChangeBudgetViewModel","Persistence","helpDirective","fromLocalToFloat","budgetAmount","numericActionTypes","setAmount","changeByPercent","changeByAmount","Limit","filterHelper","SelectedColumn","SelectedOperator","dailyAccelerated","dailyStandard","lifetimeBudgetStandard","BudgetRange","DailyRange","FloorValue","CeilingValue","bulkEditCampaignCashbackBudget","ChangeCashbackBudgetViewModel","formatBid","newValueText","newValue","fromFloatToPercentString","originalValue","isCampaignBulkEdit","cashbackPercentDescription","numericActionType","getCashbackPercentValueByAction","campaignStatus","Deleted","formatStatus","StatusViewModel","bulkEditUrl","isCrossPageAllSelected","alertId","actionLink","actionLinkTemplate","show","dismissible","DestinationParentEntityIds","EditCopy","Description","disableKeywordDestinationUrl","Permissions","IsKeywordDestinationURLDisabled","titleStrings","ViewModel","startDatePicker","endDatePicker","contentType","includeBids","includeDestinationURLs","pauseAfterPasting","showPreviewButton","actionButtonText","adjustStartAndEndDates","endDateModification","isCampaignAdGroupCopyPasteOperation","content","culture","format","getState","selectedDate","validateTab","pasteOptions","flag","tabs","secondary","progress","adTemplate","keywordTemplate","campaignTemplate","adGroupTemplate","assetGroupTemplate","clipboard","formatCampaignAdGroup","campaign","adgroup","perfMarker","datePicker","minDate","nextYear","setFullYear","CopyPasteViewModel","willRender","tmp","getChild","that","enable","shouldEnable","CurrentAdGroup","setActionWithinAdGroup","CurrentCampaign","setActionOutsideAdGroup","setActionWithAdGroupId","setActionWithDates","adgroupId","StartDate","EndDate","EndDateAction","tab","entityKey","secondaryKey","copyFromCampaign","copyFromAdGroup","pasteToCampaign","pasteToAdGroup","change","isCampaignsTab","getClipboardName","RangeStartDate","toISOString","RangeEndDate","tabIdToClipboardType","Campaigns","Adgroups","Ads","Keywords","Assetgroups","strings","wrongTab","wrongType","copyOneSuccess_OldUI","copyNSuccess_OldUI","copyOneSuccess_NewUI","copyNSuccess_NewUI","FilterHelper","isValid","expectedType","copy","copyPerfMarker","createChild","willInit","selectedItemsLength","getSelectedRowsCount","selectedRows","getSelectedRows","CampaignType","Toast","LocalStorage","getTotalRowsCount","getFiltersIncludeWaterfall","IsCampaignAdGroupCopyPasteEnabled","paste","pastePerfMarker","CopyPasteView","CopyPasteModel","getIdFilterNoEntityType","getProductGroupIdFilter","isOnAdGroupLevel","pageContext","completeIds","row","idGroups","lastGroup","compositeIds","group","hasInvalidParam","CampaignId","AdGroupId","getPerformanceTargetIdFilter","getAdGroupIdFilterExcludingContentOnly","Medium","getCampaignIdFilter","getAudienceIdFilter","shouldExclude","_inlineErrors","errorObject","errorKey","deserialize","getId","parseInt","getChanged","stats","changed","after","getByScope","labels","Account","Customer","Scope","_stats","_entity","_loadDirectlyLinkedAccounts","loadDirectlyLinkedAccounts","_isManagementRequest","isManagementRequest","Model","getSelectionScope","instrumentationSettings","LabelAssociation","renderBulkEditJobView","added","removed","currentCustomerId","getAdded","getRemoved","addedByScope","removedByScope","selectionInfo","allPages","RequestProperties","settingView","entityHeaderName","_settingView","allowedEntities","parseType","matches","biddingStrategyType","isBulkEdit","i18nNewDesign","campaignType","campaignSubType","getCampaignTypeGlobalFilter","changeBiddingStrategyViewModel","safeJSON","originalIBS","originalPBS","isRsaAutoAssetsSettingChecked","SearchString","Options","completePercentage","floor","errorCountString","errorCountLinkText","changeText","i18nAudience","SetAmount","cashbackPercent","cashbackPercentValue","doesIncludeExcludeItems","doesIncludeExcludeItemsText","remove","noCashback","POUtils","from","params","from_version","$format","$inlinecount","imagePath","enums","alertEntity","none","import","migration","budgetOpportunity","keywordOpportunity","disapproved","maintenance","accountSuspended","introBingAdsforioS","incompatibleBrowsers","adBlockWarning","productsLimitation","alertType","info","warn","accountStatus","creditHold","lockedForUpdate","pendingPaymentInstrument","draft","active","inActive","deleted","proposed","pendingCreditCheck","noHold","soldToOnly","creditWarning","hold","locked","noLock","userPaused","suspended","writeOff","paused","taxOnHold","userHold","accountInactiveReason","notSet","pausedDueToSystemIssue","pausedZeroBalance","pausedNoValidiO","processing","pendingPaymentMethod","pendingNewCustomer","inactive","handler","event","PopupController","PopupJsClick","stopPropagation","$scope","jquery","editBudget","fieldId","combinedBudget","editor","BudgetAmount","val","SimplifiedBudgetLimitType","getBudget","control","currentValue","dn","fromLocalToStringStrict","convertDateToStandardFormat","dateString","dateUtils","toKendo","selectedColumn","popOption","PeriodComparisonOption","changePercent","popPrefix","filterMetadata","filterExpression","operator","category","column","convertToPoPField","opr","subExpressions","valueItem","decimal","logic","convertForLambdaExpression","indexToDelete","lambdaMappedResult","partialUrl","columnName","mapToShorterVersion","secondLogic","mappedOperatorAndValue","lambdaExpressionMapping","convert","filterExpressionsCopy","lamdaExpressionUrlPart","odata_params","kendo","transports","parameterMap","odata_4","expression","container","popupContentContainer","containerSelector","contentSelector","dialogSelector","blocked","drag_start","originalEvent","dataTransfer","clientX","clientY","drag_over","preventDefault","draggable","draggableItem","draggableContainer","eventStart","moveOnYAxis","moveOnXAxis","originOffset","offset","drop","bindDraggable","preparePopupContainer","oldBlocker","Template","insertBefore","document","unbind","closePopupByClick","removeClass","addClass","$target","closest","closePopup","uiBlocker","unblock","renderHtml","child","css","defaultHeight","close","block","resizeBlockingImg","showLoadingPanel","IncreaseBid","DecreaseBid","BestBid","FirstPageBid","ExcludeBid","excludeBid","All","monthly","Paused","Suspended","InProgress","EnumPaused","EnumBudgetPaused","EnumBudgetUserPaused","cb","once","go","gridDom","unbindRowSelection","rowSelectionChanged","selectedKeys","crossPageSelectAll","isAllSelected","totalCountRows","getTotalRecordCount","selectedItems","getSelectedRowItems","deselectAll","toggleAllRows","pagination","pageNumber","getColumnValue","rowId","itemWithKey","sortParams","sortInfo","ColumnId","Direction","direction","hideToolbar","toolbar","gridToolbarGroup","hideAllToolbars","showToolbar","showAllToolbars","hideGroupMenu","loadPage","addTargetedTriggerFunc","triggerId","featureName","areaName","targetId","_userVoice","UserVoice","account","AccountNumber","ticket_custom_fields","navigator","userAgent","smartvote_enabled","screenshot_enabled","contact_menu_label","contact_title","contact_message_placeholder","contact_skip_instant_answers_button","contact_details_title","contact_submit_button","contact_success_title","contact_success_body","email_address_label","email_address_placeholder","mode","addTrigger","addTargetedTrigger","pug","locals","pug_interp","pug_html","locals_for_with","escape","pug_mixins","columns","$$obj","pug_index0","$$l","errorColumnIsHtml","pug_index1","pageTitle","isNewAudienceEnabled","header1","header2","header3","header5","header6","header7","popupId","ariaLabelContext","templateString","entityNameHeader","copiedHeader","pastedHeader","campaignHeader","showStopButton"],"sourceRoot":""}