{"version":3,"file":"app.b9ba06c4f89f32a2.js","mappings":"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AAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,SAC/D,GAEJI,GAAmB,CAAC,IAAIJ,WAAW,CAC/B,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,EAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAC/D,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,OAAS,IAC/D,GACJK,GAA6B,SAAUzpD,GAEvC,SAASypD,EAAY53B,EAAQi3B,GACzB,IAAI7oD,EAAQD,EAAO9C,KAAKY,KAAMgrD,IAAgBhrD,KAC9CmC,EAAM4xB,OAASA,EACf,IAAI63B,EAAM73B,EAAOo1B,UACb0C,EAAM93B,EAAOo1B,UACjB,IAAa,IAATyC,IAAuB,IAATC,EACd,MAAM,IAAI5oD,MAAM,mCAAqC2oD,EAAM,KAAOC,GAEtE,GAAqB,IAAV,GAAND,GACD,MAAM,IAAI3oD,MAAM,+CAAiD2oD,EAAM,KAAOC,GAElF,KAAMD,GAAO,GAAKC,GAAO,IAAO,EAC5B,MAAM,IAAI5oD,MAAM,+BAAiC2oD,EAAM,KAAOC,GAElE,GAAU,GAANA,EACA,MAAM,IAAI5oD,MAAM,kCAAoC2oD,EAAM,KAAOC,GAIrE,OAFA1pD,EAAM2pD,SAAW,EACjB3pD,EAAM4pD,QAAU,EACT5pD,CACX,CA0OA,OA/PA6gB,GAAU2oC,EAAazpD,GAsBvBypD,EAAY7tD,UAAU0sD,UAAY,WAC9B,IAAItjC,EACAnB,EACAkB,EAAMjnB,KAAK+zB,OAEXi4B,EAAMhsD,KAAKisD,QAAQ,GAKvB,GAJU,EAAND,IACAhsD,KAAKsqD,KAAM,GAGH,KADZ0B,IAAQ,GACR,CA6CA,IAAIE,EACAC,EACJ,GAAY,IAARH,EAEAE,EAAeT,GACfU,EAAgBT,OAEf,IAAY,IAARM,EAkDL,MAAM,IAAI/oD,MAAM,sCAhDhB,IAAImpD,EAAcpsD,KAAKisD,QAAQ,GAAK,IAChCI,EAAersD,KAAKisD,QAAQ,GAAK,EACjCK,EAAkBtsD,KAAKisD,QAAQ,GAAK,EAEpCM,EAAqB,IAAIlnC,WAAWgmC,GAAeluD,QACnDD,OAAI,EACR,IAAKA,EAAI,EAAGA,EAAIovD,IAAmBpvD,EAC/BqvD,EAAmBlB,GAAenuD,IAAM8C,KAAKisD,QAAQ,GAEzD,IAAIO,EAAiBxsD,KAAKysD,qBAAqBF,GAE/CxmC,EAAM,EACN7oB,EAAI,EAMJ,IALA,IAAIwvD,EAAQN,EAAcC,EACtBM,EAAc,IAAItnC,WAAWqnC,GAC7BE,OAAa,EACbC,OAAa,EACbC,OAAO,EACJ5vD,EAAIwvD,GAAO,CACd,IAAIhmC,EAAO1mB,KAAK+sD,QAAQP,GACxB,GAAa,KAAT9lC,EACAkmC,EAAa,EACbC,EAAa,EACbC,EAAO/mC,OAEN,GAAa,KAATW,EACLkmC,EAAa,EACbC,EAAa,EACbC,EAAO/mC,EAAM,MAEZ,IAAa,KAATW,EAKJ,CACDimC,EAAYzvD,KAAO6oB,EAAMW,EACzB,QACJ,CAPIkmC,EAAa,EACbC,EAAa,GACbC,EAAO/mC,EAAM,CAKjB,CAEA,IADA,IAAIinC,EAAehtD,KAAKisD,QAAQW,GAAcC,EACvCG,KAAiB,GACpBL,EAAYzvD,KAAO4vD,CAE3B,CACAZ,EAAelsD,KAAKysD,qBAAqBE,EAAYjD,SAAS,EAAG0C,IACjED,EAAgBnsD,KAAKysD,qBAAqBE,EAAYjD,SAAS0C,EAAaM,GAIhF,CAIA,IAFA,IAAIO,GADJ/lC,EAASlnB,KAAKknB,QACOA,EAAO/pB,OAAS,EACjCqtB,EAAMxqB,KAAK8lB,eACF,CACT,IAAIonC,EAAQltD,KAAK+sD,QAAQb,GACzB,GAAIgB,EAAQ,IACJ1iC,EAAM,GAAKyiC,IAEXA,GADA/lC,EAASlnB,KAAKyqD,aAAajgC,EAAM,IAClBrtB,QAEnB+pB,EAAOsD,KAAS0iC,MALpB,CAQA,GAAc,MAAVA,EAEA,YADAltD,KAAK8lB,aAAe0E,GAKxB,IAAI2iC,GADJD,EAAQ3B,GADR2B,GAAS,OAEY,GACjBC,EAAQ,IACRA,EAAQntD,KAAKisD,QAAQkB,IAEzBpnC,GAAe,MAARmnC,GAAkBC,EACzBD,EAAQltD,KAAK+sD,QAAQZ,IAErBgB,GADAD,EAAQ1B,GAAW0B,KACF,IACL,IACRC,EAAQntD,KAAKisD,QAAQkB,IAEzB,IAAInH,GAAgB,MAARkH,GAAkBC,EAC1B3iC,EAAMzE,GAAOknC,IAEbA,GADA/lC,EAASlnB,KAAKyqD,aAAajgC,EAAMzE,IAClB5oB,QAEnB,IAAK,IAAI4nB,EAAI,EAAGA,EAAIgB,IAAOhB,IAAKyF,EAC5BtD,EAAOsD,GAAOtD,EAAOsD,EAAMw7B,EAxB/B,CA0BJ,CAlGA,KA5CA,CAEI,IAAIzgD,OAAI,EACR,IAA6B,KAAxBA,EAAI0hB,EAAIkiC,WACT,MAAM,IAAIlmD,MAAM,oCAEpB,IAAImqD,EAAW7nD,EACf,IAA6B,KAAxBA,EAAI0hB,EAAIkiC,WACT,MAAM,IAAIlmD,MAAM,oCAGpB,GADAmqD,GAAY7nD,GAAK,GACY,KAAxBA,EAAI0hB,EAAIkiC,WACT,MAAM,IAAIlmD,MAAM,oCAEpB,IAAIoqD,EAAQ9nD,EACZ,IAA6B,KAAxBA,EAAI0hB,EAAIkiC,WACT,MAAM,IAAIlmD,MAAM,oCAGpB,IADAoqD,GAAS9nD,GAAK,MACa,OAAX6nD,KAAoC,IAAbA,GAA4B,IAAVC,GAErD,MAAM,IAAIpqD,MAAM,iDAEpBjD,KAAK+rD,QAAU,EACf/rD,KAAK8rD,SAAW,EAChB,IAAIhmC,EAAe9lB,KAAK8lB,aACxBoB,EAASlnB,KAAKyqD,aAAa3kC,EAAesnC,GAC1C,IAAIlE,EAAMpjC,EAAesnC,EAEzB,GADAptD,KAAK8lB,aAAeojC,EACH,IAAbkE,GACwB,IAApBnmC,EAAI2iC,aACJ5pD,KAAKsqD,KAAM,QAIf,IAAK,IAAIhnC,EAAIwC,EAAcxC,EAAI4lC,IAAO5lC,EAAG,CACrC,IAA6B,KAAxB/d,EAAI0hB,EAAIkiC,WAAmB,CAC5BnpD,KAAKsqD,KAAM,EACX,KACJ,CACApjC,EAAO5D,GAAK/d,CAChB,CAGR,CAmGJ,EACAomD,EAAY7tD,UAAUmuD,QAAU,SAAUqB,GAKtC,IAJA,IAGI/nD,EAHA0hB,EAAMjnB,KAAK+zB,OACX+3B,EAAW9rD,KAAK8rD,SAChBC,EAAU/rD,KAAK+rD,QAEZD,EAAWwB,GAAM,CACpB,IAA6B,KAAxB/nD,EAAI0hB,EAAIkiC,WACT,MAAM,IAAIlmD,MAAM,gCAEpB8oD,GAAWxmD,GAAKumD,EAChBA,GAAY,CAChB,CAIA,OAHAvmD,EAAIwmD,GAAY,GAAKuB,GAAQ,EAC7BttD,KAAK+rD,QAAUA,GAAWuB,EAC1BttD,KAAK8rD,SAAWA,GAAYwB,EACrB/nD,CACX,EACAomD,EAAY7tD,UAAUivD,QAAU,SAAUxI,GAOtC,IANA,IAKIh/C,EALA0hB,EAAMjnB,KAAK+zB,OACX24B,EAAQnI,EAAM,GACdgJ,EAAShJ,EAAM,GACfuH,EAAW9rD,KAAK8rD,SAChBC,EAAU/rD,KAAK+rD,QAEZD,EAAWyB,IACe,KAAxBhoD,EAAI0hB,EAAIkiC,YAKb4C,GAAWxmD,GAAKumD,EAChBA,GAAY,EAEhB,IAAIplC,EAAOgmC,EAAMX,GAAY,GAAKwB,GAAU,GACvB,iBAAVb,GACPjwD,QAAQgH,IAAI,SAAUijB,GAE1B,IAAI8mC,EAAU9mC,GAAQ,GAClB+mC,EAAiB,MAAP/mC,EACd,GAAI8mC,EAAU,GAAK1B,EAAW0B,EAC1B,MAAM,IAAIvqD,MAAM,gCAIpB,OAFAjD,KAAK+rD,QAAUA,GAAWyB,EAC1BxtD,KAAK8rD,SAAWA,EAAW0B,EACpBC,CACX,EACA9B,EAAY7tD,UAAU2uD,qBAAuB,SAAUiB,GACnD,IAGIxwD,EAHAomB,EAAIoqC,EAAQvwD,OAEZowD,EAAS,EAEb,IAAKrwD,EAAI,EAAGA,EAAIomB,IAAKpmB,EACbwwD,EAAQxwD,GAAKqwD,IACbA,EAASG,EAAQxwD,IAMzB,IAFA,IAAIi3B,EAAO,GAAKo5B,EACZb,EAAQ,IAAIpB,WAAWn3B,GAClBpO,EAAM,EAAGW,EAAO,EAAGqjC,EAAO,EAAGhkC,GAAOwnC,IAAUxnC,EAAKW,IAAS,EAAGqjC,IAAS,EAC7E,IAAK,IAAIzwC,EAAM,EAAGA,EAAMgK,IAAKhK,EACzB,GAAIo0C,EAAQp0C,KAASyM,EAAK,CAEtB,IAAIonC,EAAQ,EACR/pC,EAAIsD,EACR,IAAKxpB,EAAI,EAAGA,EAAI6oB,IAAO7oB,EACnBiwD,EAASA,GAAS,EAAU,EAAJ/pC,EACxBA,IAAM,EAGV,IAAKlmB,EAAIiwD,EAAOjwD,EAAIi3B,EAAMj3B,GAAK6sD,EAC3B2C,EAAMxvD,GAAM6oB,GAAO,GAAMzM,IAE3BoN,CACN,CAGR,MAAO,CAACgmC,EAAOa,EACnB,EACO5B,CACX,CAjQgC,CAiQ9B,IACF,YCtWA,IAAIgC,GAA2B,SAAUzrD,GAErC,SAASyrD,EAAU55B,EAAQi3B,EAAa4C,GACpC,IAAIzrD,EAAQD,EAAO9C,KAAKY,KAAMgrD,IAAgBhrD,KAC9CmC,EAAM4xB,OAASA,EACf5xB,EAAM0rD,WAAa,EACnB1rD,EAAM2rD,WAAa,EAYnB,IAXA,IAAIC,EAAuB,KACvBC,EAAW,CACXJ,YAAaA,EACbK,WAAY,EACZC,SAAU,IACVC,iBAAkB,IAAI9oC,WAAW0oC,GACjCK,kBAAmB,IAAI17B,YAAYq7B,GACnCM,oBAAqB,IAAI37B,YAAYq7B,GACrCO,gBAAiB,IAAIjpC,WAAW0oC,GAChCQ,sBAAuB,GAElBrxD,EAAI,EAAGA,EAAI,MAAOA,EACvB8wD,EAASG,iBAAiBjxD,GAAKA,EAC/B8wD,EAASI,kBAAkBlxD,GAAK,EAGpC,OADAiF,EAAM6rD,SAAWA,EACV7rD,CACX,CAkGA,OAzHA6gB,GAAU2qC,EAAWzrD,GAwBrByrD,EAAU7vD,UAAU0sD,UAAY,WAC5B,IAGIttD,EACA+nB,EACAjM,EAJAw1C,EAAuBC,KAKvBT,EAAWhuD,KAAKguD,SACpB,GAAKA,EAAL,CAGA,IAAIJ,EAAcI,EAASJ,YACvBM,EAAWF,EAASE,SACpBC,EAAmBH,EAASG,iBAC5BC,EAAoBJ,EAASI,kBAC7BC,EAAsBL,EAASK,oBAC/BJ,EAAaD,EAASC,WACtBS,EAAWV,EAASU,SACpBJ,EAAkBN,EAASM,gBAC3BC,EAAwBP,EAASO,sBACjCI,EAAgB,EAChBC,EAAsB5uD,KAAK8lB,aAC3BoB,EAASlnB,KAAKyqD,aAAazqD,KAAK8lB,aAAe0oC,GACnD,IAAKtxD,EAAI,EAAGA,EAtBI,IAsBWA,IAAK,CAC5B,IAAIwpB,EAAO1mB,KAAK6uD,SAASZ,GACrBa,EAAUP,EAAwB,EACtC,IAAK7nC,GAAQA,EAAO,IAChB4nC,EAAgB,GAAK5nC,EACrB6nC,EAAwB,MAEvB,MAAI7nC,GAAQ,KAYZ,IAAa,MAATA,EAAc,CACnBunC,EAAa,EACbC,EAAW,IACXK,EAAwB,EACxB,QACJ,CAEIvuD,KAAKsqD,KAAM,SACJtqD,KAAKguD,SACZ,KACJ,CArBI,GAAItnC,EAAOwnC,EAEP,IAAKjpC,GADLspC,EAAwBH,EAAkB1nC,IACT,EAAG1N,EAAI0N,EAAMzB,GAAK,EAAGA,IAClDqpC,EAAgBrpC,GAAKkpC,EAAiBn1C,GACtCA,EAAIq1C,EAAoBr1C,QAI5Bs1C,EAAgBC,KAA2BD,EAAgB,EAanE,CAaA,GAZIQ,IACAT,EAAoBH,GAAYQ,EAChCN,EAAkBF,GAAYE,EAAkBM,GAAY,EAC5DP,EAAiBD,GAAYI,EAAgB,GAE7CL,IADAC,EAEgBN,EAAgBM,EAAWN,EAAc,EAC/CK,EAC0E,EAA1EtiC,KAAKhZ,IAAIgZ,KAAKloB,IAAIyqD,EAAWN,GAAe,kBAAqB,EAAG,KAElFc,EAAWhoC,EAEP8nC,GADJG,GAAiBJ,GACyB,CACtC,GACIC,GAlEI,UAmECA,EAAuBG,GAChCznC,EAASlnB,KAAKyqD,aAAazqD,KAAK8lB,aAAe0oC,EACnD,CACA,IAAKvpC,EAAI,EAAGA,EAAIspC,EAAuBtpC,IACnCiC,EAAO0nC,KAAyBN,EAAgBrpC,EAExD,CACA+oC,EAASE,SAAWA,EACpBF,EAASC,WAAaA,EACtBD,EAASU,SAAWA,EACpBV,EAASO,sBAAwBA,EACjCvuD,KAAK8lB,aAAe8oC,CArEpB,CAsEJ,EACAjB,EAAU7vD,UAAU+wD,SAAW,SAAUvrC,GAGrC,IAFA,IAAIwqC,EAAa9tD,KAAK8tD,WAClBD,EAAa7tD,KAAK6tD,WACfC,EAAaxqC,GAAG,CACnB,IAAIu4B,EAAI77C,KAAK+zB,OAAOo1B,UACpB,IAAW,IAAPtN,EAEA,OADA77C,KAAKsqD,KAAM,EACJ,KAEXuD,EAAcA,GAAc,EAAKhS,EACjCiS,GAAc,CAClB,CAGA,OAFA9tD,KAAK8tD,WAAaA,GAAcxqC,EAChCtjB,KAAK6tD,WAAaA,EACVA,IAAeC,GAAgB,GAAKxqC,GAAK,CACrD,EACOqqC,CACX,CA3H8B,CA2H5B,IACF,YC5HA,IAAIoB,GAAiC,SAAU7sD,GAE3C,SAAS6sD,EAAgBh7B,EAAQi3B,GAC7B,IAAI7oD,EAAQD,EAAO9C,KAAKY,KAAMgrD,IAAgBhrD,KAE9C,OADAmC,EAAM4xB,OAASA,EACR5xB,CACX,CAkCA,OAvCA6gB,GAAU+rC,EAAiB7sD,GAM3B6sD,EAAgBjxD,UAAU0sD,UAAY,WAKlC,IAAIwE,EAAehvD,KAAK+zB,OAAOw1B,SAAS,GACxC,IAAKyF,GAAgBA,EAAa7xD,OAAS,GAAyB,MAApB6xD,EAAa,GACzDhvD,KAAKsqD,KAAM,MADf,CAIA,IAAIpjC,EACApB,EAAe9lB,KAAK8lB,aACpBxC,EAAI0rC,EAAa,GACrB,GAAI1rC,EAAI,KAIJ,IAFA4D,EAASlnB,KAAKyqD,aAAa3kC,EAAexC,EAAI,IACvCwC,KAAkBkpC,EAAa,GAClC1rC,EAAI,EAAG,CACP,IAAI2rC,EAASjvD,KAAK+zB,OAAOw1B,SAASjmC,GAClC4D,EAAOwQ,IAAIu3B,EAAQnpC,GACnBA,GAAgBxC,CACpB,MAEC,CACDA,EAAI,IAAMA,EACV,IAAI/d,EAAIypD,EAAa,GACrB9nC,EAASlnB,KAAKyqD,aAAa3kC,EAAexC,EAAI,GAC9C,IAAK,IAAIpmB,EAAI,EAAGA,EAAIomB,EAAGpmB,IACnBgqB,EAAOpB,KAAkBvgB,CAEjC,CACAvF,KAAK8lB,aAAeA,CAtBpB,CAuBJ,EACOipC,CACX,CAzCoC,CAyClC,IACF,YCxCA,IAAIG,GAAe,SAAUn7B,EAAQL,EAAUy7B,GAC3C,GAAIz7B,IAAa,MAAW,eACxB,OAAO,IAAI,GAAYK,GAE3B,GAAIL,IAAa,MAAW,aAAc,CACtC,IAAIk6B,EAAc,EAClB,GAAIuB,aAAkB,GAAS,CAC3B,IAAIC,EAAcD,EAAO/pC,OAAO,MAAW,gBACvCgqC,aAAuB,KACvBxB,EAAcwB,EAAY/3B,WAElC,CACA,OAAO,IAAI,GAAUtD,OAAQ3xB,EAAWwrD,EAC5C,CACA,GAAIl6B,IAAa,MAAW,iBACxB,OAAO,IAAI,GAAcK,GAE7B,GAAIL,IAAa,MAAW,kBACxB,OAAO,IAAI,GAAeK,GAE9B,GAAIL,IAAa,MAAW,mBACxB,OAAO,IAAI,GAAgBK,GAE/B,MAAM,IAAIN,GAAyBC,EAASmG,WAChD,EACWw1B,GAAqB,SAAUhmC,GACtC,IAAIqS,EAAOrS,EAAGqS,KAAMmB,EAAWxT,EAAGwT,SAC9B9I,EAAS,IAAI,GAAO8I,GACpBsC,EAASzD,EAAKtW,OAAO,MAAW,WAChCkqC,EAAc5zB,EAAKtW,OAAO,MAAW,gBACzC,GAAI+Z,aAAkB,GAClBpL,EAASm7B,GAAan7B,EAAQoL,EAAQmwB,QAErC,GAAInwB,aAAkB,GACvB,IAAK,IAAIpY,EAAM,EAAGhB,EAAMoZ,EAAOhL,OAAQpN,EAAMhB,EAAKgB,IAC9CgN,EAASm7B,GAAan7B,EAAQoL,EAAO/Z,OAAO2B,EAAK,IAAUuoC,GAAeA,EAAY33B,YAAY5Q,EAAK,UAG1G,GAAMoY,EACP,MAAM,IAAI7L,GAA0B,CAAC,GAAS,IAAW6L,GAE7D,OAAOpL,CACX,ECjCIw7B,GAAiC,WACjC,SAASA,EAAgBC,EAAMC,EAAaC,GACxC1vD,KAAKwvD,KAAOA,EACZ,IAAI1Q,EAAK2Q,QAAiDA,EAdxC,SAAUD,GAChC,IAAIG,EAAWH,EAAKj1B,WAKpB,MAAO,CAAEwQ,KAAM,EAAG6kB,OAAQ,EAAG5kB,MAJjB2kB,EAASvqC,OAAO,EAAG,IAAWiS,WACtCs4B,EAASvqC,OAAO,EAAG,IAAWiS,WAGSw4B,IAF9BF,EAASvqC,OAAO,EAAG,IAAWiS,WACvCs4B,EAASvqC,OAAO,EAAG,IAAWiS,WAEtC,CAOgFy4B,CAAoBN,GAC5FxvD,KAAKgpB,MAAQ81B,EAAG9T,MAAQ8T,EAAG/T,KAC3B/qC,KAAKgxB,OAAS8tB,EAAG+Q,IAAM/Q,EAAG8Q,OAC1B5vD,KAAKyvD,YAAc3Q,EACnB9+C,KAAK0vD,qBAAuBA,QAAmEA,EARvE,SAAU5Q,GAAM,MAAO,CAAC,EAAG,EAAG,EAAG,GAAIA,EAAG/T,MAAO+T,EAAG8Q,OAAS,CAQmCG,CAA0BjR,EACpJ,CAyDA,OAxDAyQ,EAAgB7rB,IAAM,SAAU8rB,EAAMC,EAAaC,GAC/C,OAAOnsC,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,OAAOgkB,GAAYhkB,MAAM,SAAUqpB,GAC/B,MAAO,CAAC,EAAc,IAAIkmC,EAAgBC,EAAMC,EAAaC,GACjE,GACJ,GACJ,EACAH,EAAgBzxD,UAAU2tC,iBAAmB,SAAUjU,EAASpX,GAC5D,OAAOmD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAI+Q,EAAUH,EAAW+1B,EAAiBzmC,EAAIwhB,EAAM6kB,EAAQ5kB,EAAO6kB,EAAKta,EAC5E,OAAOvxB,GAAYhkB,MAAM,SAAUypB,GAE/B,GADAJ,EAAKrpB,KAAKwvD,KAAK3uB,oBAAqBzG,EAAW/Q,EAAG+Q,SAAUH,EAAY5Q,EAAG4Q,WACtEG,EACD,MAAM,IAAIxG,GAWd,OAVAo8B,EAAkBhwD,KAAKiwD,eAAe71B,GACtC7Q,EAAKvpB,KAAKyvD,YAAa1kB,EAAOxhB,EAAGwhB,KAAM6kB,EAASrmC,EAAGqmC,OAAQ5kB,EAAQzhB,EAAGyhB,MAAO6kB,EAAMtmC,EAAGsmC,IACtFta,EAAU/d,EAAQ0H,YAAY8wB,EAAiB,CAC3C31B,KAAM,UACNmF,QAAS,OACT0wB,SAAU,EACV5wB,KAAM,CAACyL,EAAM6kB,EAAQ5kB,EAAO6kB,GAC5BtwB,OAAQv/B,KAAK0vD,qBACbz1B,UAAWA,IAEX7Z,GACAoX,EAAQrU,OAAO/C,EAAKm1B,GACb,CAAC,EAAcn1B,IAGf,CAAC,EAAcoX,EAAQqH,SAAS0W,GAG/C,GACJ,GACJ,EAGAga,EAAgBzxD,UAAUmyD,eAAiB,SAAUpzB,GAGjD,IAFA,IAAIszB,EAAU9qC,WAAWiS,GAAG,YACxB04B,EAAkB,GACbjpC,EAAM,EAAGhB,EAAM8W,EAAS1I,OAAQpN,EAAMhB,EAAKgB,IAAO,CACvD,IAAIgN,EAAS8I,EAASzX,OAAO2B,EAAK,IAC9BqpC,OAAU,EACd,GAAIr8B,aAAkB,GAClBq8B,EAAUf,GAAmBt7B,GAAQsjB,aAEpC,MAAItjB,aAAkB,IAIvB,MAAM,IAAID,GAA4BC,GAHtCq8B,EAAUr8B,EAAO4J,sBAIrB,CACAqyB,EAAgB9uD,KAAKkvD,EAASD,EAClC,CACA,OAAOvlC,GAAoB1qB,WAAM,EAAQ8vD,EAC7C,EACOT,CACX,CAlEoC,GAmEpC,YClFA,IAKWc,GAiBAC,GAUAC,GAOAC,GAvCPC,GAAS,SAAUC,EAAUC,GAC7B,QAAiBvuD,IAAbsuD,EAEJ,OAAOC,EAASD,EACpB,GAEA,SAAWL,GAKPA,EAA+B,QAAI,UAEnCA,EAAmC,YAAI,cAEvCA,EAAiC,UAAI,YAKrCA,EAA6B,MAAI,OACpC,CAfD,CAeGA,KAA0BA,GAAwB,CAAC,IAEtD,SAAWC,GAEPA,EAAsB,IAAI,MAK1BA,EAAsB,IAAI,KAC7B,CARD,CAQGA,KAAqBA,GAAmB,CAAC,IAE5C,SAAWC,GAEPA,EAAmB,KAAI,OAEvBA,EAAyB,WAAI,YAChC,CALD,CAKGA,KAAiBA,GAAe,CAAC,IAEpC,SAAWC,GAEPA,EAAgB,QAAI,UAKpBA,EAA4B,oBAAI,sBAKhCA,EAA2B,mBAAI,oBAClC,CAbD,CAaGA,KAAWA,GAAS,CAAC,IACxB,IAAII,GAAmC,WAEnC,SAASA,EAAkBl1B,GACvB17B,KAAK07B,KAAOA,CAChB,CAwbA,OAvbAk1B,EAAkB9yD,UAAU+yD,WAAa,SAAUnzD,GAC/C,IAAIozD,EAAY9wD,KAAK07B,KAAKtW,OAAO,MAAW1nB,IAC5C,GAAIozD,aAAqB,GACrB,OAAOA,CAEf,EACAF,EAAkB9yD,UAAUizD,WAAa,SAAUrzD,GAC/C,IAAIozD,EAAY9wD,KAAK07B,KAAKtW,OAAO,MAAW1nB,IAC5C,GAAIozD,aAAqB,GACrB,OAAOA,CAEf,EAEAF,EAAkB9yD,UAAUkzD,YAAc,WACtC,OAAOhxD,KAAK6wD,WAAW,cAC3B,EAEAD,EAAkB9yD,UAAUmzD,YAAc,WACtC,OAAOjxD,KAAK6wD,WAAW,cAC3B,EAEAD,EAAkB9yD,UAAUozD,aAAe,WACvC,OAAOlxD,KAAK6wD,WAAW,eAC3B,EAEAD,EAAkB9yD,UAAUqzD,UAAY,WACpC,OAAOnxD,KAAK6wD,WAAW,YAC3B,EAEAD,EAAkB9yD,UAAUszD,aAAe,WACvC,OAAOpxD,KAAK6wD,WAAW,eAC3B,EAEAD,EAAkB9yD,UAAUuzD,gBAAkB,WAC1C,OAAOrxD,KAAK6wD,WAAW,kBAC3B,EAEAD,EAAkB9yD,UAAUuyD,sBAAwB,WAChD,OAAOrwD,KAAK+wD,WAAW,wBAC3B,EAEAH,EAAkB9yD,UAAUwzD,UAAY,WACpC,OAAOtxD,KAAK+wD,WAAW,YAC3B,EAEAH,EAAkB9yD,UAAUyyD,aAAe,WACvC,OAAOvwD,KAAK+wD,WAAW,eAC3B,EAEAH,EAAkB9yD,UAAU0yD,OAAS,WACjC,OAAOxwD,KAAK+wD,WAAW,SAC3B,EAEAH,EAAkB9yD,UAAUyzD,kBAAoB,WAC5C,OAAOvxD,KAAK6wD,WAAW,oBAC3B,EAEAD,EAAkB9yD,UAAU0zD,eAAiB,WACzC,IAAIA,EAAiBxxD,KAAK07B,KAAKtW,OAAO,MAAW,mBACjD,GAAIosC,aAA0B,GAC1B,OAAOA,CAEf,EAEAZ,EAAkB9yD,UAAU2zD,UAAY,WACpC,IAAIA,EAAYzxD,KAAK07B,KAAKtW,OAAO,MAAW,cAC5C,GAAIqsC,aAAqB,GACrB,OAAOA,CAEf,EAMAb,EAAkB9yD,UAAU4zD,eAAiB,WACzC,IAAIroC,EAAIE,EACR,OAAgG,QAAxFA,EAAmC,QAA7BF,EAAKrpB,KAAKgxD,qBAAkC,IAAP3nC,OAAgB,EAASA,EAAGmP,mBAAgC,IAAPjP,GAAgBA,CAC5H,EAMAqnC,EAAkB9yD,UAAU6zD,eAAiB,WACzC,IAAItoC,EAAIE,EACR,OAAgG,QAAxFA,EAAmC,QAA7BF,EAAKrpB,KAAKixD,qBAAkC,IAAP5nC,OAAgB,EAASA,EAAGmP,mBAAgC,IAAPjP,GAAgBA,CAC5H,EAOAqnC,EAAkB9yD,UAAU8zD,gBAAkB,WAC1C,IAAIvoC,EAAIE,EACR,OAAiG,QAAzFA,EAAoC,QAA9BF,EAAKrpB,KAAKkxD,sBAAmC,IAAP7nC,OAAgB,EAASA,EAAGmP,mBAAgC,IAAPjP,GAAgBA,CAC7H,EAMAqnC,EAAkB9yD,UAAU+zD,aAAe,WACvC,IAAIxoC,EAAIE,EACR,OAA8F,QAAtFA,EAAiC,QAA3BF,EAAKrpB,KAAKmxD,mBAAgC,IAAP9nC,OAAgB,EAASA,EAAGmP,mBAAgC,IAAPjP,GAAgBA,CAC1H,EAMAqnC,EAAkB9yD,UAAUg0D,gBAAkB,WAC1C,IAAIzoC,EAAIE,EACR,OAAiG,QAAzFA,EAAoC,QAA9BF,EAAKrpB,KAAKoxD,sBAAmC,IAAP/nC,OAAgB,EAASA,EAAGmP,mBAAgC,IAAPjP,GAAgBA,CAC7H,EAQAqnC,EAAkB9yD,UAAUi0D,mBAAqB,WAC7C,IAAI1oC,EAAIE,EACR,OAAoG,QAA5FA,EAAuC,QAAjCF,EAAKrpB,KAAKqxD,yBAAsC,IAAPhoC,OAAgB,EAASA,EAAGmP,mBAAgC,IAAPjP,GAAgBA,CAChI,EAMAqnC,EAAkB9yD,UAAUk0D,yBAA2B,WACnD,IAAI3oC,EAAIE,EACJpN,EAA+C,QAAvCkN,EAAKrpB,KAAKqwD,+BAA4C,IAAPhnC,OAAgB,EAASA,EAAGsQ,aACvF,OAAsD,QAA9CpQ,EAAKknC,GAAOt0C,EAAMk0C,WAA2C,IAAP9mC,EAAgBA,EAAK8mC,GAAsB4B,OAC7G,EAKArB,EAAkB9yD,UAAUo0D,oBAAsB,WAC9C,IAAI7oC,EAAIE,EACJ4oC,EAAwC,QAA3B9oC,EAAKrpB,KAAKsxD,mBAAgC,IAAPjoC,OAAgB,EAASA,EAAGsQ,aAChF,OAAsD,QAA9CpQ,EAAKknC,GAAO0B,EAAW7B,WAAsC,IAAP/mC,EAAgBA,EAAK+mC,GAAiB8B,GACxG,EAMAxB,EAAkB9yD,UAAUu0D,gBAAkB,WAC1C,IAAIhpC,EAAIE,EACJ+oC,EAAyC,QAA9BjpC,EAAKrpB,KAAKuwD,sBAAmC,IAAPlnC,OAAgB,EAASA,EAAGsQ,aACjF,OAAgD,QAAxCpQ,EAAKknC,GAAO6B,EAAS/B,WAAkC,IAAPhnC,EAAgBA,EAAKgnC,GAAagC,UAC9F,EAMA3B,EAAkB9yD,UAAU00D,UAAY,WACpC,IAAInpC,EACAopC,EAAkC,QAAxBppC,EAAKrpB,KAAKwwD,gBAA6B,IAAPnnC,OAAgB,EAASA,EAAGsQ,aAC1E,OAAO82B,GAAOgC,EAAQjC,GAC1B,EAOAI,EAAkB9yD,UAAU40D,qBAAuB,WAC/C,IAAIrpC,EACJ,OAA2C,QAAnCA,EAAKrpB,KAAKuxD,2BAAwC,IAAPloC,OAAgB,EAASA,EAAGmP,WACnF,EAkBAo4B,EAAkB9yD,UAAU60D,kBAAoB,WAC5C,IAAIh0B,EAAM3+B,KAAKwxD,iBACf,IAAK7yB,EACD,MAAO,GAEX,IADA,IAAIi0B,EAAa,GACR11D,EAAI,EAAGA,EAAIyhC,EAAIxK,OAAQj3B,GAAK,EAAG,CAKpC,IAAI+rD,EAAQtqB,EAAIvZ,OAAOloB,EAAG,IAAWm6B,WACjC6xB,EAAMvqB,EAAIvZ,OAAOloB,EAAI,EAAG,IAAWm6B,WACvCu7B,EAAW1xD,KAAK,CAAE+nD,MAAOA,EAAOC,IAAKA,GACzC,CACA,OAAO0J,CACX,EAMAhC,EAAkB9yD,UAAU+0D,aAAe,WACvC,IAAIxpC,EAAIE,EACR,OAA6F,QAArFA,EAAiC,QAA3BF,EAAKrpB,KAAKyxD,mBAAgC,IAAPpoC,OAAgB,EAASA,EAAGgO,kBAA+B,IAAP9N,EAAgBA,EAAK,CAC9H,EAMAqnC,EAAkB9yD,UAAUg1D,eAAiB,SAAUC,GACnD,IAAI/B,EAAchxD,KAAK07B,KAAKlE,QAAQ5G,IAAImiC,GACxC/yD,KAAK07B,KAAKhE,IAAI,MAAW,eAAgBs5B,EAC7C,EAMAJ,EAAkB9yD,UAAUk1D,eAAiB,SAAUC,GACnD,IAAIhC,EAAcjxD,KAAK07B,KAAKlE,QAAQ5G,IAAIqiC,GACxCjzD,KAAK07B,KAAKhE,IAAI,MAAW,eAAgBu5B,EAC7C,EAOAL,EAAkB9yD,UAAUo1D,gBAAkB,SAAUC,GACpD,IAAIjC,EAAelxD,KAAK07B,KAAKlE,QAAQ5G,IAAIuiC,GACzCnzD,KAAK07B,KAAKhE,IAAI,MAAW,gBAAiBw5B,EAC9C,EAMAN,EAAkB9yD,UAAUs1D,aAAe,SAAUC,GACjD,IAAIlC,EAAYnxD,KAAK07B,KAAKlE,QAAQ5G,IAAIyiC,GACtCrzD,KAAK07B,KAAKhE,IAAI,MAAW,aAAcy5B,EAC3C,EAMAP,EAAkB9yD,UAAUw1D,gBAAkB,SAAUC,GACpD,IAAInC,EAAepxD,KAAK07B,KAAKlE,QAAQ5G,IAAI2iC,GACzCvzD,KAAK07B,KAAKhE,IAAI,MAAW,gBAAiB05B,EAC9C,EAOAR,EAAkB9yD,UAAU01D,mBAAqB,SAAUC,GACvD,IAAIpC,EAAkBrxD,KAAK07B,KAAKlE,QAAQ5G,IAAI6iC,GAC5CzzD,KAAK07B,KAAKhE,IAAI,MAAW,mBAAoB25B,EACjD,EAuBAT,EAAkB9yD,UAAU41D,yBAA2B,SAAUC,GAC7DxiC,GAAcwiC,EAAuB,wBAAyBtD,IAC9D,IAAIl0C,EAAO,MAAWw3C,GACtB3zD,KAAK07B,KAAKhE,IAAI,MAAW,yBAA0Bvb,EACvD,EAmBAy0C,EAAkB9yD,UAAU81D,oBAAsB,SAAUC,GACxD1iC,GAAc0iC,EAAkB,mBAAoBvD,IACpD,IAAI6B,EAAY,MAAW0B,GAC3B7zD,KAAK07B,KAAKhE,IAAI,MAAW,aAAcy6B,EAC3C,EAgBAvB,EAAkB9yD,UAAUg2D,gBAAkB,SAAUC,GACpD5iC,GAAc4iC,EAAc,eAAgBxD,IAC5C,IAAI+B,EAAU,MAAWyB,GACzB/zD,KAAK07B,KAAKhE,IAAI,MAAW,gBAAiB46B,EAC9C,EAgBA1B,EAAkB9yD,UAAUk2D,UAAY,SAAUvB,GAC9CthC,GAAcshC,EAAQ,SAAUjC,IAChC,IAAIyD,EAAM,MAAWxB,GACrBzyD,KAAK07B,KAAKhE,IAAI,MAAW,UAAWu8B,EACxC,EAcArD,EAAkB9yD,UAAUo2D,qBAAuB,SAAUC,GACzD,IAAI5C,EAAoBvxD,KAAK07B,KAAKlE,QAAQ5G,IAAIujC,GAC9Cn0D,KAAK07B,KAAKhE,IAAI,MAAW,qBAAsB65B,EACnD,EA2BAX,EAAkB9yD,UAAUs2D,kBAAoB,SAAUC,GACjDtxC,MAAMuO,QAAQ+iC,KACfA,EAAiB,CAACA,IAEtB,IADA,IAAIC,EAAY,GACPvtC,EAAM,EAAGhB,EAAMsuC,EAAel3D,OAAQ4pB,EAAMhB,EAAKgB,IACtDutC,EAAUpzD,KAAKmzD,EAAettC,GAAKkiC,OACnCqL,EAAUpzD,KAAKmzD,EAAettC,GAAKmiC,KAEvCh3B,GAAaoiC,EAAW,iBAAkB,CAAC,WAC3C,IAAI1B,EAAa5yD,KAAK07B,KAAKlE,QAAQ5G,IAAI0jC,GACvCt0D,KAAK07B,KAAKhE,IAAI,MAAW,kBAAmBk7B,EAChD,EAMAhC,EAAkB9yD,UAAUy2D,aAAe,SAAUC,GACjDriC,GAAYqiC,EAAW,YAAa,EAAGpkC,OAAOqkC,WvDjU3B,SAAUr2D,EAAOgzB,GACxC,IAAKhB,OAAOskC,UAAUt2D,GAClB,MAAM,IAAI6E,MAAMguB,GAASG,GAAa,yCAA2ChzB,EAEzF,CuD8TQu2D,CAAcH,EAAW,aACzB,IAAI/C,EAAYzxD,KAAK07B,KAAKlE,QAAQ5G,IAAI4jC,GACtCx0D,KAAK07B,KAAKhE,IAAI,MAAW,aAAc+5B,EAC3C,EAEAb,EAAkBgE,SAAW,SAAUl5B,GACnC,OAAO,IAAIk1B,EAAkBl1B,EACjC,EAEAk1B,EAAkB1yD,OAAS,SAAUs5B,GAEjC,OAAO,IAAIo5B,EADAp5B,EAAQ5G,IAAI,CAAC,GAE5B,EACOggC,CACX,CA7bsC,GA8btC,YC5eA,IAAIiE,GAAU,sEACVC,GAA8B,WAC9B,SAASA,EAAap5B,EAAMtb,GACxBpgB,KAAK07B,KAAOA,EACZ17B,KAAKogB,IAAMA,CACf,CA4HA,OA3HA00C,EAAah3D,UAAUm+C,EAAI,WACvB,OAAOj8C,KAAK07B,KAAK/D,YAAY,MAAW,KAAM,GAAW,GAC7D,EACAm9B,EAAah3D,UAAUi3D,GAAK,WACxB,IAAI10B,EAAcrgC,KAAKmgC,wBAAwB,MAAW,OAC1D,OAAOngC,KAAK07B,KAAKlE,QAAQG,YAAY0I,EAAa,GACtD,EACAy0B,EAAah3D,UAAU09C,EAAI,WACvB,IAAIwZ,EAAah1D,KAAKmgC,wBAAwB,MAAW,MACzD,OAAOngC,KAAK07B,KAAKlE,QAAQpS,OAAO4vC,EACpC,EACAF,EAAah3D,UAAUm3D,KAAO,WAC1B,OAAOj1D,KAAK07B,KAAK/D,YAAY,MAAW,QAAS,GACrD,EAIAm9B,EAAah3D,UAAUo3D,GAAK,WACxB,IAAIC,EAAKn1D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAI+vC,aAAc,IAAaA,aAAc,GACzC,OAAOA,CAEf,EACAL,EAAah3D,UAAUs3D,QAAU,SAAUC,GACvCr1D,KAAK07B,KAAKhE,IAAI,MAAW,QAAS13B,KAAK07B,KAAKlE,QAAQ5G,IAAIykC,GAC5D,EACAP,EAAah3D,UAAUw3D,UAAY,WAI/B,IAAI50B,EAAY1gC,KAAK07B,KAAKl7B,IAAI,MAAW,WACzC,GAAIkgC,aAAqB,GAErB,OAAO,IAAIo0B,EADI90D,KAAK07B,KAAKtW,OAAO,MAAW,UAAW,IACpBsb,EAG1C,EACAo0B,EAAah3D,UAAU2iC,UAAY,SAAU4B,GACpCA,EAGDriC,KAAK07B,KAAKhE,IAAI,MAAW,UAAW2K,GAFpCriC,KAAK07B,KAAKI,OAAO,MAAW,UAGpC,EACAg5B,EAAah3D,UAAUy3D,sBAAwB,WAC3C,IAAIlzB,EAASriC,KAAKs1D,YAClB,OAAKjzB,EAEEA,EAAOkzB,wBAA0B,IAAMv1D,KAAKw1D,iBADxCx1D,KAAKw1D,gBAEpB,EACAV,EAAah3D,UAAU03D,eAAiB,WACpC,IAAInsC,EACJ,OAA2B,QAAnBA,EAAKrpB,KAAKi8C,WAAwB,IAAP5yB,OAAgB,EAASA,EAAGsQ,YACnE,EACAm7B,EAAah3D,UAAU23D,eAAiB,SAAUC,GACzCA,EAGD11D,KAAK07B,KAAKhE,IAAI,MAAW,KAAM,YAAsBg+B,IAFrD11D,KAAK07B,KAAKI,OAAO,MAAW,KAGpC,EACAg5B,EAAah3D,UAAU63D,qBAAuB,SAAUC,GACpD51D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO,MAAak+B,GACjD,EACAd,EAAah3D,UAAU+3D,qBAAuB,WAC1C,IAAIX,EAAKl1D,KAAKk1D,KACd,OAAIA,aAAc,GACPA,EAAGv7B,aAEPu7B,aAA+B,EAASA,EAAGr7B,UACtD,EACAi7B,EAAah3D,UAAUg4D,YAAc,SAAUC,GAC3C,IAAI1sC,EACAnmB,EAA+C,QAAvCmmB,EAAKrpB,KAAKu1D,+BAA4C,IAAPlsC,EAAgBA,EAAK,GAC5E8rC,EAAKn1D,KAAK61D,uBACd,IAAKV,EACD,MAAM,IAAItgC,GAAoB3xB,GAClC,IAAI8yD,EAAU5rC,GAAc+qC,EAAIN,IAChC,IAAKmB,EAAQttC,MACT,MAAM,IAAIqM,GAAuB7xB,GACrC,IAAI+yD,EAAUd,EAAG3zD,MAAM,EAAGw0D,EAAQxrC,IAAMwrC,EAAQttC,MAAM,GAAGvrB,QACrD+4D,EAAQF,EAAQxrC,KAAO2qC,EAAGh4D,OAASg4D,EAAG3zD,MAAMw0D,EAAQxrC,KAAO,GAE3D2rC,EAAaF,EAAU,KADZD,EAAQttC,MAAM,GACgB,IAAMqtC,EAAW,OAASG,EACvEl2D,KAAK21D,qBAAqBQ,EAC9B,EACArB,EAAah3D,UAAUs4D,SAAW,WAC9B,IAAI/sC,EAAIE,EACR,OAAsF,QAA9EA,EAA0B,QAApBF,EAAKrpB,KAAK+0D,YAAyB,IAAP1rC,OAAgB,EAASA,EAAGgO,kBAA+B,IAAP9N,EAAgBA,EAAK,CACvH,EACAurC,EAAah3D,UAAUu4D,SAAW,SAAUhmB,GACxCrwC,KAAK07B,KAAKhE,IAAI,MAAW,MAAO,MAAa2Y,GACjD,EACAykB,EAAah3D,UAAUw4D,QAAU,SAAUC,GAEvC,SADYv2D,KAAKo2D,WACDG,EACpB,EACAzB,EAAah3D,UAAU04D,QAAU,SAAUD,GACvC,IAAIlmB,EAAQrwC,KAAKo2D,WACjBp2D,KAAKq2D,SAAShmB,EAAQkmB,EAC1B,EACAzB,EAAah3D,UAAU24D,UAAY,SAAUF,GACzC,IAAIlmB,EAAQrwC,KAAKo2D,WACjBp2D,KAAKq2D,SAAShmB,GAASkmB,EAC3B,EACAzB,EAAah3D,UAAU44D,UAAY,SAAUH,EAAMI,GAC3CA,EACA32D,KAAKw2D,QAAQD,GAEbv2D,KAAKy2D,UAAUF,EACvB,EACAzB,EAAah3D,UAAUqiC,wBAA0B,SAAUj9B,GACvD,IAAIo9B,EAKJ,OAJAtgC,KAAKugC,QAAO,SAAUC,GACbF,IACDA,EAAYE,EAAK9E,KAAKl7B,IAAI0C,GAClC,IACOo9B,CACX,EACAw0B,EAAah3D,UAAUyiC,OAAS,SAAUyB,GACtCA,EAAQhiC,MACR,IAAIqiC,EAASriC,KAAKs1D,YACdjzB,GACAA,EAAO9B,OAAOyB,EACtB,EACO8yB,CACX,CAjIiC,GAkIjC,YC7IA,IAAI8B,GAA6B,WAC7B,SAASA,EAAYl7B,GACjB17B,KAAK07B,KAAOA,CAChB,CAgBA,OAfAk7B,EAAY94D,UAAU0xC,EAAI,WACtB,IAAIA,EAAIxvC,KAAK07B,KAAKtW,OAAO,MAAW,MACpC,GAAIoqB,aAAa,GACb,OAAOA,CAEf,EACAonB,EAAY94D,UAAU+4D,SAAW,WAC7B,IAAIxtC,EAAIE,EACR,OAAqF,QAA7EA,EAAyB,QAAnBF,EAAKrpB,KAAKwvC,WAAwB,IAAPnmB,OAAgB,EAASA,EAAGgO,kBAA+B,IAAP9N,EAAgBA,EAAK,CACtH,EACAqtC,EAAY94D,UAAUg5D,SAAW,SAAU9tC,GACvC,IAAIwmB,EAAIxvC,KAAK07B,KAAKlE,QAAQ5G,IAAI5H,GAC9BhpB,KAAK07B,KAAKhE,IAAI,MAAW,KAAM8X,EACnC,EACAonB,EAAYhC,SAAW,SAAUl5B,GAAQ,OAAO,IAAIk7B,EAAYl7B,EAAO,EAChEk7B,CACX,CApBgC,GAqBhC,YClBA,IAAIG,GAA+B,WAC/B,SAASA,EAAcr7B,GACnB17B,KAAK07B,KAAOA,CAChB,CA2GA,OAzGAq7B,EAAcj5D,UAAUk5D,KAAO,WAC3B,OAAOh3D,KAAK07B,KAAKtW,OAAO,MAAW,QAAS,GAChD,EACA2xC,EAAcj5D,UAAUm5D,GAAK,WACzB,OAAOj3D,KAAK07B,KAAK/D,YAAY,MAAW,MAAO,GACnD,EACAo/B,EAAcj5D,UAAUm2C,EAAI,WACxB,IAAI5T,EAAcrgC,KAAK07B,KAAKtW,OAAO,MAAW,MAC9C,OAAOplB,KAAK07B,KAAKlE,QAAQG,YAAY0I,EAAa,GACtD,EACA02B,EAAcj5D,UAAUo5D,aAAe,WACnC,IAAI7tC,EACA2tC,EAAOh3D,KAAKg3D,OAChB,OAAiF,QAAzE3tC,EAAK2tC,aAAmC,EAASA,EAAKp/B,qBAAkC,IAAPvO,EAAgBA,EAAK,CAAEpiB,EAAG,EAAGgd,EAAG,EAAG+E,MAAO,EAAGgI,OAAQ,EAClJ,EACA+lC,EAAcj5D,UAAUq5D,aAAe,SAAUxgB,GAC7C,IAAI1vC,EAAI0vC,EAAK1vC,EAAGgd,EAAI0yB,EAAK1yB,EAAG+E,EAAQ2tB,EAAK3tB,MAAOgI,EAAS2lB,EAAK3lB,OAC1DgmC,EAAOh3D,KAAK07B,KAAKlE,QAAQ5G,IAAI,CAAC3pB,EAAGgd,EAAGhd,EAAI+hB,EAAO/E,EAAI+M,IACvDhxB,KAAK07B,KAAKhE,IAAI,MAAW,QAASs/B,EACtC,EACAD,EAAcj5D,UAAUs5D,mBAAqB,WACzC,IAAIC,EAAKr3D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIiyC,aAAc,GACd,OAAOA,CAEf,EACAN,EAAcj5D,UAAUw5D,mBAAqB,SAAU3pD,GACnD3N,KAAK07B,KAAKhE,IAAI,MAAW,MAAO/pB,EACpC,EACAopD,EAAcj5D,UAAUy5D,eAAiB,SAAUC,GAC/Cx3D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO8/B,EACpC,EACAT,EAAcj5D,UAAU25D,SAAW,WAC/B,IAAIR,EAAKj3D,KAAKi3D,KAKd,OAJKA,IACDA,EAAKj3D,KAAK07B,KAAKlE,QAAQ5G,IAAI,CAAC,GAC5B5wB,KAAK07B,KAAKhE,IAAI,MAAW,MAAOu/B,IAE7BA,CACX,EACAF,EAAcj5D,UAAU45D,oBAAsB,WAC1C,IACIroC,EADKrvB,KAAKy3D,WACHj3D,IAAI,MAAW,MAC1B,GAAI6uB,aAAa,IAAUA,aAAa,GACpC,OAAOA,EACX,MAAM,IAAIpsB,MAAM,uBAAyBosB,aAA6B,EAASA,EAAElxB,YAAY+E,MACjG,EAEA6zD,EAAcj5D,UAAU65D,oBAAsB,SAAU/B,GAC3C51D,KAAKy3D,WACX//B,IAAI,MAAW,KAAMk+B,EAC5B,EAEAmB,EAAcj5D,UAAU85D,sBAAwB,SAAUhC,GAC7C51D,KAAKy3D,WACX//B,IAAI,MAAW,KAAMk+B,EAC5B,EAEAmB,EAAcj5D,UAAU+5D,kBAAoB,SAAUjC,GACzC51D,KAAKy3D,WACX//B,IAAI,MAAW,KAAMk+B,EAC5B,EACAmB,EAAcj5D,UAAUg6D,yBAA2B,WAC/C,IAAIb,EAAKj3D,KAAKi3D,KACdA,SAAwCA,EAAGn7B,OAAO,MAAW,KACjE,EACAi7B,EAAcj5D,UAAUi6D,qBAAuB,WAC3C,IAAId,EAAKj3D,KAAKi3D,KACdA,SAAwCA,EAAGn7B,OAAO,MAAW,KACjE,EACAi7B,EAAcj5D,UAAUk6D,eAAiB,WACrC,IAAIf,EAAKj3D,KAAKi3D,KACd,GAAKA,EAKL,MAAO,CAAEgB,OAHDhB,EAAG7xC,OAAO,MAAW,KAAM,GAAS,IAGxB8yC,SAFZjB,EAAGt/B,YAAY,MAAW,KAAM,GAAS,IAEhBwgC,KADzBlB,EAAGt/B,YAAY,MAAW,KAAM,GAAS,IAErD,EACAo/B,EAAcj5D,UAAUs4D,SAAW,WAC/B,IAAI/sC,EAAIE,EACR,OAAqF,QAA7EA,EAAyB,QAAnBF,EAAKrpB,KAAKi0C,WAAwB,IAAP5qB,OAAgB,EAASA,EAAGgO,kBAA+B,IAAP9N,EAAgBA,EAAK,CACtH,EACAwtC,EAAcj5D,UAAUu4D,SAAW,SAAUhmB,GACzCrwC,KAAK07B,KAAKhE,IAAI,MAAW,KAAM,MAAa2Y,GAChD,EACA0mB,EAAcj5D,UAAUw4D,QAAU,SAAUC,GAExC,SADYv2D,KAAKo2D,WACDG,EACpB,EACAQ,EAAcj5D,UAAU04D,QAAU,SAAUD,GACxC,IAAIlmB,EAAQrwC,KAAKo2D,WACjBp2D,KAAKq2D,SAAShmB,EAAQkmB,EAC1B,EACAQ,EAAcj5D,UAAU24D,UAAY,SAAUF,GAC1C,IAAIlmB,EAAQrwC,KAAKo2D,WACjBp2D,KAAKq2D,SAAShmB,GAASkmB,EAC3B,EACAQ,EAAcj5D,UAAU44D,UAAY,SAAUH,EAAMI,GAC5CA,EACA32D,KAAKw2D,QAAQD,GAEbv2D,KAAKy2D,UAAUF,EACvB,EACAQ,EAAcnC,SAAW,SAAUl5B,GAAQ,OAAO,IAAIq7B,EAAcr7B,EAAO,EACpEq7B,CACX,CA/GkC,GAgHlC,YCjHA,IAAIqB,GAA2C,WAC3C,SAASA,EAA0B18B,GAC/B17B,KAAK07B,KAAOA,CAChB,CA4GA,OA3GA08B,EAA0Bt6D,UAAUo9C,EAAI,WACpC,IAAIA,EAAIl7C,KAAK07B,KAAKtW,OAAO,MAAW,MACpC,GAAI81B,aAAa,GACb,OAAOA,CAEf,EACAkd,EAA0Bt6D,UAAUu6D,GAAK,WACrC,IAAIA,EAAKr4D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIizC,aAAc,GACd,OAAOA,CAEf,EACAD,EAA0Bt6D,UAAUw6D,GAAK,WACrC,IAAIA,EAAKt4D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIkzC,aAAc,GACd,OAAOA,CAEf,EACAF,EAA0Bt6D,UAAUy6D,GAAK,WACrC,IAAIA,EAAKv4D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAImzC,aAAc,IAAgBA,aAAc,GAC5C,OAAOA,CAEf,EACAH,EAA0Bt6D,UAAU06D,GAAK,WACrC,IAAIA,EAAKx4D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIozC,aAAc,IAAgBA,aAAc,GAC5C,OAAOA,CAEf,EACAJ,EAA0Bt6D,UAAU26D,GAAK,WACrC,IAAIA,EAAKz4D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIqzC,aAAc,IAAgBA,aAAc,GAC5C,OAAOA,CAEf,EACAL,EAA0Bt6D,UAAU46D,YAAc,WAC9C,IAAIrvC,EACJ,OAA2B,QAAnBA,EAAKrpB,KAAKk7C,WAAwB,IAAP7xB,OAAgB,EAASA,EAAGgO,UACnE,EACA+gC,EAA0Bt6D,UAAU66D,eAAiB,WACjD,IAAIN,EAAKr4D,KAAKq4D,KACd,GAAKA,EAAL,CAGA,IADA,IAAIO,EAAa,GACR7xC,EAAM,EAAGhB,EAAMsyC,aAA+B,EAASA,EAAGlkC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACzF,IAAI8xC,EAAYR,EAAG73D,IAAIumB,GACnB8xC,aAAqB,IACrBD,EAAW13D,KAAK23D,EAAUxhC,WAClC,CACA,OAAOuhC,CAPa,CAQxB,EACAR,EAA0Bt6D,UAAUg7D,mBAAqB,WACrD,IAAIR,EAAKt4D,KAAKs4D,KACd,GAAKA,EAAL,CAGA,IADA,IAAIM,EAAa,GACR7xC,EAAM,EAAGhB,EAAMuyC,aAA+B,EAASA,EAAGnkC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACzF,IAAI8xC,EAAYP,EAAG93D,IAAIumB,GACnB8xC,aAAqB,IACrBD,EAAW13D,KAAK23D,EAAUxhC,WAClC,CACA,OAAOuhC,CAPa,CAQxB,EACAR,EAA0Bt6D,UAAUi7D,YAAc,WAC9C,IAAIR,EAAKv4D,KAAKu4D,KACVC,EAAKx4D,KAAKw4D,KACVC,EAAKz4D,KAAKy4D,KACd,MAAO,CACHR,OAAQM,aAA+B,EAASA,EAAG5+B,aACnDu+B,SAAUM,aAA+B,EAASA,EAAG7+B,aACrDw+B,KAAMM,aAA+B,EAASA,EAAG9+B,aAEzD,EACAy+B,EAA0Bt6D,UAAUk7D,YAAc,SAAUC,GACxD,IAAI/d,EAAIl7C,KAAK07B,KAAKlE,QAAQ5G,IAAIqoC,GAC9Bj5D,KAAK07B,KAAKhE,IAAI,MAAW,KAAMwjB,EACnC,EACAkd,EAA0Bt6D,UAAUo7D,eAAiB,SAAUC,GAC3D,IAAId,EAAKr4D,KAAK07B,KAAKlE,QAAQ5G,IAAIuoC,GAC/Bn5D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO2gC,EACpC,EACAD,EAA0Bt6D,UAAUs7D,mBAAqB,SAAUD,GAC/D,IAAIb,EAAKt4D,KAAK07B,KAAKlE,QAAQ5G,IAAIuoC,GAC/Bn5D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO4gC,EACpC,EACAF,EAA0Bt6D,UAAUu7D,YAAc,SAAUC,GACxD,IAAIf,EAAK,YAAsBe,EAASrB,QAExC,GADAj4D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO6gC,GAC5Be,EAASpB,SAAU,CACnB,IAAIM,EAAK,YAAsBc,EAASpB,UACxCl4D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO8gC,EACpC,MAEIx4D,KAAK07B,KAAKI,OAAO,MAAW,OAEhC,GAAIw9B,EAASnB,KAAM,CACf,IAAIM,EAAK,YAAsBa,EAASnB,MACxCn4D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO+gC,EACpC,MAEIz4D,KAAK07B,KAAKI,OAAO,MAAW,MAEpC,EACAs8B,EAA0BxD,SAAW,SAAUl5B,GAC3C,OAAO,IAAI08B,EAA0B18B,EACzC,EACO08B,CACX,CAhH8C,GAiH9C,YC7GA,IAAImB,GAAqC,SAAUr3D,GAE/C,SAASq3D,IACL,OAAkB,OAAXr3D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CA2FA,OA9FAgjB,GAAUu2C,EAAqBr3D,GAI/Bq3D,EAAoBz7D,UAAU07D,GAAK,WAC/B,IAAIA,EAAKx5D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIo0C,aAAc,GACd,OAAOA,CAEf,EACAD,EAAoBz7D,UAAU27D,GAAK,WAC/B,IAAIA,EAAKz5D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAIq0C,aAAc,GACd,OAAOA,CAEf,EACAF,EAAoBz7D,UAAUo3D,GAAK,WAC/B,IAAIC,EAAKn1D,KAAK07B,KAAKtW,OAAO,MAAW,OACrC,GAAI+vC,aAAc,IAAaA,aAAc,GACzC,OAAOA,CAEf,EACAoE,EAAoBz7D,UAAU4lB,EAAI,WAC9B,IAAIA,EAAI1jB,KAAK07B,KAAKl7B,IAAI,MAAW,MACjC,GAAIkjB,aAAa,GACb,OAAOA,CAEf,EACA61C,EAAoBz7D,UAAU47D,KAAO,SAAUlK,GAC3CxvD,KAAK07B,KAAKhE,IAAI,MAAW,KAAM83B,EACnC,EACA+J,EAAoBz7D,UAAU63D,qBAAuB,SAAUC,GAC3D51D,KAAK07B,KAAKhE,IAAI,MAAW,MAAO,MAAak+B,GACjD,EACA2D,EAAoBz7D,UAAU+3D,qBAAuB,WACjD,IAAIX,EAAKl1D,KAAKk1D,KACd,OAAIA,aAAc,GACPA,EAAGv7B,aAEPu7B,aAA+B,EAASA,EAAGr7B,UACtD,EACA0/B,EAAoBz7D,UAAU67D,6BAA+B,WACzD,IAAIH,EAAKx5D,KAAKw5D,KACd,GAAIA,EACA,OAAO,YAAmCA,EAElD,EACAD,EAAoBz7D,UAAU87D,qCAAuC,WACjE,IAAIJ,EAAKx5D,KAAKw5D,KACd,GAAIA,EACA,OAAO,YAAmCA,GAC9C,IAAI9Z,EAAK,YAAmC1/C,KAAK07B,KAAKlE,QAAQ5G,IAAI,CAAC,IAEnE,OADA5wB,KAAK07B,KAAKhE,IAAI,MAAW,MAAOgoB,EAAGhkB,MAC5BgkB,CACX,EACA6Z,EAAoBz7D,UAAU+7D,eAAiB,WAC3C,IAAIJ,EAAKz5D,KAAKy5D,KACd,GAAIA,EACA,OAAO,YAAqBA,EAEpC,EACAF,EAAoBz7D,UAAUg8D,uBAAyB,WACnD,IAAIL,EAAKz5D,KAAKy5D,KACd,GAAIA,EACA,OAAO,YAAqBA,GAChC,IAAIM,EAAK,YAAqB/5D,KAAK07B,KAAKlE,QAAQ5G,IAAI,CAAC,IAErD,OADA5wB,KAAK07B,KAAKhE,IAAI,MAAW,MAAOqiC,EAAGr+B,MAC5Bq+B,CACX,EACAR,EAAoBz7D,UAAUk8D,WAAa,WACvC,IAAI3wC,EACA4uC,EAA0C,QAAhC5uC,EAAKrpB,KAAKg4D,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,OAClF,GAAIA,aAAkB,GAElB,IADA,IAAI9nC,EAAO8nC,EAAO9nC,OACTpJ,EAAM,EAAGhB,EAAMoK,EAAKhzB,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACnD,IAAIrpB,EAAMyyB,EAAKpJ,GACf,GAAIrpB,IAAQ,MAAW,OACnB,OAAOA,CACf,CAGR,EACA67D,EAAoB3E,SAAW,SAAUl5B,GACrC,OAAO,IAAI69B,EAAoB79B,EACnC,EACA69B,EAAoBr7D,OAAS,SAAUs5B,EAAS6K,GAO5C,OAAO,IAAIk3B,EANA/hC,EAAQ5G,IAAI,CACnByJ,KAAM,QACNmF,QAAS,SACTw3B,KAAM,CAAC,EAAG,EAAG,EAAG,GAChB18B,OAAQ+H,IAGhB,EACOk3B,CACX,CAhGwC,CAgGtC,IACF,YCpGA,IAAIU,GAAiC,SAAU/3D,GAE3C,SAAS+3D,IACL,OAAkB,OAAX/3D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAsDA,OAzDAgjB,GAAUi3C,EAAiB/3D,GAI3B+3D,EAAgBn8D,UAAUo8D,GAAK,WAC3B,IAAIC,EAAYn6D,KAAKmgC,wBAAwB,MAAW,OACxD,OAAOngC,KAAK07B,KAAKlE,QAAQpS,OAAO+0C,EAAW,GAC/C,EACAF,EAAgBn8D,UAAUs8D,WAAa,WACnC,IAAIC,EAAWr6D,KAAKi1D,OAEpB,IAAKoF,EACD,MAAO,CAAC,YAA6Br6D,KAAK07B,OAG9C,IADA,IAAI4+B,EAAU,IAAIv3C,MAAMs3C,EAASlmC,QACxBpN,EAAM,EAAGhB,EAAMs0C,EAASlmC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACvD,IAAI2U,EAAO2+B,EAASj1C,OAAO2B,EAAK,IAChCuzC,EAAQvzC,GAAO,YAA6B2U,EAChD,CACA,OAAO4+B,CACX,EACAL,EAAgBn8D,UAAUy8D,UAAY,SAAUn6C,GACjCpgB,KAAK6gC,oBAAoBo0B,KAC/B/zD,KAAKkf,EACd,EACA65C,EAAgBn8D,UAAU08D,aAAe,SAAUzzC,GAC/C,IAAIszC,EAAWr6D,KAAKi1D,OACpB,GAAKoF,EAMA,CAED,GAAItzC,EAAM,GAAKA,EAAMszC,EAASlmC,OAC1B,MAAM,IAAIO,GAAsB3N,EAAK,EAAGszC,EAASlmC,QAErDkmC,EAAS7pD,OAAOuW,EACpB,KAZe,CAEX,GAAY,IAARA,EACA,MAAM,IAAI2N,GAAsB3N,EAAK,EAAG,GAC5C/mB,KAAKo1D,QAAQ,GACjB,CAQJ,EACA6E,EAAgBn8D,UAAU+iC,kBAAoB,WAC1C,IAAIo0B,EAAOj1D,KAAKi1D,OAUhB,OAJKA,IACDA,EAAOj1D,KAAK07B,KAAKlE,QAAQ5G,IAAI,CAAC5wB,KAAKogB,MACnCpgB,KAAK07B,KAAKhE,IAAI,MAAW,QAASu9B,IAE/B,CAAEA,KAAMA,EACnB,EACAgF,EAAgBrF,SAAW,SAAUl5B,EAAMtb,GACvC,OAAO,IAAI65C,EAAgBv+B,EAAMtb,EACrC,EACO65C,CACX,CA3DoC,CA2DlC,IACF,YC3DA,IAAIQ,GAA+B,SAAUv4D,GAEzC,SAASu4D,IACL,OAAkB,OAAXv4D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CA+EA,OAlFAgjB,GAAUy3C,EAAev4D,GAIzBu4D,EAAc38D,UAAU48D,IAAM,WAC1B,OAAO16D,KAAK07B,KAAK/D,YAAY,MAAW,OAAQ,GAAW,GAAc,GAC7E,EACA8iC,EAAc38D,UAAU68D,OAAS,SAAUx5C,GACvCnhB,KAAK07B,KAAKhE,IAAI,MAAW,OAAQ13B,KAAK07B,KAAKlE,QAAQ5G,IAAIzP,GAC3D,EACAs5C,EAAc38D,UAAU88D,gBAAkB,WACtC,IAAIz5C,EAAMnhB,KAAK06D,MACf,GAAKv5C,EAAL,CAEA,GAAIA,aAAe,IAAaA,aAAe,GAC3C,MAAO,CAACA,GAGZ,IADA,IAAIoQ,EAAS,GACJxK,EAAM,EAAGhB,EAAM5E,EAAIgT,OAAQpN,EAAMhB,EAAKgB,IAAO,CAClD,IAAI3oB,EAAQ+iB,EAAIiE,OAAO2B,IACnB3oB,aAAiB,IAAaA,aAAiB,KAC/CmzB,EAAOrwB,KAAK9C,EAEpB,CACA,OAAOmzB,CAXa,CAYxB,EACAkpC,EAAc38D,UAAU+8D,kBAAoB,SAAU9zC,GAClD,IAAI5F,EAAMnhB,KAAK06D,MACf,GAAKv5C,EAEL,GAAIA,aAAe,IAAaA,aAAe,GAAc,CACzD,GAAY,IAAR4F,EACA,MAAM,IAAI2N,GAAsB3N,EAAK,EAAG,GAC5C/mB,KAAK26D,OAAO,GAChB,KACK,CACD,GAAI5zC,EAAM,GAAKA,EAAM5F,EAAIgT,OACrB,MAAM,IAAIO,GAAsB3N,EAAK,EAAG5F,EAAIgT,QAEhDhT,EAAI3Q,OAAOuW,EACf,CACJ,EAEA0zC,EAAc38D,UAAUg9D,sBAAwB,WAK5C,IAJA,IAAIzxC,EAAIE,EAAIE,EAAIE,EACZoxC,EAAiD,QAAjC1xC,EAAKrpB,KAAK46D,yBAAsC,IAAPvxC,EAAgBA,EAAK,GAC9EqxC,EAAM,GACNJ,EAAUt6D,KAAKo6D,aACVrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBk0C,EAAyC,QAA5B1xC,EAAKwxC,EAAah0C,UAAyB,IAAPwC,EAAgBA,EAAK,YAAiH,QAA1FI,EAAoC,QAA9BF,EAAKuxC,EAAOhB,oBAAiC,IAAPvwC,OAAgB,EAASA,EAAGkQ,oBAAiC,IAAPhQ,EAAgBA,EAAK,IACxN+wC,EAAIx5D,KAAK+5D,EACb,CACAj7D,KAAK26D,OAAOD,EAChB,EAKAD,EAAc38D,UAAUo9D,OAAS,SAAU/5C,EAAKg6C,GAC5C,IAAI9xC,EACJrpB,KAAK86D,wBACL,IACIM,EADAC,EAAUl6C,EAAIwY,aAElB,GAAIwhC,EAEA,IADA,IAAIJ,EAAiD,QAAjC1xC,EAAKrpB,KAAK46D,yBAAsC,IAAPvxC,EAAgBA,EAAK,GACzEtC,EAAM,EAAGhB,EAAMg1C,EAAa59D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAC3Cg0C,EAAah0C,GACf4S,eAAiB0hC,IAC3BD,EAAcr0C,EACtB,CAEJ,IAAI2zC,EAAM16D,KAAK06D,MAEf,OADAA,EAAIx5D,KAAKigB,GACFi6C,QAAiDA,EAAcV,EAAIvmC,OAAS,CACvF,EACAsmC,EAAc38D,UAAUw9D,iBAAmB,SAAUN,EAAQ75C,EAAKg6C,GAC9D,IAAII,EAASv7D,KAAKk7D,OAAO/5C,EAAKg6C,GAC1BK,EAAe,MAAW70C,OAAO40C,IAErC,OADAv7D,KAAKu6D,UAAUS,GACRQ,CACX,EACOf,CACX,CApFkC,CAoFhC,IACF,YCxFA,IAAIgB,GAAiC,SAAUv5D,GAE3C,SAASu5D,IACL,OAAkB,OAAXv5D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAoCA,OAvCAgjB,GAAUy4C,EAAiBv5D,GAI3Bu5D,EAAgB39D,UAAU49D,SAAW,SAAUt9D,GAC3C,IAAIirB,EAEJ,GAAIjrB,KADuC,QAA5BirB,EAAKrpB,KAAKg6D,oBAAiC,IAAP3wC,EAAgBA,EAAK,MAAW,SAC1DjrB,IAAU,MAAW,OAC1C,MAAM,IAAIu2B,GAEd30B,KAAK07B,KAAKhE,IAAI,MAAW,KAAMt5B,GAE/B,IADA,IAAIk8D,EAAUt6D,KAAKo6D,aACVrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBpZ,EAAQqtD,EAAOhB,eAAiB57D,EAAQA,EAAQ,MAAW,OAC/D48D,EAAO1D,mBAAmB3pD,EAC9B,CACJ,EACA8tD,EAAgB39D,UAAUg1B,SAAW,WACjC,IAAIrO,EAAIzkB,KAAKw7C,IACb,OAAI/2B,aAAa,GACNA,EACJ,MAAW,MACtB,EACAg3C,EAAgB39D,UAAUk8D,WAAa,WACnC,IAAIgB,EAASh7D,KAAKo6D,aAAa,GAC/B,OAAOY,aAAuC,EAASA,EAAOhB,YAClE,EACAyB,EAAgB7G,SAAW,SAAUl5B,EAAMtb,GACvC,OAAO,IAAIq7C,EAAgB//B,EAAMtb,EACrC,EACAq7C,EAAgBv9D,OAAS,SAAUs5B,GAC/B,IAAIkE,EAAOlE,EAAQ5G,IAAI,CACnBspC,GAAI,MACJjF,KAAM,KAGV,OAAO,IAAIwG,EAAgB//B,EADjBlE,EAAQqH,SAASnD,GAE/B,EACO+/B,CACX,CAzCoC,CAyClC,IACF,YC9CA,IAEWE,GAsBAC,GA0BAC,GAmDAC,GArGPvF,GAAO,SAAUwF,GAAY,OAAO,GAAKA,CAAU,GAGvD,SAAWJ,GAQPA,EAAeA,EAAyB,SAAIpF,GAAK,IAAU,WAK3DoF,EAAeA,EAAyB,SAAIpF,GAAK,IAAU,WAK3DoF,EAAeA,EAAyB,SAAIpF,GAAK,IAAU,UAC9D,CAnBD,CAmBGoF,KAAmBA,GAAiB,CAAC,IAGxC,SAAWC,GAMPA,EAAgBA,EAA+B,cAAIrF,GAAK,KAAW,gBAKnEqF,EAAgBA,EAAuB,MAAIrF,GAAK,KAAW,QAI3DqF,EAAgBA,EAA4B,WAAIrF,GAAK,KAAW,aAOhEqF,EAAgBA,EAAgC,eAAIrF,GAAK,KAAW,gBACvE,CAvBD,CAuBGqF,KAAoBA,GAAkB,CAAC,IAG1C,SAAWC,GAKPA,EAAcA,EAAyB,UAAItF,GAAK,KAAW,YAS3DsF,EAAcA,EAAwB,SAAItF,GAAK,KAAW,WAK1DsF,EAAcA,EAA0B,WAAItF,GAAK,KAAW,aAI5DsF,EAAcA,EAA+B,gBAAItF,GAAK,KAAW,kBASjEsF,EAAcA,EAA2B,YAAItF,GAAK,KAAW,cAQ7DsF,EAAcA,EAAoB,KAAItF,GAAK,KAAW,OAOtDsF,EAAcA,EAAwB,SAAItF,GAAK,KAAW,UAC7D,CAhDD,CAgDGsF,KAAkBA,GAAgB,CAAC,IAGtC,SAAWC,GAIPA,EAAgBA,EAAuB,MAAIvF,GAAK,KAAW,QAM3DuF,EAAgBA,EAAsB,KAAIvF,GAAK,KAAW,OAO1DuF,EAAgBA,EAAsB,KAAIvF,GAAK,KAAW,OAK1DuF,EAAgBA,EAA6B,YAAIvF,GAAK,KAAW,cAKjEuF,EAAgBA,EAAiC,gBAAIvF,GAAK,KAAW,kBAerEuF,EAAgBA,EAAmC,kBAAIvF,GAAK,KAAW,mBAC1E,CA3CD,CA2CGuF,KAAoBA,GAAkB,CAAC,ICzI1C,IAAIE,GAA+B,SAAU95D,GAEzC,SAAS85D,IACL,OAAkB,OAAX95D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CA6GA,OAhHAgjB,GAAUg5C,EAAe95D,GAIzB85D,EAAcl+D,UAAUm+D,UAAY,SAAU1qC,GAC1C,GAAIvxB,KAAKs2D,QAAQwF,GAAgBI,SAC5Bl8D,KAAKs2D,QAAQwF,GAAgBlnD,QAC7B5U,KAAKm8D,eAAe5qC,GACrB,MAAM,IAAIoD,GAQd,GANsB,IAAlBpD,EAAOp0B,QACP6C,KAAK07B,KAAKI,OAAO,MAAW,MAEV,IAAlBvK,EAAOp0B,QACP6C,KAAK07B,KAAKhE,IAAI,MAAW,KAAMnG,EAAO,IAEtCA,EAAOp0B,OAAS,EAAG,CACnB,IAAK6C,KAAKs2D,QAAQwF,GAAgBM,aAC9B,MAAM,IAAIxnC,GAEd50B,KAAK07B,KAAKhE,IAAI,MAAW,KAAM13B,KAAK07B,KAAKlE,QAAQ5G,IAAIW,GACzD,CACAvxB,KAAKq8D,sBAAsB9qC,EAC/B,EACAyqC,EAAcl+D,UAAUq+D,eAAiB,SAAU5qC,GAQ/C,IAPA,IAAIvwB,EAAUhB,KAAKs8D,aACfC,EAAU,SAAUx1C,EAAKhB,GACzB,IAAIzM,EAAMiY,EAAOxK,GAAK4S,aACtB,IAAK34B,EAAQsP,MAAK,SAAU/R,GAAK,OAAO+a,KAAS/a,EAAEi+D,SAAWj+D,EAAEH,OAAOu7B,YAAc,IACjF,MAAO,CAAEv7B,OAAO,EAExB,EACS2oB,EAAM,EAAGhB,EAAMwL,EAAOp0B,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACrD,IAAI01C,EAAUF,EAAQx1C,GACtB,GAAuB,iBAAZ01C,EACP,OAAOA,EAAQr+D,KACvB,CACA,OAAO,CACX,EACA49D,EAAcl+D,UAAUu+D,sBAAwB,SAAU9qC,GACtD,GAAIA,EAAOp0B,OAAS,EAAG,CAOnB,IANA,IAAIu/D,EAAU,IAAI35C,MAAMwO,EAAOp0B,QAC3B6D,EAAUhB,KAAKs8D,aACfK,EAAU,SAAU51C,EAAKhB,GACzB,IAAIzM,EAAMiY,EAAOxK,GAAK4S,aACtB+iC,EAAQ31C,GAAO/lB,EAAQiZ,WAAU,SAAU1b,GAAK,OAAO+a,KAAS/a,EAAEi+D,SAAWj+D,EAAEH,OAAOu7B,YAAc,GACxG,EACS5S,EAAM,EAAGhB,EAAMwL,EAAOp0B,OAAQ4pB,EAAMhB,EAAKgB,IAC9C41C,EAAQ51C,GAEZ/mB,KAAK07B,KAAKhE,IAAI,MAAW,KAAM13B,KAAK07B,KAAKlE,QAAQ5G,IAAI8rC,EAAQrsC,QACjE,MAEIrwB,KAAK07B,KAAKI,OAAO,MAAW,KAEpC,EACAkgC,EAAcl+D,UAAU8+D,UAAY,WAChC,IAAIn4C,EAAIzkB,KAAKw7C,IACb,GAAI/2B,aAAa,IAAaA,aAAa,GACvC,MAAO,CAACA,GACZ,GAAIA,aAAa,GAAU,CAEvB,IADA,IAAI8M,EAAS,GACJxK,EAAM,EAAGhB,EAAMtB,EAAE0P,OAAQpN,EAAMhB,EAAKgB,IAAO,CAChD,IAAI3oB,EAAQqmB,EAAEW,OAAO2B,IACjB3oB,aAAiB,IAAaA,aAAiB,KAC/CmzB,EAAOrwB,KAAK9C,EAEpB,CACA,OAAOmzB,CACX,CACA,MAAO,EACX,EACAyqC,EAAcl+D,UAAU48D,IAAM,WAC1B,OAAO16D,KAAK07B,KAAK/D,YAAY,MAAW,OAAQ,GAAW,GAAc,GAC7E,EACAqkC,EAAcl+D,UAAU++D,WAAa,SAAU77D,GAE3C,IADA,IAAI87D,EAAS,IAAI/5C,MAAM/hB,EAAQ7D,QACtB4pB,EAAM,EAAGhB,EAAM/kB,EAAQ7D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIsC,EAAKroB,EAAQ+lB,GAAM3oB,EAAQirB,EAAGjrB,MAAOo+D,EAAUnzC,EAAGmzC,QACtDM,EAAO/1C,GAAO/mB,KAAK07B,KAAKlE,QAAQ5G,IAAI,CAACxyB,EAAOo+D,GAAWp+D,GAC3D,CACA4B,KAAK07B,KAAKhE,IAAI,MAAW,OAAQ13B,KAAK07B,KAAKlE,QAAQ5G,IAAIksC,GAC3D,EACAd,EAAcl+D,UAAUw+D,WAAa,WACjC,IAAI5B,EAAM16D,KAAK06D,MAEf,GAAIA,aAAe,IAAaA,aAAe,GAC3C,MAAO,CAAC,CAAEt8D,MAAOs8D,EAAK8B,QAAS9B,IAEnC,GAAIA,aAAe,GAAU,CAEzB,IADA,IAAIvuC,EAAM,GACDpF,EAAM,EAAGhB,EAAM20C,EAAIvmC,OAAQpN,EAAMhB,EAAKgB,IAAO,CAClD,IAAInX,EAAO8qD,EAAIt1C,OAAO2B,GAQtB,IANInX,aAAgB,IAAaA,aAAgB,KAC7Cuc,EAAIjrB,KAAK,CAAE9C,MAAOwR,EAAM4sD,QAAS5sD,IAKjCA,aAAgB,IACZA,EAAKukB,OAAS,EAAG,CACjB,IAAI/G,EAAQxd,EAAKwV,OAAO,EAAG,GAAW,IAClCmI,EAAS3d,EAAK+nB,YAAY,EAAG,GAAW,IAC5CxL,EAAIjrB,KAAK,CAAE9C,MAAOgvB,EAAOovC,QAASjvC,GAAUH,GAChD,CAER,CACA,OAAOjB,CACX,CACA,MAAO,EACX,EACO6vC,CACX,CAlHkC,CAkHhC,IACF,YCrGA,SAnBqC,SAAU95D,GAE3C,SAAS66D,IACL,OAAkB,OAAX76D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAaA,OAhBAgjB,GAAU+5C,EAAiB76D,GAI3B66D,EAAgBnI,SAAW,SAAUl5B,EAAMtb,GACvC,OAAO,IAAI28C,EAAgBrhC,EAAMtb,EACrC,EACA28C,EAAgB7+D,OAAS,SAAUs5B,GAC/B,IAAIkE,EAAOlE,EAAQ5G,IAAI,CACnBspC,GAAI,KACJnF,GAAI+G,GAAgBI,MACpBjH,KAAM,KAGV,OAAO,IAAI8H,EAAgBrhC,EADjBlE,EAAQqH,SAASnD,GAE/B,EACOqhC,CACX,CAlBoC,CAkBlC,ICSF,SA3BwC,SAAU76D,GAE9C,SAAS86D,IACL,OAAkB,OAAX96D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAqBA,OAxBAgjB,GAAUg6C,EAAoB96D,GAI9B86D,EAAmBl/D,UAAUm/D,SAAW,SAAUC,GAC9C,IAAIjI,EAAOj1D,KAAK6gC,oBAAoBo0B,KACpCA,SAA4CA,EAAK/zD,KAAKg8D,EAC1D,EACAF,EAAmBl/D,UAAU+iC,kBAAoB,WAC7C,IAAIo0B,EAAOj1D,KAAKi1D,OAKhB,OAJKA,IACDA,EAAOj1D,KAAK07B,KAAKlE,QAAQ5G,IAAI,IAC7B5wB,KAAK07B,KAAKhE,IAAI,MAAW,QAASu9B,IAE/B,CAAEA,KAAMA,EACnB,EACA+H,EAAmBpI,SAAW,SAAUl5B,EAAMtb,GAC1C,OAAO,IAAI48C,EAAmBthC,EAAMtb,EACxC,EACA48C,EAAmB9+D,OAAS,SAAUs5B,GAClC,IAAIkE,EAAOlE,EAAQ5G,IAAI,CAAC,GAExB,OAAO,IAAIosC,EAAmBthC,EADpBlE,EAAQqH,SAASnD,GAE/B,EACOshC,CACX,CA1BuC,CA0BrC,ICjBF,SAVsC,SAAU96D,GAE5C,SAASi7D,IACL,OAAkB,OAAXj7D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAIA,OAPAgjB,GAAUm6C,EAAkBj7D,GAI5Bi7D,EAAiBvI,SAAW,SAAUl5B,EAAMtb,GACxC,OAAO,IAAI+8C,EAAiBzhC,EAAMtb,EACtC,EACO+8C,CACX,CATqC,CASnC,IC0DF,SA/DiC,SAAUj7D,GAEvC,SAASk7D,IACL,OAAkB,OAAXl7D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAyDA,OA5DAgjB,GAAUo6C,EAAal7D,GAIvBk7D,EAAYt/D,UAAUu/D,OAAS,WAC3B,IAAI9P,EAASvtD,KAAK07B,KAAKtW,OAAO,MAAW,WACzC,GAAImoC,aAAkB,GAClB,OAAOA,CAEf,EACA6P,EAAYt/D,UAAUu9C,EAAI,WACtB,IAAIriC,EAAIhZ,KAAK07B,KAAKtW,OAAO,MAAW,MACpC,GAAIpM,aAAa,GACb,OAAOA,CAEf,EACAokD,EAAYt/D,UAAUw/D,aAAe,SAAUC,GAC3Cv9D,KAAK07B,KAAKhE,IAAI,MAAW,UAAW,MAAa6lC,GACrD,EACAH,EAAYt/D,UAAU0/D,gBAAkB,WACpCx9D,KAAK07B,KAAKI,OAAO,MAAW,UAChC,EACAshC,EAAYt/D,UAAU2/D,aAAe,WACjC,IAAIp0C,EACJ,OAAgC,QAAxBA,EAAKrpB,KAAKq9D,gBAA6B,IAAPh0C,OAAgB,EAASA,EAAGgO,UACxE,EACA+lC,EAAYt/D,UAAU4/D,YAAc,SAAUC,GAC1C39D,KAAK07B,KAAKhE,IAAI,MAAW,KAAM,MAAaimC,GAChD,EACAP,EAAYt/D,UAAU8/D,YAAc,WAChC,IAAIv0C,EACJ,OAA2B,QAAnBA,EAAKrpB,KAAKq7C,WAAwB,IAAPhyB,OAAgB,EAASA,EAAGgO,UACnE,EACA+lC,EAAYt/D,UAAU49D,SAAW,SAAUt9D,GACvC4B,KAAK07B,KAAKhE,IAAI,MAAW,KAAMt5B,EAOnC,EACAg/D,EAAYt/D,UAAU+/D,YAAc,WAChC79D,KAAK07B,KAAKI,OAAO,MAAW,KAChC,EACAshC,EAAYt/D,UAAUg1B,SAAW,WAC7B,IAAIrO,EAAIzkB,KAAKw7C,IACb,GAAI/2B,aAAa,IAAaA,aAAa,GACvC,OAAOA,CAEf,EACA24C,EAAYxI,SAAW,SAAUl5B,EAAMtb,GAAO,OAAO,IAAIg9C,EAAY1hC,EAAMtb,EAAM,EACjFg9C,EAAYl/D,OAAS,SAAUs5B,GAC3B,IAAIkE,EAAOlE,EAAQ5G,IAAI,CACnBspC,GAAI,KACJjF,KAAM,KAGV,OAAO,IAAImI,EAAY1hC,EADblE,EAAQqH,SAASnD,GAE/B,EACO0hC,CACX,CA9DgC,CA8D9B,IC9CF,SAnBuC,SAAUl7D,GAE7C,SAAS47D,IACL,OAAkB,OAAX57D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAaA,OAhBAgjB,GAAU86C,EAAmB57D,GAI7B47D,EAAkBlJ,SAAW,SAAUl5B,EAAMtb,GACzC,OAAO,IAAI09C,EAAkBpiC,EAAMtb,EACvC,EACA09C,EAAkB5/D,OAAS,SAAUs5B,GACjC,IAAIkE,EAAOlE,EAAQ5G,IAAI,CACnBspC,GAAI,MACJnF,GAAI6G,GAAgBmC,WACpB9I,KAAM,KAGV,OAAO,IAAI6I,EAAkBpiC,EADnBlE,EAAQqH,SAASnD,GAE/B,EACOoiC,CACX,CAlBsC,CAkBpC,IChBF,IAAIE,GAAoC,SAAU97D,GAE9C,SAAS87D,IACL,OAAkB,OAAX97D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CA0CA,OA7CAgjB,GAAUg7C,EAAoB97D,GAI9B87D,EAAmBlgE,UAAU49D,SAAW,SAAUt9D,GAE9C,IADe4B,KAAKi+D,cACNllD,SAAS3a,IAAUA,IAAU,MAAW,OAClD,MAAM,IAAIu2B,GAEd30B,KAAK07B,KAAKhE,IAAI,MAAW,KAAMt5B,GAE/B,IADA,IAAIk8D,EAAUt6D,KAAKo6D,aACVrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBpZ,EAAQqtD,EAAOhB,eAAiB57D,EAAQA,EAAQ,MAAW,OAC/D48D,EAAO1D,mBAAmB3pD,EAC9B,CACJ,EACAqwD,EAAmBlgE,UAAUg1B,SAAW,WACpC,IAAIrO,EAAIzkB,KAAKw7C,IACb,OAAI/2B,aAAa,GACNA,EACJ,MAAW,MACtB,EACAu5C,EAAmBlgE,UAAUmgE,YAAc,WAGvC,IAFA,IAAI3D,EAAUt6D,KAAKo6D,aACf8D,EAAW,GACNn3C,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIo3C,EAAU7D,EAAQvzC,GAAKizC,aACvBmE,GACAD,EAASh9D,KAAKi9D,EACtB,CACA,OAAOD,CACX,EACAF,EAAmBpJ,SAAW,SAAUl5B,EAAMtb,GAC1C,OAAO,IAAI49C,EAAmBtiC,EAAMtb,EACxC,EACA49C,EAAmB9/D,OAAS,SAAUs5B,GAClC,IAAIkE,EAAOlE,EAAQ5G,IAAI,CACnBspC,GAAI,MACJnF,GAAI6G,GAAgBwC,MACpBnJ,KAAM,KAGV,OAAO,IAAI+I,EAAmBtiC,EADpBlE,EAAQqH,SAASnD,GAE/B,EACOsiC,CACX,CA/CuC,CA+CrC,IACF,YCjCA,SAlBoC,SAAU97D,GAE1C,SAASm8D,IACL,OAAkB,OAAXn8D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAYA,OAfAgjB,GAAUq7C,EAAgBn8D,GAI1Bm8D,EAAezJ,SAAW,SAAUl5B,EAAMtb,GACtC,OAAO,IAAIi+C,EAAe3iC,EAAMtb,EACpC,EACAi+C,EAAengE,OAAS,SAAUs5B,GAC9B,IAAIkE,EAAOlE,EAAQ5G,IAAI,CACnBspC,GAAI,KACJjF,KAAM,KAGV,OAAO,IAAIoJ,EAAe3iC,EADhBlE,EAAQqH,SAASnD,GAE/B,EACO2iC,CACX,CAjBmC,CAiBjC,ICJK,IAAIC,GAAsB,SAAUjE,GACvC,IAAKA,EACD,MAAO,GAEX,IADA,IAAIhF,EAAO,GACFtuC,EAAM,EAAGhB,EAAMs0C,EAASlmC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACvD,IAAI3G,EAAMi6C,EAAS75D,IAAIumB,GACnB2U,EAAO2+B,EAASj1C,OAAO2B,GAEvB3G,aAAe,IAAUsb,aAAgB,IACzC25B,EAAKn0D,KAAK,CAACq9D,GAAmB7iC,EAAMtb,GAAMA,GAElD,CACA,OAAOi1C,CACX,EACWkJ,GAAqB,SAAU7iC,EAAMtb,GAE5C,OADoBo+C,GAAuB9iC,GAEhC,YAA4BA,EAAMtb,GACtCq+C,GAAsB/iC,EAAMtb,EACvC,EAgBIo+C,GAAyB,SAAU9iC,GACnC,IAAI25B,EAAO35B,EAAKtW,OAAO,MAAW,SAClC,GAAIiwC,aAAgB,GAChB,IAAK,IAAItuC,EAAM,EAAGhB,EAAMsvC,EAAKlhC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACnD,IAAI23C,EAAMrJ,EAAKjwC,OAAO2B,GAEtB,GADiB23C,aAAe,IAAWA,EAAI7iC,IAAI,MAAW,MAE1D,OAAO,CACf,CAEJ,OAAO,CACX,EACI4iC,GAAwB,SAAU/iC,EAAMtb,GACxC,IAAIu+C,EAAcx+B,GAAwBzE,EAAM,MAAW,OACvD56B,EAAO46B,EAAKlE,QAAQpS,OAAOu5C,EAAa,IAC5C,OAAI79D,IAAS,MAAW,OACb89D,GAAoBljC,EAAMtb,GACjCtf,IAAS,MAAW,MACb+9D,GAAoBnjC,EAAMtb,GACjCtf,IAAS,MAAW,MACb,YAAqB46B,EAAMtb,GAClCtf,IAAS,MAAW,OACb,YAA0B46B,EAAMtb,GAIpC,YAAyBsb,EAAMtb,EAC1C,EACIw+C,GAAsB,SAAUljC,EAAMtb,GACtC,IAAIiJ,EACAy1C,EAAgB3+B,GAAwBzE,EAAM,MAAW,OACzDqjC,EAAWrjC,EAAKlE,QAAQG,YAAYmnC,EAAe,IACnDzuB,EAA2F,QAAlFhnB,EAAK01C,aAA2C,EAASA,EAAS1nC,kBAA+B,IAAPhO,EAAgBA,EAAK,EAC5H,OAAI21C,GAAU3uB,EAAOurB,GAAgBmC,YAC1B,YAA2BriC,EAAMtb,GAEnC4+C,GAAU3uB,EAAOurB,GAAgBwC,OAC/B,YAA4B1iC,EAAMtb,GAGlC,YAAyBsb,EAAMtb,EAE9C,EACIy+C,GAAsB,SAAUnjC,EAAMtb,GACtC,IAAIiJ,EACAy1C,EAAgB3+B,GAAwBzE,EAAM,MAAW,OACzDqjC,EAAWrjC,EAAKlE,QAAQG,YAAYmnC,EAAe,IACnDzuB,EAA2F,QAAlFhnB,EAAK01C,aAA2C,EAASA,EAAS1nC,kBAA+B,IAAPhO,EAAgBA,EAAK,EAC5H,OAAI21C,GAAU3uB,EAAOyrB,GAAgBI,OAC1B,YAAyBxgC,EAAMtb,GAG/B,YAAwBsb,EAAMtb,EAE7C,EACI4+C,GAAY,SAAU3uB,EAAOkmB,GAC7B,SAAQlmB,EAAQkmB,EACpB,EACIp2B,GAA0B,SAAU8+B,EAAW/7D,GAC/C,IAAIo9B,EAKJ,OAJAC,GAAO0+B,GAAW,SAAUz+B,GACnBF,IACDA,EAAYE,EAAKhgC,IAAI0C,GAC7B,IACOo9B,CACX,EACIC,GAAS,SAAU0+B,EAAWj9B,GAC9BA,EAAQi9B,GACR,IAAI3kC,EAAS2kC,EAAUtnC,YAAY,MAAW,UAAW,IACrD2C,GACAiG,GAAOjG,EAAQ0H,EACvB,ECpHIk9B,GAA6B,WAC7B,SAASA,EAAYxjC,GACjB17B,KAAK07B,KAAOA,CAChB,CA+DA,OA9DAwjC,EAAYphE,UAAUqhE,OAAS,WAC3B,IAAIC,EAASp/D,KAAK07B,KAAKtW,OAAO,MAAW,WACzC,GAAIg6C,aAAkB,GAClB,OAAOA,CAEf,EACAF,EAAYphE,UAAUuhE,UAAY,WAG9B,IAFA,IAAIF,EAASn/D,KAAK6gC,oBAAoBs+B,OAClCC,EAAS,IAAIr8C,MAAMo8C,EAAOhrC,QACrBpN,EAAM,EAAGhB,EAAMo5C,EAAOhrC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACrD,IAAI3G,EAAM++C,EAAO3+D,IAAIumB,GACjB2U,EAAOyjC,EAAO/5C,OAAO2B,EAAK,IAC9Bq4C,EAAOr4C,GAAO,CAACw3C,GAAmB7iC,EAAMtb,GAAMA,EAClD,CACA,OAAOg/C,CACX,EACAF,EAAYphE,UAAUwhE,aAAe,WACjC,IAAIC,EAAY,GACZC,EAAa,SAAUJ,GACvB,GAAKA,EAEL,IAAK,IAAIr4C,EAAM,EAAGhB,EAAMq5C,EAAOjiE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACrD,IAAIm2C,EAAQkC,EAAOr4C,GACnBw4C,EAAUr+D,KAAKg8D,GACf,IAAIuC,EAAavC,EAAM,GACnBuC,aAAsB,IACtBD,EAAWlB,GAAoBmB,EAAWxK,QAElD,CACJ,EAEA,OADAuK,EAAWx/D,KAAKq/D,aACTE,CACX,EACAL,EAAYphE,UAAUm/D,SAAW,SAAUC,GACvC,IAAIiC,EAASn/D,KAAK6gC,oBAAoBs+B,OACtCA,SAAgDA,EAAOj+D,KAAKg8D,EAChE,EACAgC,EAAYphE,UAAU4hE,YAAc,SAAUxC,GAC1C,IAAI76B,EAAS66B,EAAM5H,YACf8J,OAAoBh9D,IAAXigC,EAAuBriC,KAAK6gC,oBAAoBs+B,OAAS98B,EAAO4yB,OACzE5oD,EAAQ+yD,aAAuC,EAASA,EAAOtvD,QAAQotD,EAAM98C,KACjF,QAAehe,IAAXg9D,QAAkCh9D,IAAViK,EACxB,MAAM,IAAIpJ,MAAM,oCAAsCi6D,EAAM3H,yBAEhE6J,EAAO5uD,OAAOnE,QACCjK,IAAXigC,GAA0C,IAAlB+8B,EAAOjrC,QAC/Bn0B,KAAK0/D,YAAYr9B,EAEzB,EACA68B,EAAYphE,UAAU+iC,kBAAoB,WACtC,IAAIs+B,EAASn/D,KAAKm/D,SAKlB,OAJKA,IACDA,EAASn/D,KAAK07B,KAAKlE,QAAQ5G,IAAI,IAC/B5wB,KAAK07B,KAAKhE,IAAI,MAAW,UAAWynC,IAEjC,CAAEA,OAAQA,EACrB,EACAD,EAAYtK,SAAW,SAAUl5B,GAAQ,OAAO,IAAIwjC,EAAYxjC,EAAO,EACvEwjC,EAAYhhE,OAAS,SAAUs5B,GAE3B,OAAO,IAAI0nC,EADA1nC,EAAQ5G,IAAI,CAAEuuC,OAAQ,KAErC,EACOD,CACX,CAnEgC,GAoEhC,YCEA,SAtEgC,SAAUh9D,GAEtC,SAASy9D,IACL,OAAkB,OAAXz9D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAgEA,OAnEAgjB,GAAU28C,EAAYz9D,GAItBy9D,EAAW7hE,UAAU8hE,MAAQ,WACzB,OAAO5/D,KAAKolB,OAAO,MAAW,SAAU,GAC5C,EACAu6C,EAAW7hE,UAAU+hE,SAAW,WAC5B,OAAO7/D,KAAK23B,YAAY,MAAW,YAAa,GACpD,EACAgoC,EAAW7hE,UAAUgiE,YAAc,WAC/B,IAAIpkC,EAAO17B,KAAK6/D,WAChB,GAAKnkC,EAEL,OAAO,YAAqBA,EAChC,EACAikC,EAAW7hE,UAAUiiE,oBAAsB,WACvC,IAAIC,EAAWhgE,KAAK8/D,cACpB,IAAKE,EAAU,CACXA,EAAW,UAAmBhgE,KAAKw3B,SACnC,IAAIyoC,EAAcjgE,KAAKw3B,QAAQqH,SAASmhC,EAAStkC,MACjD17B,KAAK03B,IAAI,MAAW,YAAauoC,EACrC,CACA,OAAOD,CACX,EACAL,EAAW7hE,UAAU8yD,kBAAoB,WACrC,OAAO5wD,KAAK23B,YAAY,MAAW,qBAAsB,GAC7D,EACAgoC,EAAW7hE,UAAUoiE,qBAAuB,WACxC,IAAIxkC,EAAO17B,KAAK4wD,oBAChB,GAAKl1B,EAEL,OAAO,YAA2BA,EACtC,EACAikC,EAAW7hE,UAAUqiE,6BAA+B,WAChD,IAAIC,EAAcpgE,KAAKkgE,uBACvB,IAAKE,EAAa,CACdA,EAAc,UAAyBpgE,KAAKw3B,SAC5C,IAAI6oC,EAAiBrgE,KAAKw3B,QAAQqH,SAASuhC,EAAY1kC,MACvD17B,KAAK03B,IAAI,MAAW,qBAAsB2oC,EAC9C,CACA,OAAOD,CACX,EAQAT,EAAW7hE,UAAUwiE,eAAiB,SAAUC,EAASl0D,GACrD,IAAIm0D,EAAWxgE,KAAKQ,IAAI,MAAW,UAEnC,OADqBR,KAAK4/D,QAAQU,eAAeC,EAASl0D,IACjCm0D,CAC7B,EACAb,EAAW7hE,UAAU2iE,eAAiB,SAAUp0D,GAC5CrM,KAAK4/D,QAAQa,eAAep0D,EAChC,EACAszD,EAAWe,oBAAsB,SAAUlpC,EAASmpC,GAChD,IAAIjlC,EAAO,IAAIxC,IAGf,OAFAwC,EAAKhE,IAAI,MAAW,QAAS,MAAW,YACxCgE,EAAKhE,IAAI,MAAW,SAAUipC,GACvB,IAAIhB,EAAWjkC,EAAMlE,EAChC,EACAmoC,EAAWtjC,mBAAqB,SAAU70B,EAAKgwB,GAC3C,OAAO,IAAImoC,EAAWn4D,EAAKgwB,EAC/B,EACOmoC,CACX,CArE+B,CAqE7B,ICnEF,IAAIiB,GAA6B,SAAU1+D,GAEvC,SAAS0+D,IACL,OAAkB,OAAX1+D,GAAmBA,EAAOhC,MAAMF,KAAMC,YAAcD,IAC/D,CAgKA,OAnKAgjB,GAAU49C,EAAa1+D,GAIvB0+D,EAAY9iE,UAAUw8B,OAAS,WAC3B,OAAOt6B,KAAKolB,OAAO,MAAW,UAClC,EACAw7C,EAAY9iE,UAAUm3D,KAAO,WACzB,OAAOj1D,KAAKolB,OAAO,MAAW,QAAS,GAC3C,EACAw7C,EAAY9iE,UAAUy2B,MAAQ,WAC1B,OAAOv0B,KAAKolB,OAAO,MAAW,SAAU,GAC5C,EACAw7C,EAAY9iE,UAAU+iE,aAAe,SAAUC,GAChC9gE,KAAKi1D,OACX/zD,KAAK4/D,EACd,EACAF,EAAY9iE,UAAUijE,aAAe,SAAUR,GAC3C,IAAItL,EAAOj1D,KAAKi1D,OAChBj1D,KAAKghE,cAAc/L,EAAK9gC,OAAQosC,EACpC,EAUAK,EAAY9iE,UAAUwiE,eAAiB,SAAUC,EAASjsC,GACtD,IAAI2gC,EAAOj1D,KAAKi1D,OACZ1gC,EAAQv0B,KAAKu0B,QAAQ8C,WACzB,GAAI/C,EAAcC,EACd,MAAM,IAAIF,GAAwBC,EAAaC,GAGnD,IADA,IAAI0sC,EAA4B3sC,EACvBvN,EAAM,EAAGhB,EAAMkvC,EAAK9gC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACnD,GAAkC,IAA9Bk6C,EAGA,YADAjhE,KAAKghE,cAAcj6C,EAAKw5C,GAG5B,IAAIW,EAASjM,EAAKz0D,IAAIumB,GAClB23C,EAAM1+D,KAAKw3B,QAAQpS,OAAO87C,GAC9B,GAAIxC,aAAekC,EAAa,CAC5B,GAAIlC,EAAInqC,QAAQ8C,WAAa4pC,EAEzB,OAAQvC,EAAI4B,eAAeC,EAASU,IAA8BC,EAIlED,GAA6BvC,EAAInqC,QAAQ8C,UAEjD,CACIqnC,aAAe,KAEfuC,GAA6B,EAErC,CACA,GAAkC,IAA9BA,EAMJ,MAAM,IAAIzsC,GAAqBF,EAAa,kBAJxCt0B,KAAKghE,cAAc/L,EAAK9gC,OAAQosC,EAKxC,EASAK,EAAY9iE,UAAU2iE,eAAiB,SAAUnsC,EAAa6sC,QAC5C,IAAVA,IAAoBA,GAAQ,GAChC,IAAIlM,EAAOj1D,KAAKi1D,OACZ1gC,EAAQv0B,KAAKu0B,QAAQ8C,WACzB,GAAI/C,GAAeC,EACf,MAAM,IAAIF,GAAwBC,EAAaC,GAGnD,IADA,IAAI0sC,EAA4B3sC,EACvBvN,EAAM,EAAGhB,EAAMkvC,EAAK9gC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACnD,IAAIm6C,EAASjM,EAAKz0D,IAAIumB,GAClB23C,EAAM1+D,KAAKw3B,QAAQpS,OAAO87C,GAC9B,GAAIxC,aAAekC,EAAa,CAC5B,GAAIlC,EAAInqC,QAAQ8C,WAAa4pC,EAKzB,OAHAvC,EAAI+B,eAAeQ,EAA2BE,QAC1CA,GAA+B,IAAtBzC,EAAIzJ,OAAO9gC,QACpB8gC,EAAKzkD,OAAOuW,IAKhBk6C,GAA6BvC,EAAInqC,QAAQ8C,UAEjD,CACA,GAAIqnC,aAAe,GAAa,CAC5B,GAAkC,IAA9BuC,EAGA,YADAjhE,KAAKohE,UAAUr6C,GAKfk6C,GAA6B,CAErC,CACJ,CAEA,MAAM,IAAIzsC,GAAqBF,EAAa,iBAChD,EACAssC,EAAY9iE,UAAUyiC,OAAS,SAAUyB,GACrCA,EAAQhiC,MACR,IAAIs6B,EAASt6B,KAAKs6B,SACdA,GACAA,EAAOiG,OAAOyB,EACtB,EAEA4+B,EAAY9iE,UAAUujE,SAAW,SAAUr/B,GAEvC,IADA,IAAIizB,EAAOj1D,KAAKi1D,OACPluC,EAAM,EAAGhB,EAAMkvC,EAAK9gC,OAAQpN,EAAMhB,EAAKgB,IAAO,CACnD,IAAIm6C,EAASjM,EAAKz0D,IAAIumB,GAClB23C,EAAM1+D,KAAKw3B,QAAQpS,OAAO87C,GAC1BxC,aAAekC,GACflC,EAAI2C,SAASr/B,GACjBA,EAAQ08B,EAAKwC,EACjB,CACJ,EACAN,EAAY9iE,UAAUkjE,cAAgB,SAAUM,EAAQf,GACpD,IAAItL,EAAOj1D,KAAKi1D,OAChBj1D,KAAKugC,QAAO,SAAUC,GAClB,IAAI+gC,EAAW/gC,EAAKjM,QAAQ8C,WAAa,EACzCmJ,EAAK9I,IAAI,MAAW,SAAU,MAAa6pC,GAC/C,IACAtM,EAAKx9B,OAAO6pC,EAAQf,EACxB,EACAK,EAAY9iE,UAAUsjE,UAAY,SAAUE,GACxC,IAAIrM,EAAOj1D,KAAKi1D,OACNA,EAAK7vC,OAAOk8C,aACH,IACfthE,KAAKugC,QAAO,SAAUC,GAClB,IAAI+gC,EAAW/gC,EAAKjM,QAAQ8C,WAAa,EACzCmJ,EAAK9I,IAAI,MAAW,SAAU,MAAa6pC,GAC/C,IAEJtM,EAAKzkD,OAAO8wD,EAChB,EACAV,EAAY5oC,YAAc,SAAUR,EAAS6K,GACzC,IAAI3G,EAAO,IAAIxC,IAMf,OALAwC,EAAKhE,IAAI,MAAW,QAAS,MAAW,UACxCgE,EAAKhE,IAAI,MAAW,QAASF,EAAQ5G,IAAI,KACzC8K,EAAKhE,IAAI,MAAW,SAAUF,EAAQ5G,IAAI,IACtCyR,GACA3G,EAAKhE,IAAI,MAAW,UAAW2K,GAC5B,IAAIu+B,EAAYllC,EAAMlE,EACjC,EACAopC,EAAYvkC,mBAAqB,SAAU70B,EAAKgwB,GAC5C,OAAO,IAAIopC,EAAYp5D,EAAKgwB,EAChC,EACOopC,CACX,CArKgC,CAqK9B,IACF,YC5KO,IAAIY,GAAU,IAAIn8C,WAAW,KACpCm8C,GAAQ,SAAkB,EAC1BA,GAAQ,QAAiB,EACzBA,GAAQ,QAAiB,EACzBA,GAAQ,UAAmB,EAC3BA,GAAQ,SAAkB,EAC1BA,GAAQ,SAAkB,EAC1BA,GAAQ,QAAiB,EACzBA,GAAQ,UAAmB,EAC3BA,GAAQ,UAAmB,EAC3BA,GAAQ,SAAkB,EACnB,IAAIC,GAAkB,IAAIp8C,WAAW,KAC5Co8C,GAAgB,WAAoB,EACpCA,GAAgB,SAAkB,EAClCA,GAAgB,UAAmB,EAEnC,IADO,IAAIC,GAAY,IAAIr8C,WAAW,KAC7B,GAAM,EAAc,GAAL,IAAgB,KACpCq8C,GAAU,IAAOF,GAAQ,KAAQC,GAAgB,IAAO,EAAI,ECbhE,IAAIE,GAAU,WAAmBC,GAAiB,kBAE9CC,GAA4B,WAC5B,SAASA,EAAW77C,EAAO87C,QACJ,IAAfA,IAAyBA,GAAa,GAC1C9hE,KAAKgmB,MAAQA,EACbhmB,KAAK8hE,WAAaA,CACtB,CA2FA,OA1FAD,EAAW/jE,UAAUikE,YAAc,WAE/B,IADA,IAAI3jE,EAAQ,IACJ4B,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAI0R,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,IAAKR,GAAQ/rC,GACT,MACJr3B,GAASqoB,GAAazmB,KAAKgmB,MAAM1Z,OACrC,CACA,IAAIwqB,EAAc1G,OAAOhyB,GACzB,IAAKA,IAAU6jE,SAASnrC,GACpB,MAAM,IAAI9B,GAAmBh1B,KAAKgmB,MAAMsE,WAAYlsB,GAExD,OAAO04B,CACX,EAGA+qC,EAAW/jE,UAAUokE,eAAiB,WAGlC,IAFA,IAAI9jE,EAAQ,IAEJ4B,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAI0R,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,IAAKN,GAAUjsC,GACX,MAEJ,GADAr3B,GAASqoB,GAAazmB,KAAKgmB,MAAM1Z,QAC7BmpB,IAAS,UACT,KACR,CAEA,MAAQz1B,KAAKgmB,MAAMjC,QAAQ,CACnB0R,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,IAAKR,GAAQ/rC,GACT,MACJr3B,GAASqoB,GAAazmB,KAAKgmB,MAAM1Z,OACrC,CACA,IAAIwqB,EAAc1G,OAAOhyB,GACzB,IAAKA,IAAU6jE,SAASnrC,GACpB,MAAM,IAAI9B,GAAmBh1B,KAAKgmB,MAAMsE,WAAYlsB,GAExD,GAAI04B,EAAc1G,OAAO+xC,iBAAkB,CACvC,GAAIniE,KAAK8hE,WAAY,CACjB,IAAI9zC,EAAM,yDAA2D5vB,EAAQ,2CAE7E,OADA3B,QAAQC,KAAKsxB,GACNoC,OAAO+xC,gBAClB,CAEQn0C,EAAM,yDAA2D5vB,EAAQ,iBAC7E3B,QAAQC,KAAKsxB,EAErB,CACA,OAAO8I,CACX,EACA+qC,EAAW/jE,UAAUskE,eAAiB,WAClC,MAAQpiE,KAAKgmB,MAAMjC,QAAU6U,GAAa54B,KAAKgmB,MAAMg8C,SACjDhiE,KAAKgmB,MAAM1Z,MAEnB,EACAu1D,EAAW/jE,UAAUukE,SAAW,WAC5B,MAAQriE,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAI0R,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,GAAIvsC,IAASksC,IAAWlsC,IAASmsC,GAC7B,OACJ5hE,KAAKgmB,MAAM1Z,MACf,CACJ,EACAu1D,EAAW/jE,UAAUwkE,YAAc,WAC/B,GAAItiE,KAAKgmB,MAAMg8C,SAAW,WACtB,OAAO,EACX,MAAQhiE,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAI0R,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,GAAIvsC,IAASksC,IAAWlsC,IAASmsC,GAC7B,OAAO,EACX5hE,KAAKgmB,MAAM1Z,MACf,CACA,OAAO,CACX,EACAu1D,EAAW/jE,UAAUykE,0BAA4B,WAE7C,IADAviE,KAAKoiE,iBACEpiE,KAAKsiE,eACRtiE,KAAKoiE,gBACb,EACAP,EAAW/jE,UAAU0kE,aAAe,SAAUxsC,GAE1C,IADA,IAAIM,EAAgBt2B,KAAKgmB,MAAMmB,SACtBJ,EAAM,EAAGhB,EAAMiQ,EAAQ74B,OAAQ4pB,EAAMhB,EAAKgB,IAC/C,GAAI/mB,KAAKgmB,MAAMjC,QAAU/jB,KAAKgmB,MAAM1Z,SAAW0pB,EAAQjP,GAEnD,OADA/mB,KAAKgmB,MAAMy8C,OAAOnsC,IACX,EAGf,OAAO,CACX,EACOurC,CACX,CAjG+B,GAkG/B,YC9CA,SAvDgC,WAC5B,SAASa,EAAW18C,GAChBhmB,KAAK+mB,IAAM,EACX/mB,KAAKi1B,KAAO,EACZj1B,KAAKk1B,OAAS,EACdl1B,KAAKgmB,MAAQA,EACbhmB,KAAK7C,OAAS6C,KAAKgmB,MAAM7oB,MAC7B,CA8CA,OA7CAulE,EAAW5kE,UAAU2kE,OAAS,SAAUt7C,GACpCnnB,KAAK+mB,IAAMI,CACf,EACAu7C,EAAW5kE,UAAUwO,KAAO,WACxB,IAAImpB,EAAOz1B,KAAKgmB,MAAMhmB,KAAK+mB,OAQ3B,OAPI0O,IAAS,YACTz1B,KAAKi1B,MAAQ,EACbj1B,KAAKk1B,OAAS,GAGdl1B,KAAKk1B,QAAU,EAEZO,CACX,EACAitC,EAAW5kE,UAAU6kE,WAAa,SAAUpvC,GACxC,GAAIvzB,KAAKgiE,SAAWzuC,EAChB,MAAM,IAAI8B,GAAuBr1B,KAAKsqB,WAAYiJ,EAAUvzB,KAAKgiE,QAErE,OAAOhiE,KAAKsM,MAChB,EACAo2D,EAAW5kE,UAAUkkE,KAAO,WACxB,OAAOhiE,KAAKgmB,MAAMhmB,KAAK+mB,IAC3B,EACA27C,EAAW5kE,UAAU8kE,UAAY,SAAUC,GACvC,OAAO7iE,KAAKgmB,MAAMhmB,KAAK+mB,IAAM87C,EACjC,EACAH,EAAW5kE,UAAUglE,OAAS,SAAU37C,GACpC,OAAOnnB,KAAKgmB,MAAMmB,EACtB,EACAu7C,EAAW5kE,UAAUimB,KAAO,WACxB,OAAO/jB,KAAK+mB,KAAO/mB,KAAK7C,MAC5B,EACAulE,EAAW5kE,UAAUqpB,OAAS,WAC1B,OAAOnnB,KAAK+mB,GAChB,EACA27C,EAAW5kE,UAAU0D,MAAQ,SAAUynD,EAAOC,GAC1C,OAAOlpD,KAAKgmB,MAAMxkB,MAAMynD,EAAOC,EACnC,EACAwZ,EAAW5kE,UAAUwsB,SAAW,WAC5B,MAAO,CAAE2K,KAAMj1B,KAAKi1B,KAAMC,OAAQl1B,KAAKk1B,OAAQ/N,OAAQnnB,KAAK+mB,IAChE,EACA27C,EAAWprC,GAAK,SAAUtR,GAAS,OAAO,IAAI08C,EAAW18C,EAAQ,EACjE08C,EAAWK,iBAAmB,SAAUC,GACpC,OAAON,EAAWprC,GAAG+3B,GAAmB2T,GAAW3rB,SACvD,EACOqrB,CACX,CAtD+B,GCF/B,IAAIO,GAAQ,SAAiB,GAAiB,kBAA0B,GAAU,WAC9ElvC,GAAS,CACT,KACA,KACA,KACA,KACA,KACA,MAEAmvC,GAAY,CACZ,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEO/nC,GAAW,CAClBqD,OAAQ,CACJ,WACA,KACA,KACA,KACA,SAEJ8rB,IAAK,CACD,WACA,WACA,KACA,KACA,MAEJ15B,IAAK,CAAC,KAAa,KAAa,MAChCuyC,OAAQ,CACJ,KACA,KACA,KACA,KACA,KACA,MAEJ18B,KAAM,CAAC,KAAa,KAAa,KAAa,MAC9CE,QAAS,CACL,KACA,KACA,KACA,KACA,KACA,KACA,MAEJy8B,UAAW,CACP,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MAEJC,KAAM,CAAC,KAAa,KAAa,KAAa,MAC9CC,MAAO,CAAC,KAAa,KAAa,KAAa,KAAa,MAC5DC,KAAM,CAAC,KAAa,KAAa,KAAa,MAC9CxvC,OAAQA,GACRyvC,WAAY5+C,GAAemP,GAAQ,CAACkvC,GAAO,GAAgB,KAC3DQ,WAAY7+C,GAAemP,GAAQ,CAAC,GAAgB,KACpD2vC,WAAY9+C,GAAemP,GAAQ,CAAC,KACpC4vC,WAAY/+C,GAAemP,GAAQ,CAAC,KACpCmvC,UAAWA,GACXU,cAAeh/C,GAAe,CAAC,GAAgB,IAAUs+C,IACzDW,cAAej/C,GAAe,CAAC,IAAiBs+C,IAChDY,cAAel/C,GAAe,CAAC,IAAUs+C,KCuJ7C,SA7MqC,SAAUhhE,GAE3C,SAAS6hE,EAAgBC,EAAYxsC,EAASsqC,QACvB,IAAfA,IAAyBA,GAAa,GAC1C,IAAI3/D,EAAQD,EAAO9C,KAAKY,KAAMgkE,EAAYlC,IAAe9hE,KAEzD,OADAmC,EAAMq1B,QAAUA,EACTr1B,CACX,CAoMA,OA1MA6gB,GAAU+gD,EAAiB7hE,GAQ3B6hE,EAAgBjmE,UAAUmmE,YAAc,WAEpC,GADAjkE,KAAKuiE,4BACDviE,KAAKwiE,aAAarnC,GAAA,MAClB,OAAO,QACX,GAAIn7B,KAAKwiE,aAAarnC,GAAA,OAClB,OAAO,SACX,GAAIn7B,KAAKwiE,aAAarnC,GAAA,MAClB,OAAO,GACX,IAAI1F,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,GAAIvsC,IAAS,aACTz1B,KAAKgmB,MAAM48C,UAAU,KAAO,YAC5B,OAAO5iE,KAAKkkE,oBAEhB,GAAIzuC,IAAS,YACT,OAAOz1B,KAAKmkE,iBAChB,GAAI1uC,IAAS,aACT,OAAOz1B,KAAKokE,cAChB,GAAI3uC,IAAS,gBACT,OAAOz1B,KAAKqkE,YAChB,GAAI5uC,IAAS,qBACT,OAAOz1B,KAAKskE,aAChB,GAAI5C,GAAUjsC,GACV,OAAOz1B,KAAKukE,mBAChB,MAAM,IAAI/uC,GAAsBx1B,KAAKgmB,MAAMsE,WAAYmL,EAC3D,EACAsuC,EAAgBjmE,UAAUymE,iBAAmB,WACzC,IAAIC,EAAWxkE,KAAKkiE,iBACpBliE,KAAKuiE,4BACL,IAAIkC,EAAiBzkE,KAAKgmB,MAAMmB,SAChC,GAAIq6C,GAAQxhE,KAAKgmB,MAAMg8C,QAAS,CAC5B,IAAI0C,EAAY1kE,KAAKkiE,iBAErB,GADAliE,KAAKuiE,4BACDviE,KAAKgmB,MAAMg8C,SAAW,KAEtB,OADAhiE,KAAKgmB,MAAM28C,WAAW,MACf,MAAU6B,EAAUE,EAEnC,CAEA,OADA1kE,KAAKgmB,MAAMy8C,OAAOgC,GACX,MAAaD,EACxB,EAEAT,EAAgBjmE,UAAUqmE,eAAiB,WACvC,IAAI/lE,EAAQ,GAEZ,IADA4B,KAAKgmB,MAAM28C,WAAW,cACd3iE,KAAKgmB,MAAMjC,QAAU/jB,KAAKgmB,MAAMg8C,SAAW,gBAC/C5jE,GAASqoB,GAAazmB,KAAKgmB,MAAM1Z,QAGrC,OADAtM,KAAKgmB,MAAM28C,WAAW,gBACf,MAAgBvkE,EAC3B,EACA2lE,EAAgBjmE,UAAUsmE,YAAc,WAIpC,IAHA,IAAIO,EAAa,EACbC,GAAY,EACZxmE,EAAQ,IACJ4B,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAI0R,EAAOz1B,KAAKgmB,MAAM1Z,OAiBtB,GAhBAlO,GAASqoB,GAAagP,GAEjBmvC,IACGnvC,IAAS,eACTkvC,GAAc,GACdlvC,IAAS,gBACTkvC,GAAc,IAGlBlvC,IAAS,aACTmvC,GAAaA,EAERA,IACLA,GAAY,GAGG,IAAfD,EAEA,OAAO,MAAavmE,EAAMmsB,UAAU,EAAGnsB,EAAMjB,OAAS,GAE9D,CACA,MAAM,IAAIy4B,GAA2B51B,KAAKgmB,MAAMsE,WACpD,EAGAy5C,EAAgBjmE,UAAUumE,UAAY,WAClCrkE,KAAKgmB,MAAM28C,WAAW,iBAEtB,IADA,IAAIz/D,EAAO,IACHlD,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAI0R,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,GAAIppC,GAAanD,IAASkD,GAAYlD,GAClC,MACJvyB,GAAQujB,GAAagP,GACrBz1B,KAAKgmB,MAAM1Z,MACf,CACA,OAAO,MAAWpJ,EACtB,EACA6gE,EAAgBjmE,UAAUwmE,WAAa,WACnCtkE,KAAKgmB,MAAM28C,WAAW,sBACtB3iE,KAAKuiE,4BAEL,IADA,IAAIsC,EAAW,eAAqB7kE,KAAKw3B,SAClCx3B,KAAKgmB,MAAMg8C,SAAW,uBAA8B,CACvD,IAAI1wD,EAAUtR,KAAKikE,cACnBY,EAAS3jE,KAAKoQ,GACdtR,KAAKuiE,2BACT,CAEA,OADAviE,KAAKgmB,MAAM28C,WAAW,uBACfkC,CACX,EACAd,EAAgBjmE,UAAUgnE,UAAY,WAClC9kE,KAAKgmB,MAAM28C,WAAW,aACtB3iE,KAAKgmB,MAAM28C,WAAW,aACtB3iE,KAAKuiE,4BAEL,IADA,IAAI7mC,EAAO,IAAIxC,KACPl5B,KAAKgmB,MAAMjC,QACf/jB,KAAKgmB,MAAMg8C,SAAW,gBACtBhiE,KAAKgmB,MAAM48C,UAAU,KAAO,gBAAuB,CACnD,IAAIllE,EAAMsC,KAAKqkE,YACXjmE,EAAQ4B,KAAKikE,cACjBvoC,EAAKhE,IAAIh6B,EAAKU,GACd4B,KAAKuiE,2BACT,CACAviE,KAAKuiE,4BACLviE,KAAKgmB,MAAM28C,WAAW,gBACtB3iE,KAAKgmB,MAAM28C,WAAW,gBACtB,IAAItoC,EAAOqB,EAAKl7B,IAAI,MAAW,SAC/B,OAAI65B,IAAS,MAAW,WACb,sBAA8BqB,EAAM17B,KAAKw3B,SAE3C6C,IAAS,MAAW,SAClB,sBAA+BqB,EAAM17B,KAAKw3B,SAE5C6C,IAAS,MAAW,QAClB,sBAA+BqB,EAAM17B,KAAKw3B,SAG1C,sBAA2BkE,EAAM17B,KAAKw3B,QAErD,EACAusC,EAAgBjmE,UAAUomE,kBAAoB,WAC1C,IAAIa,EAAW/kE,KAAKgmB,MAAMsE,WACtBoR,EAAO17B,KAAK8kE,YAEhB,GADA9kE,KAAKuiE,8BACAviE,KAAKwiE,aAAarnC,GAASqoC,aAC3BxjE,KAAKwiE,aAAarnC,GAASsoC,aAC3BzjE,KAAKwiE,aAAarnC,GAASuoC,aAC3B1jE,KAAKwiE,aAAarnC,GAASwoC,aAC3B3jE,KAAKwiE,aAAarnC,GAASpH,SAC5B,OAAO2H,EAEX,IACIwtB,EADAD,EAAQjpD,KAAKgmB,MAAMmB,SAEnB4S,EAAS2B,EAAKl7B,IAAI,MAAW,WAC7Bu5B,aAAkB,IAClBmvB,EAAMD,EAAQlvB,EAAO1C,WACrBr3B,KAAKgmB,MAAMy8C,OAAOvZ,GAClBlpD,KAAKuiE,4BACAviE,KAAKwiE,aAAarnC,GAAS+nC,aAC5BljE,KAAKgmB,MAAMy8C,OAAOxZ,GAClBC,EAAMlpD,KAAKglE,wBAAwBD,KAIvC7b,EAAMlpD,KAAKglE,wBAAwBD,GAEvC,IAAIloC,EAAW78B,KAAKgmB,MAAMxkB,MAAMynD,EAAOC,GACvC,OAAO,MAAgBxtB,EAAMmB,EACjC,EACAknC,EAAgBjmE,UAAUknE,wBAA0B,SAAUD,GAI1D,IAFA,IAAIJ,EAAa,EACbzb,EAAMlpD,KAAKgmB,MAAMmB,UACbnnB,KAAKgmB,MAAMjC,SACfmlC,EAAMlpD,KAAKgmB,MAAMmB,SACbnnB,KAAKwiE,aAAarnC,GAASpH,QAC3B4wC,GAAc,EAET3kE,KAAKwiE,aAAarnC,GAASyoC,gBAChC5jE,KAAKwiE,aAAarnC,GAAS0oC,gBAC3B7jE,KAAKwiE,aAAarnC,GAAS2oC,gBAC3B9jE,KAAKwiE,aAAarnC,GAAS+nC,WAC3ByB,GAAc,EAGd3kE,KAAKgmB,MAAM1Z,OAEI,IAAfq4D,KAGR,GAAmB,IAAfA,EACA,MAAM,IAAIhvC,GAAsBovC,GACpC,OAAO7b,CACX,EACA6a,EAAgBkB,SAAW,SAAUj/C,EAAOwR,EAASsqC,GAAc,OAAO,IAAIiC,EAAgB,MAAc/9C,GAAQwR,EAASsqC,EAAa,EAC1IiC,EAAgBmB,cAAgB,SAAUlB,EAAYxsC,EAASsqC,GAE3D,YADmB,IAAfA,IAAyBA,GAAa,GACnC,IAAIiC,EAAgBC,EAAYxsC,EAASsqC,EACpD,EACOiC,CACX,CA5MoC,CA4MlC,IC5NF,IAAIoB,GAAuC,SAAUjjE,GAEjD,SAASijE,EAAsBnC,EAAWz8B,GACtC,IAAIpkC,EAAQD,EAAO9C,KAAKY,KAAM,oBAA4BgjE,GAAYA,EAAUtnC,KAAKlE,UAAYx3B,KAC7F07B,EAAOsnC,EAAUtnC,KAKrB,OAJAv5B,EAAMijE,eAAgB,EACtBjjE,EAAMokC,kBAAoBA,GAAqB,WAAe,OAAO,CAAQ,EAC7EpkC,EAAMkjE,YAAc3pC,EAAKtW,OAAO,MAAW,SAAU,IAAWiS,WAChEl1B,EAAMmjE,YAAc5pC,EAAKtW,OAAO,MAAW,KAAM,IAAWiS,WACrDl1B,CACX,CA8CA,OAvDA6gB,GAAUmiD,EAAuBjjE,GAUjCijE,EAAsBrnE,UAAUynE,iBAAmB,WAC/C,OAAOhiD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIwlE,EAAyBz+C,EAAKhB,EAAKsD,EAAI4T,EAAc9V,EAAQ/mB,EAAQggB,EACzE,OAAO4D,GAAYhkB,MAAM,SAAUupB,GAC/B,OAAQA,EAAGpF,OACP,KAAK,EACD,GAAInkB,KAAKolE,cACL,MAAM,IAAIzxC,GAAa,wBAAyB,oBAEpD3zB,KAAKolE,eAAgB,EACrBI,EAA0BxlE,KAAKylE,+BAC/B1+C,EAAM,EAAGhB,EAAMy/C,EAAwBroE,OACvCosB,EAAGpF,MAAQ,EACf,KAAK,EACD,OAAM4C,EAAMhB,GACZsD,EAAKm8C,EAAwBz+C,GAAMkW,EAAe5T,EAAG4T,aAAc9V,EAASkC,EAAGlC,OAC/EnnB,KAAKgmB,MAAMy8C,OAAOziE,KAAKqlE,YAAcl+C,GACrC/mB,EAASJ,KAAKikE,cACd7jD,EAAM,MAAU6c,EAAc,GAC9Bj9B,KAAKw3B,QAAQrU,OAAO/C,EAAKhgB,GACpBJ,KAAKumC,oBACH,CAAC,EAAaha,MADiB,CAAC,EAAa,IAN3B,CAAC,EAAa,GAQ3C,KAAK,EACDhD,EAAGnF,OACHmF,EAAGpF,MAAQ,EACf,KAAK,EAED,OADA4C,IACO,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAo+C,EAAsBrnE,UAAU2nE,6BAA+B,WAE3D,IADA,IAAID,EAA0B,GACrBz+C,EAAM,EAAGhB,EAAM/lB,KAAKslE,YAAav+C,EAAMhB,EAAKgB,IAAO,CACxD/mB,KAAKuiE,4BACL,IAAItlC,EAAej9B,KAAK+hE,cACxB/hE,KAAKuiE,4BACL,IAAIp7C,EAASnnB,KAAK+hE,cAClByD,EAAwBtkE,KAAK,CAAE+7B,aAAcA,EAAc9V,OAAQA,GACvE,CACA,OAAOq+C,CACX,EACAL,EAAsBO,UAAY,SAAU1C,EAAWz8B,GAAqB,OAAO,IAAI4+B,EAAsBnC,EAAWz8B,EAAoB,EACrI4+B,CACX,CAzD0C,CAyDxC,IACF,YC5DA,IAAIQ,GAAqC,WACrC,SAASA,EAAoB3C,GACzBhjE,KAAKolE,eAAgB,EACrBplE,KAAK07B,KAAOsnC,EAAUtnC,KACtB17B,KAAKgmB,MAAQ,oBAA4Bg9C,GACzChjE,KAAKw3B,QAAUx3B,KAAK07B,KAAKlE,QACzB,IAAIuP,EAAO/mC,KAAK07B,KAAKtW,OAAO,MAAW,QAAS,IAC5CwgD,EAAQ5lE,KAAK07B,KAAKtW,OAAO,MAAW,UACxC,GAAIwgD,aAAiB,GAAU,CAC3B5lE,KAAK6jC,YAAc,GACnB,IAAK,IAAI9c,EAAM,EAAGhB,EAAM6/C,EAAMzxC,OAAQpN,EAAMhB,EAAKgB,GAAO,EAAG,CACvD,IAAIge,EAAoB6gC,EAAMxgD,OAAO2B,EAAM,EAAG,IAAWsQ,WACrDwuC,EAAWD,EAAMxgD,OAAO2B,EAAM,EAAG,IAAWsQ,WAChDr3B,KAAK6jC,YAAY3iC,KAAK,CAAE6jC,kBAAmBA,EAAmB5nC,OAAQ0oE,GAC1E,CACJ,MAEI7lE,KAAK6jC,YAAc,CAAC,CAAEkB,kBAAmB,EAAG5nC,OAAQ4pC,EAAK1P,aAE7D,IAAImY,EAAIxvC,KAAK07B,KAAKtW,OAAO,MAAW,KAAM,IAC1CplB,KAAK4oC,WAAa,EAAE,GAAI,GAAI,GAC5B,IAAS7hB,EAAM,EAAGhB,EAAMypB,EAAErb,OAAQpN,EAAMhB,EAAKgB,IACzC/mB,KAAK4oC,WAAW7hB,GAAOyoB,EAAEpqB,OAAO2B,EAAK,IAAWsQ,UAExD,CAuDA,OAtDAsuC,EAAoB7nE,UAAUynE,iBAAmB,WAC7C,GAAIvlE,KAAKolE,cACL,MAAM,IAAIzxC,GAAa,sBAAuB,oBAclD,OAZA3zB,KAAKolE,eAAgB,EACrBplE,KAAKw3B,QAAQiH,YAAc,CACvBuI,KAAMhnC,KAAK07B,KAAKl7B,IAAI,MAAW,SAC/BymC,QAASjnC,KAAK07B,KAAKl7B,IAAI,MAAW,YAClC0mC,KAAMlnC,KAAK07B,KAAKl7B,IAAI,MAAW,SAC/B2mC,GAAInnC,KAAK07B,KAAKl7B,IAAI,MAAW,QAEnBR,KAAK8lE,cAMvB,EACAH,EAAoB7nE,UAAUgoE,aAAe,WAGzC,IAFA,IAAInqC,EAAU,GACVtS,EAAKrpB,KAAK4oC,WAAYm9B,EAAiB18C,EAAG,GAAI28C,EAAmB38C,EAAG,GAAI48C,EAAgB58C,EAAG,GACtF68C,EAAgB,EAAGC,EAAgBnmE,KAAK6jC,YAAY1mC,OAAQ+oE,EAAgBC,EAAeD,IAEhG,IADA,IAAI38C,EAAKvpB,KAAK6jC,YAAYqiC,GAAgBnhC,EAAoBxb,EAAGwb,kBAAmBqhC,EAAW78C,EAAGpsB,OACzFkpE,EAAS,EAAGA,EAASD,EAAUC,IAAU,CAE9C,IADA,IAAIvlE,EAAO,EACFimB,EAAM,EAAGhB,EAAMggD,EAAgBh/C,EAAMhB,EAAKgB,IAC/CjmB,EAAQA,GAAQ,EAAKd,KAAKgmB,MAAM1Z,OAEpC,IAAI6a,EAAS,EACb,IAASJ,EAAM,EAAGhB,EAAMigD,EAAkBj/C,EAAMhB,EAAKgB,IACjDI,EAAUA,GAAU,EAAKnnB,KAAKgmB,MAAM1Z,OAExC,IAAI4wB,EAAmB,EACvB,IAASnW,EAAM,EAAGhB,EAAMkgD,EAAel/C,EAAMhB,EAAKgB,IAC9CmW,EAAoBA,GAAoB,EAAKl9B,KAAKgmB,MAAM1Z,OAGrC,IAAnBy5D,IACAjlE,EAAO,GACX,IAAIm8B,EAAe8H,EAAoBshC,EACnC1hC,EAAQ,CACRvkB,IAAK,MAAU6c,EAAcC,GAC7B/V,OAAQA,EACR+c,QAAkB,IAATpjC,EACTwlE,eAAyB,IAATxlE,GAEpB66B,EAAQz6B,KAAKyjC,EACjB,CAEJ,OAAOhJ,CACX,EACAgqC,EAAoBD,UAAY,SAAU1C,GACtC,OAAO,IAAI2C,EAAoB3C,EACnC,EACO2C,CACX,CAhFwC,GAiFxC,YCpEA,IAAIY,GAA2B,SAAUrkE,GAErC,SAASqkE,EAAUC,EAAUngC,EAAgBogC,EAAsB3E,QACxC,IAAnBz7B,IAA6BA,EAAiBqgC,UACrB,IAAzBD,IAAmCA,GAAuB,QAC3C,IAAf3E,IAAyBA,GAAa,GAC1C,IAAI3/D,EAAQD,EAAO9C,KAAKY,KAAM,MAAcwmE,GAAW,YAAqB1E,IAAe9hE,KAS3F,OARAmC,EAAMijE,eAAgB,EACtBjjE,EAAMmkC,cAAgB,EACtBnkC,EAAMokC,kBAAoB,WAEtB,OADApkC,EAAMmkC,eAAiB,EAChBnkC,EAAMmkC,cAAgBnkC,EAAMkkC,gBAAmB,CAC1D,EACAlkC,EAAMkkC,eAAiBA,EACvBlkC,EAAMskE,qBAAuBA,EACtBtkE,CACX,CA2TA,OA1UA6gB,GAAUujD,EAAWrkE,GAgBrBqkE,EAAUzoE,UAAU6oE,cAAgB,WAChC,OAAOpjD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAI4mE,EAAYz/C,EAChB,OAAOnD,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EACD,GAAInkB,KAAKolE,cACL,MAAM,IAAIzxC,GAAa,YAAa,iBAExC3zB,KAAKolE,eAAgB,EACrBplE,KAAKw3B,QAAQgH,OAASx+B,KAAK6mE,cAC3Bx9C,EAAGlF,MAAQ,EACf,KAAK,EACD,OAAMnkB,KAAKgmB,MAAMjC,OAAe,CAAC,EAAa,GACvC,CAAC,EAAa/jB,KAAK8mE,wBAC9B,KAAK,EAGD,GAFAz9C,EAAGjF,QACH+C,EAASnnB,KAAKgmB,MAAMmB,YACLy/C,EACX,MAAM,IAAI/wC,GAAmB71B,KAAKgmB,MAAMsE,YAG5C,OADAs8C,EAAaz/C,EACN,CAAC,EAAa,GACzB,KAAK,EAMD,OALAnnB,KAAK+mE,mBACD/mE,KAAKw3B,QAAQpS,OAAO,MAAU,MAC9B3oB,QAAQC,KAAK,iCACbsD,KAAKw3B,QAAQsE,OAAO,MAAU,KAE3B,CAAC,EAAc97B,KAAKw3B,SAEvC,GACJ,GACJ,EACA+uC,EAAUzoE,UAAUipE,iBAAmB,WACnC,IAAIC,EAAiB,SAAUp2C,GAC3B,OAAOA,aAAe,IAClBA,EAAIxL,OAAO,MAAW,WAAa,MAAW,UACtD,EAEA,IAAK4hD,EADShnE,KAAKw3B,QAAQpS,OAAOplB,KAAKw3B,QAAQiH,YAAYuI,OAGvD,IADA,IAAItI,EAAkB1+B,KAAKw3B,QAAQwH,2BAC1BjY,EAAM,EAAGhB,EAAM2Y,EAAgBvhC,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAC9D,IAAIsC,EAAKqV,EAAgB3X,GAAM3G,EAAMiJ,EAAG,GACpC29C,EADiD39C,EAAG,MAEpDrpB,KAAKw3B,QAAQiH,YAAYuI,KAAO5mB,EAExC,CAER,EACAmmD,EAAUzoE,UAAU+oE,YAAc,WAC9B,MAAQ7mE,KAAKgmB,MAAMjC,QAAQ,CACvB,GAAI/jB,KAAKwiE,aAAarnC,GAASqD,QAAS,CACpC,IAAItI,EAAQl2B,KAAK+hE,cACjB/hE,KAAKgmB,MAAM28C,WAAW,WACtB,IAAIxsC,EAAQn2B,KAAK+hE,cACbvjC,EAAS,cAAqBtI,EAAOC,GAEzC,OADAn2B,KAAKinE,0BACEzoC,CACX,CACAx+B,KAAKgmB,MAAM1Z,MACf,CACA,MAAM,IAAIwpB,GAAsB91B,KAAKgmB,MAAMsE,WAC/C,EACAi8C,EAAUzoE,UAAUopE,0BAA4B,WAC5ClnE,KAAKuiE,4BACL,IAAItlC,EAAej9B,KAAK+hE,cACxB/hE,KAAKuiE,4BACL,IAAIrlC,EAAmBl9B,KAAK+hE,cAE5B,GADA/hE,KAAKuiE,6BACAviE,KAAKwiE,aAAarnC,GAASvK,KAC5B,MAAM,IAAImF,GAAoB/1B,KAAKgmB,MAAMsE,WAAY6Q,GAASvK,KAElE,OAAO,MAAUqM,EAAcC,EACnC,EACAqpC,EAAUzoE,UAAUqpE,0BAA4B,WAC5C,IAAI7wC,EAAgBt2B,KAAKgmB,MAAMmB,SAC/B,IAEI,OADAnnB,KAAKknE,6BACE,CACX,CACA,MAAO7nE,GAEH,OADAW,KAAKgmB,MAAMy8C,OAAOnsC,IACX,CACX,CACJ,EACAiwC,EAAUzoE,UAAUspE,oBAAsB,WACtC,OAAO7jD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIogB,EAAKhgB,EACT,OAAO4jB,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAUD,OATA/D,EAAMpgB,KAAKknE,4BACXlnE,KAAKuiE,4BACLniE,EAASJ,KAAKikE,cACdjkE,KAAKuiE,4BAKLviE,KAAKwiE,aAAarnC,GAASgoC,QACrB/iE,aAAkB,IACpBA,EAAOs7B,KAAKtW,OAAO,MAAW,WAAa,MAAW,UACnD,CAAC,EAAa,aAAgChlB,EAAQJ,KAAKumC,mBAAmBg/B,oBADR,CAAC,EAAa,GAE/F,KAAK,EAED,OADAl8C,EAAGjF,OACI,CAAC,EAAa,GACzB,KAAK,EACGhkB,aAAkB,IAClBA,EAAOs7B,KAAKtW,OAAO,MAAW,WAAa,MAAW,QACtD,aAA8BhlB,GAAQmlE,mBAGtCvlE,KAAKw3B,QAAQrU,OAAO/C,EAAKhgB,GAE7BipB,EAAGlF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc/D,GAEtC,GACJ,GACJ,EAEAmmD,EAAUzoE,UAAUupE,gCAAkC,WAClD,IAAItC,EAAW/kE,KAAKgmB,MAAMsE,WACtB0D,EAAM,mCAAqCpgB,KAAKe,UAAUo2D,GAAY,IAC1E,GAAI/kE,KAAKymE,qBACL,MAAM,IAAIxjE,MAAM+qB,GACpBvxB,QAAQC,KAAKsxB,GACb,IAAI5N,EAAMpgB,KAAKknE,4BACfzqE,QAAQC,KAAK,uBAAyB0jB,GACtCpgB,KAAKuiE,4BAGL,IAFA,IAAItZ,EAAQjpD,KAAKgmB,MAAMmB,SACnBmgD,GAAS,GACLtnE,KAAKgmB,MAAMjC,SACX/jB,KAAKwiE,aAAarnC,GAASgoC,UAC3BmE,GAAS,GAERA,IAELtnE,KAAKgmB,MAAM1Z,OAEf,GAAIg7D,EACA,MAAM,IAAI5xC,GAA6BqvC,GAC3C,IAAI7b,EAAMlpD,KAAKgmB,MAAMmB,SAAWgU,GAASgoC,OAAOhmE,OAC5CiD,EAAS,MAAoBJ,KAAKgmB,MAAMxkB,MAAMynD,EAAOC,IAEzD,OADAlpD,KAAKw3B,QAAQrU,OAAO/C,EAAKhgB,GAClBggB,CACX,EACAmmD,EAAUzoE,UAAUypE,qBAAuB,WACvC,OAAOhkD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIs2B,EACJ,OAAOtS,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EACDnkB,KAAKuiE,4BACLl5C,EAAGlF,MAAQ,EACf,KAAK,EACD,GAAOnkB,KAAKgmB,MAAMjC,SAAUy9C,GAAQxhE,KAAKgmB,MAAMg8C,QAAU,MAAO,CAAC,EAAa,GAC9E1rC,EAAgBt2B,KAAKgmB,MAAMmB,SAC3BkC,EAAGlF,MAAQ,EACf,KAAK,EAED,OADAkF,EAAGhF,KAAKnjB,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAalB,KAAKonE,uBAC9B,KAAK,EAED,OADA/9C,EAAGjF,OACI,CAAC,EAAa,GACzB,KAAK,EAKD,OAJMiF,EAAGjF,OAETpkB,KAAKgmB,MAAMy8C,OAAOnsC,GAClBt2B,KAAKqnE,kCACE,CAAC,EAAa,GACzB,KAAK,EAID,OAHArnE,KAAKuiE,4BAELviE,KAAKwnE,gBACAxnE,KAAKumC,oBACH,CAAC,EAAaha,MADiB,CAAC,EAAa,GAExD,KAAK,EACDlD,EAAGjF,OACHiF,EAAGlF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAoiD,EAAUzoE,UAAU2pE,0BAA4B,WAE5C,GADAznE,KAAKuiE,4BACAviE,KAAKwiE,aAAarnC,GAASsL,MAAhC,CAEAzmC,KAAKuiE,4BAGL,IAFA,IAAItlC,GAAgB,EAChBwJ,EAAO,kBACHzmC,KAAKgmB,MAAMjC,QAAUy9C,GAAQxhE,KAAKgmB,MAAMg8C,SAAS,CACrD,IAAI0F,EAAW1nE,KAAK+hE,cACpB/hE,KAAKuiE,4BACL,IAAIoF,EAAY3nE,KAAK+hE,cACrB/hE,KAAKuiE,4BACL,IAAI9sC,EAAOz1B,KAAKgmB,MAAMg8C,OACtB,GAAIvsC,IAAS,MAAeA,IAAS,KAAa,CAC9C,IAAIrV,EAAM,MAAU6c,EAAc0qC,GAC9B3nE,KAAKgmB,MAAM1Z,SAAW,KACtBm6B,EAAKzC,SAAS5jB,EAAKsnD,GAInBjhC,EAAKtC,gBAAgB/jB,EAAKsnD,GAE9BzqC,GAAgB,CACpB,MAEIA,EAAeyqC,EAEnB1nE,KAAKuiE,2BACT,CACA,OAAO97B,CA1BG,CA2Bd,EACA8/B,EAAUzoE,UAAU8pE,sBAAwB,WAExC,GADA5nE,KAAKuiE,4BACAviE,KAAKwiE,aAAarnC,GAASwL,SAAhC,CAEA3mC,KAAKuiE,4BACL,IAAI7mC,EAAO17B,KAAK8kE,YACZttC,EAAUx3B,KAAKw3B,QACnBA,EAAQiH,YAAc,CAClBuI,KAAMtL,EAAKl7B,IAAI,MAAW,UAAYg3B,EAAQiH,YAAYuI,KAC1DC,QAASvL,EAAKl7B,IAAI,MAAW,aAAeg3B,EAAQiH,YAAYwI,QAChEC,KAAMxL,EAAKl7B,IAAI,MAAW,UAAYg3B,EAAQiH,YAAYyI,KAC1DC,GAAIzL,EAAKl7B,IAAI,MAAW,QAAUg3B,EAAQiH,YAAY0I,GARhD,CAUd,EACAo/B,EAAUzoE,UAAU+pE,kBAAoB,WAEpC,GADA7nE,KAAKuiE,4BACAviE,KAAKwiE,aAAarnC,GAASioC,WAAhC,CAEApjE,KAAKuiE,4BACL,IAAIp7C,EAASnnB,KAAK+hE,cAMlB,OALA/hE,KAAKoiE,iBACLpiE,KAAKwiE,aAAarnC,GAASmvB,KAC3BtqD,KAAKuiE,4BACLviE,KAAKwiE,aAAarnC,GAASmvB,KAC3BtqD,KAAKuiE,4BACE,gCAAwCp7C,EARrC,CASd,EACAo/C,EAAUzoE,UAAUgpE,qBAAuB,WACvC,OAAOvjD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,OAAOgkB,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAAG,MAAO,CAAC,EAAankB,KAAKunE,wBAClC,KAAK,EAOD,OANAl+C,EAAGjF,OACHpkB,KAAKynE,4BACLznE,KAAK4nE,wBACL5nE,KAAK6nE,oBAEL7nE,KAAKwnE,gBACE,CAAC,GAEpB,GACJ,GACJ,EAOAjB,EAAUzoE,UAAU0pE,cAAgB,WAEhC,IADAxnE,KAAKuiE,6BACGviE,KAAKgmB,MAAMjC,QAAQ,CACvB,IAAIuS,EAAgBt2B,KAAKgmB,MAAMmB,SAC3BsO,EAAOz1B,KAAKgmB,MAAMg8C,OAEtB,GADqBvsC,GAAQ,UAAmBA,GAAQ,WAEhDz1B,KAAKwiE,aAAarnC,GAASsL,OAC3BzmC,KAAKwiE,aAAarnC,GAASwL,UAC3B3mC,KAAKwiE,aAAarnC,GAASioC,YAC3BpjE,KAAKmnE,6BAA6B,CAClCnnE,KAAKgmB,MAAMy8C,OAAOnsC,GAClB,KACJ,CAEJt2B,KAAKgmB,MAAM1Z,MACf,CACJ,EAcAi6D,EAAUzoE,UAAUmpE,wBAA0B,WAC1CjnE,KAAKuiE,4BACL,IACI,IAAIjsC,EAAgBt2B,KAAKgmB,MAAMmB,SAC/BnnB,KAAKknE,4BACLlnE,KAAKgmB,MAAMy8C,OAAOnsC,EACtB,CACA,MAAOj3B,GACHW,KAAKgmB,MAAM1Z,OACXtM,KAAKuiE,2BACT,CACJ,EACAgE,EAAUuB,oBAAsB,SAAUtB,EAAUngC,EAAgBogC,EAAsB3E,GACtF,OAAO,IAAIyE,EAAUC,EAAUngC,EAAgBogC,EAAsB3E,EACzE,EACOyE,CACX,CA5U8B,CA4U5B,IACF,YChWA,IAEWwB,GAFP,GAAO,SAAUhM,GAAY,OAAO,GAAKA,CAAU,GAGvD,SAAWgM,GAOPA,EAAgBA,EAA2B,UAAI,GAAK,IAAU,YAW9DA,EAAgBA,EAAwB,OAAI,GAAK,IAAU,SAQ3DA,EAAgBA,EAAuB,MAAI,GAAK,IAAU,QAO1DA,EAAgBA,EAAwB,OAAI,GAAK,IAAU,SAM3DA,EAAgBA,EAA0B,SAAI,GAAK,IAAU,WAO7DA,EAAgBA,EAAwB,OAAI,GAAK,IAAU,SAU3DA,EAAgBA,EAA0B,SAAI,GAAK,IAAU,WAO7DA,EAAgBA,EAAwB,OAAI,GAAK,IAAU,SAO3DA,EAAgBA,EAA8B,aAAI,GAAK,IAAU,eAMjEA,EAAgBA,EAAgC,eAAI,GAAK,IAAW,gBACvE,CA7ED,CA6EGA,KAAoBA,GAAkB,CAAC,IC/EnC,ICAIC,GDAAC,GAAY,SAAU/kE,GAC7B,OAAOA,aAAgB,GAAUA,EAAO,MAAWA,EACvD,EACW,GAAc,SAAUmjB,GAC/B,OAAOA,aAAe,GAAYA,EAAM,MAAaA,EACzD,EACW,GAAW,SAAUA,GAC5B,OAAOA,aAAe,GAAYA,EAAIgR,WAAahR,CACvD,GCPA,SAAW2hD,GACPA,EAAuB,QAAI,UAC3BA,EAAuB,QAAI,SAC9B,CAHD,CAGGA,KAAkBA,GAAgB,CAAC,IAC/B,ICqCIE,GDjCAC,GAAU,SAAUC,GAE3B,OADA,GAASA,EAAa,cAAe,CAAC,WAC/B,CAAEtnE,KAAMknE,GAAcK,QAASC,MAAOF,EACjD,EACIG,GAAUP,GAAcO,QAASF,GAAUL,GAAcK,QAClD,GAAmB,SAAUG,GAAU,OAAQA,EAAS78C,KAAK88C,GAAM,GAAK,EAGxE,GAAY,SAAUxP,GAC7B,OAAOA,EAASn4D,OAASynE,GAAUtP,EAASqP,MACtCrP,EAASn4D,OAASunE,GAAU,GAAiBpP,EAASqP,OAClD,GAAM,qBAAuB16D,KAAKe,UAAUsqD,GAC1D,EAEWyP,GAAY,SAAUzP,GAC7B,OAAOA,EAASn4D,OAASynE,GATsC,IASXtP,EAASqP,MATS38C,KAAK88C,GAUrExP,EAASn4D,OAASunE,GAAUpP,EAASqP,MACjC,GAAM,qBAAuB16D,KAAKe,UAAUsqD,GAC1D,EACW0P,GAAiB,SAAUP,QACd,IAAhBA,IAA0BA,EAAc,GAC5C,IAAIQ,EAAaR,EAAc,GAAM,EACrC,OAAkB,IAAdQ,EACO,EACO,IAAdA,EACO,GACO,IAAdA,EACO,IACO,IAAdA,EACO,IACJ,CACX,EACWC,GAAwB,SAAUC,EAAMV,QAC3B,IAAhBA,IAA0BA,EAAc,GAC5C,IAAInP,EAAW0P,GAAeP,GAC9B,OAAoB,KAAbnP,GAAgC,MAAbA,EACpB,CAAEjwC,MAAO8/C,EAAK93C,OAAQA,OAAQ83C,EAAK9/C,OACnC,CAAEA,MAAO8/C,EAAK9/C,MAAOgI,OAAQ83C,EAAK93C,OAC5C,EC5CW1P,GAAO,WAAc,OAAO,MAAe,eAAkB,EAGpEynD,GAAMp9C,KAAKo9C,IAAK5qC,GAAMxS,KAAKwS,IAAK6qC,GAAMr9C,KAAKq9C,IACpCC,GAA6B,SAAUjkD,EAAGzf,EAAGs2C,EAAG/4B,EAAGzjB,EAAG6a,GAC7D,OAAO,MAAe,8BAAgC,CAClD,GAAY8K,GACZ,GAAYzf,GACZ,GAAYs2C,GACZ,GAAY/4B,GACZ,GAAYzjB,GACZ,GAAY6a,IAEpB,EACW/S,GAAY,SAAU+hE,EAAMC,GACnC,OAAOF,GAA2B,EAAG,EAAG,EAAG,EAAGC,EAAMC,EACxD,EACW17B,GAAQ,SAAUy7B,EAAMC,GAC/B,OAAOF,GAA2BC,EAAM,EAAG,EAAGC,EAAM,EAAG,EAC3D,EACWC,GAAgB,SAAUd,GACjC,OAAOW,GAA2BF,GAAI,GAAST,IAASnqC,GAAI,GAASmqC,KAAUnqC,GAAI,GAASmqC,IAASS,GAAI,GAAST,IAAS,EAAG,EAClI,EACWe,GAAgB,SAAUf,GACjC,OAAOc,GAAc,GAAiB,GAASd,IACnD,EACWgB,GAAc,SAAUC,EAAYC,GAC3C,OAAOP,GAA2B,EAAGD,GAAI,GAASO,IAAcP,GAAI,GAASQ,IAAc,EAAG,EAAG,EACrG,EAIWC,GAAiB,SAAUC,EAAWC,GAC7C,OAAO,MAAe,sBAAwB,CAC1C,IAAMD,EAAUliE,IAAI,IAAa0R,KAAK,KAAO,IAC7C,GAAYywD,IAEpB,GAGA,SAAWzB,GACPA,EAAaA,EAAmB,KAAI,GAAK,OACzCA,EAAaA,EAAoB,MAAI,GAAK,QAC1CA,EAAaA,EAAyB,WAAI,GAAK,YAClD,CAJD,CAIGA,KAAiBA,GAAe,CAAC,IAC7B,IAGI0B,GAHAC,GAAa,SAAUx3D,GAC9B,OAAO,MAAe,mBAAqB,CAAC,GAAYA,IAC5D,GAEA,SAAWu3D,GACPA,EAAcA,EAAqB,MAAI,GAAK,QAC5CA,EAAcA,EAAqB,MAAI,GAAK,QAC5CA,EAAcA,EAAqB,MAAI,GAAK,OAC/C,CAJD,CAIGA,KAAkBA,GAAgB,CAAC,IAC/B,IA6FIE,GA1FA,GAAmB,SAAUn8D,GACpC,OAAO,MAAe,0BAA4B,CAACs6D,GAAUt6D,IACjE,EACW,GAAoB,WAAc,OAAO,MAAe,qBAAwB,EAChF,GAAmB,WAAc,OAAO,MAAe,oBAAuB,EAC9Eo8D,GAAe,SAAU/gD,GAChC,OAAO,MAAe,gBAAkB,CAAC,GAAYA,IACzD,EAEWghD,GAAoB,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzD,OAAO,MAAe,qBAAuB,CACzC,GAAYL,GACZ,GAAYC,GACZ,GAAYC,GACZ,GAAYC,GACZ,GAAYC,GACZ,GAAYC,IAEpB,EACWC,GAAuB,SAAUN,EAAIC,EAAIC,EAAIC,GACpD,OAAO,MAAe,gCAAkC,CACpD,GAAYH,GACZ,GAAYC,GACZ,GAAYC,GACZ,GAAYC,IAEpB,EACWI,GAAY,WAAc,OAAO,MAAe,aAAgB,EAChE/H,GAAS,SAAUyG,EAAMC,GAChC,OAAO,MAAe,UAAY,CAAC,GAAYD,GAAO,GAAYC,IACtE,EACWsB,GAAS,SAAUvB,EAAMC,GAChC,OAAO,MAAe,UAAY,CAAC,GAAYD,GAAO,GAAYC,IACtE,EAwBWuB,GAAS,WAAc,OAAO,MAAe,cAAiB,EAC9DC,GAAO,WAAc,OAAO,MAAe,eAAkB,EAC7DC,GAAgB,WAAc,OAAO,MAAe,wBAA2B,EAC/EC,GAAU,WAAc,OAAO,MAAe,WAAc,EAO5D,GAAW,SAAUl+D,GAC5B,OAAO,MAAe,YAAc,CAACA,GACzC,EAEW,GAAY,WAAc,OAAO,MAAe,aAAgB,EAChE,GAAU,WAAc,OAAO,MAAe,WAAc,EAC5D,GAAiB,SAAUzJ,EAAMixB,GAAQ,OAAO,MAAe,kBAAoB,CAAC8zC,GAAU/kE,GAAO,GAAYixB,IAAS,GAkBrI,SAAW21C,GACPA,EAAkBA,EAAwB,KAAI,GAAK,OACnDA,EAAkBA,EAA2B,QAAI,GAAK,UACtDA,EAAkBA,EAAkC,eAAI,GAAK,iBAC7DA,EAAkBA,EAA6B,UAAI,GAAK,YACxDA,EAAkBA,EAA+B,YAAI,GAAK,cAC1DA,EAAkBA,EAAkC,eAAI,GAAK,iBAC7DA,EAAkBA,EAAyC,sBAAI,GAAK,wBACpEA,EAAkBA,EAAwB,KAAI,GAAK,MACtD,CATD,CASGA,KAAsBA,GAAoB,CAAC,IACvC,IChKIgB,GD6KA,GAAuC,SAAUC,EAAexB,EAAYC,EAAYviE,EAAGgd,GAClG,OAXiCe,EAWZ+jD,GAAI,GAASgC,IAXExlE,EAWe44B,GAAI,GAAS4sC,IAAkB/B,GAAI,GAASO,IAXxD1tB,GAWuE1d,GAAI,GAAS4sC,IAAkB/B,GAAI,GAASQ,IAXhH1mD,EAW8HimD,GAAI,GAASgC,IAXxI1rE,EAWyJ4H,EAXtJiT,EAWyJ+J,EAVlM,MAAe,iBAAmB,CACrC,GAAYe,GACZ,GAAYzf,GACZ,GAAYs2C,GACZ,GAAY/4B,GACZ,GAAYzjB,GACZ,GAAY6a,KAPO,IAAU8K,EAAGzf,EAAGs2C,EAAG/4B,EAAGzjB,EAAG6a,CAYpD,EAKW8wD,GAAa,SAAU9nE,GAC9B,OAAO,MAAe,cAAgB,CAAC+kE,GAAU/kE,IACrD,EAuCW+nE,GAAqB,SAAUhvC,GACtC,OAAO,MAAe,sBAAwB,CAACgsC,GAAUhsC,IAC7D,EACWivC,GAAmB,WAAc,OAAO,MAAe,oBAAuB,GC/NzF,SAAWJ,GACPA,EAAsB,UAAI,YAC1BA,EAAgB,IAAI,MACpBA,EAAiB,KAAI,MACxB,CAJD,CAIGA,KAAeA,GAAa,CAAC,IACzB,ICRIK,GDQAC,GAAY,SAAUC,GAE7B,OADAl5C,GAAYk5C,EAAM,OAAQ,EAAK,GACxB,CAAEvqE,KAAMgqE,GAAWQ,UAAWD,KAAMA,EAC/C,EACWE,GAAM,SAAUC,EAAKC,EAAOC,GAInC,OAHAv5C,GAAYq5C,EAAK,MAAO,EAAG,GAC3Br5C,GAAYs5C,EAAO,QAAS,EAAG,GAC/Bt5C,GAAYu5C,EAAM,OAAQ,EAAG,GACtB,CAAE5qE,KAAMgqE,GAAWa,IAAKH,IAAKA,EAAKC,MAAOA,EAAOC,KAAMA,EACjE,EACWE,GAAO,SAAUC,EAAMC,EAASC,EAAQruE,GAK/C,OAJAy0B,GAAY05C,EAAM,OAAQ,EAAG,GAC7B15C,GAAY25C,EAAS,UAAW,EAAG,GACnC35C,GAAY45C,EAAQ,SAAU,EAAG,GACjC55C,GAAYz0B,EAAK,MAAO,EAAG,GACpB,CAAEoD,KAAMgqE,GAAWkB,KAAMH,KAAMA,EAAMC,QAASA,EAASC,OAAQA,EAAQruE,IAAKA,EACvF,EACI4tE,GAAYR,GAAWQ,UAAWK,GAAMb,GAAWa,IAAKK,GAAOlB,GAAWkB,KAEnE,GAAkB,SAAU7S,GACnC,OAAOA,EAAMr4D,OAASwqE,ID8JsBD,EC9JelS,EAAMkS,KD+J1D,MAAe,wBAA0B,CAAC,GAAYA,MC9JvDlS,EAAMr4D,OAAS6qE,IDmKiBH,ECnKQrS,EAAMqS,IDmKTC,ECnKctS,EAAMsS,MDmKbC,ECnKoBvS,EAAMuS,KDoKrE,MAAe,uBAAyB,CAC3C,GAAYF,GACZ,GAAYC,GACZ,GAAYC,MCtKNvS,EAAMr4D,OAASkrE,IDgLcH,EChLa1S,EAAM0S,KDgLbC,EChLmB3S,EAAM2S,QDgLhBC,EChLyB5S,EAAM4S,ODgLvBruE,EChL+By7D,EAAMz7D,IDiL5F,MAAe,wBAA0B,CAC5C,GAAYmuE,GACZ,GAAYC,GACZ,GAAYC,GACZ,GAAYruE,MCpLF,GAAM,kBAAoBkQ,KAAKe,UAAUwqD,ID+K1B,IAAU0S,EAAMC,EAASC,EAAQruE,EAdxB8tE,EAAKC,EAAOC,EANNL,CC1JhD,EAEWY,GAAmB,SAAU9S,GACpC,OAAOA,EAAMr4D,OAASwqE,ID0JuBD,EC1JelS,EAAMkS,KD2J3D,MAAe,qBAAuB,CAAC,GAAYA,MC1JpDlS,EAAMr4D,OAAS6qE,IDmKkBH,ECnKQrS,EAAMqS,IDmKTC,ECnKctS,EAAMsS,MDmKbC,ECnKoBvS,EAAMuS,KDoKtE,MAAe,oBAAsB,CACxC,GAAYF,GACZ,GAAYC,GACZ,GAAYC,MCtKNvS,EAAMr4D,OAASkrE,IDiLeH,ECjLa1S,EAAM0S,KDiLbC,ECjLmB3S,EAAM2S,QDiLhBC,ECjLyB5S,EAAM4S,ODiLvBruE,ECjL+By7D,EAAMz7D,IDkL7F,MAAe,qBAAuB,CACzC,GAAYmuE,GACZ,GAAYC,GACZ,GAAYC,GACZ,GAAYruE,MCrLF,GAAM,kBAAoBkQ,KAAKe,UAAUwqD,IDgLzB,IAAU0S,EAAMC,EAASC,EAAQruE,EAfxB8tE,EAAKC,EAAOC,EAVNL,CCtJjD,EAEWa,GAAoB,SAAUC,EAAO1+B,GAE5C,YADc,IAAVA,IAAoBA,EAAQ,GACyC,KAAhE0+B,aAAqC,EAASA,EAAMhvE,QAAgBiuE,GAAUe,EAAM,GAAK1+B,GAC3B,KAAhE0+B,aAAqC,EAASA,EAAMhvE,QAAgBouE,GAAIY,EAAM,GAAK1+B,EAAO0+B,EAAM,GAAK1+B,EAAO0+B,EAAM,GAAK1+B,GACnD,KAAhE0+B,aAAqC,EAASA,EAAMhvE,QAAgByuE,GAAKO,EAAM,GAAK1+B,EAAO0+B,EAAM,GAAK1+B,EAAO0+B,EAAM,GAAK1+B,EAAO0+B,EAAM,GAAK1+B,QACvIrrC,CAClB,EAEWgqE,GAAoB,SAAUjT,GACrC,OAAOA,EAAMr4D,OAASwqE,GAAY,CAACnS,EAAMkS,MACnClS,EAAMr4D,OAAS6qE,GAAM,CAACxS,EAAMqS,IAAKrS,EAAMsS,MAAOtS,EAAMuS,MAChDvS,EAAMr4D,OAASkrE,GAAO,CAAC7S,EAAM0S,KAAM1S,EAAM2S,QAAS3S,EAAM4S,OAAQ5S,EAAMz7D,KAClE,GAAM,kBAAoBkQ,KAAKe,UAAUwqD,GAC3D,EEjDIvV,GAAK,EACLC,GAAK,EACLwoB,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAK,EACLC,GAAa,IAAIvzC,IAAI,CACrB,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,GACN,CAAC,IAAK,KAiGNwzC,GAAU,CACVhxB,EAAG,SAAU12B,GAMT,OALA4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACPqnD,GAAKC,GAAK,KACVC,GAAK3oB,GACL4oB,GAAK3oB,GACE4e,GAAO7e,GAAIC,GACtB,EACA1I,EAAG,SAAUn2B,GAMT,OALA4+B,IAAM5+B,EAAE,GACR6+B,IAAM7+B,EAAE,GACRqnD,GAAKC,GAAK,KACVC,GAAK3oB,GACL4oB,GAAK3oB,GACE4e,GAAO7e,GAAIC,GACtB,EACA5I,EAAG,SAAUj2B,GAKT,OAJA4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACPqnD,GAAKrnD,EAAE,GACPsnD,GAAKtnD,EAAE,GACAglD,GAAkBhlD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAC7D,EACA62B,EAAG,SAAU72B,GACT,IAAI2nD,EAAM3C,GAAkBhlD,EAAE,GAAK4+B,GAAI5+B,EAAE,GAAK6+B,GAAI7+B,EAAE,GAAK4+B,GAAI5+B,EAAE,GAAK6+B,GAAI7+B,EAAE,GAAK4+B,GAAI5+B,EAAE,GAAK6+B,IAK1F,OAJAwoB,GAAKzoB,GAAK5+B,EAAE,GACZsnD,GAAKzoB,GAAK7+B,EAAE,GACZ4+B,IAAM5+B,EAAE,GACR6+B,IAAM7+B,EAAE,GACD2nD,CACX,EACA5wB,EAAG,SAAU/2B,GACE,OAAPqnD,IAAsB,OAAPC,KACfD,GAAKzoB,GACL0oB,GAAKzoB,IAET,IAAI8oB,EAAM3C,GAAkBpmB,IAAMyoB,GAAKzoB,IAAKC,IAAMyoB,GAAKzoB,IAAK7+B,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAKhF,OAJAqnD,GAAKrnD,EAAE,GACPsnD,GAAKtnD,EAAE,GACP4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACA2nD,CACX,EACAtpD,EAAG,SAAU2B,GACE,OAAPqnD,IAAsB,OAAPC,KACfD,GAAKzoB,GACL0oB,GAAKzoB,IAET,IAAI8oB,EAAM3C,GAAkBpmB,IAAMyoB,GAAKzoB,IAAKC,IAAMyoB,GAAKzoB,IAAKD,GAAK5+B,EAAE,GAAI6+B,GAAK7+B,EAAE,GAAI4+B,GAAK5+B,EAAE,GAAI6+B,GAAK7+B,EAAE,IAKpG,OAJAqnD,GAAKzoB,GAAK5+B,EAAE,GACZsnD,GAAKzoB,GAAK7+B,EAAE,GACZ4+B,IAAM5+B,EAAE,GACR6+B,IAAM7+B,EAAE,GACD2nD,CACX,EACAtxB,EAAG,SAAUr2B,GAKT,OAJAqnD,GAAKrnD,EAAE,GACPsnD,GAAKtnD,EAAE,GACP4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACAulD,GAAqBvlD,EAAE,GAAIA,EAAE,GAAI4+B,GAAIC,GAChD,EACA7qC,EAAG,SAAUgM,GACT,IAAI2nD,EAAMpC,GAAqBvlD,EAAE,GAAK4+B,GAAI5+B,EAAE,GAAK6+B,GAAI7+B,EAAE,GAAK4+B,GAAI5+B,EAAE,GAAK6+B,IAKvE,OAJAwoB,GAAKzoB,GAAK5+B,EAAE,GACZsnD,GAAKzoB,GAAK7+B,EAAE,GACZ4+B,IAAM5+B,EAAE,GACR6+B,IAAM7+B,EAAE,GACD2nD,CACX,EACA1wB,EAAG,SAAUj3B,GACE,OAAPqnD,IAAsB,OAAPC,IACfD,GAAKzoB,GACL0oB,GAAKzoB,KAGLwoB,GAAKzoB,IAAMyoB,GAAKzoB,IAChB0oB,GAAKzoB,IAAMyoB,GAAKzoB,KAEpB,IAAI8oB,EAAMpC,GAAqB8B,GAAIC,GAAItnD,EAAE,GAAIA,EAAE,IAK/C,OAJAqnD,GAAKzoB,IAAMyoB,GAAKzoB,IAChB0oB,GAAKzoB,IAAMyoB,GAAKzoB,IAChBD,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACA2nD,CACX,EACAvpD,EAAG,SAAU4B,GACE,OAAPqnD,IAAsB,OAAPC,IACfD,GAAKzoB,GACL0oB,GAAKzoB,KAGLwoB,GAAKzoB,IAAMyoB,GAAKzoB,IAChB0oB,GAAKzoB,IAAMyoB,GAAKzoB,KAEpB,IAAI8oB,EAAMpC,GAAqB8B,GAAIC,GAAI1oB,GAAK5+B,EAAE,GAAI6+B,GAAK7+B,EAAE,IAGzD,OAFA4+B,IAAM5+B,EAAE,GACR6+B,IAAM7+B,EAAE,GACD2nD,CACX,EACAlxB,EAAG,SAAUz2B,GACT,IAAI4nD,EAAOC,GAASjpB,GAAIC,GAAI7+B,GAG5B,OAFA4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACA4nD,CACX,EACA5nD,EAAG,SAAUA,GACTA,EAAE,IAAM4+B,GACR5+B,EAAE,IAAM6+B,GACR,IAAI+oB,EAAOC,GAASjpB,GAAIC,GAAI7+B,GAG5B,OAFA4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACA4nD,CACX,EACAjnB,EAAG,SAAU3gC,GAIT,OAHA4+B,GAAK5+B,EAAE,GACP6+B,GAAK7+B,EAAE,GACPqnD,GAAKC,GAAK,KACH7B,GAAO7mB,GAAIC,GACtB,EACAziD,EAAG,SAAU4jB,GAIT,OAHA4+B,IAAM5+B,EAAE,GACR6+B,IAAM7+B,EAAE,GACRqnD,GAAKC,GAAK,KACH7B,GAAO7mB,GAAIC,GACtB,EACAjO,EAAG,SAAU5wB,GAGT,OAFA4+B,GAAK5+B,EAAE,GACPqnD,GAAKC,GAAK,KACH7B,GAAO7mB,GAAIC,GACtB,EACA5N,EAAG,SAAUjxB,GAGT,OAFA4+B,IAAM5+B,EAAE,GACRqnD,GAAKC,GAAK,KACH7B,GAAO7mB,GAAIC,GACtB,EACArI,EAAG,SAAUx2B,GAGT,OAFA6+B,GAAK7+B,EAAE,GACPqnD,GAAKC,GAAK,KACH7B,GAAO7mB,GAAIC,GACtB,EACAp/B,EAAG,SAAUO,GAGT,OAFA6+B,IAAM7+B,EAAE,GACRqnD,GAAKC,GAAK,KACH7B,GAAO7mB,GAAIC,GACtB,EACAjI,EAAG,WACC,IAAI+wB,EAAMnC,KAGV,OAFA5mB,GAAK2oB,GACL1oB,GAAK2oB,GACEG,CACX,EACAzwB,EAAG,WACC,IAAIywB,EAAMnC,KAGV,OAFA5mB,GAAK2oB,GACL1oB,GAAK2oB,GACEG,CACX,GAEAE,GAAW,SAAU5lE,EAAGgd,EAAG6oD,GAI3B,IAHA,IAAIC,EAAKD,EAAO,GAAIE,EAAKF,EAAO,GAAIG,EAAMH,EAAO,GAAII,EAAQJ,EAAO,GAAIK,EAAQL,EAAO,GAAItoE,EAAKsoE,EAAO,GAAIM,EAAKN,EAAO,GAEnHF,EAAO,GACF9hD,EAAK,EAAGuiD,EAFNC,GAAc9oE,EAAI4oE,EAAIL,EAAIC,EAAIE,EAAOC,EAAOF,EAAKhmE,EAAGgd,GAE/B6G,EAAKuiD,EAAOlwE,OAAQ2tB,IAAM,CACtD,IAAIyiD,EAAMF,EAAOviD,GACb0iD,EAAMC,GAAgBvtE,WAAM,EAAQqtE,GACxCX,EAAK1rE,KAAK8oE,GAAkB9pE,WAAM,EAAQstE,GAC9C,CACA,OAAOZ,CACX,EAEIU,GAAgB,SAAUrmE,EAAGgd,EAAG8oD,EAAIC,EAAIE,EAAOC,EAAOO,EAASC,EAAIC,GACnE,IAAIxvB,EAAKsvB,GAAW/hD,KAAK88C,GAAK,KAC1BoF,EAAQliD,KAAKwS,IAAIigB,GACjB0vB,EAAQniD,KAAKo9C,IAAI3qB,GACrB2uB,EAAKphD,KAAKsL,IAAI81C,GACdC,EAAKrhD,KAAKsL,IAAI+1C,GAGd,IAAItyB,GAFJ2xB,GAAKyB,GAASH,EAAK1mE,GAAK,GAAM4mE,GAASD,EAAK3pD,GAAK,IAElCooD,IAAOU,EAAKA,IAD3BT,GAAKwB,GAASF,EAAK3pD,GAAK,GAAM4pD,GAASF,EAAK1mE,GAAK,IACVqlE,IAAOU,EAAKA,GAC/CtyB,EAAK,IAELqyB,GADAryB,EAAK/uB,KAAKu7B,KAAKxM,GAEfsyB,GAAMtyB,GAEV,IAAIqzB,EAAMD,EAAQf,EACdiB,EAAMH,EAAQd,EACdkB,GAAOJ,EAAQb,EACfkB,EAAMJ,EAAQd,EACdmB,EAAKJ,EAAMJ,EAAKK,EAAMJ,EACtBQ,EAAKH,EAAMN,EAAKO,EAAMN,EACtB3D,EAAK8D,EAAM9mE,EAAI+mE,EAAM/pD,EACrBimD,EAAK+D,EAAMhnE,EAAIinE,EAAMjqD,EAErBoqD,EAAY,IADPpE,EAAKkE,IAAOlE,EAAKkE,IAAOjE,EAAKkE,IAAOlE,EAAKkE,IAC1B,IACpBC,EAAY,IACZA,EAAY,GAEhB,IAAIC,EAAU3iD,KAAKu7B,KAAKmnB,GACpBlB,IAAUD,IACVoB,GAAWA,GAEf,IAAIC,EAAK,IAAOJ,EAAKlE,GAAMqE,GAAWpE,EAAKkE,GACvCI,EAAK,IAAOJ,EAAKlE,GAAMoE,GAAWrE,EAAKkE,GACvCM,EAAM9iD,KAAK+iD,MAAMN,EAAKI,EAAIL,EAAKI,GAE/BI,EADMhjD,KAAK+iD,MAAMxE,EAAKsE,EAAIvE,EAAKsE,GACjBE,EACdE,EAAQ,GAAe,IAAVxB,EACbwB,GAAS,EAAIhjD,KAAK88C,GAEbkG,EAAQ,GAAe,IAAVxB,IAClBwB,GAAS,EAAIhjD,KAAK88C,IAItB,IAFA,IAAImG,EAAWjjD,KAAKmC,KAAKnC,KAAKsL,IAAI03C,GAAmB,GAAVhjD,KAAK88C,GAAW,QACvD5oE,EAAS,GACJ3C,EAAI,EAAGA,EAAI0xE,EAAU1xE,IAAK,CAC/B,IAAI2xE,EAAMJ,EAAOvxE,EAAIyxE,EAASC,EAC1BE,EAAML,GAAQvxE,EAAI,GAAKyxE,EAASC,EACpC/uE,EAAO3C,GAAK,CAACqxE,EAAIC,EAAIK,EAAKC,EAAK/B,EAAIC,EAAIa,EAAOC,EAClD,CACA,OAAOjuE,CACX,EACI4tE,GAAkB,SAAUsB,EAAKC,EAAKP,EAAKQ,EAAKlC,EAAIC,EAAIa,EAAOC,GAC/D,IAAIC,EAAMD,EAAQf,EACdiB,GAAOH,EAAQb,EACfiB,EAAMJ,EAAQd,EACdmB,EAAMJ,EAAQd,EACdkC,EAAS,IAAOD,EAAMR,GACtBrrD,EAAM,EAAI,EAAKuI,KAAKwS,IAAa,GAAT+wC,GAAgBvjD,KAAKwS,IAAa,GAAT+wC,GACjDvjD,KAAKwS,IAAI+wC,GACTjF,EAAK8E,EAAMpjD,KAAKo9C,IAAI0F,GAAOrrD,EAAIuI,KAAKwS,IAAIswC,GACxCvE,EAAK8E,EAAMrjD,KAAKwS,IAAIswC,GAAOrrD,EAAIuI,KAAKo9C,IAAI0F,GACxCpE,EAAK0E,EAAMpjD,KAAKo9C,IAAIkG,GACpB3E,EAAK0E,EAAMrjD,KAAKwS,IAAI8wC,GACpB9E,EAAKE,EAAKjnD,EAAIuI,KAAKwS,IAAI8wC,GACvB7E,EAAKE,EAAKlnD,EAAIuI,KAAKo9C,IAAIkG,GAS3B,MARa,CACTlB,EAAM9D,EAAK+D,EAAM9D,EACjB+D,EAAMhE,EAAKiE,EAAMhE,EACjB6D,EAAM5D,EAAK6D,EAAM5D,EACjB6D,EAAM9D,EAAK+D,EAAM9D,EACjB2D,EAAM1D,EAAK2D,EAAM1D,EACjB2D,EAAM5D,EAAK6D,EAAM5D,EAGzB,EACW6E,GAAqB,SAAUlzD,GAAQ,OA1QtC,SAAUmzD,GAElBxrB,GAAKC,GAAKwoB,GAAKC,GAAKC,GAAKC,GAAK,EAG9B,IADA,IAAII,EAAO,GACF1vE,EAAI,EAAGA,EAAIkyE,EAASjyE,OAAQD,IAAK,CACtC,IAAI2+C,EAAIuzB,EAASlyE,GACjB,GAAI2+C,EAAE8wB,KAAiC,mBAAnBD,GAAQ7wB,EAAE8wB,KAAqB,CAC/C,IAAIA,EAAMD,GAAQ7wB,EAAE8wB,KAAK9wB,EAAEze,MACvBra,MAAMuO,QAAQq7C,GACdC,EAAOA,EAAK18D,OAAOy8D,GAGnBC,EAAK1rE,KAAKyrE,EAElB,CACJ,CACA,OAAOC,CACX,CAwPyD1sE,CAtV7C,SAAU+b,GAOlB,IANA,IAAI0wD,EACA0C,EAAM,GACNjyC,EAAO,GACPkyC,EAAS,GACTC,GAAe,EACfpgB,EAAS,EACJrkC,EAAK,EAAG0kD,EAASvzD,EAAM6O,EAAK0kD,EAAOryE,OAAQ2tB,IAAM,CACtD,IAAI+wB,EAAI2zB,EAAO1kD,GACf,GAAI2hD,GAAW5wC,IAAIggB,GACfsT,EAASsd,GAAWjsE,IAAIq7C,GACpB8wB,IAEI2C,EAAOnyE,OAAS,IAChBigC,EAAKA,EAAKjgC,SAAWmyE,GAEzBD,EAAIA,EAAIlyE,QAAU,CAAEwvE,IAAKA,EAAKvvC,KAAMA,GACpCA,EAAO,GACPkyC,EAAS,GACTC,GAAe,GAEnB5C,EAAM9wB,OAEL,GAAI,CAAC,IAAK,KAAK9iC,SAAS8iC,IAClB,MAANA,GAAayzB,EAAOnyE,OAAS,GAAmC,MAA9BmyE,EAAOA,EAAOnyE,OAAS,IACnD,MAAN0+C,GAAa0zB,EAAe,CAC7B,GAAsB,IAAlBD,EAAOnyE,OACP,SAEAigC,EAAKjgC,SAAWgyD,GAEhBkgB,EAAIA,EAAIlyE,QAAU,CAAEwvE,IAAKA,EAAKvvC,KAAMA,GACpCA,EAAO,EAAEkyC,GAEG,MAAR3C,IACAA,EAAM,KAEE,MAARA,IACAA,EAAM,MAIVvvC,EAAKA,EAAKjgC,SAAWmyE,EAEzBC,EAAqB,MAAN1zB,EAEfyzB,EAAS,CAAC,IAAK,KAAKv2D,SAAS8iC,GAAKA,EAAI,EAC1C,MAEIyzB,GAAUzzB,EACA,MAANA,IACA0zB,GAAe,EAG3B,CAoBA,OAlBID,EAAOnyE,OAAS,IACZigC,EAAKjgC,SAAWgyD,GAEhBkgB,EAAIA,EAAIlyE,QAAU,CAAEwvE,IAAKA,EAAKvvC,KAAMA,GACpCA,EAAO,EAAEkyC,GAEG,MAAR3C,IACAA,EAAM,KAEE,MAARA,IACAA,EAAM,MAIVvvC,EAAKA,EAAKjgC,SAAWmyE,GAG7BD,EAAIA,EAAIlyE,QAAU,CAAEwvE,IAAKA,EAAKvvC,KAAMA,GAC7BiyC,CACX,CA2Q+DxhE,CAAMoO,GAAQ,ECpVlEwzD,GAAY,SAAUvsE,EAAMlC,GACnC,MAAO,CACH,KACAA,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClDvoE,GAAUnG,EAAQiG,EAAGjG,EAAQijB,GAC7BmlD,GAAc,GAAUpoE,EAAQ2uE,SAChCliC,GAAMzsC,EAAQgoB,MAAOhoB,EAAQgwB,QAC7Bs4C,GAAY,GAAUtoE,EAAQ4uE,OAAQ,GAAU5uE,EAAQ6uE,QACxD7E,GAAW9nE,GACX,MACF8D,OAAO9H,QACb,EA6BW4wE,GAAgB,SAAU9uE,GACjC,IAAIqoB,EAAIE,EACR,MAAO,CACH,KACAvoB,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClD1uE,EAAQm4D,OAAS,GAAgBn4D,EAAQm4D,OACzCn4D,EAAQ+uE,aAAe9D,GAAiBjrE,EAAQ+uE,aAChDhG,GAAa/oE,EAAQgvE,aACrBhvE,EAAQivE,eAAiBpG,GAAW7oE,EAAQivE,eAC5CxG,GAAkD,QAAlCpgD,EAAKroB,EAAQkvE,uBAAoC,IAAP7mD,EAAgBA,EAAK,GAAuC,QAAlCE,EAAKvoB,EAAQmvE,uBAAoC,IAAP5mD,EAAgBA,EAAK,GACnJpiB,GAAUnG,EAAQiG,EAAGjG,EAAQijB,GAC7BmlD,GAAc,GAAUpoE,EAAQ2uE,SAChCrG,GAAY,GAAUtoE,EAAQ4uE,OAAQ,GAAU5uE,EAAQ6uE,QACxDpN,GAAO,EAAG,GACVgI,GAAO,EAAGzpE,EAAQgwB,QAClBy5C,GAAOzpE,EAAQgoB,MAAOhoB,EAAQgwB,QAC9By5C,GAAOzpE,EAAQgoB,MAAO,GACtBwhD,KAEAxpE,EAAQm4D,OAASn4D,EAAQgvE,YAAcpF,KACjC5pE,EAAQm4D,MAAQwR,KACZ3pE,EAAQ+uE,YAAcrF,KAClBF,KACd,MACFxjE,OAAO9H,QACb,EACIkxE,IAAgBzkD,KAAKu7B,KAAK,GAAK,GAAO,EAA9B,EAgDDmpB,GAAc,SAAUrvE,GAC/B,IAAIqoB,EAAIE,EAAIE,EA/CuB6mD,EAC/BrpE,EACAgd,EACAssD,EACAC,EAGA7C,EACAC,EACA6C,EACAC,EACAC,EACAC,EAoCJ,OAAOhsD,GAAe,CAClB,KACA5jB,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClD1uE,EAAQm4D,OAAS,GAAgBn4D,EAAQm4D,OACzCn4D,EAAQ+uE,aAAe9D,GAAiBjrE,EAAQ+uE,aAChDhG,GAAa/oE,EAAQgvE,aACrBhvE,EAAQivE,eAAiBpG,GAAW7oE,EAAQivE,eAC5CxG,GAAkD,QAAlCpgD,EAAKroB,EAAQkvE,uBAAoC,IAAP7mD,EAAgBA,EAAK,GAAuC,QAAlCE,EAAKvoB,EAAQmvE,uBAAoC,IAAP5mD,EAAgBA,EAAK,SAChInnB,IAAnBpB,EAAQ2uE,QAxDuBW,EAyDb,CACdrpE,EAAGjG,EAAQiG,EACXgd,EAAGjjB,EAAQijB,EACXssD,OAAQvvE,EAAQuvE,OAChBC,OAAQxvE,EAAQwvE,QA5DpBvpE,EAAI,GAASqpE,EAAOrpE,GACpBgd,EAAI,GAASqsD,EAAOrsD,GACpBssD,EAAS,GAASD,EAAOC,QACzBC,EAAS,GAASF,EAAOE,QAGzB7C,EAAK4C,EAASH,GACdxC,EAAK4C,EAASJ,GACdK,GAJJxpE,GAAKspE,GAIiB,EAATA,EACTG,GAJJzsD,GAAKusD,GAIiB,EAATA,EACTG,EAAK1pE,EAAIspE,EACTK,EAAK3sD,EAAIusD,EACN,CACH,KACA/N,GAAOx7D,EAAG2pE,GACV5G,GAAkB/iE,EAAG2pE,EAAKhD,EAAI+C,EAAKhD,EAAI1pD,EAAG0sD,EAAI1sD,GAC9C+lD,GAAkB2G,EAAKhD,EAAI1pD,EAAGwsD,EAAIG,EAAKhD,EAAI6C,EAAIG,GAC/C5G,GAAkByG,EAAIG,EAAKhD,EAAI+C,EAAKhD,EAAI+C,EAAIC,EAAID,GAChD1G,GAAkB2G,EAAKhD,EAAI+C,EAAIzpE,EAAG2pE,EAAKhD,EAAI3mE,EAAG2pE,GAC9C,OAGgB,SAAUN,GAC9B,IAAIO,EAAU,GAASP,EAAOrpE,GAC1B6pE,EAAU,GAASR,EAAOrsD,GAC1BssD,EAAS,GAASD,EAAOC,QACzBC,EAAS,GAASF,EAAOE,QACzBvpE,GAAKspE,EACLtsD,GAAKusD,EACL7C,EAAK4C,EAASH,GACdxC,EAAK4C,EAASJ,GACdK,EAAKxpE,EAAa,EAATspE,EACTG,EAAKzsD,EAAa,EAATusD,EACTG,EAAK1pE,EAAIspE,EACTK,EAAK3sD,EAAIusD,EACb,MAAO,CACHrpE,GAAU0pE,EAASC,GACnB1H,GAAc,GAAUkH,EAAOX,SAC/BlN,GAAOx7D,EAAG2pE,GACV5G,GAAkB/iE,EAAG2pE,EAAKhD,EAAI+C,EAAKhD,EAAI1pD,EAAG0sD,EAAI1sD,GAC9C+lD,GAAkB2G,EAAKhD,EAAI1pD,EAAGwsD,EAAIG,EAAKhD,EAAI6C,EAAIG,GAC/C5G,GAAkByG,EAAIG,EAAKhD,EAAI+C,EAAKhD,EAAI+C,EAAIC,EAAID,GAChD1G,GAAkB2G,EAAKhD,EAAI+C,EAAIzpE,EAAG2pE,EAAKhD,EAAI3mE,EAAG2pE,GAEtD,CAkBUG,CAAkB,CAChB9pE,EAAGjG,EAAQiG,EACXgd,EAAGjjB,EAAQijB,EACXssD,OAAQvvE,EAAQuvE,OAChBC,OAAQxvE,EAAQwvE,OAChBb,OAAkC,QAAzBlmD,EAAKzoB,EAAQ2uE,cAA2B,IAAPlmD,EAAgBA,EAAK0+C,GAAQ,KACtE,CAELnnE,EAAQm4D,OAASn4D,EAAQgvE,YAAcpF,KACjC5pE,EAAQm4D,MAAQwR,KACZ3pE,EAAQ+uE,YAAcrF,KAClBF,KACd,OACDxjE,OAAO9H,QACd,EAqEW8xE,GAAgB,SAAUhwE,GACjC,OAA4B,IAArBA,EAAQi4D,SAAiB,CAC5B9xD,GAAU,EAAG,GACbkiE,GAAc,IAES,KAArBroE,EAAQi4D,SAAkB,CACxB9xD,GAAUnG,EAAQgoB,MAAO,GACzBqgD,GAAc,KAES,MAArBroE,EAAQi4D,SAAmB,CACzB9xD,GAAUnG,EAAQgoB,MAAOhoB,EAAQgwB,QACjCq4C,GAAc,MAES,MAArBroE,EAAQi4D,SAAmB,CACzB9xD,GAAU,EAAGnG,EAAQgwB,QACrBq4C,GAAc,MAEZ,EACtB,EACW4H,GAAe,SAAUjwE,GAChC,IAAIkwE,EAAUpB,GAAc,CACxB7oE,EAAGjG,EAAQiG,EACXgd,EAAGjjB,EAAQijB,EACX+E,MAAOhoB,EAAQgoB,MACfgI,OAAQhwB,EAAQgwB,OAChBg/C,YAAahvE,EAAQgvE,YACrB7W,MAAOn4D,EAAQm4D,MACf4W,YAAa/uE,EAAQ+uE,YACrBJ,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEnB,IAAKnnE,EAAQmwE,OACT,OAAOD,EACX,IAAIloD,EAAQ,GAAShoB,EAAQgoB,OACzBgI,EAAS,GAAShwB,EAAQgwB,QAE1BogD,EAlFmB,SAAUpwE,GACjC,IAAImzB,EAAO,GAASnzB,EAAQmzB,MAsBxBk9C,GAAM,IACNC,GAAM,IAKNC,GAAM,KACNC,EAAM,MAA+B,KAAcF,EAEvD,MAAO,CACH,KACAtwE,EAAQm4D,OAAS8S,GAAiBjrE,EAAQm4D,OAC1C4Q,GAAa/oE,EAAQywE,WACrBtqE,GAAUnG,EAAQiG,EAAGjG,EAAQijB,GAC7Bw+C,GAAO8O,EAAMp9C,EAAMq9C,EAAMr9C,GACzBs2C,GAAO4G,EAAMl9C,EAAMm9C,EAAMn9C,GACzBs2C,GAZM,IAYOt2C,EAbP,KAamBA,GACzBu2C,KACA,MACF1jE,OAAO9H,QACb,CAuCoBwyE,CAAc,CAC1BzqE,EAAG+hB,EAAQ,EACX/E,EAAG+M,EAAS,EACZmD,KAJgBxI,KAAKhZ,IAAIqW,EAAOgI,GAAU,EAK1CygD,UAAWzwE,EAAQywE,UACnBtY,MAAOn4D,EAAQ2wE,YAEnB,OAAO/sD,GAAe,CAAC,MAAsBssD,EAASE,EAAW,CAAC,MACtE,EACWQ,GAAkB,SAAU5wE,GACnC,IAAIgoB,EAAQ,GAAShoB,EAAQgoB,OACzBgI,EAAS,GAAShwB,EAAQgwB,QAC1B6gD,EAAelmD,KAAKhZ,IAAIqW,EAAOgI,GAAU,EACzCkgD,EAAUb,GAAY,CACtBppE,EAAGjG,EAAQiG,EACXgd,EAAGjjB,EAAQijB,EACXssD,OAAQsB,EACRrB,OAAQqB,EACR1Y,MAAOn4D,EAAQm4D,MACf4W,YAAa/uE,EAAQ+uE,YACrBC,YAAahvE,EAAQgvE,cAEzB,IAAKhvE,EAAQmwE,OACT,OAAOD,EACX,IAAI/pB,EAAMkpB,GAAY,CAClBppE,EAAGjG,EAAQiG,EACXgd,EAAGjjB,EAAQijB,EACXssD,OAAuB,IAAfsB,EACRrB,OAAuB,IAAfqB,EACR1Y,MAAOn4D,EAAQ8wE,SACf/B,iBAAa3tE,EACb4tE,YAAa,IAEjB,OAAOprD,GAAe,CAAC,MAAsBssD,EAAS/pB,EAAK,CAAC,MAChE,EACW4qB,GAAa,SAAU/wE,GAC9B,IAAIiG,EAAI,GAASjG,EAAQiG,GACrBgd,EAAI,GAASjjB,EAAQijB,GACrB+E,EAAQ,GAAShoB,EAAQgoB,OACzBgI,EAAS,GAAShwB,EAAQgwB,QAC1BghD,EAAalC,GAAc,CAC3B7oE,EAAGA,EACHgd,EAAGA,EACH+E,MAAOA,EACPgI,OAAQA,EACRg/C,YAAahvE,EAAQgvE,YACrB7W,MAAOn4D,EAAQm4D,MACf4W,YAAa/uE,EAAQ+uE,YACrBJ,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEft/C,EAAQopD,GAAcjxE,EAAQkxE,UAAW,CACzC/Y,MAAOn4D,EAAQmxE,UACfljD,KAAMjuB,EAAQiuB,KACdkF,KAAMnzB,EAAQ+0D,SACd4Z,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEnB,OAAOvjD,GAAe,CAAC,MAAsBotD,EAAYnpD,EAAO,CAAC,MACrE,EACWopD,GAAgB,SAAUppD,EAAO7nB,GAMxC,IALA,IAAI88B,EAAY,CACZ,KACA,GAAgB98B,EAAQm4D,OACxB,GAAen4D,EAAQiuB,KAAMjuB,EAAQmzB,OAEhCpN,EAAM,EAAGhB,EAAM8C,EAAM1rB,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACpD,IAAIsC,EAAKR,EAAM9B,GAAMqjB,EAAU/gB,EAAG+gB,QAASnjC,EAAIoiB,EAAGpiB,EAAGgd,EAAIoF,EAAGpF,EAC5D6Z,EAAU58B,KAAK,GAAqC,GAAUF,EAAQ2uE,QAAS,GAAU3uE,EAAQ4uE,OAAQ,GAAU5uE,EAAQ6uE,OAAQ5oE,EAAGgd,GAAI,GAASmmB,GACvJ,CAEA,OADAtM,EAAU58B,KAAK,MACR48B,CACX,EACWs0C,GAAgB,SAAUpxE,GACjC,IAAIiG,EAAI,GAASjG,EAAQiG,GACrBgd,EAAI,GAASjjB,EAAQijB,GACrB+E,EAAQ,GAAShoB,EAAQgoB,OACzBgI,EAAS,GAAShwB,EAAQgwB,QAC1Bg/C,EAAc,GAAShvE,EAAQgvE,aAC/BlpD,EAAU,GAAS9lB,EAAQ8lB,SAC3BurD,EAAQprE,EAAI+oE,EAAc,EAAIlpD,EAC9BwrD,EAAQruD,EAAI+rD,EAAc,EAAIlpD,EAC9ByrD,EAAYvpD,EAAsC,GAA7BgnD,EAAc,EAAIlpD,GACvC0rD,EAAaxhD,EAAuC,GAA7Bg/C,EAAc,EAAIlpD,GACzC2rD,EAAe,CACfhQ,GAAO4P,EAAOC,GACd7H,GAAO4H,EAAOC,EAAQE,GACtB/H,GAAO4H,EAAQE,EAAWD,EAAQE,GAClC/H,GAAO4H,EAAQE,EAAWD,GAC1B9H,KACAlpD,KACAupD,MAEAmH,EAAalC,GAAc,CAC3B7oE,EAAGA,EACHgd,EAAGA,EACH+E,MAAOA,EACPgI,OAAQA,EACRg/C,YAAahvE,EAAQgvE,YACrB7W,MAAOn4D,EAAQm4D,MACf4W,YAAa/uE,EAAQ+uE,YACrBJ,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEft/C,EAAQopD,GAAcjxE,EAAQkxE,UAAW,CACzC/Y,MAAOn4D,EAAQmxE,UACfljD,KAAMjuB,EAAQiuB,KACdkF,KAAMnzB,EAAQ+0D,SACd4Z,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEfuK,EAAgB9tD,GAAe,CAC/BqmD,GAAmB,MACnB,MACDpiD,EAAO,CACN,KACAqiD,OAEJ,OAAOtmD,GAAe,CAClB,MACDotD,EAAYS,EAAcC,EAAe,CACxC,MAER,EC1ZIC,GAAmC,SAAUzwE,GAE7C,SAASywE,IAIL,OADQzwE,EAAO9C,KAAKY,KADV,iKACwBA,IAEtC,CACA,OAPAgjB,GAAU2vD,EAAmBzwE,GAOtBywE,CACX,CATsC,CASpC1vE,OAGE2vE,GAA2C,SAAU1wE,GAErD,SAAS0wE,IAIL,OADQ1wE,EAAO9C,KAAKY,KADV,2MACwBA,IAEtC,CACA,OAPAgjB,GAAU4vD,EAA2B1wE,GAO9B0wE,CACX,CAT8C,CAS5C3vE,OAGE4vE,GAAkC,SAAU3wE,GAE5C,SAAS2wE,IAIL,OADQ3wE,EAAO9C,KAAKY,KADV,8QACwBA,IAEtC,CACA,OAPAgjB,GAAU6vD,EAAkB3wE,GAOrB2wE,CACX,CATqC,CASnC5vE,OAGE6vE,GAAkD,SAAU5wE,GAE5D,SAAS4wE,IAIL,OADQ5wE,EAAO9C,KAAKY,KADV,0EACwBA,IAEtC,CACA,OAPAgjB,GAAU8vD,EAAkC5wE,GAOrC4wE,CACX,CATqD,CASnD7vE,OAEE8vE,GAAkC,SAAU7wE,GAE5C,SAAS6wE,EAAiB7vE,GACtB,IACI8qB,EAAM,gDAAmD9qB,EAAO,IAEpE,OADQhB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAU+vD,EAAkB7wE,GAOrB6wE,CACX,CATqC,CASnC9vE,OAEE+vE,GAA0C,SAAU9wE,GAEpD,SAAS8wE,EAAyB9vE,EAAMqwB,EAAUC,GAC9C,IAAInK,EAAIE,EAIJyE,EAAM,mBAAsB9qB,EAAO,oBAFpBqwB,aAA2C,EAASA,EAASrwB,MAEtE,iCADyI,QAAjIqmB,EAAmF,QAA7EF,EAAKmK,aAAuC,EAASA,EAAOr1B,mBAAgC,IAAPkrB,OAAgB,EAASA,EAAGnmB,YAAyB,IAAPqmB,EAAgBA,EAAKiK,GAIhL,OADQtxB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAXAgjB,GAAUgwD,EAA0B9wE,GAW7B8wE,CACX,CAb6C,CAa3C/vE,OAaEgwE,IAX0C,SAAU/wE,GAEpD,SAASgxE,EAAyB/U,GAC9B,IACInwC,EAAM,uDAA0DmwC,EAAU,IAE9E,OADQj8D,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CANAgjB,GAAUkwD,EAA0BhxE,EAQxC,CAT6C,CAS3Ce,OAE2C,SAAUf,GAEnD,SAAS+wE,EAAwB/vE,GAC7B,IACI8qB,EAAM,oDAAuD9qB,EAAO,IAExE,OADQhB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAUiwD,EAAyB/wE,GAO5B+wE,CACX,CAT4C,CAS1ChwE,QAEEkwE,GAA2C,SAAUjxE,GAErD,SAASixE,EAA0BC,GAC/B,IACIplD,EAAM,2CAA8ColD,EAAW,IAEnE,OADQlxE,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAUmwD,EAA2BjxE,GAO9BixE,CACX,CAT8C,CAS5ClwE,OAaEowE,IAX+C,SAAUnxE,GAEzD,SAASoxE,EAA8BpwE,GACnC,IACI8qB,EAAM,iEAAoE9qB,EAAO,IAErF,OADQhB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CANAgjB,GAAUswD,EAA+BpxE,EAQ7C,CATkD,CAShDe,OAE0C,SAAUf,GAElD,SAASmxE,EAAuBv+C,GAC5B,IACI9G,EAAM,iFAAmF8G,EAE7F,OADQ5yB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAUqwD,EAAwBnxE,GAO3BmxE,CACX,CAT2C,CASzCpwE,QAEEswE,GAAuC,SAAUrxE,GAEjD,SAASqxE,EAAsBC,EAAYC,GACvC,IACIzlD,EAAM,8CAAgDwlD,EAAa,8BAAgCC,EAEvG,OADQvxE,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAUuwD,EAAuBrxE,GAO1BqxE,CACX,CAT0C,CASxCtwE,OAEEywE,GAAwC,SAAUxxE,GAElD,SAASwxE,EAAuBC,EAAYpW,EAAWr6D,GACnD,IACI8qB,EAAM,qCAAuC2lD,EAAa,iCAAmCpW,EAAY,aAAer6D,EAE5H,OADQhB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAU0wD,EAAwBxxE,GAO3BwxE,CACX,CAT2C,CASzCzwE,OAEE2wE,GAAuC,SAAU1xE,GAEjD,SAAS0xE,EAAsBD,EAAYpW,EAAWr6D,GAClD,IACI8qB,EAAM,8BAAgCuvC,EAAY,wBAA0BoW,EAAa,oDAAsDzwE,EAAO,IAE1J,OADQhB,EAAO9C,KAAKY,KAAMguB,IAAQhuB,IAEtC,CACA,OAPAgjB,GAAU4wD,EAAuB1xE,GAO1B0xE,CACX,CAT0C,CASxC3wE,QHjKF,SAAWkoE,GACPA,EAAcA,EAAoB,KAAI,GAAK,OAC3CA,EAAcA,EAAsB,OAAI,GAAK,SAC7CA,EAAcA,EAAqB,MAAI,GAAK,OAC/C,CAJD,CAIGA,KAAkBA,GAAgB,CAAC,IIFtC,IAEI0I,GAAkB,SAAUhrD,EAAOoG,EAAM6kD,EAAQC,QAC/B,IAAdA,IAAwBA,GAAY,GAExC,IADA,IAAIhe,EAJY,EAKTA,EAJS,KAIiB,CAE7B,IADA,IAAIie,EAAY,EACPC,EAAU,EAAGC,EAAUrrD,EAAM1rB,OAAQ82E,EAAUC,EAASD,IAAW,CACxED,GAAa,EAMb,IALA,IACIvrD,EADOI,EAAMorD,GACAt7D,MAAM,KAGnBw7D,EAAuBL,EAAO9qD,MACzBjC,EAAM,EAAGhB,EAAM0C,EAAMtrB,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACpD,IACIgC,EADahC,IAAQhB,EAAM,EACP0C,EAAM1B,GAAO0B,EAAM1B,GAAO,IAC9CqtD,EAAcnlD,EAAK4b,kBAAkB9hB,EAAMgtC,IAC/Coe,GAAwBC,IACI,IACxBJ,GAAa,EACbG,EAAuBL,EAAO9qD,MAAQorD,EAE9C,CACJ,CAEA,IAAKL,GAAaC,EAAYnrD,EAAM1rB,OAChC,OAAO44D,EAAW,EACtB,IAAI/kC,EAAS/B,EAAKolD,aAAate,GAI/B,IAHiB/kC,EAAkB,GAATA,GACKgjD,EAEbroD,KAAKsL,IAAI68C,EAAO9iD,QAC9B,OAAO+kC,EAAW,EACtBA,GAAY,CAChB,CACA,OAAOA,CACX,EACIue,GAAwB,SAAUr/C,EAAMhG,EAAM6kD,EAAQL,GAKtD,IAJA,IAAIc,EAAYT,EAAO9qD,MAAQyqD,EAC3Be,EAAaV,EAAO9iD,OACpB+kC,EAzCY,EA0CZ5wC,ExGiBe,SAAUxY,GAE7B,IADA,IAAIwY,EAAQ,GACH4B,EAAM,EAAGhB,EAAMpZ,EAAKxP,OAAQ4pB,EAAMhB,GAAM,CAC7C,IAAIsD,EAAK3B,GAAY/a,EAAMoa,GAAM80B,EAAIxyB,EAAG,GAAIorD,EAAOprD,EAAG,GACtDlE,EAAMjkB,KAAK26C,GACX90B,GAAO0tD,CACX,CACA,OAAOtvD,CACX,CwGzBgBuvD,CAAUz/C,GACf8gC,EA1CS,KA0CiB,CAC7B,IAAK,IAAIhvC,EAAM,EAAGhB,EAAMZ,EAAMhoB,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACpD,IAAI80B,EAAI12B,EAAM4B,GAEd,GADckI,EAAK4b,kBAAkBgR,EAAGka,GAAwB,IAAZwe,EAEhD,OAAOxe,EAAW,CAC1B,CAEA,GADa9mC,EAAKolD,aAAate,EAAU,CAAE3qB,WAAW,IACzCopC,EACT,OAAOze,EAAW,EACtBA,GAAY,CAChB,CACA,OAAOA,CACX,EACI4e,GAAwB,SAAU1/C,GAClC,IAAK,IAAIlO,EAAMkO,EAAK93B,OAAQ4pB,EAAM,EAAGA,IACjC,GAAI,KAAKrE,KAAKuS,EAAKlO,IACf,OAAOA,CAGnB,EACI6tD,GAAgB,SAAUv0D,EAAO2H,EAAUiH,EAAM8mC,GAGjD,IAFA,IAAI1sC,EACAwrD,EAAoBx0D,EAAMljB,OACvB03E,EAAoB,GAAG,CAC1B,IAAI5/C,EAAO5U,EAAMkK,UAAU,EAAGsqD,GAC1BzqC,EAAUnb,EAAKwb,WAAWxV,GAC1BjM,EAAQiG,EAAK4b,kBAAkB5V,EAAM8gC,GACzC,GAAI/sC,EAAQhB,EAER,MAAO,CAAEiN,KAAMA,EAAMmV,QAASA,EAASphB,MAAOA,EAAO8rD,UADrCz0D,EAAMkK,UAAUsqD,SAAsBzyE,GAG1DyyE,EAA2D,QAAtCxrD,EAAKsrD,GAAsB1/C,UAA0B,IAAP5L,EAAgBA,EAAK,CAC5F,CAGA,MAAO,CACH4L,KAAM5U,EACN+pB,QAASnb,EAAKwb,WAAWpqB,GACzB2I,MAAOiG,EAAK4b,kBAAkBxqB,EAAO01C,GACrC+e,eAAW1yE,EAEnB,EACW2yE,GAAsB,SAAUpoE,EAAM0c,GAC7C,IAAI2rD,EAAY3rD,EAAG2rD,UAAWjf,EAAW1sC,EAAG0sC,SAAU9mC,EAAO5F,EAAG4F,KAAM6kD,EAASzqD,EAAGyqD,OAC9EjrD,EAAQrB,GAAUJ,GAAUza,SACfvK,IAAb2zD,GAAuC,IAAbA,IAC1BA,EAAW8d,GAAgBhrD,EAAOoG,EAAM6kD,GAAQ,IAUpD,IARA,IAAI9iD,EAAS/B,EAAKolD,aAAate,GAC3Bkf,EAAajkD,EAAkB,GAATA,EACtBkhD,EAAY,GACZpiC,EAAOgkC,EAAO7sE,EACdonC,EAAOylC,EAAO7vD,EACd8rB,EAAO+jC,EAAO7sE,EAAI6sE,EAAO9qD,MACzBolB,EAAO0lC,EAAO7vD,EAAI6vD,EAAO9iD,OACzB/M,EAAI6vD,EAAO7vD,EAAI6vD,EAAO9iD,OACjBjK,EAAM,EAAGhB,EAAM8C,EAAM1rB,OAAQ4pB,EAAMhB,EAAKgB,IAE7C,IADA,IAAImuD,EAAgBrsD,EAAM9B,QACD3kB,IAAlB8yE,GAA6B,CAChC,IAAI3rD,EAAKqrD,GAAcM,EAAepB,EAAO9qD,MAAOiG,EAAM8mC,GAAW9gC,EAAO1L,EAAG0L,KAAMmV,EAAU7gB,EAAG6gB,QAASphB,EAAQO,EAAGP,MAAO8rD,EAAYvrD,EAAGurD,UAExI7tE,EAAK+tE,IAAc7J,GAAcgK,KAAOrB,EAAO7sE,EAC7C+tE,IAAc7J,GAAciK,OAAStB,EAAO7sE,EAAK6sE,EAAO9qD,MAAQ,EAAMA,EAAQ,EAC1EgsD,IAAc7J,GAAckK,MAAQvB,EAAO7sE,EAAI6sE,EAAO9qD,MAAQA,EAC1D8qD,EAAO7sE,EAEjBA,EAAI6oC,IACJA,EAAO7oC,IAFXgd,GAAKgxD,GAGG5mC,IACJA,EAAOpqB,GACPhd,EAAI+hB,EAAQ+mB,IACZA,EAAO9oC,EAAI+hB,GACX/E,EAAI+M,EAASod,IACbA,EAAOnqB,EAAI+M,GACfkhD,EAAUhxE,KAAK,CAAEyL,KAAMsoB,EAAMmV,QAASA,EAASphB,MAAOA,EAAOgI,OAAQA,EAAQ/pB,EAAGA,EAAGgd,EAAGA,IAGtFixD,EAAgBJ,aAA6C,EAASA,EAAU/9D,MACpF,CAEJ,MAAO,CACHg/C,SAAUA,EACVkf,WAAYA,EACZpsD,MAAOqpD,EACP4B,OAAQ,CACJ7sE,EAAG6oC,EACH7rB,EAAGoqB,EACHrlB,MAAO+mB,EAAOD,EACd9e,OAAQod,EAAOC,GAG3B,EAiDWinC,GAAuB,SAAU3oE,EAAM0c,GAC9C,IAAI2rD,EAAY3rD,EAAG2rD,UAAWjf,EAAW1sC,EAAG0sC,SAAU9mC,EAAO5F,EAAG4F,KAAM6kD,EAASzqD,EAAGyqD,OAC9E7+C,EAAOxN,GAAWL,GAAUza,SACfvK,IAAb2zD,GAAuC,IAAbA,IAC1BA,EAAW8d,GAAgB,CAAC5+C,GAAOhG,EAAM6kD,IAE7C,IAAI1pC,EAAUnb,EAAKwb,WAAWxV,GAC1BjM,EAAQiG,EAAK4b,kBAAkB5V,EAAM8gC,GACrC/kC,EAAS/B,EAAKolD,aAAate,EAAU,CAAE3qB,WAAW,IAElDnkC,EAAK+tE,IAAc7J,GAAcgK,KAAOrB,EAAO7sE,EAC7C+tE,IAAc7J,GAAciK,OAAStB,EAAO7sE,EAAK6sE,EAAO9qD,MAAQ,EAAMA,EAAQ,EAC1EgsD,IAAc7J,GAAckK,MAAQvB,EAAO7sE,EAAI6sE,EAAO9qD,MAAQA,EAC1D8qD,EAAO7sE,EACjBgd,EAAI6vD,EAAO7vD,GAAK6vD,EAAO9iD,OAAS,EAAIA,EAAS,GACjD,MAAO,CACH+kC,SAAUA,EACV9gC,KAAM,CAAEtoB,KAAMsoB,EAAMmV,QAASA,EAASphB,MAAOA,EAAOgI,OAAQA,EAAQ/pB,EAAGA,EAAGgd,EAAGA,GAC7E6vD,OAAQ,CAAE7sE,EAAGA,EAAGgd,EAAGA,EAAG+E,MAAOA,EAAOgI,OAAQA,GAEpD,ECtMWukD,GAAsB,SAAU3f,GACvC,MAAI,WAAYA,EACLA,EACJ,CAAEqC,OAAQrC,EACrB,EAII,GAAU,qEACV4f,GAAqB,SAAUtY,GAC/B,IAAI7zC,EAAIE,EACJ4rC,EAA6C,QAAvC9rC,EAAK6zC,EAAMrH,8BAA2C,IAAPxsC,EAAgBA,EAAK,GAC1E2sC,EAAsD,QAA3CzsC,EAAKa,GAAc+qC,EAAI,IAASzsC,aAA0B,IAAPa,EAAgBA,EAAK,GACnFksD,EAAkBrlD,OAAO4lC,EAAQ,IACrC,OAAOiM,SAASwT,GAAmBA,OAAkBrzE,CACzD,EAKIszE,GAAa,kIACbC,GAAkB,SAAUzY,GAC5B,IAAI7zC,EACA8rC,EAA6C,QAAvC9rC,EAAK6zC,EAAMrH,8BAA2C,IAAPxsC,EAAgBA,EAAK,GAC1E2sC,EAAU5rC,GAAc+qC,EAAIugB,IAAYhtD,MACxCa,EAAKysC,QAAyCA,EAAU,GAAI4f,EAAKrsD,EAAG,GAAIssD,EAAKtsD,EAAG,GAAIusD,EAAKvsD,EAAG,GAAIwsD,EAAKxsD,EAAG,GAAIurB,EAAavrB,EAAG,GAChI,MAAmB,MAAfurB,GAAsB8gC,EACfxK,GAAUh7C,OAAOwlD,IAET,OAAf9gC,GAAuB8gC,GAAMC,GAAMC,EAC5BvK,GAAIn7C,OAAOwlD,GAAKxlD,OAAOylD,GAAKzlD,OAAO0lD,IAE3B,MAAfhhC,GAAsB8gC,GAAMC,GAAMC,GAAMC,EACjCnK,GAAKx7C,OAAOwlD,GAAKxlD,OAAOylD,GAAKzlD,OAAO0lD,GAAK1lD,OAAO2lD,SAD3D,CAIJ,EACIC,GAA0B,SAAU9Y,EAAO/D,EAAOlqC,EAAM8mC,GACxD,IAAI1sC,OACa,IAAb0sC,IAAuBA,EAAW,GACtC,IAAIZ,EAAK,CACL,GAAgBgE,GAAO3yC,WACvB,GAAgF,QAAhE6C,EAAK4F,aAAmC,EAASA,EAAK/rB,YAAyB,IAAPmmB,EAAgBA,EAAK,cAAe0sC,GAAUvvC,YACxItN,KAAK,MACPgkD,EAAMvH,qBAAqBR,EAC/B,EACW8gB,GAAoC,SAAUC,EAAUlb,GAC/D,IAAI3xC,EAAIE,EAAIE,EAER0sD,EAAcR,GAAgB3a,GAC9Bob,EAAaT,GAAgBO,EAASG,WACtCC,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZmW,EAA+E,QAAhE3mD,EAAK0wC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPxtC,EAAgBA,EAAK,EAC5G4vC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrE/uC,EAAKk/C,GAAsByN,EAAWrd,GAAWjwC,EAAQW,EAAGX,MAAOgI,EAASrH,EAAGqH,OAC/E2+C,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEsd,EAAQhL,GAAI,EAAG,EAAG,GAClBwE,EAAwG,QAAzFxmD,EAAK2iD,GAAkB3zB,aAA+B,EAASA,EAAGogB,yBAAsC,IAAPpvC,EAAgBA,EAAKgtD,EACrIC,EAAwBtK,GAAkB3zB,aAA+B,EAASA,EAAGugB,sBACrF2d,EAAsBvK,GAAkB3zB,aAA+B,EAASA,EAAGugB,qBAAsB,IAEzGqZ,EAAiG,QAApF1oD,EAAK0sD,QAAiDA,EAAcC,SAA+B,IAAP3sD,EAAgBA,EAAK8sD,EAE9HP,GADAG,EACwBnb,EAGAkb,EAASG,UAHDlE,GAKpC,IAAInxE,EAAU,CACViG,EAAG,EAAI+oE,EAAc,EACrB/rD,EAAG,EAAI+rD,EAAc,EACrBhnD,MAAOA,EAAQgnD,EACfh/C,OAAQA,EAASg/C,EACjByB,UAAW,IACXzB,YAAaA,EACbD,YAAaA,EACb4B,UAAWQ,GAEf,MAAO,CACHla,OAAQ,CACJhlB,GAAIruB,GAAe+qD,EAAQsB,GAAa/tD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOqd,EAAuBrF,QAAQ,MAChHr4B,IAAKl0B,GAAe+qD,EAAQsB,GAAa/tD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOqd,EAAuBrF,QAAQ,OAErHhZ,KAAM,CACFllB,GAAIruB,GAAe+qD,EAAQsB,GAAa/tD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOsd,EAAqBtF,QAAQ,MAC9Gr4B,IAAKl0B,GAAe+qD,EAAQsB,GAAa/tD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOsd,EAAqBtF,QAAQ,OAG3H,EACWuF,GAAsC,SAAUC,EAAY3b,GACnE,IAAI3xC,EAAIE,EAAIE,EAER0sD,EAAcR,GAAgB3a,GAC9Bob,EAAaT,GAAgBgB,EAAWN,WACxCC,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZmW,EAA+E,QAAhE3mD,EAAK0wC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPxtC,EAAgBA,EAAK,EAC5G4vC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrE/uC,EAAKk/C,GAAsByN,EAAWrd,GAAWjwC,EAAQW,EAAGX,MAAOgI,EAASrH,EAAGqH,OAC/E2+C,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEsd,EAAQhL,GAAI,EAAG,EAAG,GAClBwE,EAAwG,QAAzFxmD,EAAK2iD,GAAkB3zB,aAA+B,EAASA,EAAGogB,yBAAsC,IAAPpvC,EAAgBA,EAAKgtD,EACrIC,EAAwBtK,GAAkB3zB,aAA+B,EAASA,EAAGugB,sBACrF2d,EAAsBvK,GAAkB3zB,aAA+B,EAASA,EAAGugB,qBAAsB,IAEzGqZ,EAAiG,QAApF1oD,EAAK0sD,QAAiDA,EAAcC,SAA+B,IAAP3sD,EAAgBA,EAAK8sD,EAE9HP,GADAG,EACwBnb,EAGA2b,EAAWN,UAHHlE,GAKpC,IAAInxE,EAAU,CACViG,EAAG+hB,EAAQ,EACX/E,EAAG+M,EAAS,EACZhI,MAAOA,EAAQgnD,EACfh/C,OAAQA,EAASg/C,EACjBA,YAAaA,EACbD,YAAaA,EACb+B,SAAUK,GAEd,MAAO,CACHla,OAAQ,CACJhlB,GAAIruB,GAAe+qD,EAAQiC,GAAgB1uD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOqd,EAAuBrF,QAAQ,MACnHr4B,IAAKl0B,GAAe+qD,EAAQiC,GAAgB1uD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOqd,EAAuBrF,QAAQ,OAExHhZ,KAAM,CACFllB,GAAIruB,GAAe+qD,EAAQiC,GAAgB1uD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOsd,EAAqBtF,QAAQ,MACjHr4B,IAAKl0B,GAAe+qD,EAAQiC,GAAgB1uD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOsd,EAAqBtF,QAAQ,OAG9H,EACWyF,GAAkC,SAAUC,EAAQ7b,EAAQ/rC,GACnE,IAAI5F,EAAIE,EAAIE,EAAIE,EAAIE,EAEhBssD,EAAcR,GAAgB3a,GAC9Bob,EAAaT,GAAgBkB,EAAOR,WACpCS,EAAiBtB,GAAmBxa,GACpC+b,EAAgBvB,GAAmBqB,EAAOR,WAC1CC,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZP,EAAW/gB,aAA+B,EAASA,EAAGwgB,cACtDie,EAA4F,QAA9E3tD,EAAKiwC,aAA2C,EAASA,EAASrB,cAA2B,IAAP5uC,EAAgBA,EAAK,GACzH4tD,EAA2I,QAA/HxtD,EAAkF,QAA5EF,EAAK+vC,aAA2C,EAASA,EAASnB,YAAyB,IAAP5uC,EAAgBA,EAAKytD,SAA+B,IAAPvtD,EAAgBA,EAAK,GACxKumD,EAA+E,QAAhErmD,EAAKowC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPltC,EAAgBA,EAAK,EAC5GsvC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrE3uC,EAAK8+C,GAAsByN,EAAWrd,GAAWjwC,EAAQe,EAAGf,MAAOgI,EAASjH,EAAGiH,OAC/E2+C,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEsd,EAAQhL,GAAI,EAAG,EAAG,GAClBwE,EAAc7D,GAAkB3zB,aAA+B,EAASA,EAAGogB,kBAC3E6d,EAAwBtK,GAAkB3zB,aAA+B,EAASA,EAAGugB,sBACrF2d,EAAsBvK,GAAkB3zB,aAA+B,EAASA,EAAGugB,qBAAsB,IACzGgb,EAAS,CACT7sE,EAAG+oE,EACH/rD,EAAG+rD,EACHhnD,MAAOA,EAAsB,EAAdgnD,EACfh/C,OAAQA,EAAuB,EAAdg/C,GAEjBkH,EAAe5B,GAAqB0B,EAAY,CAChDhC,UAAW7J,GAAciK,OACzBrf,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,IAERqD,EAAa7B,GAAqB2B,EAAU,CAC5CjC,UAAW7J,GAAciK,OACzBrf,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,IAGR/d,EAAWpqC,KAAKhZ,IAAIukE,EAAanhB,SAAUohB,EAAWphB,UACtDoc,EAAiG,QAApFtoD,EAAKssD,QAAiDA,EAAcC,SAA+B,IAAPvsD,EAAgBA,EAAK0sD,EAE9HP,GADAG,QAAkC/zE,IAAnB00E,EACS9b,EAGA6b,EAAOR,UAHClE,EAAWljD,EAAM8mC,GAKrD,IAAI/0D,EAAU,CACViG,EAAG,EAAI+oE,EAAc,EACrB/rD,EAAG,EAAI+rD,EAAc,EACrBhnD,MAAOA,EAAQgnD,EACfh/C,OAAQA,EAASg/C,EACjBA,YAAaA,EACbD,YAAaA,EACboC,UAAWA,EACXljD,KAAMA,EAAK/rB,KACX6yD,SAAUA,GAEd,MAAO,CACHkC,OAAQrzC,GAAe+qD,EAAQoC,GAAW7uD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOqd,EAAuBtE,UAAW,CAACgF,EAAajiD,UACnIkjC,KAAMvzC,GAAe+qD,EAAQoC,GAAW7uD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEm4D,MAAOsd,EAAqBvE,UAAW,CAACiF,EAAWliD,UAErI,EACWmiD,GAAqC,SAAUC,EAAWrc,EAAQ/rC,GACzE,IAAI5F,EAAIE,EAAIE,EAAIE,EAiBZuoD,EACAnc,EAhBAogB,EAAcR,GAAgB3a,GAC9Bob,EAAaT,GAAgB0B,EAAUhB,WACvCS,EAAiBtB,GAAmBxa,GACpC+b,EAAgBvB,GAAmB6B,EAAUhB,WAC7CC,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZltD,EAAsC,QAA9B0c,EAAKguD,EAAUC,iBAA8B,IAAPjuD,EAAgBA,EAAK,GACnE2mD,EAA+E,QAAhEzmD,EAAKwwC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPttC,EAAgBA,EAAK,EAC5G0vC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrE7uC,EAAKg/C,GAAsByN,EAAWrd,GAAWjwC,EAAQa,EAAGb,MAAOgI,EAASnH,EAAGmH,OAC/E2+C,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEsd,EAAQhL,GAAI,EAAG,EAAG,GAClBwE,EAAc7D,GAAkB3zB,aAA+B,EAASA,EAAGogB,kBAC3E6d,EAAwBtK,GAAkB3zB,aAA+B,EAASA,EAAGugB,sBAGrFhyC,EAAUuwD,EAAUE,WAAa,EAAI,EACrCzD,EAAS,CACT7sE,EAAG+oE,EAAclpD,EACjB7C,EAAG+rD,EAAclpD,EACjBkC,MAAOA,EAAkC,GAAzBgnD,EAAclpD,GAC9BkK,OAAQA,EAAmC,GAAzBg/C,EAAclpD,IAEpC,GAAIuwD,EAAUG,cAOVtF,GANInkC,EAASgnC,GAAoBpoE,EAAM,CACnCqoE,UAAWqC,EAAUI,eACrB1hB,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,KAEOjrD,MACnBktC,EAAWhoB,EAAOgoB,cAEjB,GAAIshB,EAAUE,WAAY,CAC3B,IAAIxpC,ED3GkB,SAAUphC,EAAM0c,GAC1C,IAAI0sC,EAAW1sC,EAAG0sC,SAAU9mC,EAAO5F,EAAG4F,KAAM6kD,EAASzqD,EAAGyqD,OAAQL,EAAYpqD,EAAGoqD,UAC3Ex+C,EAAOxN,GAAWL,GAAUza,IAChC,GAAIsoB,EAAK93B,OAASs2E,EACd,MAAM,IAAIF,GAAsBt+C,EAAK93B,OAAQs2E,QAEhCrxE,IAAb2zD,GAAuC,IAAbA,IAC1BA,EAAWue,GAAsBr/C,EAAMhG,EAAM6kD,EAAQL,IAYzD,IAVA,IAAIc,EAAYT,EAAO9qD,MAAQyqD,EAC3BziD,EAAS/B,EAAKolD,aAAate,EAAU,CAAE3qB,WAAW,IAClDnnB,EAAI6vD,EAAO7vD,GAAK6vD,EAAO9iD,OAAS,EAAIA,EAAS,GAC7C0mD,EAAQ,GACR5nC,EAAOgkC,EAAO7sE,EACdonC,EAAOylC,EAAO7vD,EACd8rB,EAAO+jC,EAAO7sE,EAAI6sE,EAAO9qD,MACzBolB,EAAO0lC,EAAO7vD,EAAI6vD,EAAO9iD,OACzB2mD,EAAa,EACbC,EAAa,EACVD,EAAalE,GAAW,CAC3B,IAAIlqD,EAAK7B,GAAYuN,EAAM2iD,GAAan+C,EAAOlQ,EAAG,GAAIsuD,EAAatuD,EAAG,GAClE6gB,EAAUnb,EAAKwb,WAAWhR,GAC1BzQ,EAAQiG,EAAK4b,kBAAkBpR,EAAMs8B,GAErC9uD,EADa6sE,EAAO7sE,GAAKstE,EAAYoD,EAAapD,EAAY,GAC7CvrD,EAAQ,EACzB/hB,EAAI6oC,IACJA,EAAO7oC,GACPgd,EAAIoqB,IACJA,EAAOpqB,GACPhd,EAAI+hB,EAAQ+mB,IACZA,EAAO9oC,EAAI+hB,GACX/E,EAAI+M,EAASod,IACbA,EAAOnqB,EAAI+M,GACf0mD,EAAMx2E,KAAK,CAAEyL,KAAMsoB,EAAMmV,QAASA,EAASphB,MAAOA,EAAOgI,OAAQA,EAAQ/pB,EAAGA,EAAGgd,EAAGA,IAClF0zD,GAAc,EACdC,GAAcC,CAClB,CACA,MAAO,CACH9hB,SAAUA,EACV2hB,MAAOA,EACP5D,OAAQ,CACJ7sE,EAAG6oC,EACH7rB,EAAGoqB,EACHrlB,MAAO+mB,EAAOD,EACd9e,OAAQod,EAAOC,GAG3B,CC4DqBypC,CAAiBnrE,EAAM,CAChCopD,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,EACRL,UAA+C,QAAnChqD,EAAK4tD,EAAU5Z,sBAAmC,IAAPh0C,EAAgBA,EAAK,IAEhFyoD,EAAYnkC,EAAO2pC,MACnB3hB,EAAWhoB,EAAOgoB,QACtB,KACK,CAODmc,EAAY,EANRnkC,EAASunC,GAAqB3oE,EAAM,CACpCqoE,UAAWqC,EAAUI,eACrB1hB,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,KAEQ7+C,MACpB8gC,EAAWhoB,EAAOgoB,QACtB,CAEA,IAAIoc,EAAiG,QAApFxoD,EAAKwsD,QAAiDA,EAAcC,SAA+B,IAAPzsD,EAAgBA,EAAK4sD,EAE9HP,GADAG,QAAkC/zE,IAAnB00E,EACS9b,EAGAqc,EAAUhB,UAHFlE,EAAWljD,EAAM8mC,GAKrD,IAAI/0D,EAAU,CACViG,EAAG,EAAI+oE,EAAc,EACrB/rD,EAAG,EAAI+rD,EAAc,EACrBhnD,MAAOA,EAAQgnD,EACfh/C,OAAQA,EAASg/C,EACjBA,YAAaA,QAAiDA,EAAc,EAC5ED,YAAaA,EACboC,UAAWA,EACXljD,KAAMA,EAAK/rB,KACX6yD,SAAUA,EACVoD,MAAOqd,EACPtE,UAAWA,EACXprD,QAASA,GAEb,OAAOlC,GAAe+qD,EAAQyC,GAAcpxE,GAChD,EACW+2E,GAAoC,SAAUC,EAAUhd,EAAQ/rC,GACvE,IAAI5F,EAAIE,EAAIE,EAER0sD,EAAcR,GAAgB3a,GAC9Bob,EAAaT,GAAgBqC,EAAS3B,WACtCS,EAAiBtB,GAAmBxa,GACpC+b,EAAgBvB,GAAmBwC,EAAS3B,WAC5CC,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZltD,EAA4C,QAApC0c,EAAK2uD,EAASC,cAAc,UAAuB,IAAP5uD,EAAgBA,EAAK,GACzE2mD,EAA+E,QAAhEzmD,EAAKwwC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPttC,EAAgBA,EAAK,EAC5G0vC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrE/uC,EAAKk/C,GAAsByN,EAAWrd,GAAWjwC,EAAQW,EAAGX,MAAOgI,EAASrH,EAAGqH,OAC/E2+C,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEsd,EAAQhL,GAAI,EAAG,EAAG,GAClBwE,EAAc7D,GAAkB3zB,aAA+B,EAASA,EAAGogB,kBAC3E6d,EAAwBtK,GAAkB3zB,aAA+B,EAASA,EAAGugB,sBAErFgb,EAAS,CACT7sE,EAAG+oE,EAFO,EAGV/rD,EAAG+rD,EAHO,EAIVhnD,MAAOA,EAAkC,GAAzBgnD,EAJN,GAKVh/C,OAAQA,EAAmC,GAAzBg/C,EALR,IAOVnmD,EAAKyrD,GAAqB3oE,EAAM,CAChCqoE,UAAW7J,GAAcgK,KACzBpf,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,IACR7+C,EAAOpL,EAAGoL,KAAM8gC,EAAWlsC,EAAGksC,SAE9Boc,EAAiG,QAApF1oD,EAAK0sD,QAAiDA,EAAcC,SAA+B,IAAP3sD,EAAgBA,EAAK8sD,EAE9HP,GADAG,QAAkC/zE,IAAnB00E,EACS9b,EAGAgd,EAAS3B,UAHDlE,EAAWljD,EAAM8mC,GAKrD,IAAI/0D,EAAU,CACViG,EAAG,EAAI+oE,EAAc,EACrB/rD,EAAG,EAAI+rD,EAAc,EACrBhnD,MAAOA,EAAQgnD,EACfh/C,OAAQA,EAASg/C,EACjBA,YAAaA,QAAiDA,EAAc,EAC5ED,YAAaA,EACboC,UAAWA,EACXljD,KAAMA,EAAK/rB,KACX6yD,SAAUA,EACVoD,MAAOqd,EACPtE,UAAW,CAACj9C,GACZnO,QAjCU,GAmCd,OAAOlC,GAAe+qD,EAAQyC,GAAcpxE,GAChD,EACWk3E,GAAsC,SAAUC,EAAYnd,EAAQ/rC,GAC3E,IAAI5F,EAAIE,EAEJ4sD,EAAcR,GAAgB3a,GAC9Bob,EAAaT,GAAgBwC,EAAW9B,WACxCS,EAAiBtB,GAAmBxa,GACpC+b,EAAgBvB,GAAmB2C,EAAW9B,WAC9CC,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZmW,EAA+E,QAAhE3mD,EAAK0wC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPxtC,EAAgBA,EAAK,EAC5G4vC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrEjvC,EAAKo/C,GAAsByN,EAAWrd,GAAWjwC,EAAQS,EAAGT,MAAOgI,EAASvH,EAAGuH,OAC/E2+C,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEsd,EAAQhL,GAAI,EAAG,EAAG,GAClBwE,EAAc7D,GAAkB3zB,aAA+B,EAASA,EAAGogB,kBAC3E6d,EAAwBtK,GAAkB3zB,aAA+B,EAASA,EAAGugB,sBACrF93D,EAAUm3E,EAAW7b,aACrB8b,EAAWD,EAAWF,cACtBE,EAAWE,YACXr3E,EAAQqvB,OAEZ,IADA,IAAI1jB,EAAO,GACFoa,EAAM,EAAGhB,EAAM/kB,EAAQ7D,OAAQ4pB,EAAMhB,EAAKgB,IAC/Cpa,GAAQ3L,EAAQ+lB,GACZA,EAAMhB,EAAM,IACZpZ,GAAQ,MAEhB,IACImnE,EAAS,CACT7sE,EAAG+oE,EAFO,EAGV/rD,EAAG+rD,EAHO,EAIVhnD,MAAOA,EAAkC,GAAzBgnD,EAJN,GAKVh/C,OAAQA,EAAmC,GAAzBg/C,EALR,IAOVrmD,EAAKorD,GAAoBpoE,EAAM,CAC/BqoE,UAAW7J,GAAcgK,KACzBpf,SAAU+gB,QAAuDA,EAAiBC,EAClF9nD,KAAMA,EACN6kD,OAAQA,IACRjrD,EAAQc,EAAGd,MAAOktC,EAAWpsC,EAAGosC,SAAUkf,EAAatrD,EAAGsrD,WAC1DqD,EAAgB,GACpB,IAASvxD,EAAM,EAAGhB,EAAM8C,EAAM1rB,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACpD,IAAIkO,EAAOpM,EAAM9B,GACbqxD,EAASr/D,SAASkc,EAAKtoB,OACvB2rE,EAAcp3E,KAAK6lB,EAC3B,CACA,IAAI2kD,EAAOH,GAAI,GAAW,IAAM,IAAK,IAAM,KAEvC4G,EAAiG,QAApF5oD,EAAK4sD,QAAiDA,EAAcC,SAA+B,IAAP7sD,EAAgBA,EAAKgtD,EAOlI,OALIP,GADAG,QAAkC/zE,IAAnB00E,EACS9b,EAGAmd,EAAW9B,UAHHlE,EAAWljD,EAAM8mC,GAK9CnxC,GAAe+qD,EHeE,SAAU3uE,GAkClC,IAjCA,IAAIiG,EAAI,GAASjG,EAAQiG,GACrBgd,EAAI,GAASjjB,EAAQijB,GACrB+E,EAAQ,GAAShoB,EAAQgoB,OACzBgI,EAAS,GAAShwB,EAAQgwB,QAC1BikD,EAAa,GAASj0E,EAAQi0E,YAC9BjF,EAAc,GAAShvE,EAAQgvE,aAC/BlpD,EAAU,GAAS9lB,EAAQ8lB,SAC3BurD,EAAQprE,EAAI+oE,EAAc,EAAIlpD,EAC9BwrD,EAAQruD,EAAI+rD,EAAc,EAAIlpD,EAC9ByrD,EAAYvpD,EAAsC,GAA7BgnD,EAAc,EAAIlpD,GACvC0rD,EAAaxhD,EAAuC,GAA7Bg/C,EAAc,EAAIlpD,GACzC2rD,EAAe,CACfhQ,GAAO4P,EAAOC,GACd7H,GAAO4H,EAAOC,EAAQE,GACtB/H,GAAO4H,EAAQE,EAAWD,EAAQE,GAClC/H,GAAO4H,EAAQE,EAAWD,GAC1B9H,KACAlpD,KACAupD,MAEAmH,EAAalC,GAAc,CAC3B7oE,EAAGA,EACHgd,EAAGA,EACH+E,MAAOA,EACPgI,OAAQA,EACRg/C,YAAahvE,EAAQgvE,YACrB7W,MAAOn4D,EAAQm4D,MACf4W,YAAa/uE,EAAQ+uE,YACrBJ,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEfoQ,EAAa,GACRxxD,EAAM,EAAGhB,EAAM/kB,EAAQs3E,cAAcn7E,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACpE,IAAIkO,EAAOj0B,EAAQkxE,UAAUlxE,EAAQs3E,cAAcvxD,IACnDwxD,EAAWr3E,KAAKhB,MAAMq4E,EAAYzI,GAAc,CAC5C7oE,EAAGguB,EAAKhuB,EAAI6f,EACZ7C,EAAGgR,EAAKhR,GAAKgxD,EAAahgD,EAAKjE,QAAU,EACzChI,MAAOA,EAAQgnD,EACfh/C,OAAQiE,EAAKjE,QAAUikD,EAAahgD,EAAKjE,QAAU,EACnDg/C,YAAa,EACb7W,MAAOn4D,EAAQw3E,cACfzI,iBAAa3tE,EACbutE,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEvB,CACA,IAAIt/C,EAAQopD,GAAcjxE,EAAQkxE,UAAW,CACzC/Y,MAAOn4D,EAAQmxE,UACfljD,KAAMjuB,EAAQiuB,KACdkF,KAAMnzB,EAAQ+0D,SACd4Z,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,KAEfuK,EAAgB9tD,GAAe,CAC/BqmD,GAAmB,MACnB,MACDpiD,EAAO,CACN,KACAqiD,OAEJ,OAAOtmD,GAAe,CAClB,MACDotD,EAAYuG,EAAY9F,EAAcC,EAAe,CACpD,MAER,CGpFkC+F,CAAe,CACzCxxE,EAAG,EAAI+oE,EAAc,EACrB/rD,EAAG,EAAI+rD,EAAc,EACrBhnD,MAAOA,EAAQgnD,EACfh/C,OAAQA,EAASg/C,EACjBA,YAAaA,QAAiDA,EAAc,EAC5ED,YAAaA,EACboC,UAAWA,EACXljD,KAAMA,EAAK/rB,KACX6yD,SAAUA,EACVoD,MAAOqd,EACPtE,UAAWrpD,EACXosD,WAAYA,EACZuD,cAAe9M,EACf4M,cAAeA,EACfxxD,QA3CU,IA6ClB,ECrUA,SApFqC,WACjC,SAAS4xD,EAAgBt4D,EAAKu4D,EAAKC,GAC/B54E,KAAK64E,iBAAkB,EACvB,GAASz4D,EAAK,MAAO,CAAC,CAAC,GAAQ,YAC/B,GAASu4D,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC,GAASC,EAAU,WAAY,CAAC,CAAC,GAAiB,qBAClD54E,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,EACX34E,KAAKgpB,MAAQ4vD,EAAS5vD,MACtBhpB,KAAKgxB,OAAS4nD,EAAS5nD,OACvBhxB,KAAK44E,SAAWA,CACpB,CAuEA,OAtDAF,EAAgB56E,UAAU2vC,MAAQ,SAAUrV,GAExC,OADA,GAASA,EAAQ,SAAU,CAAC,WACrB,CAAEpP,MAAOhpB,KAAKgpB,MAAQoP,EAAQpH,OAAQhxB,KAAKgxB,OAASoH,EAC/D,EAQAsgD,EAAgB56E,UAAUq2B,KAAO,WAC7B,OAAOn0B,KAAKytC,MAAM,EACtB,EAUAirC,EAAgB56E,UAAUg7E,MAAQ,WAC9B,OAAOv1D,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,OAAOgkB,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EACD,OAAMnkB,KAAK64E,gBAAwB,CAAC,EAAa,GAC1C,CAAC,EAAa74E,KAAK44E,SAASntC,iBAAiBzrC,KAAK24E,IAAInhD,QAASx3B,KAAKogB,MAC/E,KAAK,EACDiJ,EAAGjF,OACHpkB,KAAK64E,iBAAkB,EACvBxvD,EAAGlF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAaAu0D,EAAgBphD,GAAK,SAAUlX,EAAKu4D,EAAKC,GACrC,OAAO,IAAIF,EAAgBt4D,EAAKu4D,EAAKC,EACzC,EACOF,CACX,CAnFoC,GCApC,IAAIK,GAAyB,WACzB,SAASA,EAAQ34D,EAAKu4D,EAAKC,GACvB54E,KAAKg5E,UAAW,EAChB,GAAS54D,EAAK,MAAO,CAAC,CAAC,GAAQ,YAC/B,GAASu4D,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC,GAASC,EAAU,WAAY,CAC3B,CAAC,GAAoB,sBACrB,CAAC,GAAsB,0BAE3B54E,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,EACX34E,KAAKkD,KAAO01E,EAAS7pD,SACrB/uB,KAAK44E,SAAWA,CACpB,CAqHA,OA1GAG,EAAQj7E,UAAU2sC,WAAa,SAAU99B,GAGrC,OAFA,GAASA,EAAM,OAAQ,CAAC,WACxB3M,KAAKg5E,UAAW,EACTh5E,KAAK44E,SAASnuC,WAAW99B,EACpC,EAYAosE,EAAQj7E,UAAU+sC,kBAAoB,SAAUl+B,EAAMwnB,GAGlD,OAFA,GAASxnB,EAAM,OAAQ,CAAC,WACxB,GAASwnB,EAAM,OAAQ,CAAC,WACjBn0B,KAAK44E,SAAS/tC,kBAAkBl+B,EAAMwnB,EACjD,EAcA4kD,EAAQj7E,UAAUu2E,aAAe,SAAUlgD,EAAMnzB,GAC7C,IAAIqoB,EAGJ,OAFA,GAAS8K,EAAM,OAAQ,CAAC,WACxBlC,GAAkBjxB,aAAyC,EAASA,EAAQoqC,UAAW,oBAAqB,CAAC,YACtGprC,KAAK44E,SAASztC,mBAAmBhX,EAAM,CAC1CiX,UAA0F,QAA9E/hB,EAAKroB,aAAyC,EAASA,EAAQoqC,iBAA8B,IAAP/hB,GAAgBA,GAE1H,EASA0vD,EAAQj7E,UAAUm7E,aAAe,SAAUjoD,GAEvC,OADA,GAASA,EAAQ,SAAU,CAAC,WACrBhxB,KAAK44E,SAASptC,mBAAmBxa,EAC5C,EAKA+nD,EAAQj7E,UAAUo7E,gBAAkB,WAChC,OAAIl5E,KAAK44E,oBAAoB,GAClB54E,KAAK44E,SAASllD,SAASxD,oBAGvBlwB,KAAK44E,SAAS3pD,KAAKie,YAElC,EAUA6rC,EAAQj7E,UAAUg7E,MAAQ,WACtB,OAAOv1D,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,OAAOgkB,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EACD,OAAKnkB,KAAKg5E,SACH,CAAC,EAAah5E,KAAK44E,SAASntC,iBAAiBzrC,KAAK24E,IAAInhD,QAASx3B,KAAKogB,MADhD,CAAC,EAAa,GAE7C,KAAK,EACDiJ,EAAGjF,OACHpkB,KAAKg5E,UAAW,EAChB3vD,EAAGlF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAaA40D,EAAQzhD,GAAK,SAAUlX,EAAKu4D,EAAKC,GAC7B,OAAO,IAAIG,EAAQ34D,EAAKu4D,EAAKC,EACjC,EACOG,CACX,CAnI4B,GAoI5B,YCpIA,IAAII,GAA0B,WAC1B,SAASA,EAAS/4D,EAAKu4D,EAAKC,GACxB,GAASx4D,EAAK,MAAO,CAAC,CAAC,GAAQ,YAC/B,GAASu4D,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC,GAASC,EAAU,WAAY,CAC3B,CAAC,GAAc,gBACf,CAAC,GAAa,iBAElB54E,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,EACX34E,KAAKgpB,MAAQ4vD,EAAS5vD,MACtBhpB,KAAKgxB,OAAS4nD,EAAS5nD,OACvBhxB,KAAK44E,SAAWA,CACpB,CA0GA,OAzFAO,EAASr7E,UAAU2vC,MAAQ,SAAUrV,GAEjC,OADA,GAASA,EAAQ,SAAU,CAAC,WACrB,CAAEpP,MAAOhpB,KAAKgpB,MAAQoP,EAAQpH,OAAQhxB,KAAKgxB,OAASoH,EAC/D,EAmBA+gD,EAASr7E,UAAUs7E,WAAa,SAAUpwD,EAAOgI,GAC7C,GAAShI,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAIqoD,EAAgBrwD,EAAQhpB,KAAKgpB,MAC7BswD,EAAiBtoD,EAAShxB,KAAKgxB,OAC/Byc,EAAQ9hB,KAAKhZ,IAAI0mE,EAAeC,GACpC,OAAOt5E,KAAKytC,MAAMA,EACtB,EAQA0rC,EAASr7E,UAAUq2B,KAAO,WACtB,OAAOn0B,KAAKytC,MAAM,EACtB,EAUA0rC,EAASr7E,UAAUg7E,MAAQ,WACvB,OAAOv1D,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAIsvD,EAAKv4D,EACb,OAAO4D,GAAYhkB,MAAM,SAAUupB,GAC/B,OAAQA,EAAGpF,OACP,KAAK,EACD,OAAKnkB,KAAK44E,UAIL54E,KAAKu5E,YACKZ,GAAXtvD,EAAKrpB,MAAe24E,IAAKv4D,EAAMiJ,EAAGjJ,IAClCpgB,KAAKu5E,UAAYv5E,KAAK44E,SAASntC,iBAAiBktC,EAAInhD,QAASpX,IAE1D,CAAC,EAAapgB,KAAKu5E,YAPf,CAAC,GAQhB,KAAK,EAMD,OALAhwD,EAAGnF,OAIHpkB,KAAK44E,cAAWx2E,EACT,CAAC,GAEpB,GACJ,GACJ,EAYA+2E,EAAS7hD,GAAK,SAAUlX,EAAKu4D,EAAKC,GAC9B,OAAO,IAAIO,EAAS/4D,EAAKu4D,EAAKC,EAClC,EACOO,CACX,CAxH6B,GAyH7B,YChIO,IAAIK,IACX,SAAWA,GACPA,EAAeA,EAAqB,KAAI,GAAK,OAC7CA,EAAeA,EAAuB,OAAI,GAAK,SAC/CA,EAAeA,EAAsB,MAAI,GAAK,OACjD,CAJD,CAIGA,KAAmBA,GAAiB,CAAC,ICGjC,IAAIC,GAA+B,SAAUz4E,GAChDixB,GAAkBjxB,aAAyC,EAASA,EAAQiG,EAAG,YAAa,CAAC,WAC7FgrB,GAAkBjxB,aAAyC,EAASA,EAAQijB,EAAG,YAAa,CAAC,WAC7FgO,GAAkBjxB,aAAyC,EAASA,EAAQgoB,MAAO,gBAAiB,CAAC,WACrGiJ,GAAkBjxB,aAAyC,EAASA,EAAQgwB,OAAQ,iBAAkB,CAAC,WACvGiB,GAAkBjxB,aAAyC,EAASA,EAAQmxE,UAAW,oBAAqB,CACxG,CAAC30E,OAAQ,WAEby0B,GAAkBjxB,aAAyC,EAASA,EAAQ04E,gBAAiB,0BAA2B,CACpH,CAACl8E,OAAQ,WAEby0B,GAAkBjxB,aAAyC,EAASA,EAAQ+uE,YAAa,sBAAuB,CAC5G,CAACvyE,OAAQ,WAEby0B,GAAkBjxB,aAAyC,EAASA,EAAQgvE,YAAa,sBAAuB,CAAC,WACjH/9C,GAAkBjxB,aAAyC,EAASA,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,aACpH,EAqBIm8E,GAA0B,WAC1B,SAASA,EAAStD,EAAWj2D,EAAKu4D,GAC9B,GAAStC,EAAW,YAAa,CAAC,CAAC,GAAiB,qBACpD,GAASj2D,EAAK,MAAO,CAAC,CAAC,GAAQ,YAC/B,GAASu4D,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC34E,KAAKq2E,UAAYA,EACjBr2E,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,CACf,CAoUA,OA/SAgB,EAAS77E,UAAU87E,QAAU,WACzB,IAAIvwD,EACJ,OAAyD,QAAjDA,EAAKrpB,KAAKq2E,UAAU9gB,+BAA4C,IAAPlsC,EAAgBA,EAAK,EAC1F,EAYAswD,EAAS77E,UAAU+7E,WAAa,WAC5B,OAAO75E,KAAKq2E,UAAU/f,QAAQqF,GAAeme,SACjD,EAYAH,EAAS77E,UAAUi8E,eAAiB,WAChC/5E,KAAKq2E,UAAU3f,UAAUiF,GAAeme,UAAU,EACtD,EASAH,EAAS77E,UAAUk8E,gBAAkB,WACjCh6E,KAAKq2E,UAAU3f,UAAUiF,GAAeme,UAAU,EACtD,EAWAH,EAAS77E,UAAUm8E,WAAa,WAC5B,OAAOj6E,KAAKq2E,UAAU/f,QAAQqF,GAAeue,SACjD,EASAP,EAAS77E,UAAUq8E,eAAiB,WAChCn6E,KAAKq2E,UAAU3f,UAAUiF,GAAeue,UAAU,EACtD,EASAP,EAAS77E,UAAUs8E,gBAAkB,WACjCp6E,KAAKq2E,UAAU3f,UAAUiF,GAAeue,UAAU,EACtD,EAYAP,EAAS77E,UAAUu8E,WAAa,WAC5B,OAAQr6E,KAAKq2E,UAAU/f,QAAQqF,GAAe2e,SAClD,EASAX,EAAS77E,UAAUy8E,gBAAkB,WACjCv6E,KAAKq2E,UAAU3f,UAAUiF,GAAe2e,UAAU,EACtD,EASAX,EAAS77E,UAAU08E,iBAAmB,WAClCx6E,KAAKq2E,UAAU3f,UAAUiF,GAAe2e,UAAU,EACtD,EAEAX,EAAS77E,UAAU28E,uBAAyB,WACxC,MAAM,IAAItnD,GAA0BnzB,KAAK7B,YAAY+E,KAAM,yBAC/D,EAEAy2E,EAAS77E,UAAU48E,yBAA2B,SAAUC,GACpD,MAAM,IAAIxnD,GAA0BnzB,KAAK7B,YAAY+E,KAAM,2BAC/D,EACAy2E,EAAS77E,UAAU88E,YAAc,WAC7B56E,KAAK24E,IAAIkC,UAAUC,iBAAiB96E,KAAKogB,IAC7C,EACAu5D,EAAS77E,UAAUi9E,YAAc,WAC7B/6E,KAAK24E,IAAIkC,UAAUG,iBAAiBh7E,KAAKogB,IAC7C,EACAu5D,EAAS77E,UAAUm9E,QAAU,WACzB,OAAOj7E,KAAK24E,IAAIkC,UAAUK,aAAal7E,KAAKogB,IAChD,EACAu5D,EAAS77E,UAAUq9E,aAAe,SAAUn6E,GACxC,IAAIqoB,EACA8oD,EAAYnxE,EAAQmxE,UACpBuH,EAAkB14E,EAAQ04E,gBAC1B3J,EAAc/uE,EAAQ+uE,YACtBC,EAAchvE,EAAQgvE,YACtBoL,EAAe1S,GAAU1nE,EAAQ2uE,QACjC0L,EAAUr6E,EAAQq6E,QAClBp0E,EAAIjG,EAAQiG,EACZgd,EAAIjjB,EAAQijB,EACZ+E,EAAQhoB,EAAQgoB,MAAQgnD,EACxBh/C,EAAShwB,EAAQgwB,OAASg/C,EAC1BsL,EAASp8E,QAAQ8B,EAAQs6E,QACzBC,EAAUv6E,EAAQwuD,KACtBn9B,GAAe+oD,EAAc,eAAgB,IAE7C,IAAIpgB,EAAS,UAA2Bh7D,KAAK24E,IAAInhD,QAASx3B,KAAKogB,KAE3Du2B,Eb9KiB,SAAU2/B,EAAWtG,EAAa5H,QACvC,IAAhB4H,IAA0BA,EAAc,QACxB,IAAhB5H,IAA0BA,EAAc,GAC5C,IAAInhE,EAAIqvE,EAAUrvE,EAAGgd,EAAIqyD,EAAUryD,EAAG+xB,EAAIsgC,EAAUttD,MAAOitB,EAAIqgC,EAAUtlD,OACrElM,EAAI6jD,GAAeP,GACnB7iE,EAAIyqE,EAAc,EAEtB,OAAU,IAANlrD,EACO,CAAE7d,EAAGA,EAAI1B,EAAG0e,EAAGA,EAAI1e,EAAGyjB,MAAOgtB,EAAGhlB,OAAQilB,GACpC,KAANnxB,EACE,CAAE7d,EAAGA,EAAIgvC,EAAI1wC,EAAG0e,EAAGA,EAAI1e,EAAGyjB,MAAOitB,EAAGjlB,OAAQglB,GACxC,MAANlxB,EACE,CAAE7d,EAAGA,EAAI+uC,EAAIzwC,EAAG0e,EAAGA,EAAIgyB,EAAI1wC,EAAGyjB,MAAOgtB,EAAGhlB,OAAQilB,GAC5C,MAANnxB,EACE,CAAE7d,EAAGA,EAAI1B,EAAG0e,EAAGA,EAAI+xB,EAAIzwC,EAAGyjB,MAAOitB,EAAGjlB,OAAQglB,GAE5C,CAAE/uC,EAAGA,EAAI1B,EAAG0e,EAAGA,EAAI1e,EAAGyjB,MAAOgtB,EAAGhlB,OAAQilB,EACvD,Ca6JmBulC,CAAgB,CAAEv0E,EAAGA,EAAGgd,EAAGA,EAAG+E,MAAOA,EAAOgI,OAAQA,GAAUg/C,EAAaoL,GACtFpgB,EAAO7D,aAAaxgB,GAChB4kC,GACAvgB,EAAOtB,KAAK6hB,GAChB,IAAI77B,EAAKsb,EAAOpB,uCACZ8f,GACAh6B,EAAG0Z,mBAAmBgT,GAAkBsN,IAE5Ch6B,EAAGsZ,YAAYoiB,GACXC,GACA37B,EAAG2Z,YAAY,CAAEpB,OAAQojB,IACzBtL,GACArwB,EAAGwZ,eAAekT,GAAkB2D,IACxC,IAAIhW,EAAKiB,EAAOlB,yBAOhB,QANoB13D,IAAhB4tE,GACAjW,EAAGjD,SAASkZ,GAChBhV,EAAOtE,UAAUqR,GAAgB0T,OAAO,GACxCzgB,EAAOtE,UAAUqR,GAAgB2T,OAAQJ,GACzCtgB,EAAOtE,UAAUqR,GAAgB4T,WAAW,GAExCxJ,EAAW,CACX,IACIyJ,GADsD,QAAhDvyD,EAAKrpB,KAAKq2E,UAAUxgB,8BAA2C,IAAPxsC,EAAgBA,EAAK,IACtE,KAAO,GAAgB8oD,GAAW3rD,WACnDxmB,KAAKq2E,UAAU1gB,qBAAqBimB,EACxC,CACA,OAAO5gB,CACX,EACA2e,EAAS77E,UAAU+9E,+BAAiC,SAAU7gB,EAAQ/rC,EAAM5F,GACxE,IAAI4uC,EAAS5uC,EAAG4uC,OAAQC,EAAW7uC,EAAG6uC,SAAUC,EAAO9uC,EAAG8uC,KAC1Dn4D,KAAK87E,wBAAwB9gB,EAAQ,CACjC/C,OAAQj4D,KAAK+7E,uBAAuB/gB,EAAQ/C,EAAQhpC,GACpDipC,SAAUA,GAAYl4D,KAAK+7E,uBAAuB/gB,EAAQ9C,EAAUjpC,GACpEkpC,KAAMA,GAAQn4D,KAAK+7E,uBAAuB/gB,EAAQ7C,EAAMlpC,IAEhE,EACA0qD,EAAS77E,UAAUk+E,4BAA8B,SAAUhhB,EAAQmD,EAAS90C,GACxE,IAAI4uC,EAAS5uC,EAAG4uC,OAAQC,EAAW7uC,EAAG6uC,SAAUC,EAAO9uC,EAAG8uC,KAC1Dn4D,KAAK87E,wBAAwB9gB,EAAQ,CACjC/C,OAAQj4D,KAAKi8E,qBAAqBjhB,EAAQ/C,EAAQkG,GAClDjG,SAAUA,GAAYl4D,KAAKi8E,qBAAqBjhB,EAAQ9C,EAAUiG,GAClEhG,KAAMA,GAAQn4D,KAAKi8E,qBAAqBjhB,EAAQ7C,EAAMgG,IAE9D,EACAwb,EAAS77E,UAAUg+E,wBAA0B,SAAU9gB,EAAQ3xC,GAC3D,IAAI4uC,EAAS5uC,EAAG4uC,OAAQC,EAAW7uC,EAAG6uC,SAAUC,EAAO9uC,EAAG8uC,KAC1D6C,EAAOrD,oBAAoBM,GACvBC,EACA8C,EAAOpD,sBAAsBM,GAG7B8C,EAAOlD,2BAEPK,EACA6C,EAAOnD,kBAAkBM,GAGzB6C,EAAOjD,sBAEf,EAaA4hB,EAAS77E,UAAUi+E,uBAAyB,SAAU/gB,EAAQpF,EAAY3mC,GACtE,IAAI5F,EACAmO,EAAUx3B,KAAKq2E,UAAU36C,KAAKlE,QAC9BjO,EAAKyxC,EAAO9D,eAAgBluC,EAAQO,EAAGP,MAAOgI,EAASzH,EAAGyH,OAO1DiJ,EAAYhL,GAAQ,CAAEV,MAAOlF,EAAK,CAAC,EAAGA,EAAG4F,EAAK/rB,MAAQ+rB,EAAK7O,IAAKiJ,IAChE0K,EAASyD,EAAQ6H,YAAYu2B,EAAY,CACzC37B,UAAWA,EACXqF,KAAM9H,EAAQ5G,IAAI,CAAC,EAAG,EAAG5H,EAAOgI,IAChCuO,OAAQ/H,EAAQ5G,IAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,MAGxC,OADgB4G,EAAQqH,SAAS9K,EAErC,EAUA4lD,EAAS77E,UAAUo+E,4BAA8B,SAAUlhB,EAAQnS,EAAOmsB,GAKtE,IAAI3rD,EACAE,EACAiO,EAAUx3B,KAAKq2E,UAAU36C,KAAKlE,QAC9B8+C,EAAYtb,EAAO9D,eACnB3e,EAAKyiB,EAAOrB,+BACZI,EAAKiB,EAAOnB,iBACZmW,EAA+E,QAAhEzmD,EAAKwwC,aAA+B,EAASA,EAAGlD,kBAA+B,IAAPttC,EAAgBA,EAAK,EAC5G0vC,EAAW0P,GAAepwB,aAA+B,EAASA,EAAGmgB,eACrEiX,EAASqB,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAUA,KACrEkjB,EAAMtT,GAAsByN,EAAWrd,GACvCmjB,EAAYvzB,EAAMuwB,WAAW+C,EAAInzD,MAAsB,EAAdgnD,EAAiBmM,EAAInrD,OAAuB,EAAdg/C,GAEvEhvE,EAAU,CACViG,EAAG+oE,EACH/rD,EAAG+rD,EACHhnD,MAAOozD,EAAUpzD,MACjBgI,OAAQorD,EAAUprD,OAElB2+C,OAAQxH,GAAQ,GAChByH,MAAOzH,GAAQ,GACf0H,MAAO1H,GAAQ,IAEf6M,IAAcwE,GAAepE,QAC7Bp0E,EAAQiG,IAAMk1E,EAAInzD,MAAsB,EAAdgnD,GAAmB,EAAIoM,EAAUpzD,MAAQ,EACnEhoB,EAAQijB,IAAMk4D,EAAInrD,OAAuB,EAAdg/C,GAAmB,EAAIoM,EAAUprD,OAAS,GAEhEgkD,IAAcwE,GAAenE,QAClCr0E,EAAQiG,EAAIk1E,EAAInzD,MAAQgnD,EAAcoM,EAAUpzD,MAChDhoB,EAAQijB,EAAIk4D,EAAInrD,OAASg/C,EAAcoM,EAAUprD,QAErD,IAAIqrD,EAAYr8E,KAAK24E,IAAInhD,QAAQ2E,gBAAgB,QAAS,IACtDy5B,EAAahxC,GAAe+qD,EAAQF,GAAU4M,EAAWr7E,IAEzDi5B,EAAY,CAAEC,SAAU7Q,EAAK,CAAC,EAAGA,EAAGgzD,GAAaxzB,EAAMzoC,IAAKiJ,IAC5D0K,EAASyD,EAAQ6H,YAAYu2B,EAAY,CACzC37B,UAAWA,EACXqF,KAAM9H,EAAQ5G,IAAI,CAAC,EAAG,EAAG0lD,EAAUttD,MAAOstD,EAAUtlD,SACpDuO,OAAQ/H,EAAQ5G,IAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,MAExC,OAAO4G,EAAQqH,SAAS9K,EAC5B,EACA4lD,EAAS77E,UAAUm+E,qBAAuB,SAAUjhB,EAAQpF,EAAYuI,GACpE,IAAI3mC,EAAUx3B,KAAKq2E,UAAU36C,KAAKlE,QAC9B8kD,EAAct8E,KAAK+7E,uBAAuB/gB,EAAQpF,EAAW3iB,IAC7DspC,EAAev8E,KAAK+7E,uBAAuB/gB,EAAQpF,EAAW9c,KAC9D0jC,EAAiBhlD,EAAQ5G,IAAI,CAAC,GAGlC,OAFA4rD,EAAe9kD,IAAIymC,EAASme,GAC5BE,EAAe9kD,IAAI,MAAW,OAAQ6kD,GAC/BC,CACX,EACO7C,CACX,CA7U6B,GA8U7B,YC1WA,IAAI8C,GAA6B,SAAUv6E,GAEvC,SAASu6E,EAAYC,EAAct8D,EAAKu4D,GACpC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAM08E,EAAct8D,EAAKu4D,IAAQ34E,KAKzD,OAJA,GAAS08E,EAAc,eAAgB,CACnC,CAAC,GAAiB,qBAEtBv6E,EAAMk0E,UAAYqG,EACXv6E,CACX,CA4MA,OApNA6gB,GAAUy5D,EAAav6E,GA4BvBu6E,EAAY3+E,UAAUuvD,MAAQ,WAC1B,IAAIhkC,EACA80C,EAAiD,QAAtC90C,EAAKrpB,KAAKq2E,UAAUrc,oBAAiC,IAAP3wC,EAAgBA,EAAK,MAAW,OAC7FrpB,KAAK46E,cACL56E,KAAKq2E,UAAU3a,SAASyC,EAC5B,EAiBAse,EAAY3+E,UAAU6+E,QAAU,WAC5B38E,KAAK46E,cACL56E,KAAKq2E,UAAU3a,SAAS,MAAW,OACvC,EAUA+gB,EAAY3+E,UAAU8+E,UAAY,WAC9B,IAAIze,EAAUn+D,KAAKq2E,UAAUrc,aAC7B,QAASmE,GAAWA,IAAYn+D,KAAKq2E,UAAUvjD,UACnD,EA0BA2pD,EAAY3+E,UAAU++E,UAAY,SAAUrtB,EAAMxuD,GAC9C,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EACxB,GAASylC,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCiqB,GAA6Bz4E,GACxBA,IACDA,EAAU,CAAC,GACT,cAAeA,IACjBA,EAAQmxE,UAAY5G,GAAI,EAAG,EAAG,IAC5B,oBAAqBvqE,IACvBA,EAAQ04E,gBAAkBnO,GAAI,EAAG,EAAG,IAClC,gBAAiBvqE,IACnBA,EAAQ+uE,YAAcxE,GAAI,EAAG,EAAG,IAC9B,gBAAiBvqE,IACnBA,EAAQgvE,YAAc,GAE1B,IAAIhV,EAASh7D,KAAKm7E,aAAa,CAC3Bl0E,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAK,EACrDpF,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAK,EACrDP,MAAgC,QAAxBS,EAAKzoB,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAK,GAC7DuH,OAAkC,QAAzBrH,EAAK3oB,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAK,GAC/DwoD,UAAWnxE,EAAQmxE,UACnBuH,gBAAiB14E,EAAQ04E,gBACzB3J,YAAa/uE,EAAQ+uE,YACrBC,YAA4C,QAA9BnmD,EAAK7oB,EAAQgvE,mBAAgC,IAAPnmD,EAAgBA,EAAK,EACzE8lD,OAAkC,QAAzB5lD,EAAK/oB,EAAQ2uE,cAA2B,IAAP5lD,EAAgBA,EAAKo+C,GAAQ,GACvEmT,OAAQt6E,EAAQs6E,OAChB9rB,KAAMA,EAAKpvC,MAEX08D,EAAY98E,KAAK24E,IAAInhD,QAAQqH,SAASm8B,EAAOt/B,MAEjD17B,KAAKq2E,UAAU9b,UAAUuiB,GAEzB9hB,EAAO1D,mBAAmB,MAAW,QACrCt3D,KAAK+8E,uBAAuB/hB,EAAQ,MAAW,QAE/CxL,EAAKhvB,KAAKS,SAAS67C,EACvB,EAUAL,EAAY3+E,UAAU28E,uBAAyB,WAG3C,IAFA,IAAIpxD,EACAixC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBpZ,EAAQqtD,EAAO5D,qBACfa,EAA4C,QAAlC5uC,EAAK2xC,EAAOhD,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,OACpF,KAAMA,aAAkB,IACpB,OAAO,EACX,GAAItqD,IAAUsqD,EAAOp8B,IAAIluB,GACrB,OAAO,CACf,CACA,OAAO,CACX,EASA8uE,EAAY3+E,UAAU48E,yBAA2B,WAC7C16E,KAAKg9E,mBACT,EAkBAP,EAAY3+E,UAAUk/E,kBAAoB,SAAUC,GAChD,IAAI5zD,EACJ4I,GAAkBgrD,EAAU,WAAY,CAACrrD,WAEzC,IADA,IAAI0oC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBo3C,EAAyC,QAA9B90C,EAAK2xC,EAAOhB,oBAAiC,IAAP3wC,EAAgBA,EAAK,MAAW,OAChF80C,GAELn+D,KAAK+8E,uBAAuB/hB,EAAQmD,EAAS8e,EACjD,CACAj9E,KAAK+6E,aACT,EACA0B,EAAY3+E,UAAUi/E,uBAAyB,SAAU/hB,EAAQmD,EAAS8e,GACtE,IACIzlB,EAAc+d,IADD0H,QAA2CA,EAAWhH,IACtBj2E,KAAMg7D,IACvDh7D,KAAKg8E,4BAA4BhhB,EAAQmD,EAAS3G,EACtD,EAYAilB,EAAYnlD,GAAK,SAAUolD,EAAct8D,EAAKu4D,GAC1C,OAAO,IAAI8D,EAAYC,EAAct8D,EAAKu4D,EAC9C,EACO8D,CACX,CAtNgC,CAsN9B,IACF,YCnNA,IAAIS,GAA6B,SAAUh7E,GAEvC,SAASg7E,EAAYC,EAAc/8D,EAAKu4D,GACpC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAMm9E,EAAc/8D,EAAKu4D,IAAQ34E,KAKzD,OAJA,GAASm9E,EAAc,eAAgB,CACnC,CAAC,GAAiB,qBAEtBh7E,EAAMk0E,UAAY8G,EACXh7E,CACX,CAgiBA,OAxiBA6gB,GAAUk6D,EAAah7E,GAoBvBg7E,EAAYp/E,UAAUw+D,WAAa,WAG/B,IAFA,IAAI8gB,EAAap9E,KAAKq2E,UAAU/Z,aAC5Bt7D,EAAU,IAAI+hB,MAAMq6D,EAAWjgF,QAC1B4pB,EAAM,EAAGhB,EAAM/kB,EAAQ7D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIsC,EAAK+zD,EAAWr2D,GAAMy1C,EAAUnzC,EAAGmzC,QAASp+D,EAAQirB,EAAGjrB,MAC3D4C,EAAQ+lB,IAAQy1C,QAAyCA,EAAUp+D,GAAOu7B,YAC9E,CACA,OAAO34B,CACX,EAkBAk8E,EAAYp/E,UAAUm6E,YAAc,WAGhC,IAFA,IAAI1mD,EAASvxB,KAAKq2E,UAAUzZ,YACxBwb,EAAW,IAAIr1D,MAAMwO,EAAOp0B,QACvB4pB,EAAM,EAAGhB,EAAMwL,EAAOp0B,OAAQ4pB,EAAMhB,EAAKgB,IAC9CqxD,EAASrxD,GAAOwK,EAAOxK,GAAK4S,aAEhC,OAAOy+C,CACX,EAcA8E,EAAYp/E,UAAU++D,WAAa,SAAU77D,GACzC,GAASA,EAAS,UAAW,CAAC+hB,QAE9B,IADA,IAAIs6D,EAAgB,IAAIt6D,MAAM/hB,EAAQ7D,QAC7B4pB,EAAM,EAAGhB,EAAM/kB,EAAQ7D,OAAQ4pB,EAAMhB,EAAKgB,IAC/Cs2D,EAAct2D,GAAO,CAAE3oB,MAAO,YAAsB4C,EAAQ+lB,KAEhE/mB,KAAKq2E,UAAUxZ,WAAWwgB,EAC9B,EAaAH,EAAYp/E,UAAUw/E,WAAa,SAAUt8E,GACzC,GAASA,EAAS,UAAW,CAAC,SAAU+hB,QAIxC,IAHA,IAAIw6D,EAAax6D,MAAMuO,QAAQtwB,GAAWA,EAAU,CAACA,GACjDw8E,EAAkBx9E,KAAKq2E,UAAU/Z,aACjCmhB,EAAa,IAAI16D,MAAMw6D,EAAWpgF,QAC7B4pB,EAAM,EAAGhB,EAAMw3D,EAAWpgF,OAAQ4pB,EAAMhB,EAAKgB,IAClD02D,EAAW12D,GAAO,CAAE3oB,MAAO,YAAsBm/E,EAAWx2D,KAEhE/mB,KAAKq2E,UAAUxZ,WAAW2gB,EAAgBttE,OAAOutE,GACrD,EA4CAP,EAAYp/E,UAAU4/E,OAAS,SAAU18E,EAAS28E,QAChC,IAAVA,IAAoBA,GAAQ,GAChC,GAAS38E,EAAS,UAAW,CAAC,SAAU+hB,QACxC,GAAS46D,EAAO,QAAS,CAAC,YAC1B,IAAIJ,EAAax6D,MAAMuO,QAAQtwB,GAAWA,EAAU,CAACA,GACjD48E,EAAe59E,KAAKs8D,aACFihB,EAAWjtE,MAAK,SAAUqJ,GAAU,OAAQikE,EAAa7kE,SAASY,EAAS,KAE7F3Z,KAAK69E,gBACT79E,KAAK46E,eACD2C,EAAWpgF,OAAS,GAA4B,IAAtBogF,EAAWpgF,QAAgBwgF,IACrD39E,KAAK89E,oBAGT,IADA,IAAIvsD,EAAS,IAAIxO,MAAMw6D,EAAWpgF,QACzB4pB,EAAM,EAAGhB,EAAMw3D,EAAWpgF,OAAQ4pB,EAAMhB,EAAKgB,IAClDwK,EAAOxK,GAAO,YAAsBw2D,EAAWx2D,IAEnD,GAAI42D,EAAO,CACP,IAAII,EAAiB/9E,KAAKq2E,UAAUzZ,YACpC58D,KAAKq2E,UAAUpa,UAAU8hB,EAAe7tE,OAAOqhB,GACnD,MAEIvxB,KAAKq2E,UAAUpa,UAAU1qC,EAEjC,EAaA2rD,EAAYp/E,UAAUkgF,MAAQ,WAC1Bh+E,KAAK46E,cACL56E,KAAKq2E,UAAUpa,UAAU,GAC7B,EAqBAihB,EAAYp/E,UAAUg4D,YAAc,SAAUC,GAC1CxjC,GAAewjC,EAAU,YACzB/1D,KAAKq2E,UAAUvgB,YAAYC,GAC3B/1D,KAAK46E,aACT,EAYAsC,EAAYp/E,UAAUmgF,WAAa,WAC/B,OAAOj+E,KAAKq2E,UAAU/f,QAAQwF,GAAgBlnD,KAClD,EAaAsoE,EAAYp/E,UAAU+/E,cAAgB,WAClC79E,KAAKq2E,UAAU3f,UAAUoF,GAAgBlnD,MAAM,EACnD,EAYAsoE,EAAYp/E,UAAUogF,eAAiB,WACnCl+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBlnD,MAAM,EACnD,EAYAsoE,EAAYp/E,UAAUu6E,SAAW,WAC7B,OAAOr4E,KAAKq2E,UAAU/f,QAAQwF,GAAgBqiB,KAClD,EAUAjB,EAAYp/E,UAAUsgF,cAAgB,WAClCp+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBqiB,MAAM,EACnD,EAUAjB,EAAYp/E,UAAUugF,eAAiB,WACnCr+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBqiB,MAAM,EACnD,EAWAjB,EAAYp/E,UAAUwgF,cAAgB,WAClC,OAAOt+E,KAAKq2E,UAAU/f,QAAQwF,GAAgBM,YAClD,EASA8gB,EAAYp/E,UAAUggF,kBAAoB,WACtC99E,KAAKq2E,UAAU3f,UAAUoF,GAAgBM,aAAa,EAC1D,EASA8gB,EAAYp/E,UAAUygF,mBAAqB,WACvCv+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBM,aAAa,EAC1D,EAaA8gB,EAAYp/E,UAAU0gF,eAAiB,WACnC,OAAQx+E,KAAKq2E,UAAU/f,QAAQwF,GAAgB2iB,gBACnD,EASAvB,EAAYp/E,UAAU4gF,oBAAsB,WACxC1+E,KAAKq2E,UAAU3f,UAAUoF,GAAgB2iB,iBAAiB,EAC9D,EASAvB,EAAYp/E,UAAU6gF,qBAAuB,WACzC3+E,KAAKq2E,UAAU3f,UAAUoF,GAAgB2iB,iBAAiB,EAC9D,EAeAvB,EAAYp/E,UAAU8gF,gBAAkB,WACpC,OAAO5+E,KAAKq2E,UAAU/f,QAAQwF,GAAgB+iB,kBAClD,EAUA3B,EAAYp/E,UAAUghF,oBAAsB,WACxC9+E,KAAKq2E,UAAU3f,UAAUoF,GAAgB+iB,mBAAmB,EAChE,EAUA3B,EAAYp/E,UAAUihF,qBAAuB,WACzC/+E,KAAKq2E,UAAU3f,UAAUoF,GAAgB+iB,mBAAmB,EAChE,EA6BA3B,EAAYp/E,UAAU++E,UAAY,SAAUrtB,EAAMxuD,GAC9C,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAC5B,GAASulC,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCiqB,GAA6Bz4E,GACxBA,IACDA,EAAU,CAAC,GACT,cAAeA,IACjBA,EAAQmxE,UAAY5G,GAAI,EAAG,EAAG,IAC5B,oBAAqBvqE,IACvBA,EAAQ04E,gBAAkBnO,GAAI,EAAG,EAAG,IAClC,gBAAiBvqE,IACnBA,EAAQ+uE,YAAcxE,GAAI,EAAG,EAAG,IAC9B,gBAAiBvqE,IACnBA,EAAQgvE,YAAc,GAE1B,IAAIhV,EAASh7D,KAAKm7E,aAAa,CAC3Bl0E,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAK,EACrDpF,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAK,EACrDP,MAAgC,QAAxBS,EAAKzoB,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAK,IAC7DuH,OAAkC,QAAzBrH,EAAK3oB,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAK,GAC/DwoD,UAAWnxE,EAAQmxE,UACnBuH,gBAAiB14E,EAAQ04E,gBACzB3J,YAAa/uE,EAAQ+uE,YACrBC,YAA4C,QAA9BnmD,EAAK7oB,EAAQgvE,mBAAgC,IAAPnmD,EAAgBA,EAAK,EACzE8lD,OAAkC,QAAzB5lD,EAAK/oB,EAAQ2uE,cAA2B,IAAP5lD,EAAgBA,EAAKo+C,GAAQ,GACvEmT,OAAQt6E,EAAQs6E,OAChB9rB,KAAMA,EAAKpvC,MAEX08D,EAAY98E,KAAK24E,IAAInhD,QAAQqH,SAASm8B,EAAOt/B,MAEjD17B,KAAKq2E,UAAU9b,UAAUuiB,GAEzB,IAAI7tD,EAA+B,QAAvBhF,EAAKjpB,EAAQiuB,YAAyB,IAAPhF,EAAgBA,EAAKjqB,KAAK24E,IAAIkC,UAAUmE,iBACnFh/E,KAAK+8E,uBAAuB/hB,EAAQ/rC,GAEpCugC,EAAKhvB,KAAKS,SAAS67C,EACvB,EAUAI,EAAYp/E,UAAU28E,uBAAyB,WAC3C,IAAIpxD,EACJ,GAAIrpB,KAAKi7E,UACL,OAAO,EAEX,IADA,IAAI3gB,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAGtD,MADyD,QAAlCsC,EADVixC,EAAQvzC,GACcixC,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,kBAAmB,IAE5G,OAAO,CACf,CACA,OAAO,CACX,EAWAilB,EAAYp/E,UAAU48E,yBAA2B,SAAUzrD,GACvD,GAASA,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCjvB,KAAKg9E,kBAAkB/tD,EAC3B,EAiBAiuD,EAAYp/E,UAAUk/E,kBAAoB,SAAU/tD,EAAMguD,GACtD,GAAShuD,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCgD,GAAkBgrD,EAAU,WAAY,CAACrrD,WAEzC,IADA,IAAI0oC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACrB/mB,KAAK+8E,uBAAuB/hB,EAAQ/rC,EAAMguD,EAC9C,CACAj9E,KAAK+6E,aACT,EAOAmC,EAAYp/E,UAAUi/E,uBAAyB,SAAU/hB,EAAQ/rC,EAAMguD,GACnE,IACIzlB,EAAc+d,IADD0H,QAA2CA,EAAWlF,IACtB/3E,KAAMg7D,EAAQ/rC,IAC/DjvB,KAAK67E,+BAA+B7gB,EAAQ/rC,EAAMuoC,EACtD,EAYA0lB,EAAY5lD,GAAK,SAAU6lD,EAAc/8D,EAAKu4D,GAC1C,OAAO,IAAIuE,EAAYC,EAAc/8D,EAAKu4D,EAC9C,EACOuE,CACX,CA1iBgC,CA0iB9B,IACF,YC5iBA,IAAI+B,GAA+B,SAAU/8E,GAEzC,SAAS+8E,EAAcC,EAAa9+D,EAAKu4D,GACrC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAMk/E,EAAa9+D,EAAKu4D,IAAQ34E,KAGxD,OAFA,GAASk/E,EAAa,cAAe,CAAC,CAAC,GAAgB,oBACvD/8E,EAAMk0E,UAAY6I,EACX/8E,CACX,CAkdA,OAxdA6gB,GAAUi8D,EAAe/8E,GAkBzB+8E,EAAcnhF,UAAUw+D,WAAa,WAGjC,IAFA,IAAI8gB,EAAap9E,KAAKq2E,UAAU/Z,aAC5Bt7D,EAAU,IAAI+hB,MAAMq6D,EAAWjgF,QAC1B4pB,EAAM,EAAGhB,EAAM/kB,EAAQ7D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIsC,EAAK+zD,EAAWr2D,GAAMy1C,EAAUnzC,EAAGmzC,QAASp+D,EAAQirB,EAAGjrB,MAC3D4C,EAAQ+lB,IAAQy1C,QAAyCA,EAAUp+D,GAAOu7B,YAC9E,CACA,OAAO34B,CACX,EAaAi+E,EAAcnhF,UAAUm6E,YAAc,WAGlC,IAFA,IAAI1mD,EAASvxB,KAAKq2E,UAAUzZ,YACxBwb,EAAW,IAAIr1D,MAAMwO,EAAOp0B,QACvB4pB,EAAM,EAAGhB,EAAMwL,EAAOp0B,OAAQ4pB,EAAMhB,EAAKgB,IAC9CqxD,EAASrxD,GAAOwK,EAAOxK,GAAK4S,aAEhC,OAAOy+C,CACX,EAgCA6G,EAAcnhF,UAAU++D,WAAa,SAAU77D,GAC3C,GAASA,EAAS,UAAW,CAAC+hB,QAC9B/iB,KAAK46E,cAEL,IADA,IAAIyC,EAAgB,IAAIt6D,MAAM/hB,EAAQ7D,QAC7B4pB,EAAM,EAAGhB,EAAM/kB,EAAQ7D,OAAQ4pB,EAAMhB,EAAKgB,IAC/Cs2D,EAAct2D,GAAO,CAAE3oB,MAAO,YAAsB4C,EAAQ+lB,KAEhE/mB,KAAKq2E,UAAUxZ,WAAWwgB,EAC9B,EAeA4B,EAAcnhF,UAAUw/E,WAAa,SAAUt8E,GAC3C,GAASA,EAAS,UAAW,CAAC,SAAU+hB,QACxC/iB,KAAK46E,cAIL,IAHA,IAAI2C,EAAax6D,MAAMuO,QAAQtwB,GAAWA,EAAU,CAACA,GACjDw8E,EAAkBx9E,KAAKq2E,UAAU/Z,aACjCmhB,EAAa,IAAI16D,MAAMw6D,EAAWpgF,QAC7B4pB,EAAM,EAAGhB,EAAMw3D,EAAWpgF,OAAQ4pB,EAAMhB,EAAKgB,IAClD02D,EAAW12D,GAAO,CAAE3oB,MAAO,YAAsBm/E,EAAWx2D,KAEhE/mB,KAAKq2E,UAAUxZ,WAAW2gB,EAAgBttE,OAAOutE,GACrD,EAkBAwB,EAAcnhF,UAAU4/E,OAAS,SAAU18E,EAAS28E,QAClC,IAAVA,IAAoBA,GAAQ,GAChC,GAAS38E,EAAS,UAAW,CAAC,SAAU+hB,QACxC,GAAS46D,EAAO,QAAS,CAAC,YAC1B,IAAIJ,EAAax6D,MAAMuO,QAAQtwB,GAAWA,EAAU,CAACA,IvGlHjC,SAAUuwB,EAAQH,EAAWC,GAChDtO,MAAMuO,QAAQD,KACfA,EAAgB,GAAaA,IAEjC,IAAK,IAAItK,EAAM,EAAGhB,EAAMwL,EAAOp0B,OAAQ4pB,EAAMhB,EAAKgB,IAC9CoK,GAAcI,EAAOxK,GAAMqK,EAAWC,EAE9C,CuG6GQ8tD,CAAe5B,EAAY,SADRv9E,KAAKs8D,cAExBt8D,KAAK46E,eACD2C,EAAWpgF,OAAS,GAA4B,IAAtBogF,EAAWpgF,QAAgBwgF,IACrD39E,KAAK89E,oBAGT,IADA,IAAIvsD,EAAS,IAAIxO,MAAMw6D,EAAWpgF,QACzB4pB,EAAM,EAAGhB,EAAMw3D,EAAWpgF,OAAQ4pB,EAAMhB,EAAKgB,IAClDwK,EAAOxK,GAAO,YAAsBw2D,EAAWx2D,IAEnD,GAAI42D,EAAO,CACP,IAAII,EAAiB/9E,KAAKq2E,UAAUzZ,YACpC58D,KAAKq2E,UAAUpa,UAAU8hB,EAAe7tE,OAAOqhB,GACnD,MAEIvxB,KAAKq2E,UAAUpa,UAAU1qC,EAEjC,EAcA0tD,EAAcnhF,UAAUkgF,MAAQ,WAC5Bh+E,KAAK46E,cACL56E,KAAKq2E,UAAUpa,UAAU,GAC7B,EA+BAgjB,EAAcnhF,UAAUg4D,YAAc,SAAUC,GAC5CxjC,GAAewjC,EAAU,YACzB/1D,KAAKq2E,UAAUvgB,YAAYC,GAC3B/1D,KAAK46E,aACT,EAYAqE,EAAcnhF,UAAUu6E,SAAW,WAC/B,OAAOr4E,KAAKq2E,UAAU/f,QAAQwF,GAAgBqiB,KAClD,EAWAc,EAAcnhF,UAAUsgF,cAAgB,WACpCp+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBqiB,MAAM,EACnD,EAUAc,EAAcnhF,UAAUugF,eAAiB,WACrCr+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBqiB,MAAM,EACnD,EAWAc,EAAcnhF,UAAUwgF,cAAgB,WACpC,OAAOt+E,KAAKq2E,UAAU/f,QAAQwF,GAAgBM,YAClD,EASA6iB,EAAcnhF,UAAUggF,kBAAoB,WACxC99E,KAAKq2E,UAAU3f,UAAUoF,GAAgBM,aAAa,EAC1D,EASA6iB,EAAcnhF,UAAUygF,mBAAqB,WACzCv+E,KAAKq2E,UAAU3f,UAAUoF,GAAgBM,aAAa,EAC1D,EAeA6iB,EAAcnhF,UAAU8gF,gBAAkB,WACtC,OAAO5+E,KAAKq2E,UAAU/f,QAAQwF,GAAgB+iB,kBAClD,EAUAI,EAAcnhF,UAAUghF,oBAAsB,WAC1C9+E,KAAKq2E,UAAU3f,UAAUoF,GAAgB+iB,mBAAmB,EAChE,EAUAI,EAAcnhF,UAAUihF,qBAAuB,WAC3C/+E,KAAKq2E,UAAU3f,UAAUoF,GAAgB+iB,mBAAmB,EAChE,EA6BAI,EAAcnhF,UAAU++E,UAAY,SAAUrtB,EAAMxuD,GAChD,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAC5B,GAASulC,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCiqB,GAA6Bz4E,GACxBA,IACDA,EAAU,CAAC,GACT,cAAeA,IACjBA,EAAQmxE,UAAY5G,GAAI,EAAG,EAAG,IAC5B,oBAAqBvqE,IACvBA,EAAQ04E,gBAAkBnO,GAAI,EAAG,EAAG,IAClC,gBAAiBvqE,IACnBA,EAAQ+uE,YAAcxE,GAAI,EAAG,EAAG,IAC9B,gBAAiBvqE,IACnBA,EAAQgvE,YAAc,GAE1B,IAAIhV,EAASh7D,KAAKm7E,aAAa,CAC3Bl0E,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAK,EACrDpF,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAK,EACrDP,MAAgC,QAAxBS,EAAKzoB,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAK,IAC7DuH,OAAkC,QAAzBrH,EAAK3oB,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAK,IAC/DwoD,UAAWnxE,EAAQmxE,UACnBuH,gBAAiB14E,EAAQ04E,gBACzB3J,YAAa/uE,EAAQ+uE,YACrBC,YAA4C,QAA9BnmD,EAAK7oB,EAAQgvE,mBAAgC,IAAPnmD,EAAgBA,EAAK,EACzE8lD,OAAkC,QAAzB5lD,EAAK/oB,EAAQ2uE,cAA2B,IAAP5lD,EAAgBA,EAAKo+C,GAAQ,GACvEmT,OAAQt6E,EAAQs6E,OAChB9rB,KAAMA,EAAKpvC,MAEX08D,EAAY98E,KAAK24E,IAAInhD,QAAQqH,SAASm8B,EAAOt/B,MAEjD17B,KAAKq2E,UAAU9b,UAAUuiB,GAEzB,IAAI7tD,EAA+B,QAAvBhF,EAAKjpB,EAAQiuB,YAAyB,IAAPhF,EAAgBA,EAAKjqB,KAAK24E,IAAIkC,UAAUmE,iBACnFh/E,KAAK+8E,uBAAuB/hB,EAAQ/rC,GAEpCugC,EAAKhvB,KAAKS,SAAS67C,EACvB,EAUAmC,EAAcnhF,UAAU28E,uBAAyB,WAC7C,IAAIpxD,EACJ,GAAIrpB,KAAKi7E,UACL,OAAO,EAEX,IADA,IAAI3gB,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAGtD,MADyD,QAAlCsC,EADVixC,EAAQvzC,GACcixC,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,kBAAmB,IAE5G,OAAO,CACf,CACA,OAAO,CACX,EAWAgnB,EAAcnhF,UAAU48E,yBAA2B,SAAUzrD,GACzD,GAASA,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCjvB,KAAKg9E,kBAAkB/tD,EAC3B,EAiBAgwD,EAAcnhF,UAAUk/E,kBAAoB,SAAU/tD,EAAMguD,GACxD,GAAShuD,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCgD,GAAkBgrD,EAAU,WAAY,CAACrrD,WAEzC,IADA,IAAI0oC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACrB/mB,KAAK+8E,uBAAuB/hB,EAAQ/rC,EAAMguD,EAC9C,CACAj9E,KAAK+6E,aACT,EAOAkE,EAAcnhF,UAAUi/E,uBAAyB,SAAU/hB,EAAQ/rC,EAAMguD,GACrE,IACIzlB,EAAc+d,IADD0H,QAA2CA,EAAW/E,IACtBl4E,KAAMg7D,EAAQ/rC,IAC/DjvB,KAAK67E,+BAA+B7gB,EAAQ/rC,EAAMuoC,EACtD,EAaAynB,EAAc3nD,GAAK,SAAU4nD,EAAa9+D,EAAKu4D,GAC3C,OAAO,IAAIsG,EAAcC,EAAa9+D,EAAKu4D,EAC/C,EACOsG,CACX,CA1dkC,CA0dhC,IACF,YCtdA,IAAIG,GAA+B,SAAUl9E,GAEzC,SAASk9E,EAAcC,EAAiBj/D,EAAKu4D,GACzC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAMq/E,EAAiBj/D,EAAKu4D,IAAQ34E,KAK5D,OAJA,GAASq/E,EAAiB,kBAAmB,CACzC,CAAC,GAAoB,wBAEzBl9E,EAAMk0E,UAAYgJ,EACXl9E,CACX,CAuXA,OA/XA6gB,GAAUo8D,EAAel9E,GAsBzBk9E,EAActhF,UAAUw+D,WAAa,WACjC,IAAIvB,EAAe/6D,KAAKq2E,UAAUzb,kBAClC,GAAIG,EAAc,CAEd,IADA,IAAIukB,EAAgB,IAAIv8D,MAAMg4C,EAAa59D,QAClC4pB,EAAM,EAAGhB,EAAMg1C,EAAa59D,OAAQ4pB,EAAMhB,EAAKgB,IACpDu4D,EAAcv4D,GAAOg0C,EAAah0C,GAAK4S,aAE3C,OAAO2lD,CACX,CACA,IAAIphB,EAAWl+D,KAAKq2E,UAAUpY,cAC1BshB,EAAY,IAAIx8D,MAAMm7C,EAAS/gE,QACnC,IAAS4pB,EAAM,EAAGhB,EAAMw5D,EAAUpiF,OAAQ4pB,EAAMhB,EAAKgB,IACjDw4D,EAAUx4D,GAAOm3C,EAASn3C,GAAK4S,aAEnC,OAAO4lD,CACX,EAcAH,EAActhF,UAAUm6E,YAAc,WAClC,IAAI75E,EAAQ4B,KAAKq2E,UAAUvjD,WAC3B,GAAI10B,IAAU,MAAW,OAAzB,CAEA,IAAI28D,EAAe/6D,KAAKq2E,UAAUzb,kBAClC,GAAIG,EAEA,IADA,IAAImD,EAAWl+D,KAAKq2E,UAAUpY,cACrBl3C,EAAM,EAAGhB,EAAMm4C,EAAS/gE,OAAQ4pB,EAAMhB,EAAKgB,IAChD,GAAIm3C,EAASn3C,KAAS3oB,EAClB,OAAO28D,EAAah0C,GAAK4S,aAGrC,OAAOv7B,EAAMu7B,YATO,CAUxB,EA+CAylD,EAActhF,UAAU4/E,OAAS,SAAU/jE,GACvC,GAASA,EAAQ,SAAU,CAAC,WAC5B,IAAIikE,EAAe59E,KAAKs8D,aACxBnrC,GAAcxX,EAAQ,SAAUikE,GAChC59E,KAAK46E,cACL,IAAI1c,EAAWl+D,KAAKq2E,UAAUpY,cAC1BlD,EAAe/6D,KAAKq2E,UAAUzb,kBAClC,GAAIG,EACA,IAAK,IAAIh0C,EAAM,EAAGhB,EAAMg1C,EAAa59D,OAAQ4pB,EAAMhB,EAAKgB,IAChDg0C,EAAah0C,GAAK4S,eAAiBhgB,GACnC3Z,KAAKq2E,UAAU3a,SAASwC,EAASn3C,SAKzC,IAASA,EAAM,EAAGhB,EAAMm4C,EAAS/gE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACvD,IAAI3oB,EAAQ8/D,EAASn3C,GACjB3oB,EAAMu7B,eAAiBhgB,GACvB3Z,KAAKq2E,UAAU3a,SAASt9D,EAChC,CAER,EAcAghF,EAActhF,UAAUkgF,MAAQ,WAC5Bh+E,KAAK46E,cACL56E,KAAKq2E,UAAU3a,SAAS,MAAW,OACvC,EAYA0jB,EAActhF,UAAU0hF,gBAAkB,WACtC,OAAQx/E,KAAKq2E,UAAU/f,QAAQsF,GAAgB6jB,cACnD,EAeAL,EAActhF,UAAU4hF,kBAAoB,WACxC1/E,KAAKq2E,UAAU3f,UAAUkF,GAAgB6jB,eAAe,EAC5D,EAWAL,EAActhF,UAAU6hF,mBAAqB,WACzC3/E,KAAKq2E,UAAU3f,UAAUkF,GAAgB6jB,eAAe,EAC5D,EAgBAL,EAActhF,UAAU8hF,oBAAsB,WAC1C,OAAQ5/E,KAAKq2E,UAAU/f,QAAQsF,GAAgBikB,eACnD,EAaAT,EAActhF,UAAUgiF,sBAAwB,WAC5C9/E,KAAKq2E,UAAU3f,UAAUkF,GAAgBikB,gBAAgB,EAC7D,EAaAT,EAActhF,UAAUiiF,uBAAyB,WAC7C//E,KAAKq2E,UAAU3f,UAAUkF,GAAgBikB,gBAAgB,EAC7D,EA4BAT,EAActhF,UAAUkiF,gBAAkB,SAAUrmE,EAAQ61C,EAAMxuD,GAC9D,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAI81D,EACpC,GAAStmE,EAAQ,SAAU,CAAC,WAC5B,GAAS61C,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCiqB,GAA6Bz4E,GAE7B,IAAIg6D,EAASh7D,KAAKm7E,aAAa,CAC3Bl0E,EAA0E,QAAtEoiB,EAAKroB,aAAyC,EAASA,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAK,EACvGpF,EAA0E,QAAtEsF,EAAKvoB,aAAyC,EAASA,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAK,EACvGP,MAAkF,QAA1ES,EAAKzoB,aAAyC,EAASA,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAK,GAC/GuH,OAAoF,QAA3ErH,EAAK3oB,aAAyC,EAASA,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAK,GACjHwoD,UAA0F,QAA9EtoD,EAAK7oB,aAAyC,EAASA,EAAQmxE,iBAA8B,IAAPtoD,EAAgBA,EAAK0hD,GAAI,EAAG,EAAG,GACjImO,gBAAsG,QAApF3vD,EAAK/oB,aAAyC,EAASA,EAAQ04E,uBAAoC,IAAP3vD,EAAgBA,EAAKwhD,GAAI,EAAG,EAAG,GAC7IwE,YAA8F,QAAhF9lD,EAAKjpB,aAAyC,EAASA,EAAQ+uE,mBAAgC,IAAP9lD,EAAgBA,EAAKshD,GAAI,EAAG,EAAG,GACrIyE,YAA8F,QAAhF7lD,EAAKnpB,aAAyC,EAASA,EAAQgvE,mBAAgC,IAAP7lD,EAAgBA,EAAK,EAC3HwlD,OAAoF,QAA3EsQ,EAAKj/E,aAAyC,EAASA,EAAQ2uE,cAA2B,IAAPsQ,EAAgBA,EAAK9X,GAAQ,GACzHmT,OAAQt6E,aAAyC,EAASA,EAAQs6E,OAClE9rB,KAAMA,EAAKpvC,MAEX08D,EAAY98E,KAAK24E,IAAInhD,QAAQqH,SAASm8B,EAAOt/B,MAE7C8/B,EAAex7D,KAAKq2E,UAAU/a,iBAAiBwhB,EAAW,YAAsBnjE,IAAU3Z,KAAK4/E,uBAEnG5kB,EAAO1D,mBAAmB,MAAW,QACrCt3D,KAAK+8E,uBAAuB/hB,EAAQQ,GAEpChM,EAAKhvB,KAAKS,SAAS67C,EACvB,EAUAsC,EAActhF,UAAU28E,uBAAyB,WAG7C,IAFA,IAAIpxD,EACAixC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBpZ,EAAQqtD,EAAO5D,qBACfa,EAA4C,QAAlC5uC,EAAK2xC,EAAOhD,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,OACpF,KAAMA,aAAkB,IACpB,OAAO,EACX,GAAItqD,IAAUsqD,EAAOp8B,IAAIluB,GACrB,OAAO,CACf,CACA,OAAO,CACX,EASAyxE,EAActhF,UAAU48E,yBAA2B,WAC/C16E,KAAKg9E,mBACT,EAuBAoC,EAActhF,UAAUk/E,kBAAoB,SAAUC,GAClDhrD,GAAkBgrD,EAAU,WAAY,CAACrrD,WAEzC,IADA,IAAI0oC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjBo3C,EAAUnD,EAAOhB,aAChBmE,GAELn+D,KAAK+8E,uBAAuB/hB,EAAQmD,EAAS8e,EACjD,CACJ,EACAmC,EAActhF,UAAUi/E,uBAAyB,SAAU/hB,EAAQmD,EAAS8e,GACxE,IACIzlB,EAAc+d,IADD0H,QAA2CA,EAAWvG,IACtB12E,KAAMg7D,IACvDh7D,KAAKg8E,4BAA4BhhB,EAAQmD,EAAS3G,EACtD,EAcA4nB,EAAc9nD,GAAK,SAAU+nD,EAAiBj/D,EAAKu4D,GAAO,OAAO,IAAIyG,EAAcC,EAAiBj/D,EAAKu4D,EAAM,EACxGyG,CACX,CAjYkC,CAiYhC,IACF,YCpXA,SA5BkC,SAAUl9E,GAExC,SAASg+E,EAAaC,EAAe//D,EAAKu4D,GACtC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAMmgF,EAAe//D,EAAKu4D,IAAQ34E,KAK1D,OAJA,GAASmgF,EAAe,gBAAiB,CACrC,CAAC,GAAkB,sBAEvBh+E,EAAMk0E,UAAY8J,EACXh+E,CACX,CAiBA,OAzBA6gB,GAAUk9D,EAAch+E,GASxBg+E,EAAapiF,UAAU28E,uBAAyB,WAC5C,OAAO,CACX,EAaAyF,EAAa5oD,GAAK,SAAU6oD,EAAe//D,EAAKu4D,GAAO,OAAO,IAAIuH,EAAaC,EAAe//D,EAAKu4D,EAAM,EAClGuH,CACX,CA3BiC,CA2B/B,ICjBF,IAAIE,GAA8B,SAAUl+E,GAExC,SAASk+E,EAAaC,EAAUjgE,EAAKu4D,GACjC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAMqgF,EAAUjgE,EAAKu4D,IAAQ34E,KAGrD,OAFA,GAASqgF,EAAU,WAAY,CAAC,CAAC,GAAa,iBAC9Cl+E,EAAMk0E,UAAYgK,EACXl+E,CACX,CAisBA,OAvsBA6gB,GAAUo9D,EAAcl+E,GAmCxBk+E,EAAatiF,UAAUw5E,QAAU,WAC7B,IAAIl5E,EAAQ4B,KAAKq2E,UAAUvjD,WAC3B,IAAK10B,GAAS4B,KAAKsgF,kBACf,MAAM,IAAIjN,GAAuBrzE,KAAK45E,WAE1C,OAAOx7E,aAAqC,EAASA,EAAMu7B,YAC/D,EAuCAymD,EAAatiF,UAAUyiF,QAAU,SAAU5zE,GACvCslB,GAAkBtlB,EAAM,OAAQ,CAAC,WACjC,IAAI4wD,EAAYv9D,KAAKy9D,eACrB,QAAkBr7D,IAAdm7D,GAA2B5wD,GAAQA,EAAKxP,OAASogE,EACjD,MAAM,IAAImW,GAAuB/mE,EAAKxP,OAAQogE,EAAWv9D,KAAK45E,WAElE55E,KAAK46E,cACL56E,KAAKwgF,wBACD7zE,EACA3M,KAAKq2E,UAAU3a,SAAS,YAAsB/uD,IAG9C3M,KAAKq2E,UAAUxY,aAEvB,EAcAuiB,EAAatiF,UAAU25E,aAAe,WAClC,IAAI9Z,EAAW39D,KAAKq2E,UAAUzY,cAE9B,OAAqB,IAAbD,EAAiBwN,GAAcgK,KACpB,IAAbxX,EAAiBwN,GAAciK,OACd,IAAbzX,EAAiBwN,GAAckK,MAC3BlK,GAAcgK,IAChC,EAqBAiL,EAAatiF,UAAU2iF,aAAe,SAAUzL,GAC5C7jD,GAAc6jD,EAAW,YAAa7J,IACtCnrE,KAAK46E,cACL56E,KAAKq2E,UAAU3Y,YAAYsX,EAC/B,EAeAoL,EAAatiF,UAAU2/D,aAAe,WAClC,OAAOz9D,KAAKq2E,UAAU5Y,cAC1B,EAoBA2iB,EAAatiF,UAAUw/D,aAAe,SAAUC,GAG5C,GAFAnrC,GAAuBmrC,EAAW,YAAa,EAAGntC,OAAO+xC,kBACzDniE,KAAK46E,mBACax4E,IAAdm7D,EACAv9D,KAAKq2E,UAAU7Y,sBAEd,CACD,IAAI7wD,EAAO3M,KAAKs3E,UAChB,GAAI3qE,GAAQA,EAAKxP,OAASogE,EACtB,MAAM,IAAIqW,GAAsBjnE,EAAKxP,OAAQogE,EAAWv9D,KAAK45E,WAEjE55E,KAAKq2E,UAAU/Y,aAAaC,EAChC,CACJ,EAWA6iB,EAAatiF,UAAU0/D,gBAAkB,WACrCx9D,KAAK46E,cACL56E,KAAKq2E,UAAU7Y,iBACnB,EAWA4iB,EAAatiF,UAAU4iF,SAAW,SAAU73B,GAOxC,IANA,IAAI83B,EAAiB3gF,KAAKy3E,eAEtBzC,EAAY2L,IAAmBxV,GAAciK,OAASoE,GAAepE,OACnEuL,IAAmBxV,GAAckK,MAAQmE,GAAenE,MACpDmE,GAAerE,KACrB7a,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjB65D,EAAY5gF,KAAKk8E,4BAA4BlhB,EAAQnS,EAAOmsB,GAChEh1E,KAAK87E,wBAAwB9gB,EAAQ,CAAE/C,OAAQ2oB,GACnD,CACA5gF,KAAK+6E,aACT,EAqBAqF,EAAatiF,UAAUg4D,YAAc,SAAUC,GAC3CxjC,GAAewjC,EAAU,YACzB/1D,KAAKq2E,UAAUvgB,YAAYC,GAC3B/1D,KAAK46E,aACT,EAaAwF,EAAatiF,UAAU05E,YAAc,WACjC,OAAOx3E,KAAKq2E,UAAU/f,QAAQuF,GAAcglB,UAChD,EAWAT,EAAatiF,UAAUgjF,gBAAkB,WACrC9gF,KAAK46E,cACL56E,KAAKq2E,UAAU3f,UAAUmF,GAAcglB,WAAW,EACtD,EAWAT,EAAatiF,UAAUijF,iBAAmB,WACtC/gF,KAAK46E,cACL56E,KAAKq2E,UAAU3f,UAAUmF,GAAcglB,WAAW,EACtD,EAYAT,EAAatiF,UAAUkjF,WAAa,WAChC,OAAOhhF,KAAKq2E,UAAU/f,QAAQuF,GAAcolB,SAChD,EAkBAb,EAAatiF,UAAUojF,eAAiB,WACpClhF,KAAKq2E,UAAU3f,UAAUmF,GAAcolB,UAAU,EACrD,EASAb,EAAatiF,UAAUqjF,gBAAkB,WACrCnhF,KAAKq2E,UAAU3f,UAAUmF,GAAcolB,UAAU,EACrD,EAWAb,EAAatiF,UAAUsjF,eAAiB,WACpC,OAAOphF,KAAKq2E,UAAU/f,QAAQuF,GAAcwlB,WAChD,EAUAjB,EAAatiF,UAAUwjF,oBAAsB,WACzCthF,KAAKq2E,UAAU3f,UAAUmF,GAAcwlB,YAAY,EACvD,EASAjB,EAAatiF,UAAUyjF,qBAAuB,WAC1CvhF,KAAKq2E,UAAU3f,UAAUmF,GAAcwlB,YAAY,EACvD,EAWAjB,EAAatiF,UAAU0gF,eAAiB,WACpC,OAAQx+E,KAAKq2E,UAAU/f,QAAQuF,GAAc4iB,gBACjD,EASA2B,EAAatiF,UAAU4gF,oBAAsB,WACzC1+E,KAAKq2E,UAAU3f,UAAUmF,GAAc4iB,iBAAiB,EAC5D,EASA2B,EAAatiF,UAAU6gF,qBAAuB,WAC1C3+E,KAAKq2E,UAAU3f,UAAUmF,GAAc4iB,iBAAiB,EAC5D,EAYA2B,EAAatiF,UAAU0jF,aAAe,WAClC,OAAQxhF,KAAKq2E,UAAU/f,QAAQuF,GAAc4lB,YACjD,EAWArB,EAAatiF,UAAU4jF,gBAAkB,WACrC1hF,KAAKq2E,UAAU3f,UAAUmF,GAAc4lB,aAAa,EACxD,EASArB,EAAatiF,UAAU6jF,iBAAmB,WACtC3hF,KAAKq2E,UAAU3f,UAAUmF,GAAc4lB,aAAa,EACxD,EAoBArB,EAAatiF,UAAUy5E,SAAW,WAC9B,OAAQv3E,KAAKq2E,UAAU/f,QAAQuF,GAAc+lB,QACxC5hF,KAAKw3E,gBACLx3E,KAAKghF,eACLhhF,KAAKohF,uBACkBh/E,IAAxBpC,KAAKy9D,cACb,EAsBA2iB,EAAatiF,UAAU+jF,cAAgB,WACnC,QAA4Bz/E,IAAxBpC,KAAKy9D,eAA8B,CAEnChhE,QAAQC,KADE,6DAEd,CACAsD,KAAK46E,cACL56E,KAAK+gF,mBACL/gF,KAAKmhF,kBACLnhF,KAAKuhF,uBACLvhF,KAAKq2E,UAAU3f,UAAUmF,GAAc+lB,MAAM,EACjD,EAaAxB,EAAatiF,UAAUgkF,eAAiB,WACpC9hF,KAAK46E,cACL56E,KAAKq2E,UAAU3f,UAAUmF,GAAc+lB,MAAM,EACjD,EAWAxB,EAAatiF,UAAUwiF,gBAAkB,WACrC,OAAOtgF,KAAKq2E,UAAU/f,QAAQuF,GAAckmB,SAChD,EAeA3B,EAAatiF,UAAUkkF,qBAAuB,WAC1ChiF,KAAKq2E,UAAU3f,UAAUmF,GAAckmB,UAAU,EACrD,EASA3B,EAAatiF,UAAU0iF,sBAAwB,WAC3CxgF,KAAKq2E,UAAU3f,UAAUmF,GAAckmB,UAAU,EACrD,EA4BA3B,EAAatiF,UAAU++E,UAAY,SAAUrtB,EAAMxuD,GAC/C,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAC5B,GAASulC,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCiqB,GAA6Bz4E,GACxBA,IACDA,EAAU,CAAC,GACT,cAAeA,IACjBA,EAAQmxE,UAAY5G,GAAI,EAAG,EAAG,IAC5B,oBAAqBvqE,IACvBA,EAAQ04E,gBAAkBnO,GAAI,EAAG,EAAG,IAClC,gBAAiBvqE,IACnBA,EAAQ+uE,YAAcxE,GAAI,EAAG,EAAG,IAC9B,gBAAiBvqE,IACnBA,EAAQgvE,YAAc,GAE1B,IAAIhV,EAASh7D,KAAKm7E,aAAa,CAC3Bl0E,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAK,EACrDpF,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAK,EACrDP,MAAgC,QAAxBS,EAAKzoB,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAK,IAC7DuH,OAAkC,QAAzBrH,EAAK3oB,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAK,GAC/DwoD,UAAWnxE,EAAQmxE,UACnBuH,gBAAiB14E,EAAQ04E,gBACzB3J,YAAa/uE,EAAQ+uE,YACrBC,YAA4C,QAA9BnmD,EAAK7oB,EAAQgvE,mBAAgC,IAAPnmD,EAAgBA,EAAK,EACzE8lD,OAAkC,QAAzB5lD,EAAK/oB,EAAQ2uE,cAA2B,IAAP5lD,EAAgBA,EAAKo+C,GAAQ,GACvEmT,OAAQt6E,EAAQs6E,OAChB9rB,KAAMA,EAAKpvC,MAEX08D,EAAY98E,KAAK24E,IAAInhD,QAAQqH,SAASm8B,EAAOt/B,MAEjD17B,KAAKq2E,UAAU9b,UAAUuiB,GAEzB,IAAI7tD,EAA+B,QAAvBhF,EAAKjpB,EAAQiuB,YAAyB,IAAPhF,EAAgBA,EAAKjqB,KAAK24E,IAAIkC,UAAUmE,iBACnFh/E,KAAK+8E,uBAAuB/hB,EAAQ/rC,GAEpCugC,EAAKhvB,KAAKS,SAAS67C,EACvB,EAUAsD,EAAatiF,UAAU28E,uBAAyB,WAC5C,IAAIpxD,EACJ,GAAIrpB,KAAKi7E,UACL,OAAO,EAEX,IADA,IAAI3gB,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAGtD,MADyD,QAAlCsC,EADVixC,EAAQvzC,GACcixC,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,kBAAmB,IAE5G,OAAO,CACf,CACA,OAAO,CACX,EAWAmoB,EAAatiF,UAAU48E,yBAA2B,SAAUzrD,GACxD,GAASA,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCjvB,KAAKg9E,kBAAkB/tD,EAC3B,EAiBAmxD,EAAatiF,UAAUk/E,kBAAoB,SAAU/tD,EAAMguD,GACvD,GAAShuD,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCgD,GAAkBgrD,EAAU,WAAY,CAACrrD,WAEzC,IADA,IAAI0oC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACrB/mB,KAAK+8E,uBAAuB/hB,EAAQ/rC,EAAMguD,EAC9C,CACAj9E,KAAK+6E,aACT,EACAqF,EAAatiF,UAAUi/E,uBAAyB,SAAU/hB,EAAQ/rC,EAAMguD,GACpE,IACIzlB,EAAc+d,IADD0H,QAA2CA,EAAW7F,IACtBp3E,KAAMg7D,EAAQ/rC,IAC/DjvB,KAAK67E,+BAA+B7gB,EAAQ/rC,EAAMuoC,EACtD,EAYA4oB,EAAa9oD,GAAK,SAAU+oD,EAAUjgE,EAAKu4D,GACvC,OAAO,IAAIyH,EAAaC,EAAUjgE,EAAKu4D,EAC3C,EACOyH,CACX,CAzsBiC,CAysB/B,IACF,YC/tBO,IAAI6B,IACX,SAAWA,GACPA,EAAuB,QAAI,UAC3BA,EAA2B,YAAI,eAC/BA,EAA8B,eAAI,kBAClCA,EAAkC,mBAAI,sBACtCA,EAAyB,UAAI,YAC7BA,EAA6B,cAAI,iBACjCA,EAAgC,iBAAI,oBACpCA,EAAoC,qBAAI,wBACxCA,EAA0B,WAAI,cAC9BA,EAA8B,eAAI,aAClCA,EAAgC,iBAAI,eACpCA,EAAoC,qBAAI,mBACxCA,EAAsB,OAAI,SAC1BA,EAA4B,aAAI,cACnC,CAfD,CAeGA,KAAkBA,GAAgB,CAAC,ICWtC,IAAIC,GAAyB,WACzB,SAASA,EAAQliB,EAAU2Y,GACvB,IAAIx2E,EAAQnC,KACZA,KAAKmiF,iBAAmB,WACpB,OAAOhgF,EAAMw2E,IAAIyJ,kBAAkBH,GAAcI,UACrD,EACA,GAASriB,EAAU,WAAY,CAAC,CAAC,GAAa,iBAC9C,GAAS2Y,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC34E,KAAKggE,SAAWA,EAChBhgE,KAAK24E,IAAMA,EACX34E,KAAKsiF,YAAc,IAAIC,IACvBviF,KAAKwiF,iBAAmB,eAAkBxiF,KAAKmiF,iBACnD,CAwnBA,OAzmBAD,EAAQpkF,UAAU2kF,OAAS,WACvB,OAAOziF,KAAKggE,SAAStkC,KAAKG,IAAI,MAAW,OAC7C,EAYAqmD,EAAQpkF,UAAU4kF,UAAY,WAC1B1iF,KAAKggE,SAAStkC,KAAKI,OAAO,MAAW,OACzC,EAcAomD,EAAQpkF,UAAUuhE,UAAY,WAG1B,IAFA,IAAIE,EAAYv/D,KAAKggE,SAASV,eAC1BF,EAAS,GACJr4C,EAAM,EAAGhB,EAAMw5C,EAAUpiE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACxD,IAAIsC,EAAKk2C,EAAUx4C,GAAMsvD,EAAYhtD,EAAG,GAAIjJ,EAAMiJ,EAAG,GACjD6zC,EAAQylB,GAAkBtM,EAAWj2D,EAAKpgB,KAAK24E,KAC/Czb,GACAkC,EAAOl+D,KAAKg8D,EACpB,CACA,OAAOkC,CACX,EAWA8iB,EAAQpkF,UAAU8kF,cAAgB,SAAU1/E,GACxC,GAASA,EAAM,OAAQ,CAAC,WAExB,IADA,IAAIk8D,EAASp/D,KAAKq/D,YACTt4C,EAAM,EAAGhB,EAAMq5C,EAAOjiE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACrD,IAAIm2C,EAAQkC,EAAOr4C,GACnB,GAAIm2C,EAAM0c,YAAc12E,EACpB,OAAOg6D,CACf,CAEJ,EAWAglB,EAAQpkF,UAAU+kF,SAAW,SAAU3/E,GACnC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK4iF,cAAc1/E,GAC/B,GAAIg6D,EACA,OAAOA,EACX,MAAM,IAAI6V,GAAiB7vE,EAC/B,EAYAg/E,EAAQpkF,UAAUglF,UAAY,SAAU5/E,GACpC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAWg6D,EACxD,EAcAglB,EAAQpkF,UAAUilF,YAAc,SAAU7/E,GACtC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAag6D,EAC1D,EAeAglB,EAAQpkF,UAAUklF,YAAc,SAAU9/E,GACtC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAag6D,EAC1D,EAeAglB,EAAQpkF,UAAUmlF,cAAgB,SAAU//E,GACxC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAeg6D,EAC5D,EAeAglB,EAAQpkF,UAAUolF,cAAgB,SAAUhgF,GACxC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAeg6D,EAC5D,EAaAglB,EAAQpkF,UAAUqlF,aAAe,SAAUjgF,GACvC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAcg6D,EAC3D,EAcAglB,EAAQpkF,UAAUslF,aAAe,SAAUlgF,GACvC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIg6D,EAAQl9D,KAAK6iF,SAAS3/E,GAC1B,GAAIg6D,aAAiB,GACjB,OAAOA,EACX,MAAM,IAAI8V,GAAyB9vE,EAAM,GAAcg6D,EAC3D,EAiBAglB,EAAQpkF,UAAUulF,aAAe,SAAUngF,GACvC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIogF,EAAYC,GAAergF,GAC3Bm/B,EAASriC,KAAKwjF,yBAAyBF,EAAUG,aACjD5M,EAAS,UAAyB72E,KAAK24E,IAAInhD,SAG/C,OAFAq/C,EAAOphB,eAAe6tB,EAAUI,UAChCC,GAAiBthD,EAAQ,CAACw0C,EAAQA,EAAOz2D,KAAMkjE,EAAUI,UAClD,MAAa7M,EAAQA,EAAOz2D,IAAKpgB,KAAK24E,IACjD,EAiBAuJ,EAAQpkF,UAAU8lF,eAAiB,SAAU1gF,GACzC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIogF,EAAYC,GAAergF,GAC3Bm/B,EAASriC,KAAKwjF,yBAAyBF,EAAUG,aACjDvN,EAAW,UAAuBl2E,KAAK24E,IAAInhD,SAG/C,OAFA0+C,EAASzgB,eAAe6tB,EAAUI,UAClCC,GAAiBthD,EAAQ,CAAC6zC,EAAUA,EAAS91D,KAAMkjE,EAAUI,UACtD,MAAexN,EAAUA,EAAS91D,IAAKpgB,KAAK24E,IACvD,EAiBAuJ,EAAQpkF,UAAU+lF,eAAiB,SAAU3gF,GACzC,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIogF,EAAYC,GAAergF,GAC3Bm/B,EAASriC,KAAKwjF,yBAAyBF,EAAUG,aACjDK,EAAW,UAAuB9jF,KAAK24E,IAAInhD,SAG/C,OAFAssD,EAASruB,eAAe6tB,EAAUI,UAClCC,GAAiBthD,EAAQ,CAACyhD,EAAUA,EAAS1jE,KAAMkjE,EAAUI,UACtD,MAAeI,EAAUA,EAAS1jE,IAAKpgB,KAAK24E,IACvD,EAiBAuJ,EAAQpkF,UAAUimF,iBAAmB,SAAU7gF,GAC3C,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIogF,EAAYC,GAAergF,GAC3Bm/B,EAASriC,KAAKwjF,yBAAyBF,EAAUG,aACjDO,EAAU,UAAsBhkF,KAAK24E,IAAInhD,SAG7C,OAFAwsD,EAAQvuB,eAAe6tB,EAAUI,UACjCC,GAAiBthD,EAAQ,CAAC2hD,EAASA,EAAQ5jE,KAAMkjE,EAAUI,UACpD,MAAiBM,EAASA,EAAQ5jE,IAAKpgB,KAAK24E,IACvD,EAkBAuJ,EAAQpkF,UAAUmmF,iBAAmB,SAAU/gF,GAC3C,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIogF,EAAYC,GAAergF,GAC3Bm/B,EAASriC,KAAKwjF,yBAAyBF,EAAUG,aACjDS,EAAc,UAA0BlkF,KAAK24E,IAAInhD,SAGrD,OAFA0sD,EAAYzuB,eAAe6tB,EAAUI,UACrCC,GAAiBthD,EAAQ,CAAC6hD,EAAaA,EAAY9jE,KAAMkjE,EAAUI,UAC5D,MAAiBQ,EAAaA,EAAY9jE,IAAKpgB,KAAK24E,IAC/D,EAiBAuJ,EAAQpkF,UAAUqmF,gBAAkB,SAAUjhF,GAC1C,GAASA,EAAM,OAAQ,CAAC,WACxB,IAAIogF,EAAYC,GAAergF,GAC3Bm/B,EAASriC,KAAKwjF,yBAAyBF,EAAUG,aACjD92E,EAAO,UAAmB3M,KAAK24E,IAAInhD,SAGvC,OAFA7qB,EAAK8oD,eAAe6tB,EAAUI,UAC9BC,GAAiBthD,EAAQ,CAAC11B,EAAMA,EAAKyT,KAAMkjE,EAAUI,UAC9C,MAAgB/2E,EAAMA,EAAKyT,IAAKpgB,KAAK24E,IAChD,EAsBAuJ,EAAQpkF,UAAUsmF,QAAU,SAAUpjF,QAClB,IAAZA,IAAsBA,EAAU,CAAEqjF,wBAAwB,IAC1DrjF,EAAQqjF,wBACRrkF,KAAKqkF,yBAGT,IADA,IAAIjlB,EAASp/D,KAAKq/D,YACTniE,EAAI,EAAGonF,EAAYllB,EAAOjiE,OAAQD,EAAIonF,EAAWpnF,IAAK,CAG3D,IAFA,IAAIggE,EAAQkC,EAAOliE,GACfo9D,EAAU4C,EAAMmZ,UAAUjc,aACrBn1C,EAAI,EAAGs/D,EAAajqB,EAAQn9D,OAAQ8nB,EAAIs/D,EAAYt/D,IAAK,CAC9D,IAAI+1C,EAASV,EAAQr1C,GACjBuqC,EAAOxvD,KAAKwkF,eAAexpB,GAC3B8hB,EAAY98E,KAAKykF,wBAAwBvnB,EAAOlC,GAChD0pB,EAAal1B,EAAKhvB,KAAKmB,WAAW,aAAcm7C,GAChDxG,EAAYtb,EAAO9D,eACnBp5B,EAAYlZ,GAAe,CAC3B,KACAzd,GAAUmvE,EAAUrvE,EAAGqvE,EAAUryD,IAClC+sD,GAAc9tD,GAASA,GAAS,CAAC,EAAGozD,GAAY,CAAErd,SAAU,KAAO,CAClE+R,GAAW0Z,GACX,OACD19E,OAAO9H,SACVswD,EAAKm1B,cAAczkF,MAAMsvD,EAAM1xB,EACnC,CACA99B,KAAK0/D,YAAYxC,EACrB,CACJ,EAWAglB,EAAQpkF,UAAU4hE,YAAc,SAAUxC,GAGtC,IAFA,IAAI5C,EAAU4C,EAAMmZ,UAAUjc,aAC1BuG,EAAQ,IAAI4hB,IACPrlF,EAAI,EAAG6oB,EAAMu0C,EAAQn9D,OAAQD,EAAI6oB,EAAK7oB,IAAK,CAChD,IAAI89D,EAASV,EAAQp9D,GACjB4/E,EAAY98E,KAAKykF,wBAAwBvnB,EAAOlC,GAChDxL,EAAOxvD,KAAKwkF,eAAexpB,GAC/B2F,EAAMl7D,IAAI+pD,GACVA,EAAKhvB,KAAKW,YAAY27C,EAC1B,CACAnc,EAAMr7D,SAAQ,SAAUkqD,GAAQ,OAAOA,EAAKhvB,KAAKW,YAAY+7B,EAAM98C,IAAM,IACzEpgB,KAAKggE,SAASN,YAAYxC,EAAMmZ,WAGhC,IAFA,IAAIuO,EAAY1nB,EAAMmZ,UAAUx1C,oBAAoBo0B,KAChD4vB,EAAYD,EAAUzwD,OACjB2wD,EAAa,EAAGA,EAAaD,EAAWC,IAAc,CAC3D,IAAIC,EAAQH,EAAUpkF,IAAIskF,GACtBC,aAAiB,IACjB/kF,KAAK24E,IAAInhD,QAAQsE,OAAOipD,EAEhC,CACA/kF,KAAK24E,IAAInhD,QAAQsE,OAAOohC,EAAM98C,IAClC,EA8BA8hE,EAAQpkF,UAAUumF,uBAAyB,SAAUp1D,GACjDgD,GAAkBhD,EAAM,OAAQ,CAAC,CAAC,GAAS,aAC3CA,EAAOA,QAAmCA,EAAOjvB,KAAKg/E,iBAEtD,IADA,IAAI5f,EAASp/D,KAAKq/D,YACTt4C,EAAM,EAAGhB,EAAMq5C,EAAOjiE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACrD,IAAIm2C,EAAQkC,EAAOr4C,GACfm2C,EAAMud,0BACNvd,EAAMwd,yBAAyBzrD,EAEvC,CACJ,EAWAizD,EAAQpkF,UAAUg9E,iBAAmB,SAAUkK,GAC3C/yD,GAAkB+yD,EAAU,WAAY,CAAC,CAAC,GAAQ,YAClDhlF,KAAKsiF,YAAY78E,IAAIu/E,EACzB,EAWA9C,EAAQpkF,UAAUk9E,iBAAmB,SAAUgK,GAC3C/yD,GAAkB+yD,EAAU,WAAY,CAAC,CAAC,GAAQ,YAClDhlF,KAAKsiF,YAAYxmD,OAAOkpD,EAC5B,EAWA9C,EAAQpkF,UAAUo9E,aAAe,SAAU8J,GAEvC,OADA/yD,GAAkB+yD,EAAU,WAAY,CAAC,CAAC,GAAQ,YAC3ChlF,KAAKsiF,YAAYzmD,IAAImpD,EAChC,EACA9C,EAAQpkF,UAAUkhF,eAAiB,WAC/B,OAAOh/E,KAAKwiF,iBAAiBzvD,QACjC,EACAmvD,EAAQpkF,UAAU0mF,eAAiB,SAAUxpB,GACzC,IAAIugB,EAAUvgB,EAAOt3C,IACjB8rC,EAAOxvD,KAAK24E,IAAIsM,WAAW30E,MAAK,SAAUrJ,GAAK,OAAOA,EAAEmZ,MAAQm7D,CAAS,IAC7E,QAAan5E,IAATotD,EAAoB,CACpB,IAAIstB,EAAY98E,KAAK24E,IAAInhD,QAAQsH,aAAak8B,EAAOt/B,MACrD,QAAkBt5B,IAAd06E,EACA,MAAM,IAAI75E,MAAM,uCAGpB,QAAab,KADbotD,EAAOxvD,KAAK24E,IAAIuM,yBAAyBpI,IAErC,MAAM,IAAI75E,MAAM,kCAAoC65E,EAE5D,CACA,OAAOttB,CACX,EACA0yB,EAAQpkF,UAAU2mF,wBAA0B,SAAUvnB,EAAOlC,GACzD,IAAI3xC,EACA87D,EAAYnqB,EAAOtD,sBACvB,GAAIytB,aAAqB,KACpBjoB,aAAiB,IAAeA,aAAiB,IAAgB,CAClE,IAAI9+D,EAAQ8+D,EAAMmZ,UAAUvjD,WACxB1S,EAAsC,QAA/BiJ,EAAK87D,EAAU3kF,IAAIpC,UAA2B,IAAPirB,EAAgBA,EAAK87D,EAAU3kF,IAAI,MAAW,QAC5F4f,aAAe,KACf+kE,EAAY/kE,EAEpB,CACA,KAAM+kE,aAAqB,IAAS,CAChC,IAAIC,EAASloB,EAAM0c,UACnB,MAAM,IAAI32E,MAAM,yCAA2CmiF,EAC/D,CACA,OAAOD,CACX,EACAjD,EAAQpkF,UAAU0lF,yBAA2B,SAAU6B,GAInD,IAHA,IAAI5B,EAAc,CACdzjF,KAAKggE,UAEAj5C,EAAM,EAAGhB,EAAMs/D,EAAaloF,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAC3D,IAAIqsD,EAAWiS,EAAat+D,GAC5B,IAAKqsD,EACD,MAAM,IAAID,GAA0BC,GACxC,IAAIkS,EAAW7B,EAAY,GAAI/iD,EAAY+iD,EAAY,GACnDt3D,EAAMnsB,KAAKulF,gBAAgBnS,EAAUkS,GACzC,GAAIn5D,EACAs3D,EAAct3D,MAEb,CACD,IAAIqU,EAAO,UAA0BxgC,KAAK24E,IAAInhD,SAC9CgJ,EAAKi1B,eAAe2d,GACpB5yC,EAAKC,UAAUC,GACf,IAAI8kD,EAAUxlF,KAAK24E,IAAInhD,QAAQqH,SAAS2B,EAAK9E,MAC7C4pD,EAASroB,SAASuoB,GAClB/B,EAAc,CAACjjD,EAAMglD,EACzB,CACJ,CACA,OAAO/B,CACX,EACAvB,EAAQpkF,UAAUynF,gBAAkB,SAAU7vB,EAAarzB,GAIvD,IAHA,IAAI+8B,EAAS/8B,aAAkB,GACzBriC,KAAKggE,SAASX,YACdf,GAAoBj8B,EAAO4yB,QACxBluC,EAAM,EAAGhB,EAAMq5C,EAAOjiE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACrD,IAAIsC,EAAK+1C,EAAOr4C,GAAMm2C,EAAQ7zC,EAAG,GAAIjJ,EAAMiJ,EAAG,GAC9C,GAAI6zC,EAAM1H,mBAAqBE,EAAa,CACxC,GAAIwH,aAAiB,GACjB,MAAO,CAACA,EAAO98C,GACnB,MAAM,IAAI6yD,GAAwBvd,EACtC,CACJ,CAEJ,EAWAwsB,EAAQ5qD,GAAK,SAAU0oC,EAAU2Y,GAC7B,OAAO,IAAIuJ,EAAQliB,EAAU2Y,EACjC,EACOuJ,CACX,CAroB4B,GAsoB5B,YACA,IClqBWuD,GDkqBP9C,GAAoB,SAAUzlB,EAAO98C,EAAKu4D,GAC1C,OAAIzb,aAAiB,GACV,MAAaA,EAAO98C,EAAKu4D,GAChCzb,aAAiB,GACV,MAAeA,EAAO98C,EAAKu4D,GAClCzb,aAAiB,GACV,MAAeA,EAAO98C,EAAKu4D,GAClCzb,aAAiB,GACV,MAAiBA,EAAO98C,EAAKu4D,GACpCzb,aAAiB,GACV,MAAgBA,EAAO98C,EAAKu4D,GACnCzb,aAAiB,GACV,MAAiBA,EAAO98C,EAAKu4D,GAEpCzb,aAAiB,GACV,MAAgBA,EAAO98C,EAAKu4D,QADvC,CAIJ,EACI4K,GAAiB,SAAUmC,GAC3B,GAAkC,IAA9BA,EAAmBvoF,OACnB,MAAM,IAAI8F,MAAM,6CAGpB,IADA,IAAI8vC,EAAQ2yC,EAAmB/sE,MAAM,KAC5BoO,EAAM,EAAGhB,EAAMgtB,EAAM51C,OAAQ4pB,EAAMhB,EAAKgB,IAC7C,GAAmB,KAAfgsB,EAAMhsB,GACN,MAAM,IAAI9jB,MAAM,4EAA+EyiF,EAAqB,KAG5H,OAAqB,IAAjB3yC,EAAM51C,OACC,CAAEsmF,YAAa,GAAIC,SAAU3wC,EAAM,IACvC,CACH0wC,YAAa1wC,EAAMvxC,MAAM,EAAGuxC,EAAM51C,OAAS,GAC3CumF,SAAU3wC,EAAMA,EAAM51C,OAAS,GAEvC,EACIwmF,GAAmB,SAAUt6D,EAAIE,EAAImsC,GAKrC,IAJA,IAAIrzB,EAAShZ,EAAG,GAAIqX,EAAYrX,EAAG,GAC/B6zC,EAAQ3zC,EAAG,GAAIy7D,EAAWz7D,EAAG,GAC7BoS,EAAU0G,EAAOxB,oBACjBu+B,GAASd,GAAoB,SAAU3iC,EAAUA,EAAQs5B,KAAOt5B,EAAQwjC,SACnEp4C,EAAM,EAAGhB,EAAMq5C,EAAOjiE,OAAQ4pB,EAAMhB,EAAKgB,IAC9C,GAAIq4C,EAAOr4C,GAAK,GAAGyuC,mBAAqBE,EACpC,MAAM,IAAIud,GAAwBvd,GAG1CrzB,EAAO46B,SAAS+nB,GAChB9nB,EAAMz8B,UAAUC,EACpB,EEltBWilD,GAAY,CACnB,MAAO,CAAC,QAAS,SACjB,MAAO,CAAC,QAAS,SACjBC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,OAAQ,SACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,MAAO,QACZC,GAAI,CAAC,OAAQ,OACbC,IAAK,CAAC,KAAM,QACZC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,OAAQ,SACbC,GAAI,CAAC,MAAO,QACZC,GAAI,CAAC,OAAQ,OACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,IAAK,CAAC,MAAO,QACbC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,QAAS,SACdC,GAAI,CAAC,OAAQ,SACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,GAAI,CAAC,OAAQ,QACbC,IAAK,CAAC,MAAO,QACbC,IAAK,CAAC,OAAQ,SACdC,IAAK,CAAC,QAAS,QACfC,IAAK,CAAC,OAAQ,SACdC,IAAK,CAAC,OAAQ,QACdC,IAAK,CAAC,OAAQ,QACdC,KAAM,CAAC,QAAS,SAChBC,KAAM,CAAC,QAAS,SAChBC,KAAM,CAAC,QAAS,SAChBC,KAAM,CAAC,OAAQ,SACfC,KAAM,CAAC,MAAO,QACdC,UAAW,CAAC,OAAQ,KACpBC,MAAO,CAAC,IAAO,KACfC,MAAO,CAAC,IAAO,MACfC,OAAQ,CAAC,IAAO,KAChBC,QAAS,CAAC,IAAO,QDjDrB,SAAWlD,GACPA,EAAYA,EAAqB,QAAI/e,KAAY,UACjD+e,EAAYA,EAAkB,KAAI,MAAQ,OAC1CA,EAAYA,EAAoB,OAAI,KAAO,SAC3CA,EAAYA,EAAkB,KAAI,KAAO,MAC5C,CALD,CAKGA,KAAgBA,GAAc,CAAC,IE0ElC,SA3EqC,WACjC,SAASmD,EAAgBxoE,EAAKu4D,EAAKC,GAC/B54E,KAAK64E,iBAAkB,EACvB74E,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,EACX34E,KAAK44E,SAAWA,CACpB,CAmEA,OAzDAgQ,EAAgB9qF,UAAUg7E,MAAQ,WAC9B,OAAOv1D,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIogB,EAAKyoE,EAAOC,EAAeC,EAC/B,OAAO/kE,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EACD,OAAMnkB,KAAK64E,gBAAwB,CAAC,EAAa,GAC1C,CAAC,EAAa74E,KAAK44E,SAASntC,iBAAiBzrC,KAAK24E,IAAInhD,QAASx3B,KAAKogB,MAC/E,KAAK,EACDA,EAAMiJ,EAAGjF,OACJpkB,KAAK24E,IAAIqQ,QAAQntD,IAAI,MAAW,WACjC77B,KAAK24E,IAAIqQ,QAAQtxD,IAAI,MAAW,SAAU13B,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC,KAEpEi4D,EAAQ7oF,KAAK24E,IAAIqQ,QAAQ5jE,OAAO,MAAW,SAAU,KAC1CyW,IAAI,MAAW,mBACtBgtD,EAAMnxD,IAAI,MAAW,iBAAkB13B,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC,KAEjEk4D,EAAgBD,EAAMzjE,OAAO,MAAW,iBAAkB,KACvCyW,IAAI,MAAW,WAC9BitD,EAAcpxD,IAAI,MAAW,SAAU13B,KAAK24E,IAAInhD,QAAQ5G,IAAI,MAEhEm4D,EAAUD,EAAc1jE,OAAO,MAAW,SAAU,KAC5ClkB,KAAK,YAAsBlB,KAAK44E,SAASrlC,WACjDw1C,EAAQ7nF,KAAKkf,GAQRpgB,KAAK24E,IAAIqQ,QAAQntD,IAAI,MAAW,QACjC77B,KAAK24E,IAAIqQ,QAAQtxD,IAAI,MAAW,MAAO13B,KAAK24E,IAAInhD,QAAQ5G,IAAI,KAE3D5wB,KAAK24E,IAAIqQ,QAAQ5jE,OAAO,MAAW,MAAO,IAC5ClkB,KAAKkf,GACRpgB,KAAK64E,iBAAkB,EACvBxvD,EAAGlF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAYAykE,EAAgBtxD,GAAK,SAAUlX,EAAKu4D,EAAKC,GACrC,OAAO,IAAIgQ,EAAgBxoE,EAAKu4D,EAAKC,EACzC,EACOgQ,CACX,CA1EoC,GCgEpC,SAhEmC,WAC/B,SAASK,EAAc7oE,EAAKu4D,EAAKC,GAC7B54E,KAAK64E,iBAAkB,EACvB74E,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,EACX34E,KAAK44E,SAAWA,CACpB,CAwDA,OA9CAqQ,EAAcnrF,UAAUg7E,MAAQ,WAC5B,OAAOv1D,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAI2/D,EAASxxD,EAASpX,EAAKyoE,EAAOK,EAAYC,EAClD,OAAOnlE,GAAYhkB,MAAM,SAAUupB,GAC/B,OAAQA,EAAGpF,OACP,KAAK,EACD,OAAMnkB,KAAK64E,gBAAwB,CAAC,EAAa,IACjDxvD,EAAKrpB,KAAK24E,IAAKqQ,EAAU3/D,EAAG2/D,QAASxxD,EAAUnO,EAAGmO,QAC3C,CAAC,EAAax3B,KAAK44E,SAASntC,iBAAiBzrC,KAAK24E,IAAInhD,QAASx3B,KAAKogB,OAC/E,KAAK,EACDA,EAAMmJ,EAAGnF,OACJ4kE,EAAQntD,IAAI,MAAW,WACxBmtD,EAAQtxD,IAAI,MAAW,SAAUF,EAAQ5G,IAAI,CAAC,KAElDi4D,EAAQG,EAAQ5jE,OAAO,MAAW,SAAU,KACjCyW,IAAI,MAAW,gBACtBgtD,EAAMnxD,IAAI,MAAW,cAAeF,EAAQ5G,IAAI,CAAC,KAErDs4D,EAAaL,EAAMzjE,OAAO,MAAW,cAAe,KACpCyW,IAAI,MAAW,WAC3BqtD,EAAWxxD,IAAI,MAAW,SAAUF,EAAQ5G,IAAI,MAEpDu4D,EAAUD,EAAW9jE,OAAO,MAAW,SAAU,KACzClkB,KAAK,YAAsBlB,KAAK44E,SAASwQ,aACjDD,EAAQjoF,KAAKkf,GACbpgB,KAAK64E,iBAAkB,EACvBtvD,EAAGpF,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EAYA8kE,EAAc3xD,GAAK,SAAUlX,EAAKu4D,EAAKC,GACnC,OAAO,IAAIqQ,EAAc7oE,EAAKu4D,EAAKC,EACvC,EACOqQ,CACX,CA/DkC,GC2BlC,SA9BwC,WACpC,SAASI,EAAmB14C,EAAQy4C,GAChCppF,KAAK2wC,OAASA,EACd3wC,KAAKopF,WAAaA,CACtB,CAwBA,OAvBAC,EAAmB3lD,IAAM,SAAUiN,EAAQy4C,GACvC,OAAO,IAAIC,EAAmB14C,EAAQy4C,EAC1C,EACAC,EAAmBvrF,UAAU2tC,iBAAmB,SAAUjU,EAASpX,GAC/D,OAAOmD,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIspF,EACJ,OAAOtlE,GAAYhkB,MAAM,SAAUqpB,GAM/B,OALAigE,EAAe9xD,EAAQ5G,IAAI,CACvByJ,KAAM,SACN0hB,EAAG,aACHwtC,GAAI,YAAsBvpF,KAAK2wC,UAE/BvwB,GACAoX,EAAQrU,OAAO/C,EAAKkpE,GACb,CAAC,EAAclpE,IAGf,CAAC,EAAcoX,EAAQqH,SAASyqD,GAG/C,GACJ,GACJ,EACOD,CACX,CA7BuC,GCgBvC,IAAIG,GAA6B,WAC7B,SAASA,EAAYhyD,EAASiyD,EAAkBC,GAC5C,IAAIvnF,EAAQnC,KAkCZ,GAhCAA,KAAK2pF,kBAAoB,CAAC,KAC1B3pF,KAAK4pF,aAAe,WAChB,IAAIjpB,EAAQ,GAWZ,OAVAx+D,EAAM6mF,QAAQppB,QAAQyB,UAAS,SAAU7gC,EAAMpgB,GAC3C,GAAIogB,aAAgB,GAAa,CAC7B,IAAIgvB,EAAOrtD,EAAM0nF,QAAQrpF,IAAIggC,GACxBgvB,IACDA,EAAO,MAAWhvB,EAAMpgB,EAAKje,GAC7BA,EAAM0nF,QAAQnyD,IAAI8I,EAAMgvB,IAE5BmR,EAAMz/D,KAAKsuD,EACf,CACJ,IACOmR,CACX,EACA3gE,KAAK8pF,gBAAkB,WACnB,IAAI9pB,EAAW79D,EAAM6mF,QAAQjpB,sBAC7B,OAAO,MAAWC,EAAU79D,EAChC,EACA,GAASq1B,EAAS,UAAW,CAAC,CAAC,GAAY,gBAC3C,GAASiyD,EAAkB,mBAAoB,CAAC,YAChDzpF,KAAKw3B,QAAUA,EACfx3B,KAAKgpF,QAAUxxD,EAAQpS,OAAOoS,EAAQiH,YAAYuI,MAClDhnC,KAAK+pF,cAAgBvyD,EAAQpS,OAAOoS,EAAQiH,YAAYwI,SACxDjnC,KAAKgqF,UAAY,eAAkBhqF,KAAK4pF,cACxC5pF,KAAK6pF,QAAU,IAAI3wD,IACnBl5B,KAAKiqF,UAAY,eAAkBjqF,KAAK8pF,iBACxC9pF,KAAKkqF,MAAQ,GACblqF,KAAKmM,OAAS,GACdnM,KAAKmqF,cAAgB,GACrBnqF,KAAKoqF,cAAgB,GACrBpqF,KAAKqqF,YAAc,IACdZ,GAAoBzpF,KAAK+pF,YAC1B,MAAM,IAAIpX,GACV+W,GACA1pF,KAAKsqF,gBACb,CAkxCA,OA7tCAd,EAAYxlF,KAAO,SAAUumF,EAAKvpF,GAE9B,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BuiB,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAIogE,EAAkBlgE,EAAIihE,EAAY/gE,EAAIg9C,EAAsB98C,EAAI+/D,EAAgB7/D,EAAIi4C,EAAY97C,EACxG,OAAOhC,GAAYhkB,MAAM,SAAU+pB,GAC/B,OAAQA,EAAG5F,OACP,KAAK,EAOD,OANAkF,EAAKroB,EAAQyoF,iBAAkBA,OAA0B,IAAPpgE,GAAwBA,EAAIE,EAAKvoB,EAAQwpF,WAAYA,OAAoB,IAAPjhE,EAAgBk8D,GAAYgF,KAAOlhE,EAAIE,EAAKzoB,EAAQylE,qBAAsBA,OAA8B,IAAPh9C,GAAwBA,EAAIE,EAAK3oB,EAAQ0oF,eAAgBA,OAAwB,IAAP//D,GAAuBA,EAAIE,EAAK7oB,EAAQ8gE,WAAYA,OAAoB,IAAPj4C,GAAwBA,EACxX,GAAS0gE,EAAK,MAAO,CAAC,SAAUllE,WAAYiH,cAC5C,GAASm9D,EAAkB,mBAAoB,CAAC,YAChD,GAASe,EAAY,aAAc,CAAC,WACpC,GAAS/jB,EAAsB,uBAAwB,CAAC,YACxDzgD,EAAQgG,GAAau+D,GACd,CAAC,EAAa,uBAA8BvkE,EAAOwkE,EAAY/jB,EAAsB3E,GAAY6E,iBAC5G,KAAK,EAED,MAAO,CAAC,EAAc,IAAI6iB,EADhBz/D,EAAG3F,OACkCqlE,EAAkBC,IAE7E,GACJ,GACJ,EAKAF,EAAYtrF,OAAS,SAAU8C,GAE3B,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BuiB,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAIqgE,EAAgBlyD,EAASkzD,EAAUC,EAAa3B,EACxD,OAAOhlE,GAAYhkB,MAAM,SAAUupB,GAO/B,OANAF,EAAKroB,EAAQ0oF,eAAgBA,OAAwB,IAAPrgE,GAAuBA,EACrEmO,EAAU,YACVkzD,EAAW,eAAwBlzD,GACnCmzD,EAAcnzD,EAAQqH,SAAS6rD,GAC/B1B,EAAU,uBAA+BxxD,EAASmzD,GAClDnzD,EAAQiH,YAAYuI,KAAOxP,EAAQqH,SAASmqD,GACrC,CAAC,EAAc,IAAIQ,EAAYhyD,GAAS,EAAOkyD,GAC1D,GACJ,GACJ,EAmBAF,EAAY1rF,UAAU8sF,gBAAkB,SAAU98C,GAC9C9tC,KAAK8tC,QAAUA,CACnB,EAeA07C,EAAY1rF,UAAU+8E,QAAU,WAC5B,IAAIgQ,EAAO7qF,KAAKiqF,UAAUl3D,SAK1B,OAJI83D,EAAKpI,WACLhmF,QAAQC,KAAK,6EACbmuF,EAAKnI,aAEFmI,CACX,EASArB,EAAY1rF,UAAUgtF,SAAW,WAC7B,IAAIC,EAAQ/qF,KAAKgrF,cAAc5lE,OAAO,UACtC,GAAK2lE,EAGL,OADAE,GAA2BF,GACpBA,EAAMpxD,YACjB,EASA6vD,EAAY1rF,UAAUotF,UAAY,WAC9B,IAAIC,EAASnrF,KAAKgrF,cAAc5lE,OAAO,WACvC,GAAK+lE,EAGL,OADAF,GAA2BE,GACpBA,EAAOxxD,YAClB,EASA6vD,EAAY1rF,UAAUstF,WAAa,WAC/B,IAAIC,EAAUrrF,KAAKgrF,cAAc5lE,OAAO,YACxC,GAAKimE,EAGL,OADAJ,GAA2BI,GACpBA,EAAQ1xD,YACnB,EASA6vD,EAAY1rF,UAAUwtF,YAAc,WAChC,IAAIC,EAAWvrF,KAAKgrF,cAAc5lE,OAAO,aACzC,GAAKmmE,EAGL,OADAN,GAA2BM,GACpBA,EAAS5xD,YACpB,EASA6vD,EAAY1rF,UAAU0tF,WAAa,WAC/B,IAAIC,EAAUzrF,KAAKgrF,cAAc5lE,OAAO,YACxC,GAAKqmE,EAGL,OADAR,GAA2BQ,GACpBA,EAAQ9xD,YACnB,EASA6vD,EAAY1rF,UAAU4tF,YAAc,WAChC,IAAIC,EAAW3rF,KAAKgrF,cAAc5lE,OAAO,aACzC,GAAKumE,EAGL,OADAV,GAA2BU,GACpBA,EAAShyD,YACpB,EAUA6vD,EAAY1rF,UAAU8tF,gBAAkB,WACpC,IAAIl4C,EAAe1zC,KAAKgrF,cAAc5lE,OAAO,iBAC7C,GAAKsuB,EAGL,OADAu3C,GAA2Bv3C,GACpBA,EAAazJ,YACxB,EAWAu/C,EAAY1rF,UAAU+tF,oBAAsB,WACxC,IAAIl4C,EAAmB3zC,KAAKgrF,cAAc5lE,OAAO,YACjD,GAAKuuB,EAGL,OADAs3C,GAA2Bt3C,GACpBA,EAAiB1J,YAC5B,EAkBAu/C,EAAY1rF,UAAUguF,SAAW,SAAUf,EAAO/pF,GAC9C,GAAS+pF,EAAO,QAAS,CAAC,WAC1B,IAAIrtF,EAAM,MAAW,UACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAsBqtF,IAE9C/pF,aAAyC,EAASA,EAAQ+qF,uBAC9C/rF,KAAKgpF,QAAQ7oB,+BACnB3M,oBAAmB,EAEjC,EASAg2B,EAAY1rF,UAAUkuF,UAAY,SAAUb,GACxC,GAASA,EAAQ,SAAU,CAAC,WAC5B,IAAIztF,EAAM,MAAW,UACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAsBytF,GACtD,EASA3B,EAAY1rF,UAAUmuF,WAAa,SAAUZ,GACzC,GAASA,EAAS,SAAU,CAAC,WAC7B,IAAI3tF,EAAM,MAAW,WACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAsB2tF,GACtD,EASA7B,EAAY1rF,UAAUouF,YAAc,SAAUX,GAC1C,GAASA,EAAU,WAAY,CAACxoE,QAChC,IAAIrlB,EAAM,MAAW,YACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAsB6tF,EAASryE,KAAK,MACpE,EASAswE,EAAY1rF,UAAUquF,WAAa,SAAUV,GACzC,GAASA,EAAS,UAAW,CAAC,WAC9B,IAAI/tF,EAAM,MAAW,WACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAsB+tF,GACtD,EASAjC,EAAY1rF,UAAUsuF,YAAc,SAAUT,GAC1C,GAASA,EAAU,UAAW,CAAC,WAC/B,IAAIjuF,EAAM,MAAW,YACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAsBiuF,GACtD,EAWAnC,EAAY1rF,UAAUuuF,YAAc,SAAUC,GAC1C,GAASA,EAAU,WAAY,CAAC,WAChC,IAAI5uF,EAAM,MAAW,QACrBsC,KAAKgpF,QAAQtxD,IAAIh6B,EAAK,MAAa4uF,GACvC,EASA9C,EAAY1rF,UAAUyuF,gBAAkB,SAAU74C,GAC9C,GAASA,EAAc,eAAgB,CAAC,CAAC9hC,KAAM,UAC/C,IAAIlU,EAAM,MAAW,gBACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAmBg2C,GACnD,EAUA81C,EAAY1rF,UAAU0uF,oBAAsB,SAAU74C,GAClD,GAASA,EAAkB,mBAAoB,CAAC,CAAC/hC,KAAM,UACvD,IAAIlU,EAAM,MAAW,WACrBsC,KAAKgrF,cAActzD,IAAIh6B,EAAK,YAAmBi2C,GACnD,EAQA61C,EAAY1rF,UAAU2uF,aAAe,WAGjC,YAFuBrqF,IAAnBpC,KAAK0sF,YACL1sF,KAAK0sF,UAAY1sF,KAAKilF,WAAW9nF,QAC9B6C,KAAK0sF,SAChB,EAaAlD,EAAY1rF,UAAUmnF,SAAW,WAC7B,OAAOjlF,KAAKgqF,UAAUj3D,QAC1B,EAUAy2D,EAAY1rF,UAAU6uF,QAAU,SAAUtgF,GACtC,IAAIs0D,EAAQ3gE,KAAKilF,WAEjB,OADA9yD,GAAY9lB,EAAO,QAAS,EAAGs0D,EAAMxjE,OAAS,GACvCwjE,EAAMt0D,EACjB,EAgBAm9E,EAAY1rF,UAAU8uF,eAAiB,WACnC,O3H7ZW,SAAU3jC,EAAOC,GAEhC,IADA,IAAI99B,EAAM,IAAIrI,MAAMmmC,EAAMD,GACjBliC,EAAM,EAAGhB,EAAMqF,EAAIjuB,OAAQ4pB,EAAMhB,EAAKgB,IAC3CqE,EAAIrE,GAAOkiC,EAAQliC,EAEvB,OAAOqE,CACX,C2HuZeoZ,CAAM,EAAGxkC,KAAKysF,eACzB,EAYAjD,EAAY1rF,UAAU+uF,WAAa,SAAUxgF,GACzC,IAAIqgF,EAAY1sF,KAAKysF,eACrB,GAAuB,IAAnBzsF,KAAK0sF,UACL,MAAM,IAAI5Z,GACd3gD,GAAY9lB,EAAO,QAAS,EAAGqgF,EAAY,GAC3C1sF,KAAKgpF,QAAQvoB,eAAep0D,GAC5BrM,KAAK0sF,UAAYA,EAAY,CACjC,EAgCAlD,EAAY1rF,UAAUgvF,QAAU,SAAUt9B,GAEtC,OADA,GAASA,EAAM,OAAQ,CAAC,YAAa,CAAC,GAAS,WAAYzsC,QACpD/iB,KAAK+sF,WAAW/sF,KAAKysF,eAAgBj9B,EAChD,EAiCAg6B,EAAY1rF,UAAUivF,WAAa,SAAU1gF,EAAOmjD,GAChD,IAAIk9B,EAAY1sF,KAAKysF,eAGrB,GAFAt6D,GAAY9lB,EAAO,QAAS,EAAGqgF,GAC/B,GAASl9B,EAAM,OAAQ,CAAC,YAAa,CAAC,GAAS,WAAYzsC,SACtDysC,GAAQzsC,MAAMuO,QAAQk+B,GAAO,CAC9B,IAAIsZ,EAAO/lD,MAAMuO,QAAQk+B,GAAQA,EAAOm2B,GAAUK,IAClDx2B,EAAO,UAAexvD,OACjBgtF,QAAQ9sF,MAAMsvD,EAAMsZ,EAC7B,MACK,GAAItZ,EAAKmpB,MAAQ34E,KAClB,MAAM,IAAI6yE,GAEd,IAAInyC,EAAY1gC,KAAKgpF,QAAQ1oB,eAAe9Q,EAAKpvC,IAAK/T,GAKtD,OAJAmjD,EAAKhvB,KAAKC,UAAUC,GACpB1gC,KAAK6pF,QAAQnyD,IAAI83B,EAAKhvB,KAAMgvB,GAC5BxvD,KAAKgqF,UAAUh3D,aACfhzB,KAAK0sF,UAAYA,EAAY,EACtBl9B,CACX,EAmBAg6B,EAAY1rF,UAAUmvF,UAAY,SAAUC,EAAQxwB,GAChD,OAAOn5C,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAImtF,EAAQC,EAAUC,EAAatmE,EAAKhB,EAAKunE,EAASC,EAAYntE,EAClE,OAAO4D,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAGD,OAFA,GAAS+oE,EAAQ,SAAU,CAAC,CAAC1D,EAAa,iBAC1C,GAAS9sB,EAAS,UAAW,CAAC35C,QACvB,CAAC,EAAamqE,EAAOM,SAChC,KAAK,EAKD,IAJAnkE,EAAGjF,OACH+oE,EAAS,OAAoBD,EAAO11D,QAASx3B,KAAKw3B,SAClD41D,EAAWF,EAAOjI,WAClBoI,EAAc,IAAItqE,MAAM25C,EAAQv/D,QAC3B4pB,EAAM,EAAGhB,EAAM22C,EAAQv/D,OAAQ4pB,EAAMhB,EAAKgB,IAC3CumE,EAAUF,EAAS1wB,EAAQ31C,IAC3BwmE,EAAaJ,EAAO1qD,KAAK6qD,EAAQ9sD,MACjCpgB,EAAMpgB,KAAKw3B,QAAQqH,SAAS0uD,GAC5BF,EAAYtmE,GAAO,MAAWwmE,EAAYntE,EAAKpgB,MAEnD,MAAO,CAAC,EAAcqtF,GAElC,GACJ,GACJ,EAeA7D,EAAY1rF,UAAU2kC,KAAO,WACzB,OAAOlf,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIytF,EAASC,EAAc3mE,EAAKhB,EAChC,OAAO/B,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAAG,MAAO,CAAC,EAAaqlE,EAAYtrF,UACzC,KAAK,EAED,MAAO,CAAC,GADRuvF,EAAUpkE,EAAGjF,QACgB6oE,UAAUjtF,KAAMA,KAAK4sF,mBACtD,KAAK,EAED,IADAc,EAAerkE,EAAGjF,OACb2C,EAAM,EAAGhB,EAAM2nE,EAAavwF,OAAQ4pB,EAAMhB,EAAKgB,IAChD0mE,EAAQX,QAAQY,EAAa3mE,IAwBjC,YAtByB3kB,IAArBpC,KAAKkrF,aACLuC,EAAQzB,UAAUhsF,KAAKkrF,kBAEI9oF,IAA3BpC,KAAK4rF,mBACL6B,EAAQlB,gBAAgBvsF,KAAK4rF,wBAEPxpF,IAAtBpC,KAAKwrF,cACLiC,EAAQtB,WAAWnsF,KAAKwrF,mBAEOppF,IAA/BpC,KAAK6rF,uBACL4B,EAAQjB,oBAAoBxsF,KAAK6rF,4BAEVzpF,IAAvBpC,KAAK0rF,eACL+B,EAAQrB,YAAYpsF,KAAK0rF,oBAEHtpF,IAAtBpC,KAAKorF,cACLqC,EAAQxB,WAAWjsF,KAAKorF,mBAEJhpF,IAApBpC,KAAK8qF,YACL2C,EAAQ3B,SAAS9rF,KAAK8qF,YAE1B2C,EAAQ9D,kBAAoB3pF,KAAK2pF,kBAC1B,CAAC,EAAc8D,GAElC,GACJ,GACJ,EAyBAjE,EAAY1rF,UAAU6vF,cAAgB,SAAUzqF,EAAMytC,GAClD,GAASztC,EAAM,OAAQ,CAAC,WACxB,GAASytC,EAAQ,SAAU,CAAC,WAC5B,IAAIioC,EAAW,OAAuBjoC,EAAQztC,GAC1Ckd,EAAMpgB,KAAKw3B,QAAQoH,UACnBgvD,EAAa,MAAiBxtE,EAAKpgB,KAAM44E,GAC7C54E,KAAKqqF,YAAYnpF,KAAK0sF,EAC1B,EAwDApE,EAAY1rF,UAAU+vF,OAAS,SAAUC,EAAY5qF,EAAMlC,GAEvD,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BuiB,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIgmB,EAAO4yD,EAAUx4D,EAAK2tE,EAC1B,OAAO/pE,GAAYhkB,MAAM,SAAUqpB,GAe/B,OAdA,GAASykE,EAAY,aAAc,CAAC,SAAUzoE,WAAYiH,cAC1D,GAASppB,EAAM,OAAQ,CAAC,WACxB+uB,GAAkBjxB,EAAQwyC,SAAU,WAAY,CAAC,WACjDvhB,GAAkBjxB,EAAQyyC,YAAa,cAAe,CAAC,WACvDxhB,GAAkBjxB,EAAQ0yC,aAAc,uBAAwB,CAAC9hC,OACjEqgB,GAAkBjxB,EAAQ2yC,iBAAkB,2BAA4B,CACpE/hC,OAEJ8f,GAAyB1wB,EAAQ4yC,eAAgB,yBAA0BR,IAC3EptB,EAAQgG,GAAa8hE,GACrBlV,EAAW,OAAiB5yD,EAAO9iB,EAAMlC,GACzCof,EAAMpgB,KAAKw3B,QAAQoH,UACnBmvD,EAAe,MAAmB3tE,EAAKpgB,KAAM44E,GAC7C54E,KAAKoqF,cAAclpF,KAAK6sF,GACjB,CAAC,EACZ,GACJ,GACJ,EAoCAvE,EAAY1rF,UAAUkwF,UAAY,SAAU/+D,EAAMjuB,GAE9C,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BuiB,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAIqpB,EAAQnI,EAAY0jD,EAAUrV,EAAU5yD,EAAO8nB,EAASvkB,EAAInJ,EAAK8tE,EACzE,OAAOlqE,GAAYhkB,MAAM,SAAUypB,GAC/B,OAAQA,EAAGtF,OACP,KAAK,EAID,OAHAkF,EAAKroB,EAAQ0xC,OAAQA,OAAgB,IAAPrpB,GAAwBA,EAAIkhB,EAAavpC,EAAQupC,WAAY0jD,EAAWjtF,EAAQitF,SAC9G,GAASh/D,EAAM,OAAQ,CAAC,SAAU5J,WAAYiH,cAC9C,GAASomB,EAAQ,SAAU,CAAC,YACvB5hB,GAAe7B,IACpB2pD,EAAW,OAAyB3pD,EAAMsb,GACnC,CAAC,EAAa,IAFa,CAAC,EAAa,GAGpD,KAAK,EACD,O3H3vB0BlqB,E2H2vBM4O,a3H1vB5B5J,YACpBhF,aAAiBiM,aACA,iBAAVjM,G2HyvBS2F,EAAQgG,GAAaiD,GACrB6e,EAAU9tC,KAAKmuF,gBACVz7C,EACE,CAAC,EAAa,OAA6B5E,EAAS9nB,EAAOukB,EAAY0jD,IAD1D,CAAC,EAAa,IAHY,CAAC,EAAa,GAKhE,KAAK,EAED,OADA1kE,EAAKE,EAAGrF,OACD,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,OAAuB0pB,EAAS9nB,EAAOukB,EAAY0jD,IAChF,KAAK,EACD1kE,EAAKE,EAAGrF,OACRqF,EAAGtF,MAAQ,EACf,KAAK,EAED,OADAy0D,EAAWrvD,EACJ,CAAC,EAAa,GACzB,KAAK,EAAG,MAAM,IAAIzsB,UAAU,6EAC5B,KAAK,EAID,OAHAsjB,EAAMpgB,KAAKw3B,QAAQoH,UACnBsvD,EAAU,MAAW9tE,EAAKpgB,KAAM44E,GAChC54E,KAAKkqF,MAAMhpF,KAAKgtF,GACT,CAAC,EAAcA,G3H/wBN,IAAU7tE,C2HixBtC,GACJ,GACJ,EAYAmpE,EAAY1rF,UAAUskF,kBAAoB,SAAUnzD,EAAMsb,GAEtD,GADA,GAAStb,EAAM,OAAQ,CAAC,YACnB6B,GAAe7B,GAChB,MAAM,IAAInyB,UAAU,8CAExB,IAAI87E,EAAW,OAAyB3pD,EAAMsb,GAC1CnqB,EAAMpgB,KAAKw3B,QAAQoH,UACnBsvD,EAAU,MAAW9tE,EAAKpgB,KAAM44E,GAEpC,OADA54E,KAAKkqF,MAAMhpF,KAAKgtF,GACTA,CACX,EA+BA1E,EAAY1rF,UAAUswF,SAAW,SAAUC,GACvC,OAAO9qE,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIgmB,EAAO4yD,EAAUx4D,EAAKkuE,EAC1B,OAAOtqE,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAGD,OAFA,GAASkqE,EAAK,MAAO,CAAC,SAAUhpE,WAAYiH,cAC5CtG,EAAQgG,GAAaqiE,GACd,CAAC,EAAa,OAAiBroE,IAC1C,KAAK,EAKD,OAJA4yD,EAAWvvD,EAAGjF,OACdhE,EAAMpgB,KAAKw3B,QAAQoH,UACnB0vD,EAAW,MAAYluE,EAAKpgB,KAAM44E,GAClC54E,KAAKmM,OAAOjL,KAAKotF,GACV,CAAC,EAAcA,GAElC,GACJ,GACJ,EA+BA9E,EAAY1rF,UAAUywF,SAAW,SAAU3lC,GACvC,OAAOrlC,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIgmB,EAAO4yD,EAAUx4D,EAAKkuE,EAC1B,OAAOtqE,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAGD,OAFA,GAASykC,EAAK,MAAO,CAAC,SAAUvjC,WAAYiH,cAC5CtG,EAAQgG,GAAa48B,GACd,CAAC,EAAa,OAAgB5iC,IACzC,KAAK,EAKD,OAJA4yD,EAAWvvD,EAAGjF,OACdhE,EAAMpgB,KAAKw3B,QAAQoH,UACnB0vD,EAAW,MAAYluE,EAAKpgB,KAAM44E,GAClC54E,KAAKmM,OAAOjL,KAAKotF,GACV,CAAC,EAAcA,GAElC,GACJ,GACJ,EAqBA9E,EAAY1rF,UAAU0wF,SAAW,SAAUjE,EAAK7tB,GAE5C,YADgB,IAAZA,IAAsBA,EAAU,CAAC,IAC9Bn5C,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAYqpB,EAAI+jE,EAChB,OAAOppE,GAAYhkB,MAAM,SAAUupB,GAC/B,OAAQA,EAAGpF,OACP,KAAK,EAQD,OAPA,GAASomE,EAAK,MAAO,CACjB,SACAllE,WACAiH,YACA,CAACk9D,EAAa,iBAElB,GAAS9sB,EAAS,UAAW,CAAC35C,QACxBwnE,aAAef,GACrBngE,EAAKkhE,EACE,CAAC,EAAa,IAFqB,CAAC,EAAa,GAG5D,KAAK,EAAG,MAAO,CAAC,EAAaf,EAAYxlF,KAAKumF,IAC9C,KAAK,EACDlhE,EAAKE,EAAGnF,OACRmF,EAAGpF,MAAQ,EACf,KAAK,EAGD,OADAipE,E3H97BE,SAAUhiE,EAAKsxC,GAErC,IADA,IAAI+xB,EAAU,IAAI1rE,MAAM25C,EAAQv/D,QACvB4pB,EAAM,EAAGhB,EAAM22C,EAAQv/D,OAAQ4pB,EAAMhB,EAAKgB,IAC/C0nE,EAAQ1nE,GAAOqE,EAAIsxC,EAAQ31C,IAE/B,OAAO0nE,CACX,C2Hw7BmCC,CADFrlE,EACsB47D,WAAYvoB,GACpC,CAAC,EAAc18D,KAAK2uF,WAAWvB,IAElD,GACJ,GACJ,EAiCA5D,EAAY1rF,UAAU8wF,UAAY,SAAUp/B,EAAMC,EAAaC,GAC3D,OAAOnsC,GAAUvjB,UAAM,OAAQ,GAAQ,WAEnC,OAAOgkB,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAED,OADA,GAASqrC,EAAM,OAAQ,CAAC,CAAC,GAAS,aAC3B,CAAC,EAAaxvD,KAAK2uF,WAAW,CAACn/B,GAAO,CAACC,GAAc,CAACC,KACjE,KAAK,EAED,MAAO,CAAC,EADQrmC,EAAGjF,OAAQ,IAGvC,GACJ,GACJ,EA6BAolE,EAAY1rF,UAAU6wF,WAAa,SAAUhuB,EAAOkuB,EAAeC,GAG/D,YAFsB,IAAlBD,IAA4BA,EAAgB,SACjB,IAA3BC,IAAqCA,EAAyB,IAC3DvrE,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAc+uF,EAAUC,EAAUx3D,EAASy3D,EAAe9E,EAAepjE,EAAKhB,EAAKypC,EAAM0/B,EAAKC,EAAQvW,EAAUx4D,EAC5GiJ,EACJ,OAAOrF,GAAYhkB,MAAM,SAAUupB,GAC/B,OAAQA,EAAGpF,OACP,KAAK,EACD,GAAqB,IAAjBw8C,EAAMxjE,OACN,MAAO,CAAC,EAAc,IAE1B,IAAK4pB,EAAM,EAAGhB,EAAM46C,EAAMxjE,OAAS,EAAG4pB,EAAMhB,EAAKgB,IAG7C,GAFAgoE,EAAWpuB,EAAM55C,GACjBioE,EAAWruB,EAAM55C,EAAM,GACnBgoE,EAASvuD,KAAKhJ,UAAYw3D,EAASxuD,KAAKhJ,QACxC,MAAM,IAAIvD,GAGlBuD,EAAUmpC,EAAM,GAAGngC,KAAKhJ,QACxBy3D,EAAgBz3D,IAAYx3B,KAAKw3B,QAC3B,SAAU54B,GAAK,OAAOA,CAAG,EACzB,OAAoB44B,EAASx3B,KAAKw3B,SAASiL,KACjD0nD,EAAgB,IAAIpnE,MAAM49C,EAAMxjE,QAChC4pB,EAAM,EAAGhB,EAAM46C,EAAMxjE,OACrBosB,EAAGpF,MAAQ,EACf,KAAK,EACD,OAAM4C,EAAMhB,GACZypC,EAAOy/B,EAActuB,EAAM55C,GAAKyZ,MAChC0uD,EAAML,EAAc9nE,GACpBooE,EAASL,EAAuB/nE,GACzB,CAAC,EAAa,OAAoByoC,EAAM0/B,EAAKC,KAJ3B,CAAC,EAAa,GAK3C,KAAK,EACDvW,EAAWrvD,EAAGnF,OACdhE,EAAMpgB,KAAKw3B,QAAQoH,UACnBurD,EAAcpjE,GAAO,MAAmB3G,EAAKpgB,KAAM44E,GACnDrvD,EAAGpF,MAAQ,EACf,KAAK,EAED,OADA4C,IACO,CAAC,EAAa,GACzB,KAAK,EAED,OADCsC,EAAKrpB,KAAKmqF,eAAejpF,KAAKhB,MAAMmpB,EAAI8gE,GAClC,CAAC,EAAcA,GAElC,GACJ,GACJ,EAWAX,EAAY1rF,UAAU0vF,MAAQ,WAC1B,OAAOjqE,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,OAAOgkB,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EAAG,MAAO,CAAC,EAAankB,KAAKovF,SAASpvF,KAAKkqF,QAChD,KAAK,EAED,OADA7gE,EAAGjF,OACI,CAAC,EAAapkB,KAAKovF,SAASpvF,KAAKmM,SAC5C,KAAK,EAED,OADAkd,EAAGjF,OACI,CAAC,EAAapkB,KAAKovF,SAASpvF,KAAKmqF,gBAC5C,KAAK,EAED,OADA9gE,EAAGjF,OACI,CAAC,EAAapkB,KAAKovF,SAASpvF,KAAKoqF,gBAC5C,KAAK,EAED,OADA/gE,EAAGjF,OACI,CAAC,EAAapkB,KAAKovF,SAASpvF,KAAKqqF,cAC5C,KAAK,EAED,OADAhhE,EAAGjF,OACI,CAAC,GAEpB,GACJ,GACJ,EAiBAolE,EAAY1rF,UAAUuxF,KAAO,SAAUruF,GAEnC,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BuiB,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAIimE,EAAkB/lE,EAAIgmE,EAAgB9lE,EAAI4c,EAAgB1c,EAAI06D,EAAwBwG,EAC9F,OAAO7mE,GAAYhkB,MAAM,SAAU6pB,GAC/B,OAAQA,EAAG1F,OACP,KAAK,EAaD,OAZAkF,EAAKroB,EAAQsuF,iBAAkBA,OAA0B,IAAPjmE,GAAuBA,EAAIE,EAAKvoB,EAAQuuF,eAAgBA,OAAwB,IAAPhmE,GAAuBA,EAAIE,EAAKzoB,EAAQqlC,eAAgBA,OAAwB,IAAP5c,EAAgB,GAAKA,EAAIE,EAAK3oB,EAAQqjF,uBAAwBA,OAAgC,IAAP16D,GAAuBA,EAClT,GAAS2lE,EAAkB,mBAAoB,CAAC,YAChD,GAASC,EAAgB,iBAAkB,CAAC,YAC5C,GAASlpD,EAAgB,iBAAkB,CAAC,WAC5C,GAASg+C,EAAwB,yBAA0B,CAAC,YACxDkL,GAA0C,IAAxBvvF,KAAKysF,gBACvBzsF,KAAK8sF,UACLzI,IACAwG,EAAO7qF,KAAKiqF,UAAUn3D,aAElB+3D,EAAKxG,yBAEN,CAAC,EAAarkF,KAAKwtF,SAC9B,KAAK,EAGD,OAFA3jE,EAAGzF,OAEI,CAAC,GADCkrE,EAAmB,GAAkB,IACjBhoD,WAAWtnC,KAAKw3B,QAAS6O,GAAgBG,qBAElF,GACJ,GACJ,EAgBAgjD,EAAY1rF,UAAU0xF,aAAe,SAAUxuF,GAE3C,YADgB,IAAZA,IAAsBA,EAAU,CAAC,GAC9BuiB,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAIqpB,EAAI4C,EAASwjE,EAAczpE,EAAOP,EACtC,OAAOzB,GAAYhkB,MAAM,SAAUupB,GAC/B,OAAQA,EAAGpF,OACP,KAAK,EAGD,OAFAkF,EAAKroB,EAAQirB,QAASA,OAAiB,IAAP5C,GAAwBA,EAAIomE,E/HhuC7E,SAAgBpsE,EAAGhkB,GACtB,IAAI+jB,EAAI,CAAC,EACT,IAAK,IAAIxkB,KAAKykB,EAAO7lB,OAAOM,UAAUwC,eAAelB,KAAKikB,EAAGzkB,IAAMS,EAAEyQ,QAAQlR,GAAK,IAC9EwkB,EAAExkB,GAAKykB,EAAEzkB,IACb,GAAS,MAALykB,GAAqD,mBAAjC7lB,OAAOkyF,sBACtB,KAAIxyF,EAAI,EAAb,IAAgB0B,EAAIpB,OAAOkyF,sBAAsBrsE,GAAInmB,EAAI0B,EAAEzB,OAAQD,IAC3DmC,EAAEyQ,QAAQlR,EAAE1B,IAAM,GAAKM,OAAOM,UAAU6xF,qBAAqBvwF,KAAKikB,EAAGzkB,EAAE1B,MACvEkmB,EAAExkB,EAAE1B,IAAMmmB,EAAEzkB,EAAE1B,IAF4B,CAItD,OAAOkmB,CACX,C+HstCmGwsE,CAAO5uF,EAAS,CAAC,YAC5F,GAASirB,EAAS,UAAW,CAAC,YACvB,CAAC,EAAajsB,KAAKqvF,KAAKI,IACnC,KAAK,EAGD,OAFAzpE,EAAQuD,EAAGnF,OACXqB,E9H5vCI,SAAUO,GAGlC,IAFA,IAAIP,EAAS,GACTM,EAAMC,EAAM7oB,OACPD,EAAI,EAAGA,EAAI6oB,EAAK7oB,GAAK,EAC1BuoB,GAAUN,GAAMa,EAAM9oB,IAAM,GAC5BuoB,GAAUN,IAAmB,EAAXa,EAAM9oB,KAAW,EAAM8oB,EAAM9oB,EAAI,IAAM,GACzDuoB,GAAUN,IAAuB,GAAfa,EAAM9oB,EAAI,KAAY,EAAM8oB,EAAM9oB,EAAI,IAAM,GAC9DuoB,GAAUN,GAAqB,GAAfa,EAAM9oB,EAAI,IAQ9B,OANI6oB,EAAM,GAAM,EACZN,EAASA,EAAO8E,UAAU,EAAG9E,EAAOtoB,OAAS,GAAK,IAE7C4oB,EAAM,GAAM,IACjBN,EAASA,EAAO8E,UAAU,EAAG9E,EAAOtoB,OAAS,GAAK,MAE/CsoB,CACX,C8H4uCiCoqE,CAAe7pE,GACjB,CAAC,EAAciG,EAAU,+BAAiCxG,EAASA,GAEtF,GACJ,GACJ,EACA+jE,EAAY1rF,UAAUonF,yBAA2B,SAAU9kE,GAEvD,IADA,IAAIugD,EAAQ3gE,KAAKilF,WACRl+D,EAAM,EAAGhB,EAAM46C,EAAMxjE,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACpD,IAAIyoC,EAAOmR,EAAM55C,GACb+oE,EAActgC,EAAKhvB,KAAK/F,SAC5B,QAA6Fr4B,KAAxF0tF,aAAiD,EAASA,EAAYhgF,QAAQsQ,IAC/E,OAAOovC,CAEf,CAEJ,EACAg6B,EAAY1rF,UAAUsxF,SAAW,SAAUW,GACvC,OAAOxsE,GAAUvjB,UAAM,OAAQ,GAAQ,WACnC,IAAI+mB,EAAKhB,EACT,OAAO/B,GAAYhkB,MAAM,SAAUqpB,GAC/B,OAAQA,EAAGlF,OACP,KAAK,EACD4C,EAAM,EAAGhB,EAAMgqE,EAAY5yF,OAC3BksB,EAAGlF,MAAQ,EACf,KAAK,EACD,OAAM4C,EAAMhB,EACL,CAAC,EAAagqE,EAAYhpE,GAAK+xD,SADb,CAAC,EAAa,GAE3C,KAAK,EACDzvD,EAAGjF,OACHiF,EAAGlF,MAAQ,EACf,KAAK,EAED,OADA4C,IACO,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,GAExB,GACJ,GACJ,EACAyiE,EAAY1rF,UAAUwsF,eAAiB,WACnC,IAAI0F,EAAS,+CACTn+E,EAAM,IAAID,KACVq+E,EAAOjwF,KAAKgrF,cAChBhrF,KAAKosF,YAAY4D,GACjBhwF,KAAKwsF,oBAAoB36E,GACpBo+E,EAAKzvF,IAAI,MAAW,aACrBR,KAAKmsF,WAAW6D,GACfC,EAAKzvF,IAAI,MAAW,kBACrBR,KAAKusF,gBAAgB16E,EAC7B,EACA23E,EAAY1rF,UAAUktF,YAAc,WAChC,IAAIkF,EAAelwF,KAAKw3B,QAAQpS,OAAOplB,KAAKw3B,QAAQiH,YAAYyI,MAChE,GAAIgpD,aAAwB,GACxB,OAAOA,EACX,IAAIC,EAAUnwF,KAAKw3B,QAAQ5G,IAAI,CAAC,GAEhC,OADA5wB,KAAKw3B,QAAQiH,YAAYyI,KAAOlnC,KAAKw3B,QAAQqH,SAASsxD,GAC/CA,CACX,EACA3G,EAAY1rF,UAAUqwF,cAAgB,WAClC,IAAKnuF,KAAK8tC,QACN,MAAM,IAAI8kC,GACd,OAAO5yE,KAAK8tC,OAChB,EACO07C,CACX,CA3zCgC,GA4zChC,YAEA,SAASyB,GAA2BlsD,GAChC,KAAMA,aAAqB,IACrBA,aAAqB,IACvB,MAAM,IAAIzL,GAA0B,CAAC,GAAc,IAAYyL,EAEvE,CCr1CO,IAAIqxD,IACX,SAAWA,GACPA,EAAkB,OAAI,SACtBA,EAAoB,SAAI,WACxBA,EAAkB,OAAI,SACtBA,EAAmB,QAAI,UACvBA,EAAkB,OAAI,SACtBA,EAAmB,QAAI,UACvBA,EAAsB,WAAI,aAC1BA,EAAqB,UAAI,YACzBA,EAAqB,UAAI,YACzBA,EAAqB,UAAI,YACzBA,EAAsB,WAAI,aAC1BA,EAAqB,UAAI,WAC5B,CAbD,CAaGA,KAAcA,GAAY,CAAC,ICE9B,IAAIC,GAAyB,WACzB,SAASA,EAAQC,EAAUlwE,EAAKu4D,GAC5B34E,KAAK+1D,SAAW,GAChB/1D,KAAKuwF,UAAYhlB,GAAI,EAAG,EAAG,GAC3BvrE,KAAKi1E,WAAa,GAClBj1E,KAAKiH,EAAI,EACTjH,KAAKikB,EAAI,EACT,GAASqsE,EAAU,WAAY,CAAC,CAAC,GAAa,iBAC9C,GAASlwE,EAAK,MAAO,CAAC,CAAC,GAAQ,YAC/B,GAASu4D,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC34E,KAAKwgC,KAAO8vD,EACZtwF,KAAKogB,IAAMA,EACXpgB,KAAK24E,IAAMA,CACf,CA+3CA,OAj3CA0X,EAAQvyF,UAAUk7D,YAAc,SAAUsP,GACtC,IAAI8S,EAAe1S,GAAUJ,GAC7Bj2C,GAAe+oD,EAAc,eAAgB,IAC7Cp7E,KAAKwgC,KAAK9I,IAAI,MAAW,UAAW13B,KAAK24E,IAAInhD,QAAQ5G,IAAIwqD,GAC7D,EASAiV,EAAQvyF,UAAU46D,YAAc,WAC5B,IAAI59B,EAAS96B,KAAKwgC,KAAK1F,SACvB,OAAOqtC,GAAQrtC,EAASA,EAAOzD,WAAa,EAChD,EAqCAg5D,EAAQvyF,UAAUkvF,QAAU,SAAUhkE,EAAOgI,GACzC,GAAShI,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAI2+B,EAAW3vD,KAAKwwF,cACpBxwF,KAAKywF,YAAY9gC,EAAS1oD,EAAG0oD,EAAS1rC,EAAG+E,EAAOgI,GAChD,IAAI0/D,EAAU1wF,KAAK2wF,aACfC,EAAW5wF,KAAK6wF,cAChBC,EAAU9wF,KAAK+wF,aACfC,EAAShxF,KAAKixF,YACdC,EAAalxF,KAAKwgC,KAAK3F,UACvBs2D,EAAcnxF,KAAKwgC,KAAK5F,WACxBw2D,EAAapxF,KAAKwgC,KAAK9F,UACvB22D,EAAYrxF,KAAKwgC,KAAK7F,SACtBu2D,GAAcngE,GAAmB2/D,EAAS/gC,IAC1C3vD,KAAKsxF,WAAW3hC,EAAS1oD,EAAG0oD,EAAS1rC,EAAG+E,EAAOgI,GAE/CmgE,GAAepgE,GAAmB6/D,EAAUjhC,IAC5C3vD,KAAKuxF,YAAY5hC,EAAS1oD,EAAG0oD,EAAS1rC,EAAG+E,EAAOgI,GAEhDogE,GAAcrgE,GAAmB+/D,EAASnhC,IAC1C3vD,KAAKwxF,WAAW7hC,EAAS1oD,EAAG0oD,EAAS1rC,EAAG+E,EAAOgI,GAE/CqgE,GAAatgE,GAAmBigE,EAAQrhC,IACxC3vD,KAAKyxF,UAAU9hC,EAAS1oD,EAAG0oD,EAAS1rC,EAAG+E,EAAOgI,EAEtD,EAaAq/D,EAAQvyF,UAAUg5D,SAAW,SAAU9tC,GACnC,GAASA,EAAO,QAAS,CAAC,WAC1BhpB,KAAKgtF,QAAQhkE,EAAOhpB,KAAK0xF,UAAU1gE,OACvC,EAaAq/D,EAAQvyF,UAAU6zF,UAAY,SAAU3gE,GACpC,GAASA,EAAQ,SAAU,CAAC,WAC5BhxB,KAAKgtF,QAAQhtF,KAAK0xF,UAAU1oE,MAAOgI,EACvC,EAkBAq/D,EAAQvyF,UAAU2yF,YAAc,SAAUxpF,EAAGgd,EAAG+E,EAAOgI,GACnD,GAAS/pB,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClB,GAAS+E,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAI2+B,EAAW3vD,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC3pB,EAAGgd,EAAGhd,EAAI+hB,EAAO/E,EAAI+M,IAC1DhxB,KAAKwgC,KAAK9I,IAAI,YAAkBi4B,EACpC,EAkBA0gC,EAAQvyF,UAAUwzF,WAAa,SAAUrqF,EAAGgd,EAAG+E,EAAOgI,GAClD,GAAS/pB,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClB,GAAS+E,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAI0/D,EAAU1wF,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC3pB,EAAGgd,EAAGhd,EAAI+hB,EAAO/E,EAAI+M,IACzDhxB,KAAKwgC,KAAK9I,IAAI,WAAiBg5D,EACnC,EAkBAL,EAAQvyF,UAAUyzF,YAAc,SAAUtqF,EAAGgd,EAAG+E,EAAOgI,GACnD,GAAS/pB,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClB,GAAS+E,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAI4/D,EAAW5wF,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC3pB,EAAGgd,EAAGhd,EAAI+hB,EAAO/E,EAAI+M,IAC1DhxB,KAAKwgC,KAAK9I,IAAI,YAAkBk5D,EACpC,EAkBAP,EAAQvyF,UAAU0zF,WAAa,SAAUvqF,EAAGgd,EAAG+E,EAAOgI,GAClD,GAAS/pB,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClB,GAAS+E,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAI8/D,EAAU9wF,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC3pB,EAAGgd,EAAGhd,EAAI+hB,EAAO/E,EAAI+M,IACzDhxB,KAAKwgC,KAAK9I,IAAI,WAAiBo5D,EACnC,EAkBAT,EAAQvyF,UAAU2zF,UAAY,SAAUxqF,EAAGgd,EAAG+E,EAAOgI,GACjD,GAAS/pB,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClB,GAAS+E,EAAO,QAAS,CAAC,WAC1B,GAASgI,EAAQ,SAAU,CAAC,WAC5B,IAAIggE,EAAShxF,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC3pB,EAAGgd,EAAGhd,EAAI+hB,EAAO/E,EAAI+M,IACxDhxB,KAAKwgC,KAAK9I,IAAI,UAAgBs5D,EAClC,EAYAX,EAAQvyF,UAAU4zF,QAAU,WACxB,IAAIroE,EAAKrpB,KAAKwwF,cACd,MAAO,CAAExnE,MAD4BK,EAAGL,MACjBgI,OADiC3H,EAAG2H,OAE/D,EAWAq/D,EAAQvyF,UAAU+4D,SAAW,WACzB,OAAO72D,KAAK0xF,UAAU1oE,KAC1B,EAWAqnE,EAAQvyF,UAAU8zF,UAAY,WAC1B,OAAO5xF,KAAK0xF,UAAU1gE,MAC1B,EAkBAq/D,EAAQvyF,UAAU0yF,YAAc,WAE5B,OADexwF,KAAKwgC,KAAKjG,WACT3C,aACpB,EAiBAy4D,EAAQvyF,UAAU6yF,WAAa,WAC3B,IAAItnE,EACAqnE,EAAU1wF,KAAKwgC,KAAK3F,UACxB,OAA0F,QAAlFxR,EAAKqnE,aAAyC,EAASA,EAAQ94D,qBAAkC,IAAPvO,EAAgBA,EAAKrpB,KAAKwwF,aAChI,EAkBAH,EAAQvyF,UAAU+yF,YAAc,WAC5B,IAAIxnE,EACAunE,EAAW5wF,KAAKwgC,KAAK5F,WACzB,OAA6F,QAArFvR,EAAKunE,aAA2C,EAASA,EAASh5D,qBAAkC,IAAPvO,EAAgBA,EAAKrpB,KAAK2wF,YACnI,EAiBAN,EAAQvyF,UAAUizF,WAAa,WAC3B,IAAI1nE,EACAynE,EAAU9wF,KAAKwgC,KAAK9F,UACxB,OAA0F,QAAlFrR,EAAKynE,aAAyC,EAASA,EAAQl5D,qBAAkC,IAAPvO,EAAgBA,EAAKrpB,KAAK2wF,YAChI,EAeAN,EAAQvyF,UAAUmzF,UAAY,WAC1B,IAAI5nE,EACA2nE,EAAShxF,KAAKwgC,KAAK7F,SACvB,OAAuF,QAA/EtR,EAAK2nE,aAAuC,EAASA,EAAOp5D,qBAAkC,IAAPvO,EAAgBA,EAAKrpB,KAAK2wF,YAC7H,EAkBAN,EAAQvyF,UAAU+zF,iBAAmB,SAAU5qF,EAAGgd,GAC9C,GAAShd,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClBjkB,KAAKwgC,KAAKyB,YACVjiC,KAAK8xF,mBACL,IAAI7oC,EAAQjpD,KAAK+xF,oBAAoB,KAAqB5qF,GAAUF,EAAGgd,IACnE+tE,EAAWhyF,KAAK24E,IAAInhD,QAAQqH,SAASoqB,GACrCC,EAAMlpD,KAAK+xF,oBAAoB,MAC/BE,EAASjyF,KAAK24E,IAAInhD,QAAQqH,SAASqqB,GACvClpD,KAAKwgC,KAAKM,mBAAmBkxD,EAAUC,EAC3C,EAcA5B,EAAQvyF,UAAU2vC,MAAQ,SAAUxmC,EAAGgd,GACnC,GAAShd,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClBjkB,KAAKgtF,QAAQhtF,KAAK62D,WAAa5vD,EAAGjH,KAAK4xF,YAAc3tE,GACrDjkB,KAAKkyF,aAAajrF,EAAGgd,GACrBjkB,KAAKmyF,iBAAiBlrF,EAAGgd,EAC7B,EAmBAosE,EAAQvyF,UAAUo0F,aAAe,SAAUjrF,EAAGgd,GAC1C,GAAShd,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClBjkB,KAAKwgC,KAAKyB,YACVjiC,KAAK8xF,mBACL,IAAI7oC,EAAQjpD,KAAK+xF,oBAAoB,KAAqBtkD,GAAMxmC,EAAGgd,IAC/D+tE,EAAWhyF,KAAK24E,IAAInhD,QAAQqH,SAASoqB,GACrCC,EAAMlpD,KAAK+xF,oBAAoB,MAC/BE,EAASjyF,KAAK24E,IAAInhD,QAAQqH,SAASqqB,GACvClpD,KAAKwgC,KAAKM,mBAAmBkxD,EAAUC,EAC3C,EAiBA5B,EAAQvyF,UAAUq0F,iBAAmB,SAAUlrF,EAAGgd,GAC9C,GAAShd,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClB,IAAImuE,EAASpyF,KAAKwgC,KAAK/F,SACvB,GAAK23D,EAEL,IAAK,IAAIrrE,EAAM,EAAGA,EAAMqrE,EAAOj+D,OAAQpN,IAAO,CAC1C,IAAIsrE,EAAQD,EAAOhtE,OAAO2B,GACtBsrE,aAAiB,IACjBryF,KAAKsyF,WAAWD,EAAOprF,EAAGgd,EAClC,CACJ,EAkBAosE,EAAQvyF,UAAUy0F,cAAgB,WAC9BvyF,KAAK8xF,kBAAiB,GACtB9xF,KAAKiH,EAAI,EACTjH,KAAKikB,EAAI,CACb,EAqBAosE,EAAQvyF,UAAU00F,QAAU,SAAUvjE,GAElC,GAASA,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCjvB,KAAKivB,KAAOA,EACZjvB,KAAKyyF,QAAUzyF,KAAKwgC,KAAKe,kBAAkBvhC,KAAKivB,KAAK/rB,KAAMlD,KAAKivB,KAAK7O,IACzE,EAeAiwE,EAAQvyF,UAAUg4D,YAAc,SAAUC,GACtC,GAASA,EAAU,WAAY,CAAC,WAChC/1D,KAAK+1D,SAAWA,CACpB,EAiBAs6B,EAAQvyF,UAAU40F,aAAe,SAAUnC,GACvC,GAASA,EAAW,YAAa,CAAC,CAAC/yF,OAAQ,WAC3CwC,KAAKuwF,UAAYA,CACrB,EAiBAF,EAAQvyF,UAAU60F,cAAgB,SAAU1d,GACxC,GAASA,EAAY,aAAc,CAAC,WACpCj1E,KAAKi1E,WAAaA,CACtB,EAQAob,EAAQvyF,UAAU80F,YAAc,WAC5B,MAAO,CAAE3rF,EAAGjH,KAAKiH,EAAGgd,EAAGjkB,KAAKikB,EAChC,EAQAosE,EAAQvyF,UAAU+0F,KAAO,WACrB,OAAO7yF,KAAKiH,CAChB,EAQAopF,EAAQvyF,UAAUg1F,KAAO,WACrB,OAAO9yF,KAAKikB,CAChB,EAgBAosE,EAAQvyF,UAAU2kE,OAAS,SAAUx7D,EAAGgd,GACpC,GAAShd,EAAG,IAAK,CAAC,WAClB,GAASgd,EAAG,IAAK,CAAC,WAClBjkB,KAAKiH,EAAIA,EACTjH,KAAKikB,EAAIA,CACb,EAcAosE,EAAQvyF,UAAUi1F,SAAW,SAAUC,GACnC,GAASA,EAAW,YAAa,CAAC,WAClChzF,KAAKikB,GAAK+uE,CACd,EAcA3C,EAAQvyF,UAAUm1F,OAAS,SAAUC,GACjC,GAASA,EAAW,YAAa,CAAC,WAClClzF,KAAKikB,GAAKivE,CACd,EAcA7C,EAAQvyF,UAAUq1F,SAAW,SAAUC,GACnC,GAASA,EAAW,YAAa,CAAC,WAClCpzF,KAAKiH,GAAKmsF,CACd,EAcA/C,EAAQvyF,UAAUu1F,UAAY,SAAUC,GACpC,GAASA,EAAW,YAAa,CAAC,WAClCtzF,KAAKiH,GAAKqsF,CACd,EA8BAjD,EAAQvyF,UAAU6mF,cAAgB,WAE9B,IADA,IAAI4O,EAAW,GACNzoE,EAAK,EAAGA,EAAK7qB,UAAU9C,OAAQ2tB,IACpCyoE,EAASzoE,GAAM7qB,UAAU6qB,GAE7BoH,GAAaqhE,EAAU,WAAY,CAAC,CAAC,GAAa,iBAClD,IAAIn0D,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,EAAem0D,EAC5C,EAsCAlD,EAAQvyF,UAAU01F,SAAW,SAAU7mF,EAAM3L,GACzC,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,OACZ,IAAZjpB,IAAsBA,EAAU,CAAC,GACrC,GAAS2L,EAAM,OAAQ,CAAC,WACxBslB,GAAkBjxB,EAAQm4D,MAAO,gBAAiB,CAAC,CAAC37D,OAAQ,WAC5D40B,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9DxhE,GAAkBjxB,EAAQiuB,KAAM,eAAgB,CAAC,CAAC,GAAS,aAC3DgD,GAAkBjxB,EAAQmzB,KAAM,eAAgB,CAAC,WACjDlC,GAAkBjxB,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,cAC9Dy0B,GAAkBjxB,EAAQ4uE,MAAO,gBAAiB,CAAC,CAACpyE,OAAQ,cAC5Dy0B,GAAkBjxB,EAAQ6uE,MAAO,gBAAiB,CAAC,CAACryE,OAAQ,cAC5Dy0B,GAAkBjxB,EAAQiG,EAAG,YAAa,CAAC,WAC3CgrB,GAAkBjxB,EAAQijB,EAAG,YAAa,CAAC,WAC3CgO,GAAkBjxB,EAAQi0E,WAAY,qBAAsB,CAAC,WAC7DhjD,GAAkBjxB,EAAQgnB,SAAU,mBAAoB,CAAC,WACzDiK,GAAkBjxB,EAAQ+mB,WAAY,qBAAsB,CAAChF,QAC7D2O,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IASjE,IARA,IAAIjmE,EAAKnqB,KAAK2zF,eAAe3yF,EAAQiuB,MAAO2kE,EAAUzpE,EAAGypE,QAASC,EAAU1pE,EAAG0pE,QAASC,EAAa3pE,EAAG2pE,WACpG/9B,EAAW/0D,EAAQmzB,MAAQn0B,KAAK+1D,SAChChuC,EAAa/mB,EAAQ+mB,YAAc/nB,KAAK24E,IAAIgR,kBAE5C9gE,OAA6BzmB,IAArBpB,EAAQgnB,SACdR,GAAUJ,GAAUza,IACpBmb,GAAmBnb,EAAMob,EAAY/mB,EAAQgnB,UAHnC,SAAU5E,GAAK,OAAOywE,EAAQhpD,kBAAkBznB,EAAG2yC,EAAW,IAI1Eg+B,EAAe,IAAIhxE,MAAM8F,EAAM1rB,QAC1B4pB,EAAM,EAAGhB,EAAM8C,EAAM1rB,OAAQ4pB,EAAMhB,EAAKgB,IAC7CgtE,EAAahtE,GAAO8sE,EAAQppD,WAAW5hB,EAAM9B,IAEjD,IAAIitE,EAAmBh0F,KAAKi0F,wBAAwB,CAChDR,QAASzyF,EAAQyyF,QACjBC,UAAW1yF,EAAQ0yF,YAEnBt0D,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,ExB30BJ,SAAUvW,EAAO7nB,GAU1C,IATA,IJ6HiCi0E,EI7H7Bn3C,EAAY,CACZ,KACA98B,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClD,KACA,GAAgB1uE,EAAQm4D,OACxB,GAAen4D,EAAQiuB,KAAMjuB,EAAQmzB,OJwHR8gD,EIvHfj0E,EAAQi0E,WJwHnB,MAAe,qBAAuB,CAAC,GAAYA,MIvHtD,GAAqC,GAAUj0E,EAAQ2uE,QAAS,GAAU3uE,EAAQ4uE,OAAQ,GAAU5uE,EAAQ6uE,OAAQ7uE,EAAQiG,EAAGjG,EAAQijB,IACzIjd,OAAO9H,SACA6nB,EAAM,EAAGhB,EAAM8C,EAAM1rB,OAAQ4pB,EAAMhB,EAAKgB,IAC7C+W,EAAU58B,KAAK,GAAS2nB,EAAM9B,IJ6FK,MAAe,cI1FtD,OADA+W,EAAU58B,KAAK,KAAW,MACnB48B,CACX,CwB4zBgDo2D,CAAgBH,EAAc,CAClE56B,MAAgC,QAAxB9vC,EAAKroB,EAAQm4D,aAA0B,IAAP9vC,EAAgBA,EAAKrpB,KAAKuwF,UAClEthE,KAAM6kE,EACN3/D,KAAM4hC,EACN4Z,OAAkC,QAAzBpmD,EAAKvoB,EAAQ2uE,cAA2B,IAAPpmD,EAAgBA,EAAK4+C,GAAQ,GACvEyH,MAAgC,QAAxBnmD,EAAKzoB,EAAQ4uE,aAA0B,IAAPnmD,EAAgBA,EAAK0+C,GAAQ,GACrE0H,MAAgC,QAAxBlmD,EAAK3oB,EAAQ6uE,aAA0B,IAAPlmD,EAAgBA,EAAKw+C,GAAQ,GACrElhE,EAAwB,QAApB4iB,EAAK7oB,EAAQiG,SAAsB,IAAP4iB,EAAgBA,EAAK7pB,KAAKiH,EAC1Dgd,EAAwB,QAApB8F,EAAK/oB,EAAQijB,SAAsB,IAAP8F,EAAgBA,EAAK/pB,KAAKikB,EAC1DgxD,WAA0C,QAA7BhrD,EAAKjpB,EAAQi0E,kBAA+B,IAAPhrD,EAAgBA,EAAKjqB,KAAKi1E,WAC5EvF,cAAeskB,KAEfhzF,EAAQiuB,OACJ2kE,EACA5zF,KAAKwyF,QAAQoB,GAEb5zF,KAAKm0F,YAEjB,EA0BA9D,EAAQvyF,UAAU2xE,UAAY,SAAU5mB,EAAO7nD,GAC3C,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,OACZ,IAAZjpB,IAAsBA,EAAU,CAAC,GAErC,GAAS6nD,EAAO,QAAS,CAAC,CAAC,GAAU,cACrC52B,GAAkBjxB,EAAQiG,EAAG,YAAa,CAAC,WAC3CgrB,GAAkBjxB,EAAQijB,EAAG,YAAa,CAAC,WAC3CgO,GAAkBjxB,EAAQgoB,MAAO,gBAAiB,CAAC,WACnDiJ,GAAkBjxB,EAAQgwB,OAAQ,iBAAkB,CAAC,WACrDiB,GAAkBjxB,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,cAC9Dy0B,GAAkBjxB,EAAQ4uE,MAAO,gBAAiB,CAAC,CAACpyE,OAAQ,cAC5Dy0B,GAAkBjxB,EAAQ6uE,MAAO,gBAAiB,CAAC,CAACryE,OAAQ,cAC5D40B,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9D/hE,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IACjE,IAAI1L,EAAa1kF,KAAKwgC,KAAKmB,WAAW,QAASknB,EAAMzoC,KACjD4zE,EAAmBh0F,KAAKi0F,wBAAwB,CAChDR,QAASzyF,EAAQyyF,QACjBC,UAAW1yF,EAAQ0yF,YAEnBt0D,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,EAAeqwC,GAAUiV,EAAY,CAC1Dz9E,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAKrpB,KAAKiH,EAC1Dgd,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAKvpB,KAAKikB,EAC1D+E,MAAgC,QAAxBS,EAAKzoB,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAKo/B,EAAM10B,OAAOnL,MAC1EgI,OAAkC,QAAzBrH,EAAK3oB,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAKk/B,EAAM10B,OAAOnD,OAC5E2+C,OAAkC,QAAzB9lD,EAAK7oB,EAAQ2uE,cAA2B,IAAP9lD,EAAgBA,EAAKs+C,GAAQ,GACvEyH,MAAgC,QAAxB7lD,EAAK/oB,EAAQ4uE,aAA0B,IAAP7lD,EAAgBA,EAAKo+C,GAAQ,GACrE0H,MAAgC,QAAxB5lD,EAAKjpB,EAAQ6uE,aAA0B,IAAP5lD,EAAgBA,EAAKk+C,GAAQ,GACrEuH,cAAeskB,IAEvB,EAiCA3D,EAAQvyF,UAAUs2F,SAAW,SAAUC,EAAcrzF,GACjD,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,OACJ,IAAZ7oB,IAAsBA,EAAU,CAAC,GAErC,GAASqzF,EAAc,eAAgB,CACnC,CAAC,GAAiB,qBAEtBpiE,GAAkBjxB,EAAQiG,EAAG,YAAa,CAAC,WAC3CgrB,GAAkBjxB,EAAQijB,EAAG,YAAa,CAAC,WAC3CgO,GAAkBjxB,EAAQuvE,OAAQ,iBAAkB,CAAC,WACrDt+C,GAAkBjxB,EAAQwvE,OAAQ,iBAAkB,CAAC,WACrDv+C,GAAkBjxB,EAAQgoB,MAAO,gBAAiB,CAAC,WACnDiJ,GAAkBjxB,EAAQgwB,OAAQ,iBAAkB,CAAC,WACrDiB,GAAkBjxB,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,cAC9Dy0B,GAAkBjxB,EAAQ4uE,MAAO,gBAAiB,CAAC,CAACpyE,OAAQ,cAC5Dy0B,GAAkBjxB,EAAQ6uE,MAAO,gBAAiB,CAAC,CAACryE,OAAQ,cAC5D40B,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9D/hE,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IACjE,IAAI1L,EAAa1kF,KAAKwgC,KAAKmB,WAAW,kBAAmB0yD,EAAaj0E,KAClE4zE,EAAmBh0F,KAAKi0F,wBAAwB,CAChDR,QAASzyF,EAAQyyF,QACjBC,UAAW1yF,EAAQ0yF,YAGnBnjB,OAA4BnuE,IAAlBpB,EAAQgoB,MAAsBhoB,EAAQgoB,MAAQqrE,EAAarrE,WAChD5mB,IAAnBpB,EAAQuvE,OAAuBvvE,EAAQuvE,OACnC,EAENC,OAA6BpuE,IAAnBpB,EAAQgwB,OAAuBhwB,EAAQgwB,OAASqjE,EAAarjE,YAClD5uB,IAAnBpB,EAAQwvE,OAAuBxvE,EAAQwvE,OACnC,EACNpxC,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,ExB17BX,SAAUl8B,EAAMlC,GAClC,MAAO,CACH,KACAA,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClDvoE,GAAUnG,EAAQiG,EAAGjG,EAAQijB,GAC7BmlD,GAAc,GAAUpoE,EAAQ2uE,SAChCliC,GAAMzsC,EAAQuvE,OAAQvvE,EAAQwvE,QAC9BlH,GAAY,GAAUtoE,EAAQ4uE,OAAQ,GAAU5uE,EAAQ6uE,QACxD7E,GAAW9nE,GACX,MACF8D,OAAO9H,QACb,CwB+6BgDk1F,CAAS1P,EAAY,CACzDz9E,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAKrpB,KAAKiH,EAC1Dgd,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAKvpB,KAAKikB,EAC1DssD,OAAQA,EACRC,OAAQA,EACRb,OAAkC,QAAzBlmD,EAAKzoB,EAAQ2uE,cAA2B,IAAPlmD,EAAgBA,EAAK0+C,GAAQ,GACvEyH,MAAgC,QAAxBjmD,EAAK3oB,EAAQ4uE,aAA0B,IAAPjmD,EAAgBA,EAAKw+C,GAAQ,GACrE0H,MAAgC,QAAxBhmD,EAAK7oB,EAAQ6uE,aAA0B,IAAPhmD,EAAgBA,EAAKs+C,GAAQ,GACrEuH,cAAeskB,IAEvB,EAsCA3D,EAAQvyF,UAAUw2F,YAAc,SAAUr4E,EAAMjb,GAC5C,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAI81D,OACpB,IAAZj/E,IAAsBA,EAAU,CAAC,GACrC,GAASib,EAAM,OAAQ,CAAC,WACxBgW,GAAkBjxB,EAAQiG,EAAG,YAAa,CAAC,WAC3CgrB,GAAkBjxB,EAAQijB,EAAG,YAAa,CAAC,WAC3CgO,GAAkBjxB,EAAQysC,MAAO,gBAAiB,CAAC,WACnDxb,GAAkBjxB,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,cAC9Dy0B,GAAkBjxB,EAAQgvE,YAAa,sBAAuB,CAAC,WAC/D/9C,GAAkBjxB,EAAQm4D,MAAO,gBAAiB,CAAC,CAAC37D,OAAQ,WAC5D40B,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9DxhE,GAAkBjxB,EAAQ+uE,YAAa,sBAAuB,CAC1D,CAACvyE,OAAQ,WAEby0B,GAAkBjxB,EAAQkvE,gBAAiB,0BAA2B,CAClEntD,QAEJkP,GAAkBjxB,EAAQmvE,gBAAiB,0BAA2B,CAClE,WAEJz+C,GAAyB1wB,EAAQivE,cAAe,wBAAyB/H,IACzE91C,GAAuBpxB,EAAQuzF,cAAe,wBAAyB,EAAG,GAC1E7iE,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IACjE,IAAI4D,EAAmBh0F,KAAKi0F,wBAAwB,CAChDR,QAASzyF,EAAQyyF,QACjBc,cAAevzF,EAAQuzF,cACvBb,UAAW1yF,EAAQ0yF,YAEjB,UAAW1yF,GAAc,gBAAiBA,IAC5CA,EAAQ+uE,YAAcxE,GAAI,EAAG,EAAG,IAEpC,IAAInsC,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,ExBp4BR,SAAUnjB,EAAMjb,GACrC,IAAIqoB,EAAIE,EAAIE,EACZ,OAAO7E,GAAe,CAClB,KACA5jB,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClDvoE,GAAUnG,EAAQiG,EAAGjG,EAAQijB,GAC7BmlD,GAAc,GAAoC,QAAzB//C,EAAKroB,EAAQ2uE,cAA2B,IAAPtmD,EAAgBA,EAAK8+C,GAAQ,KAEvFnnE,EAAQysC,MAAQA,GAAMzsC,EAAQysC,OAAQzsC,EAAQysC,OAASA,GAAM,GAAI,GACjEzsC,EAAQm4D,OAAS,GAAgBn4D,EAAQm4D,OACzCn4D,EAAQ+uE,aAAe9D,GAAiBjrE,EAAQ+uE,aAChD/uE,EAAQgvE,aAAejG,GAAa/oE,EAAQgvE,aAC5ChvE,EAAQivE,eAAiBpG,GAAW7oE,EAAQivE,eAC5CxG,GAAkD,QAAlClgD,EAAKvoB,EAAQkvE,uBAAoC,IAAP3mD,EAAgBA,EAAK,GAAuC,QAAlCE,EAAKzoB,EAAQmvE,uBAAoC,IAAP1mD,EAAgBA,EAAK,IACpJ0lD,GAAmBlzD,GAAO,CAEzBjb,EAAQm4D,OAASn4D,EAAQgvE,YAAcpF,KACjC5pE,EAAQm4D,MAAQwR,KACZ3pE,EAAQ+uE,YAAcrF,KAClBF,KACd,OACDxjE,OAAO9H,QACd,CwB82BgDo1F,CAAYr4E,EAAM,CACtDhV,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAKrpB,KAAKiH,EAC1Dgd,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAKvpB,KAAKikB,EAC1DwpB,MAAOzsC,EAAQysC,MACfkiC,OAAkC,QAAzBlmD,EAAKzoB,EAAQ2uE,cAA2B,IAAPlmD,EAAgBA,EAAK0+C,GAAQ,GACvEhP,MAAgC,QAAxBxvC,EAAK3oB,EAAQm4D,aAA0B,IAAPxvC,EAAgBA,OAAKvnB,EAC7D2tE,YAA4C,QAA9BlmD,EAAK7oB,EAAQ+uE,mBAAgC,IAAPlmD,EAAgBA,OAAKznB,EACzE4tE,YAA4C,QAA9BjmD,EAAK/oB,EAAQgvE,mBAAgC,IAAPjmD,EAAgBA,EAAK,EACzEmmD,gBAAoD,QAAlCjmD,EAAKjpB,EAAQkvE,uBAAoC,IAAPjmD,EAAgBA,OAAK7nB,EACjF+tE,gBAAoD,QAAlChmD,EAAKnpB,EAAQmvE,uBAAoC,IAAPhmD,EAAgBA,OAAK/nB,EACjF6tE,cAAgD,QAAhCgQ,EAAKj/E,EAAQivE,qBAAkC,IAAPgQ,EAAgBA,OAAK79E,EAC7EstE,cAAeskB,IAEvB,EAgBA3D,EAAQvyF,UAAU02F,SAAW,SAAUxzF,GACnC,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EACpB,GAAS7oB,EAAQioD,MAAO,gBAAiB,CACrC,CAACzrD,OAAQ,8BAEb,GAASwD,EAAQkoD,IAAK,cAAe,CACjC,CAAC1rD,OAAQ,8BAEb,GAASwD,EAAQioD,MAAMhiD,EAAG,kBAAmB,CAAC,WAC9C,GAASjG,EAAQioD,MAAMhlC,EAAG,kBAAmB,CAAC,WAC9C,GAASjjB,EAAQkoD,IAAIjiD,EAAG,gBAAiB,CAAC,WAC1C,GAASjG,EAAQkoD,IAAIjlC,EAAG,gBAAiB,CAAC,WAC1CgO,GAAkBjxB,EAAQywE,UAAW,oBAAqB,CAAC,WAC3Dx/C,GAAkBjxB,EAAQm4D,MAAO,gBAAiB,CAAC,CAAC37D,OAAQ,WAC5Dy0B,GAAkBjxB,EAAQ0oE,UAAW,oBAAqB,CAAC3mD,QAC3DkP,GAAkBjxB,EAAQ2oE,UAAW,oBAAqB,CAAC,WAC3Dj4C,GAAyB1wB,EAAQyzF,QAAS,kBAAmBvsB,IAC7D91C,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9D/hE,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IACjE,IAAI4D,EAAmBh0F,KAAKi0F,wBAAwB,CAChDM,cAAevzF,EAAQyyF,QACvBC,UAAW1yF,EAAQ0yF,YAEjB,UAAW1yF,IACbA,EAAQm4D,MAAQoS,GAAI,EAAG,EAAG,IAE9B,IAAInsC,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,ExBtjCX,SAAUp+B,GAC5B,IAAIqoB,EAAIE,EACR,MAAO,CACH,KACAvoB,EAAQ0uE,eAAiB,GAAiB1uE,EAAQ0uE,eAClD1uE,EAAQm4D,OAAS8S,GAAiBjrE,EAAQm4D,OAC1C4Q,GAAa/oE,EAAQywE,WACrBhI,GAA4C,QAA5BpgD,EAAKroB,EAAQ0oE,iBAA8B,IAAPrgD,EAAgBA,EAAK,GAAiC,QAA5BE,EAAKvoB,EAAQ2oE,iBAA8B,IAAPpgD,EAAgBA,EAAK,GACvIk5C,GAAOzhE,EAAQioD,MAAMhiD,EAAGjG,EAAQioD,MAAMhlC,GACtCjjB,EAAQyzF,SAAW5qB,GAAW7oE,EAAQyzF,SACtChyB,GAAOzhE,EAAQioD,MAAMhiD,EAAGjG,EAAQioD,MAAMhlC,GACtCwmD,GAAOzpE,EAAQkoD,IAAIjiD,EAAGjG,EAAQkoD,IAAIjlC,GAClCymD,KACA,MACF1jE,OAAO9H,QACb,CwBuiCgDs1F,CAAS,CAC7CvrC,MAAOjoD,EAAQioD,MACfC,IAAKloD,EAAQkoD,IACbuoB,UAAwC,QAA5BpoD,EAAKroB,EAAQywE,iBAA8B,IAAPpoD,EAAgBA,EAAK,EACrE8vC,MAAgC,QAAxB5vC,EAAKvoB,EAAQm4D,aAA0B,IAAP5vC,EAAgBA,OAAKnnB,EAC7DsnE,UAAwC,QAA5BjgD,EAAKzoB,EAAQ0oE,iBAA8B,IAAPjgD,EAAgBA,OAAKrnB,EACrEunE,UAAwC,QAA5BhgD,EAAK3oB,EAAQ2oE,iBAA8B,IAAPhgD,EAAgBA,OAAKvnB,EACrEqyF,QAAoC,QAA1B5qE,EAAK7oB,EAAQyzF,eAA4B,IAAP5qE,EAAgBA,OAAKznB,EACjEstE,cAAeskB,IAEvB,EAqBA3D,EAAQvyF,UAAUgyE,cAAgB,SAAU9uE,GACxC,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAI81D,EAAIyU,EAAIC,EAAIC,EAAIC,OACpC,IAAZ7zF,IAAsBA,EAAU,CAAC,GACrCixB,GAAkBjxB,EAAQiG,EAAG,YAAa,CAAC,WAC3CgrB,GAAkBjxB,EAAQijB,EAAG,YAAa,CAAC,WAC3CgO,GAAkBjxB,EAAQgoB,MAAO,gBAAiB,CAAC,WACnDiJ,GAAkBjxB,EAAQgwB,OAAQ,iBAAkB,CAAC,WACrDiB,GAAkBjxB,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,cAC9Dy0B,GAAkBjxB,EAAQ4uE,MAAO,gBAAiB,CAAC,CAACpyE,OAAQ,cAC5Dy0B,GAAkBjxB,EAAQ6uE,MAAO,gBAAiB,CAAC,CAACryE,OAAQ,cAC5Dy0B,GAAkBjxB,EAAQgvE,YAAa,sBAAuB,CAAC,WAC/D/9C,GAAkBjxB,EAAQm4D,MAAO,gBAAiB,CAAC,CAAC37D,OAAQ,WAC5D40B,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9DxhE,GAAkBjxB,EAAQ+uE,YAAa,sBAAuB,CAC1D,CAACvyE,OAAQ,WAEby0B,GAAkBjxB,EAAQkvE,gBAAiB,0BAA2B,CAClEntD,QAEJkP,GAAkBjxB,EAAQmvE,gBAAiB,0BAA2B,CAClE,WAEJz+C,GAAyB1wB,EAAQivE,cAAe,wBAAyB/H,IACzE91C,GAAuBpxB,EAAQuzF,cAAe,wBAAyB,EAAG,GAC1E7iE,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IACjE,IAAI4D,EAAmBh0F,KAAKi0F,wBAAwB,CAChDR,QAASzyF,EAAQyyF,QACjBc,cAAevzF,EAAQuzF,cACvBb,UAAW1yF,EAAQ0yF,YAEjB,UAAW1yF,GAAc,gBAAiBA,IAC5CA,EAAQm4D,MAAQoS,GAAI,EAAG,EAAG,IAE9B,IAAInsC,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,EAAe0wC,GAAc,CAClD7oE,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAKrpB,KAAKiH,EAC1Dgd,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAKvpB,KAAKikB,EAC1D+E,MAAgC,QAAxBS,EAAKzoB,EAAQgoB,aAA0B,IAAPS,EAAgBA,EAAK,IAC7DuH,OAAkC,QAAzBrH,EAAK3oB,EAAQgwB,cAA2B,IAAPrH,EAAgBA,EAAK,IAC/DgmD,OAAkC,QAAzB9lD,EAAK7oB,EAAQ2uE,cAA2B,IAAP9lD,EAAgBA,EAAKs+C,GAAQ,GACvEyH,MAAgC,QAAxB7lD,EAAK/oB,EAAQ4uE,aAA0B,IAAP7lD,EAAgBA,EAAKo+C,GAAQ,GACrE0H,MAAgC,QAAxB5lD,EAAKjpB,EAAQ6uE,aAA0B,IAAP5lD,EAAgBA,EAAKk+C,GAAQ,GACrE6H,YAA4C,QAA9B7lD,EAAKnpB,EAAQgvE,mBAAgC,IAAP7lD,EAAgBA,EAAK,EACzEgvC,MAAgC,QAAxB8mB,EAAKj/E,EAAQm4D,aAA0B,IAAP8mB,EAAgBA,OAAK79E,EAC7D2tE,YAA4C,QAA9B2kB,EAAK1zF,EAAQ+uE,mBAAgC,IAAP2kB,EAAgBA,OAAKtyF,EACzE8tE,gBAAoD,QAAlCykB,EAAK3zF,EAAQkvE,uBAAoC,IAAPykB,EAAgBA,OAAKvyF,EACjF+tE,gBAAoD,QAAlCykB,EAAK5zF,EAAQmvE,uBAAoC,IAAPykB,EAAgBA,OAAKxyF,EACjFstE,cAAeskB,EACf/jB,cAAgD,QAAhC4kB,EAAK7zF,EAAQivE,qBAAkC,IAAP4kB,EAAgBA,OAAKzyF,IAErF,EAoBAiuF,EAAQvyF,UAAUg3F,WAAa,SAAU9zF,QACrB,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAImzB,EAAOnzB,EAAQmzB,KACnBlC,GAAkBkC,EAAM,OAAQ,CAAC,WACjCn0B,KAAK8vE,cAAc5sD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEgoB,MAAOmL,EAAMnD,OAAQmD,IAC9E,EAoBAk8D,EAAQvyF,UAAUuyE,YAAc,SAAUrvE,GACtC,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAI81D,EAAIyU,EAAIC,OAC5B,IAAZ3zF,IAAsBA,EAAU,CAAC,GACrCixB,GAAkBjxB,EAAQiG,EAAG,YAAa,CAAC,WAC3CgrB,GAAkBjxB,EAAQijB,EAAG,YAAa,CAAC,WAC3CgO,GAAkBjxB,EAAQuvE,OAAQ,iBAAkB,CAAC,WACrDt+C,GAAkBjxB,EAAQwvE,OAAQ,iBAAkB,CAAC,WACrDv+C,GAAkBjxB,EAAQ2uE,OAAQ,iBAAkB,CAAC,CAACnyE,OAAQ,cAC9Dy0B,GAAkBjxB,EAAQm4D,MAAO,gBAAiB,CAAC,CAAC37D,OAAQ,WAC5D40B,GAAuBpxB,EAAQyyF,QAAS,kBAAmB,EAAG,GAC9DxhE,GAAkBjxB,EAAQ+uE,YAAa,sBAAuB,CAC1D,CAACvyE,OAAQ,WAEb40B,GAAuBpxB,EAAQuzF,cAAe,wBAAyB,EAAG,GAC1EtiE,GAAkBjxB,EAAQgvE,YAAa,sBAAuB,CAAC,WAC/D/9C,GAAkBjxB,EAAQkvE,gBAAiB,0BAA2B,CAClEntD,QAEJkP,GAAkBjxB,EAAQmvE,gBAAiB,0BAA2B,CAClE,WAEJz+C,GAAyB1wB,EAAQivE,cAAe,wBAAyB/H,IACzEx2C,GAAyB1wB,EAAQ0yF,UAAW,oBAAqBtD,IACjE,IAAI4D,EAAmBh0F,KAAKi0F,wBAAwB,CAChDR,QAASzyF,EAAQyyF,QACjBc,cAAevzF,EAAQuzF,cACvBb,UAAW1yF,EAAQ0yF,YAEjB,UAAW1yF,GAAc,gBAAiBA,IAC5CA,EAAQm4D,MAAQoS,GAAI,EAAG,EAAG,IAE9B,IAAInsC,EAAgBp/B,KAAK8xF,mBACzB1yD,EAAcl+B,KAAKhB,MAAMk/B,EAAeixC,GAAY,CAChDppE,EAAwB,QAApBoiB,EAAKroB,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAKrpB,KAAKiH,EAC1Dgd,EAAwB,QAApBsF,EAAKvoB,EAAQijB,SAAsB,IAAPsF,EAAgBA,EAAKvpB,KAAKikB,EAC1DssD,OAAkC,QAAzB9mD,EAAKzoB,EAAQuvE,cAA2B,IAAP9mD,EAAgBA,EAAK,IAC/D+mD,OAAkC,QAAzB7mD,EAAK3oB,EAAQwvE,cAA2B,IAAP7mD,EAAgBA,EAAK,IAC/DgmD,OAAkC,QAAzB9lD,EAAK7oB,EAAQ2uE,cAA2B,IAAP9lD,EAAgBA,OAAKznB,EAC/D+2D,MAAgC,QAAxBpvC,EAAK/oB,EAAQm4D,aAA0B,IAAPpvC,EAAgBA,OAAK3nB,EAC7D2tE,YAA4C,QAA9B9lD,EAAKjpB,EAAQ+uE,mBAAgC,IAAP9lD,EAAgBA,OAAK7nB,EACzE4tE,YAA4C,QAA9B7lD,EAAKnpB,EAAQgvE,mBAAgC,IAAP7lD,EAAgBA,EAAK,EACzE+lD,gBAAoD,QAAlC+P,EAAKj/E,EAAQkvE,uBAAoC,IAAP+P,EAAgBA,OAAK79E,EACjF+tE,gBAAoD,QAAlCukB,EAAK1zF,EAAQmvE,uBAAoC,IAAPukB,EAAgBA,OAAKtyF,EACjF6tE,cAAgD,QAAhC0kB,EAAK3zF,EAAQivE,qBAAkC,IAAP0kB,EAAgBA,OAAKvyF,EAC7EstE,cAAeskB,IAEvB,EAmBA3D,EAAQvyF,UAAUi3F,WAAa,SAAU/zF,QACrB,IAAZA,IAAsBA,EAAU,CAAC,GACrC,IAAIqoB,EAAKroB,EAAQmzB,KAAMA,OAAc,IAAP9K,EAAgB,IAAMA,EACpD4I,GAAkBkC,EAAM,OAAQ,CAAC,WACjCn0B,KAAKqwE,YAAYntD,GAASA,GAAS,CAAC,EAAGliB,GAAU,CAAEuvE,OAAQp8C,EAAMq8C,OAAQr8C,IAC7E,EACAk8D,EAAQvyF,UAAU61F,eAAiB,SAAU1kE,GACzC,IAAI2kE,EAAU5zF,KAAKivB,KACf+lE,EAAah1F,KAAKyyF,QAOtB,OANIxjE,EACAjvB,KAAKwyF,QAAQvjE,GAEbjvB,KAAKi1F,UAGF,CAAErB,QAASA,EAASoB,WAAYA,EAAYnB,QAFrC7zF,KAAKivB,KAEkD6kE,WADpD9zF,KAAKyyF,QAE1B,EACApC,EAAQvyF,UAAUm3F,QAAU,WACxB,IAAKj1F,KAAKivB,OAASjvB,KAAKyyF,QAAS,CAC7B,IAAIxjE,EAAOjvB,KAAK24E,IAAIyJ,kBAAkBH,GAAcI,WACpDriF,KAAKwyF,QAAQvjE,EACjB,CACA,MAAO,CAACjvB,KAAKivB,KAAMjvB,KAAKyyF,QAC5B,EACApC,EAAQvyF,UAAUq2F,UAAY,WAC1Bn0F,KAAKivB,UAAO7sB,EACZpC,KAAKyyF,aAAUrwF,CACnB,EACAiuF,EAAQvyF,UAAUg0F,iBAAmB,SAAUoD,GAE3C,YADoB,IAAhBA,IAA0BA,GAAc,GACxCA,GAAel1F,KAAKo/B,gBAExBp/B,KAAKo/B,cAAgBp/B,KAAK+xF,sBAC1B/xF,KAAK4gC,iBAAmB5gC,KAAK24E,IAAInhD,QAAQqH,SAAS7+B,KAAKo/B,eACvDp/B,KAAKwgC,KAAKG,iBAAiB3gC,KAAK4gC,mBAHrB5gC,KAAKo/B,aAKpB,EACAixD,EAAQvyF,UAAUi0F,oBAAsB,WAEpC,IADA,IAAIj0D,EAAY,GACPhT,EAAK,EAAGA,EAAK7qB,UAAU9C,OAAQ2tB,IACpCgT,EAAUhT,GAAM7qB,UAAU6qB,GAE9B,IAAI4Q,EAAO17B,KAAK24E,IAAInhD,QAAQ5G,IAAI,CAAC,GAEjC,OADoB,MAAoB8K,EAAMoC,EAElD,EACAuyD,EAAQvyF,UAAUm2F,wBAA0B,SAAUjzF,GAClD,IAAIyyF,EAAUzyF,EAAQyyF,QAASc,EAAgBvzF,EAAQuzF,cAAeb,EAAY1yF,EAAQ0yF,UAC1F,QAAgBtxF,IAAZqxF,QACkBrxF,IAAlBmyF,QACcnyF,IAAdsxF,EAFJ,CAKA,IAAIhkB,EAAgB1vE,KAAK24E,IAAInhD,QAAQ5G,IAAI,CACrCyJ,KAAM,YACN86D,GAAI1B,EACJl7B,GAAIg8B,EACJa,GAAI1B,IAGR,OADU1zF,KAAKwgC,KAAKuB,aAAa,KAAM2tC,EAPvC,CASJ,EACA2gB,EAAQvyF,UAAUw0F,WAAa,SAAUD,EAAOprF,EAAGgd,GAE/C,IADA,IAAIoxE,EAAY,CAAC,KAAM,KAAM,WAAY,aAAc,IAAK,QACnDtuE,EAAM,EAAGhB,EAAMsvE,EAAUl4F,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACxD,IAAI7K,EAAOm2E,EAAMjtE,OAAO,MAAWiwE,EAAUtuE,KACzC7K,aAAgB,IAChBA,EAAKgc,gBAAgBjxB,EAAGgd,EAChC,CACA,IAAIqxE,EAAWjD,EAAMjtE,OAAO,MAAW,YACvC,GAAIkwE,aAAoB,GACpB,IAASvuE,EAAM,EAAGhB,EAAMuvE,EAASnhE,OAAQpN,EAAMhB,EAAKgB,IAAO,CACvD,IAAIqE,EAAMkqE,EAASlwE,OAAO2B,GACtBqE,aAAe,IACfA,EAAI8M,gBAAgBjxB,EAAGgd,EAC/B,CAER,EAYAosE,EAAQ/4D,GAAK,SAAUg5D,EAAUlwE,EAAKu4D,GAClC,OAAO,IAAI0X,EAAQC,EAAUlwE,EAAKu4D,EACtC,EAUA0X,EAAQnyF,OAAS,SAAUy6E,GACvB,GAASA,EAAK,MAAO,CAAC,CAAC,GAAa,iBACpC,IAAI4c,EAAW,OAAW,GACtBC,EAAW,wBAAiC7c,EAAInhD,QAAS+9D,GAE7D,OAAO,IAAIlF,EAAQmF,EADL7c,EAAInhD,QAAQqH,SAAS22D,GACG7c,EAC1C,EACO0X,CACX,CA74C4B,GA84C5B,YC34CA,IAAIoF,GAA2B,SAAUvzF,GAErC,SAASuzF,EAAUC,EAAgBt1E,EAAKu4D,GACpC,IAAIx2E,EAAQD,EAAO9C,KAAKY,KAAM01F,EAAgBt1E,EAAKu4D,IAAQ34E,KAK3D,OAJA,GAAS01F,EAAgB,aAAc,CACnC,CAAC,GAAmB,uBAExBvzF,EAAMk0E,UAAYqf,EACXvzF,CACX,CA0LA,OAlMA6gB,GAAUyyE,EAAWvzF,GAoBrBuzF,EAAU33F,UAAU4iF,SAAW,SAAU73B,EAAOmsB,QAC1B,IAAdA,IAAwBA,EAAYwE,GAAepE,QAEvD,IADA,IAAI9a,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACjB65D,EAAY5gF,KAAKk8E,4BAA4BlhB,EAAQnS,EAAOmsB,GAChEh1E,KAAK87E,wBAAwB9gB,EAAQ,CAAE/C,OAAQ2oB,GACnD,CACA5gF,KAAK+6E,aACT,EAqBA0a,EAAU33F,UAAUg4D,YAAc,SAAUC,GACxCxjC,GAAewjC,EAAU,YACzB/1D,KAAKq2E,UAAUvgB,YAAYC,GAC3B/1D,KAAK46E,aACT,EA4BA6a,EAAU33F,UAAU++E,UAAY,SAEhClwE,EAAM6iD,EAAMxuD,GACR,IAAIqoB,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAIE,EAAI81D,EAAIyU,EAAIC,EAC5C1iE,GAAkBtlB,EAAM,OAAQ,CAAC,WACjCslB,GAAkBu9B,EAAM,OAAQ,CAAC,CAAC,GAAS,aAC3CiqB,GAA6Bz4E,GAE7B,IAAIg6D,EAASh7D,KAAKm7E,aAAa,CAC3Bl0E,GAA2E,QAAtEoiB,EAAKroB,aAAyC,EAASA,EAAQiG,SAAsB,IAAPoiB,EAAgBA,EAAK,IAAuF,QAAhFE,EAAKvoB,aAAyC,EAASA,EAAQgvE,mBAAgC,IAAPzmD,EAAgBA,EAAK,GAAK,EACjOtF,GAA2E,QAAtEwF,EAAKzoB,aAAyC,EAASA,EAAQijB,SAAsB,IAAPwF,EAAgBA,EAAK,IAAuF,QAAhFE,EAAK3oB,aAAyC,EAASA,EAAQgvE,mBAAgC,IAAPrmD,EAAgBA,EAAK,GAAK,EACjOX,MAAkF,QAA1Ea,EAAK7oB,aAAyC,EAASA,EAAQgoB,aAA0B,IAAPa,EAAgBA,EAAK,IAC/GmH,OAAoF,QAA3EjH,EAAK/oB,aAAyC,EAASA,EAAQgwB,cAA2B,IAAPjH,EAAgBA,EAAK,GACjHooD,UAA0F,QAA9EloD,EAAKjpB,aAAyC,EAASA,EAAQmxE,iBAA8B,IAAPloD,EAAgBA,EAAKshD,GAAI,EAAG,EAAG,GACjImO,gBAAsG,QAApFvvD,EAAKnpB,aAAyC,EAASA,EAAQ04E,uBAAoC,IAAPvvD,EAAgBA,EAAKohD,GAAI,IAAM,IAAM,KACnJwE,YAAa/uE,aAAyC,EAASA,EAAQ+uE,YACvEC,YAA8F,QAAhFiQ,EAAKj/E,aAAyC,EAASA,EAAQgvE,mBAAgC,IAAPiQ,EAAgBA,EAAK,EAC3HtQ,OAAoF,QAA3E+kB,EAAK1zF,aAAyC,EAASA,EAAQ2uE,cAA2B,IAAP+kB,EAAgBA,EAAKvsB,GAAQ,GACzHkT,QAAS1uE,EACT2uE,OAAQt6E,aAAyC,EAASA,EAAQs6E,OAClE9rB,KAAMA,EAAKpvC,MAEX08D,EAAY98E,KAAK24E,IAAInhD,QAAQqH,SAASm8B,EAAOt/B,MAEjD17B,KAAKq2E,UAAU9b,UAAUuiB,GAEzB,IAAI7tD,EAAiF,QAAzE0lE,EAAK3zF,aAAyC,EAASA,EAAQiuB,YAAyB,IAAP0lE,EAAgBA,EAAK30F,KAAK24E,IAAIkC,UAAUmE,iBACrIh/E,KAAK+8E,uBAAuB/hB,EAAQ/rC,GAEpCugC,EAAKhvB,KAAKS,SAAS67C,EACvB,EAUA2Y,EAAU33F,UAAU28E,uBAAyB,WACzC,IAAIpxD,EACJ,GAAIrpB,KAAKi7E,UACL,OAAO,EAEX,IADA,IAAI3gB,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CAGtD,MADyD,QAAlCsC,EADVixC,EAAQvzC,GACcixC,wBAAqC,IAAP3uC,OAAgB,EAASA,EAAG4uC,kBAAmB,IAE5G,OAAO,CACf,CACA,OAAO,CACX,EAWAw9B,EAAU33F,UAAU48E,yBAA2B,SAAUzrD,GACrD,GAASA,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCjvB,KAAKg9E,kBAAkB/tD,EAC3B,EAoBAwmE,EAAU33F,UAAUk/E,kBAAoB,SAAU/tD,EAAMguD,GACpD,GAAShuD,EAAM,OAAQ,CAAC,CAAC,GAAS,aAClCgD,GAAkBgrD,EAAU,WAAY,CAACrrD,WAEzC,IADA,IAAI0oC,EAAUt6D,KAAKq2E,UAAUjc,aACpBrzC,EAAM,EAAGhB,EAAMu0C,EAAQn9D,OAAQ4pB,EAAMhB,EAAKgB,IAAO,CACtD,IAAIi0C,EAASV,EAAQvzC,GACrB/mB,KAAK+8E,uBAAuB/hB,EAAQ/rC,EAAMguD,EAC9C,CACJ,EACAwY,EAAU33F,UAAUi/E,uBAAyB,SAAU/hB,EAAQ/rC,EAAMguD,GACjE,IACIzlB,EAAc+d,IADD0H,QAA2CA,EAAWrG,IACtB52E,KAAMg7D,EAAQ/rC,IAC/DjvB,KAAK67E,+BAA+B7gB,EAAQ/rC,EAAMuoC,EACtD,EAYAi+B,EAAUn+D,GAAK,SAAUo+D,EAAgBt1E,EAAKu4D,GAAO,OAAO,IAAI8c,EAAUC,EAAgBt1E,EAAKu4D,EAAM,EAC9F8c,CACX,CApM8B,CAoM5B,IACF,YCxNA,IAAIE,GAAgD,SAAU58C,EAAInf,EAAMg8D,GACpE,GAAIA,GAA6B,IAArB31F,UAAU9C,OAAc,IAAK,IAA4B04F,EAAxB34F,EAAI,EAAGkE,EAAIw4B,EAAKz8B,OAAYD,EAAIkE,EAAGlE,KACxE24F,GAAQ34F,KAAK08B,IACRi8D,IAAIA,EAAK9yE,MAAMjlB,UAAU0D,MAAMpC,KAAKw6B,EAAM,EAAG18B,IAClD24F,EAAG34F,GAAK08B,EAAK18B,IAGrB,OAAO67C,EAAG7oC,OAAO2lF,GAAM9yE,MAAMjlB,UAAU0D,MAAMpC,KAAKw6B,GACtD,EACIk8D,GACA,SAAqB5yF,EAAM6yF,EAASC,GAChCh2F,KAAKkD,KAAOA,EACZlD,KAAK+1F,QAAUA,EACf/1F,KAAKg2F,GAAKA,EACVh2F,KAAKc,KAAO,SAChB,EAIAm1F,GACA,SAAkBF,GACd/1F,KAAK+1F,QAAUA,EACf/1F,KAAKc,KAAO,OACZd,KAAKkD,KAAO,OACZlD,KAAKg2F,GAAKE,QAAQC,QACtB,EAIAC,GACA,SAA6BlzF,EAAM6yF,EAASC,EAAIK,GAC5Cr2F,KAAKkD,KAAOA,EACZlD,KAAK+1F,QAAUA,EACf/1F,KAAKg2F,GAAKA,EACVh2F,KAAKq2F,IAAMA,EACXr2F,KAAKc,KAAO,YAChB,EAIAw1F,GACA,WACIt2F,KAAKc,KAAO,MACZd,KAAKq2F,KAAM,EACXr2F,KAAKkD,KAAO,MACZlD,KAAK+1F,QAAU,KACf/1F,KAAKg2F,GAAK,IACd,EAIAO,GACA,WACIv2F,KAAKc,KAAO,eACZd,KAAKkD,KAAO,eACZlD,KAAK+1F,QAAU,KACf/1F,KAAKg2F,GAAK,IACd,EAMAQ,GAAqB,qFAErBC,GAAiB,CACjB,CAAC,MAAO,0BACR,CAAC,OAAQ,qBACT,CAAC,WAAY,uBACb,CAAC,gBAAiB,0BAClB,CAAC,YAAa,yBACd,CAAC,UAAW,8BACZ,CAAC,OAAQ,yBACT,CAAC,OAAQ,4BACT,CAAC,SAAU,6BACX,CAAC,gBAAiB,qBAClB,CACI,mBACA,0DAEJ,CAAC,SAAU,oDACX,CAAC,YAAa,iCACd,CAAC,QAAS,6BACV,CAAC,UAAW,+BACZ,CAAC,QAAS,qBACV,CAAC,aAAc,mCACf,CAAC,QAAS,6BACV,CAAC,QAAS,2BACV,CAAC,MAAO,oDACR,CAAC,MAAO,iGACR,CAAC,WAAY,wCACb,CAAC,KAAM,6CACP,CAAC,KAAM,uCACP,CAAC,KAAM,gBACP,CAAC,OAAQ,qCACT,CAAC,UAAW,uBACZ,CAAC,MAAO,0CACR,CAAC,SAAU,gCACX,CAAC,WAAY,uBACb,CAAC,YAAa,yBACd,CAAC,cAAe,mCAChB,CAAC,cAAe,qCAChB,CAAC,OAAQ,sBACT,CAAC,YAzCoB,iIA2CrBC,GAAuB,CACvB,CAAC,MAAO,kBACR,CAAC,aAAc,WACf,CAAC,gBAAiB,mBAClB,CAAC,iBAAkB,YACnB,CAAC,YAAa,UACd,CAAC,eAAgB,SACjB,CAAC,aAAc,qCACf,CAAC,aAAc,wBACf,CAAC,eAAgB,mCACjB,CAAC,aAAc,iCACf,CAAC,sBAAuB,oBACxB,CAAC,gBAAiB,oBAClB,CAAC,YAAa,oBACd,CAAC,YAAa,oBACd,CAAC,cAAe,oBAChB,CAAC,aAAc,qBACf,CAAC,aAAc,cACf,CAAC,aAAc,uDACf,CAAC,WAAY,WACb,CAAC,SAAU,SACX,CAAC,YAAa,QACd,CAAC,QAAS,iBACV,CAAC,SAAU,6BACX,CAAC,MAAO,OACR,CAAC,OAAQ,QACT,CAAC,OAAQ,UAEN,SAASC,GAAOC,GACnB,OAAMA,EACKC,GAAeD,GAEF,oBAAbl0F,UACc,oBAAdo0F,WACe,gBAAtBA,UAAUrvF,QACH,IAAI8uF,GAEU,oBAAdO,UACAD,GAAeC,UAAUF,WA6DJ,oBAAZV,SAA2BA,QAAQH,QACvC,IAAIE,GAASC,QAAQH,QAAQv0F,MAAM,IAAM,IA3D7D,CACA,SAASu1F,GAAeC,GAKpB,MAAe,KAAPA,GACJP,GAAel9E,QAAO,SAAU09E,EAAS5tE,GACrC,IAAI6tE,EAAU7tE,EAAG,GAAInB,EAAQmB,EAAG,GAChC,GAAI4tE,EACA,OAAOA,EAEX,IAAIE,EAAUjvE,EAAMkvE,KAAKJ,GACzB,QAASG,GAAW,CAACD,EAASC,EAClC,IAAG,EACX,CAKO,SAASN,GAAeG,GAC3B,IAAIK,EAAcN,GAAeC,GACjC,IAAKK,EACD,OAAO,KAEX,IAAIn0F,EAAOm0F,EAAY,GAAI3uE,EAAQ2uE,EAAY,GAC/C,GAAa,cAATn0F,EACA,OAAO,IAAIozF,GAGf,IAAIgB,EAAe5uE,EAAM,IAAMA,EAAM,GAAG/P,MAAM,KAAKO,KAAK,KAAKP,MAAM,KAAKnX,MAAM,EAAG,GAC7E81F,EACIA,EAAan6F,OAlHI,IAmHjBm6F,EAAe3B,GAAcA,GAAc,GAAI2B,GAAc,GA4BzE,SAA4BC,GAExB,IADA,IAAIC,EAAS,GACJl6C,EAAK,EAAGA,EAAKi6C,EAAOj6C,IACzBk6C,EAAOt2F,KAAK,KAEhB,OAAOs2F,CACX,CAlCgFC,CAnHnD,EAmH+FH,EAAan6F,SAAS,IAI1Im6F,EAAe,GAEnB,IAAIvB,EAAUuB,EAAap+E,KAAK,KAC5B88E,EAOD,SAAkBgB,GACrB,IAAK,IAAI15C,EAAK,EAAGi6C,EAAQb,GAAqBv5F,OAAQmgD,EAAKi6C,EAAOj6C,IAAM,CACpE,IAAIj0B,EAAKqtE,GAAqBp5C,GAAK04C,EAAK3sE,EAAG,GAE3C,GAFuDA,EAAG,GACxC+tE,KAAKJ,GAEnB,OAAOhB,CAEf,CACA,OAAO,IACX,CAhBa0B,CAASV,GACdW,EAAiBnB,GAAmBY,KAAKJ,GAC7C,OAAIW,GAAkBA,EAAe,GAC1B,IAAIvB,GAAoBlzF,EAAM6yF,EAASC,EAAI2B,EAAe,IAE9D,IAAI7B,GAAY5yF,EAAM6yF,EAASC,EAC1C,wPC/LA4B,GAAA,kBAAAv4F,CAAA,MAAA+jB,EAAA/jB,EAAA,GAAAylB,EAAAtnB,OAAAM,UAAAwlB,EAAAwB,EAAAxkB,eAAA/B,EAAAf,OAAAC,gBAAA,SAAA2lB,EAAA/jB,EAAAylB,GAAA1B,EAAA/jB,GAAAylB,EAAA1mB,KAAA,EAAAlB,EAAA,mBAAAyG,OAAAA,OAAA,GAAAqhB,EAAA9nB,EAAAsnB,UAAA,aAAAq3B,EAAA3+C,EAAA26F,eAAA,kBAAAt8C,EAAAr+C,EAAA0G,aAAA,yBAAAk0F,EAAA10E,EAAA/jB,EAAAylB,GAAA,OAAAtnB,OAAAC,eAAA2lB,EAAA/jB,EAAA,CAAAjB,MAAA0mB,EAAAznB,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAA6lB,EAAA/jB,EAAA,KAAAy4F,EAAA,aAAA10E,GAAA00E,EAAA,SAAA10E,EAAA/jB,EAAAylB,GAAA,OAAA1B,EAAA/jB,GAAAylB,CAAA,WAAAizE,EAAA30E,EAAA/jB,EAAAylB,EAAAxB,GAAA,IAAApmB,EAAAmC,GAAAA,EAAAvB,qBAAAk6F,EAAA34F,EAAA24F,EAAAhzE,EAAAxnB,OAAAU,OAAAhB,EAAAY,WAAA+9C,EAAA,IAAAo8C,EAAA30E,GAAA,WAAA/kB,EAAAymB,EAAA,WAAA5mB,MAAA85F,EAAA90E,EAAA0B,EAAA+2B,KAAA72B,CAAA,UAAAmzE,EAAA/0E,EAAA/jB,EAAAylB,GAAA,WAAAhkB,KAAA,SAAAu8B,IAAAja,EAAAhkB,KAAAC,EAAAylB,GAAA,OAAA1B,GAAA,OAAAtiB,KAAA,QAAAu8B,IAAAja,EAAA,EAAA/jB,EAAA04F,KAAAA,EAAA,IAAA9hD,EAAA,iBAAA70C,EAAA,iBAAA8Y,EAAA,YAAAmJ,EAAA,YAAAY,EAAA,YAAA+zE,IAAA,UAAAI,IAAA,UAAAC,IAAA,KAAAz5F,EAAA,GAAAk5F,EAAAl5F,EAAAomB,GAAA,8BAAAlC,EAAAtlB,OAAAiB,eAAAgmB,EAAA3B,GAAAA,EAAAA,EAAAyO,EAAA,MAAA9M,GAAAA,IAAAK,GAAAxB,EAAAlkB,KAAAqlB,EAAAO,KAAApmB,EAAA6lB,GAAA,IAAAloB,EAAA87F,EAAAv6F,UAAAk6F,EAAAl6F,UAAAN,OAAAU,OAAAU,GAAA,SAAA05F,EAAAl1E,GAAA,0BAAA9d,SAAA,SAAAjG,GAAAy4F,EAAA10E,EAAA/jB,GAAA,SAAA+jB,GAAA,YAAAm1E,QAAAl5F,EAAA+jB,EAAA,gBAAAo1E,EAAAp1E,EAAA/jB,GAAA,SAAAo5F,EAAA3zE,EAAAvmB,EAAArB,EAAA8nB,GAAA,IAAA62B,EAAAs8C,EAAA/0E,EAAA0B,GAAA1B,EAAA7kB,GAAA,aAAAs9C,EAAA/6C,KAAA,KAAAy6C,EAAAM,EAAAxe,IAAA4Y,EAAAsF,EAAAn9C,MAAA,OAAA63C,GAAA,UAAAyiD,GAAAziD,IAAA3yB,EAAAlkB,KAAA62C,EAAA,WAAA52C,EAAAsC,QAAAs0C,EAAA0iD,SAAA/2F,MAAA,SAAAwhB,GAAAq1E,EAAA,OAAAr1E,EAAAlmB,EAAA8nB,EAAA,aAAA5B,GAAAq1E,EAAA,QAAAr1E,EAAAlmB,EAAA8nB,EAAA,IAAA3lB,EAAAsC,QAAAs0C,GAAAr0C,MAAA,SAAAwhB,GAAAm4B,EAAAn9C,MAAAglB,EAAAlmB,EAAAq+C,EAAA,aAAAn4B,GAAA,OAAAq1E,EAAA,QAAAr1E,EAAAlmB,EAAA8nB,EAAA,IAAAA,EAAA62B,EAAAxe,IAAA,KAAAvY,EAAAvmB,EAAA,gBAAAH,MAAA,SAAAglB,EAAAE,GAAA,SAAAs1E,IAAA,WAAAv5F,GAAA,SAAAA,EAAAylB,GAAA2zE,EAAAr1E,EAAAE,EAAAjkB,EAAAylB,EAAA,WAAAA,EAAAA,EAAAA,EAAAljB,KAAAg3F,EAAAA,GAAAA,GAAA,aAAAV,EAAA74F,EAAAylB,EAAAxB,GAAA,IAAA/kB,EAAA03C,EAAA,gBAAA/4C,EAAA8nB,GAAA,GAAAzmB,IAAA2b,EAAA,MAAAjX,MAAA,mCAAA1E,IAAA8kB,EAAA,cAAAnmB,EAAA,MAAA8nB,EAAA,OAAA5mB,MAAAglB,EAAAW,MAAA,OAAAT,EAAA3P,OAAAzW,EAAAomB,EAAA+Z,IAAArY,IAAA,KAAA62B,EAAAv4B,EAAAu1E,SAAA,GAAAh9C,EAAA,KAAAN,EAAAu9C,EAAAj9C,EAAAv4B,GAAA,GAAAi4B,EAAA,IAAAA,IAAAt3B,EAAA,gBAAAs3B,CAAA,cAAAj4B,EAAA3P,OAAA2P,EAAAc,KAAAd,EAAAy1E,MAAAz1E,EAAA+Z,SAAA,aAAA/Z,EAAA3P,OAAA,IAAApV,IAAA03C,EAAA,MAAA13C,EAAA8kB,EAAAC,EAAA+Z,IAAA/Z,EAAA01E,kBAAA11E,EAAA+Z,IAAA,gBAAA/Z,EAAA3P,QAAA2P,EAAA21E,OAAA,SAAA31E,EAAA+Z,KAAA9+B,EAAA2b,EAAA,IAAAtb,EAAAu5F,EAAA94F,EAAAylB,EAAAxB,GAAA,cAAA1kB,EAAAkC,KAAA,IAAAvC,EAAA+kB,EAAAS,KAAAV,EAAAjiB,EAAAxC,EAAAy+B,MAAApZ,EAAA,gBAAA7lB,MAAAQ,EAAAy+B,IAAAtZ,KAAAT,EAAAS,KAAA,WAAAnlB,EAAAkC,OAAAvC,EAAA8kB,EAAAC,EAAA3P,OAAA,QAAA2P,EAAA+Z,IAAAz+B,EAAAy+B,IAAA,YAAAy7D,EAAAz5F,EAAAylB,GAAA,IAAAxB,EAAAwB,EAAAnR,OAAApV,EAAAc,EAAAmlB,SAAAlB,GAAA,GAAA/kB,IAAA6kB,EAAA,OAAA0B,EAAA+zE,SAAA,eAAAv1E,GAAAjkB,EAAAmlB,SAAA00E,SAAAp0E,EAAAnR,OAAA,SAAAmR,EAAAuY,IAAAja,EAAA01E,EAAAz5F,EAAAylB,GAAA,UAAAA,EAAAnR,SAAA,WAAA2P,IAAAwB,EAAAnR,OAAA,QAAAmR,EAAAuY,IAAA,IAAAvgC,UAAA,oCAAAwmB,EAAA,aAAAW,EAAA,IAAA/mB,EAAAi7F,EAAA55F,EAAAc,EAAAmlB,SAAAM,EAAAuY,KAAA,aAAAngC,EAAA4D,KAAA,OAAAgkB,EAAAnR,OAAA,QAAAmR,EAAAuY,IAAAngC,EAAAmgC,IAAAvY,EAAA+zE,SAAA,KAAA50E,EAAA,IAAAe,EAAA9nB,EAAAmgC,IAAA,OAAArY,EAAAA,EAAAjB,MAAAe,EAAAzlB,EAAA85F,YAAAn0E,EAAA5mB,MAAA0mB,EAAAxY,KAAAjN,EAAA+5F,QAAA,WAAAt0E,EAAAnR,SAAAmR,EAAAnR,OAAA,OAAAmR,EAAAuY,IAAAja,GAAA0B,EAAA+zE,SAAA,KAAA50E,GAAAe,GAAAF,EAAAnR,OAAA,QAAAmR,EAAAuY,IAAA,IAAAvgC,UAAA,oCAAAgoB,EAAA+zE,SAAA,KAAA50E,EAAA,UAAAo1E,EAAAj2E,GAAA,IAAA/jB,EAAA,CAAAi6F,OAAAl2E,EAAA,SAAAA,IAAA/jB,EAAAk6F,SAAAn2E,EAAA,SAAAA,IAAA/jB,EAAAm6F,WAAAp2E,EAAA,GAAA/jB,EAAAo6F,SAAAr2E,EAAA,SAAAs2E,WAAAx4F,KAAA7B,EAAA,UAAAs6F,EAAAv2E,GAAA,IAAA/jB,EAAA+jB,EAAAw2E,YAAA,GAAAv6F,EAAAyB,KAAA,gBAAAzB,EAAAg+B,IAAAja,EAAAw2E,WAAAv6F,CAAA,UAAA44F,EAAA70E,GAAA,KAAAs2E,WAAA,EAAAJ,OAAA,SAAAl2E,EAAA9d,QAAA+zF,EAAA,WAAArvC,OAAA,YAAAz4B,EAAAlyB,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAylB,EAAAzlB,EAAA2lB,GAAA,GAAAF,EAAA,OAAAA,EAAA1lB,KAAAC,GAAA,sBAAAA,EAAAiN,KAAA,OAAAjN,EAAA,IAAAqH,MAAArH,EAAAlC,QAAA,KAAAoB,GAAA,EAAArB,EAAA,SAAAoP,IAAA,OAAA/N,EAAAc,EAAAlC,QAAA,GAAAmmB,EAAAlkB,KAAAC,EAAAd,GAAA,OAAA+N,EAAAlO,MAAAiB,EAAAd,GAAA+N,EAAAyX,MAAA,EAAAzX,EAAA,OAAAA,EAAAlO,MAAAglB,EAAA9W,EAAAyX,MAAA,EAAAzX,CAAA,SAAApP,EAAAoP,KAAApP,CAAA,YAAAJ,UAAA47F,GAAAr5F,GAAA,2BAAA+4F,EAAAt6F,UAAAu6F,EAAA95F,EAAAhC,EAAA,eAAA6B,MAAAi6F,EAAA/6F,cAAA,IAAAiB,EAAA85F,EAAA,eAAAj6F,MAAAg6F,EAAA96F,cAAA,IAAA86F,EAAAyB,YAAA/B,EAAAO,EAAA98C,EAAA,qBAAAl8C,EAAAy6F,oBAAA,SAAA12E,GAAA,IAAA/jB,EAAA,mBAAA+jB,GAAAA,EAAAjlB,YAAA,QAAAkB,IAAAA,IAAA+4F,GAAA,uBAAA/4F,EAAAw6F,aAAAx6F,EAAA6D,MAAA,EAAA7D,EAAA06F,KAAA,SAAA32E,GAAA,OAAA5lB,OAAAgB,eAAAhB,OAAAgB,eAAA4kB,EAAAi1E,IAAAj1E,EAAAzkB,UAAA05F,EAAAP,EAAA10E,EAAAm4B,EAAA,sBAAAn4B,EAAAtlB,UAAAN,OAAAU,OAAA3B,GAAA6mB,CAAA,EAAA/jB,EAAA26F,MAAA,SAAA52E,GAAA,OAAAu1E,QAAAv1E,EAAA,EAAAk1E,EAAAE,EAAA16F,WAAAg6F,EAAAU,EAAA16F,UAAA+9C,GAAA,0BAAAx8C,EAAAm5F,cAAAA,EAAAn5F,EAAA46F,MAAA,SAAA72E,EAAA0B,EAAAxB,EAAA/kB,EAAArB,QAAA,IAAAA,IAAAA,EAAAwE,SAAA,IAAAsjB,EAAA,IAAAwzE,EAAAT,EAAA30E,EAAA0B,EAAAxB,EAAA/kB,GAAArB,GAAA,OAAAmC,EAAAy6F,oBAAAh1E,GAAAE,EAAAA,EAAA1Y,OAAA1K,MAAA,SAAAwhB,GAAA,OAAAA,EAAAW,KAAAX,EAAAhlB,MAAA4mB,EAAA1Y,MAAA,KAAAgsF,EAAA/7F,GAAAu7F,EAAAv7F,EAAAg/C,EAAA,aAAAu8C,EAAAv7F,EAAAyoB,GAAA,0BAAA8yE,EAAAv7F,EAAA,qDAAA8C,EAAA8wB,KAAA,SAAA/M,GAAA,IAAA/jB,EAAA7B,OAAA4lB,GAAA0B,EAAA,WAAAxB,KAAAjkB,EAAAylB,EAAA5jB,KAAAoiB,GAAA,OAAAwB,EAAAo1E,UAAA,SAAA5tF,IAAA,KAAAwY,EAAA3nB,QAAA,KAAAimB,EAAA0B,EAAAH,MAAA,GAAAvB,KAAA/jB,EAAA,OAAAiN,EAAAlO,MAAAglB,EAAA9W,EAAAyX,MAAA,EAAAzX,CAAA,QAAAA,EAAAyX,MAAA,EAAAzX,CAAA,GAAAjN,EAAAkyB,OAAAA,EAAA0mE,EAAAn6F,UAAA,CAAAK,YAAA85F,EAAAjuC,MAAA,SAAA3qD,GAAA,QAAAkuC,KAAA,OAAAjhC,KAAA,OAAA8X,KAAA,KAAA20E,MAAA31E,EAAA,KAAAW,MAAA,OAAA80E,SAAA,UAAAllF,OAAA,YAAA0pB,IAAAja,EAAA,KAAAs2E,WAAAp0F,QAAAq0F,IAAAt6F,EAAA,QAAAylB,KAAA,WAAAA,EAAAq1E,OAAA,IAAA72E,EAAAlkB,KAAA,KAAA0lB,KAAApe,OAAAoe,EAAAtjB,MAAA,WAAAsjB,GAAA1B,EAAA,EAAAg3E,KAAA,gBAAAr2E,MAAA,MAAAX,EAAA,KAAAs2E,WAAA,GAAAE,WAAA,aAAAx2E,EAAAtiB,KAAA,MAAAsiB,EAAAia,IAAA,YAAAg9D,IAAA,EAAArB,kBAAA,SAAA35F,GAAA,QAAA0kB,KAAA,MAAA1kB,EAAA,IAAAylB,EAAA,cAAAw1E,EAAAh3E,EAAA/kB,GAAA,OAAAymB,EAAAlkB,KAAA,QAAAkkB,EAAAqY,IAAAh+B,EAAAylB,EAAAxY,KAAAgX,EAAA/kB,IAAAumB,EAAAnR,OAAA,OAAAmR,EAAAuY,IAAAja,KAAA7kB,CAAA,SAAAA,EAAA,KAAAm7F,WAAAv8F,OAAA,EAAAoB,GAAA,IAAAA,EAAA,KAAArB,EAAA,KAAAw8F,WAAAn7F,GAAAymB,EAAA9nB,EAAA08F,WAAA,YAAA18F,EAAAo8F,OAAA,OAAAgB,EAAA,UAAAp9F,EAAAo8F,QAAA,KAAA/rD,KAAA,KAAAsO,EAAAv4B,EAAAlkB,KAAAlC,EAAA,YAAAq+C,EAAAj4B,EAAAlkB,KAAAlC,EAAA,iBAAA2+C,GAAAN,EAAA,SAAAhO,KAAArwC,EAAAq8F,SAAA,OAAAe,EAAAp9F,EAAAq8F,UAAA,WAAAhsD,KAAArwC,EAAAs8F,WAAA,OAAAc,EAAAp9F,EAAAs8F,WAAA,SAAA39C,GAAA,QAAAtO,KAAArwC,EAAAq8F,SAAA,OAAAe,EAAAp9F,EAAAq8F,UAAA,YAAAh+C,EAAA,MAAAt4C,MAAA,kDAAAsqC,KAAArwC,EAAAs8F,WAAA,OAAAc,EAAAp9F,EAAAs8F,WAAA,KAAAP,OAAA,SAAA71E,EAAA/jB,GAAA,QAAAylB,EAAA,KAAA40E,WAAAv8F,OAAA,EAAA2nB,GAAA,IAAAA,EAAA,KAAAvmB,EAAA,KAAAm7F,WAAA50E,GAAA,GAAAvmB,EAAA+6F,QAAA,KAAA/rD,MAAAjqB,EAAAlkB,KAAAb,EAAA,oBAAAgvC,KAAAhvC,EAAAi7F,WAAA,KAAAt8F,EAAAqB,EAAA,OAAArB,IAAA,UAAAkmB,GAAA,aAAAA,IAAAlmB,EAAAo8F,QAAAj6F,GAAAA,GAAAnC,EAAAs8F,aAAAt8F,EAAA,UAAA8nB,EAAA9nB,EAAAA,EAAA08F,WAAA,UAAA50E,EAAAlkB,KAAAsiB,EAAA4B,EAAAqY,IAAAh+B,EAAAnC,GAAA,KAAAyW,OAAA,YAAArH,KAAApP,EAAAs8F,WAAAv1E,GAAA,KAAAs2E,SAAAv1E,EAAA,EAAAu1E,SAAA,SAAAn3E,EAAA/jB,GAAA,aAAA+jB,EAAAtiB,KAAA,MAAAsiB,EAAAia,IAAA,gBAAAja,EAAAtiB,MAAA,aAAAsiB,EAAAtiB,KAAA,KAAAwL,KAAA8W,EAAAia,IAAA,WAAAja,EAAAtiB,MAAA,KAAAu5F,KAAA,KAAAh9D,IAAAja,EAAAia,IAAA,KAAA1pB,OAAA,cAAArH,KAAA,kBAAA8W,EAAAtiB,MAAAzB,IAAA,KAAAiN,KAAAjN,GAAA4kB,CAAA,EAAAu2E,OAAA,SAAAp3E,GAAA,QAAA/jB,EAAA,KAAAq6F,WAAAv8F,OAAA,EAAAkC,GAAA,IAAAA,EAAA,KAAAylB,EAAA,KAAA40E,WAAAr6F,GAAA,GAAAylB,EAAA00E,aAAAp2E,EAAA,YAAAm3E,SAAAz1E,EAAA80E,WAAA90E,EAAA20E,UAAAE,EAAA70E,GAAAb,CAAA,GAAA1f,MAAA,SAAA6e,GAAA,QAAA/jB,EAAA,KAAAq6F,WAAAv8F,OAAA,EAAAkC,GAAA,IAAAA,EAAA,KAAAylB,EAAA,KAAA40E,WAAAr6F,GAAA,GAAAylB,EAAAw0E,SAAAl2E,EAAA,KAAAE,EAAAwB,EAAA80E,WAAA,aAAAt2E,EAAAxiB,KAAA,KAAAvC,EAAA+kB,EAAA+Z,IAAAs8D,EAAA70E,EAAA,QAAAvmB,CAAA,QAAA0E,MAAA,0BAAAw3F,cAAA,SAAAp7F,EAAAylB,EAAAxB,GAAA,YAAAu1E,SAAA,CAAAr0E,SAAA+M,EAAAlyB,GAAA85F,WAAAr0E,EAAAs0E,QAAA91E,GAAA,cAAA3P,SAAA,KAAA0pB,IAAAja,GAAAa,CAAA,GAAA5kB,CAAA,UAAAq7F,GAAAp3E,EAAAF,EAAA/jB,EAAAylB,EAAAvmB,EAAAymB,EAAA62B,GAAA,QAAA3+C,EAAAomB,EAAA0B,GAAA62B,GAAAN,EAAAr+C,EAAAkB,KAAA,OAAAklB,GAAA,YAAAjkB,EAAAikB,EAAA,CAAApmB,EAAA6mB,KAAAX,EAAAm4B,GAAA75C,QAAAC,QAAA45C,GAAA35C,KAAAkjB,EAAAvmB,EAAA,UAAAo8F,GAAAr3E,GAAA,sBAAAF,EAAA,KAAA/jB,EAAAY,UAAA,WAAAyB,SAAA,SAAAojB,EAAAvmB,GAAA,IAAAymB,EAAA1B,EAAApjB,MAAAkjB,EAAA/jB,GAAA,SAAAu7F,EAAAt3E,GAAAo3E,GAAA11E,EAAAF,EAAAvmB,EAAAq8F,EAAAC,EAAA,OAAAv3E,EAAA,UAAAu3E,EAAAv3E,GAAAo3E,GAAA11E,EAAAF,EAAAvmB,EAAAq8F,EAAAC,EAAA,QAAAv3E,EAAA,CAAAs3E,OAAA,OAqNA,SAjNqB,SAAHl1F,GAAiB,IAAZ6rB,EAAM7rB,EAAN6rB,OAEb2lE,EAAUP,KACVmE,EAAe,eAAAC,EAAAJ,GAAA/C,KAAAmC,MAAI,SAAAiB,EAAOxrC,EAAMyrC,GAAM,IAAAC,EAAAC,EAAAtyC,EAAA7gC,EAAAozE,EAAA,OAAAxD,KAAAG,MAAA,SAAArhE,GAAA,cAAAA,EAAA6W,KAAA7W,EAAApqB,MAAA,OAEL,GAErB,MAFV4uF,EAAS3pE,EAAO8pE,iBAEJ,CAAA3kE,EAAApqB,KAAA,SAKS,GADf0b,EAAW,KAGdkzE,EAAOI,cAAcC,SAAS,QAAS,CAAF7kE,EAAApqB,KAAA,gBAAAoqB,EAAApqB,KAAA,EACjB8H,MAAM8mF,GAAQt5F,MAAK,SAACuqB,GAAG,OAAKA,EAAIqvE,aAAa,IAAC,OAAvD,OAAVL,EAAUzkE,EAAAtS,KAAAsS,EAAApqB,KAAG,GACC2uF,EAAO1M,SAAS4M,GAAW,QAAzCtyC,EAAKnyB,EAAAtS,KAAAsS,EAAApqB,KAAG,GAAH,kBAEA4uF,EAAOI,cAAcC,SAAS,UAAWL,EAAOI,cAAcC,SAAS,SAAQ,CAAA7kE,EAAApqB,KAAA,gBAAAoqB,EAAApqB,KAAA,GACjE8H,MAAM8mF,GAAQt5F,MAAK,SAACuqB,GAAG,OAAKA,EAAIqvE,aAAa,IAAC,QAAvD,OAAVL,EAAUzkE,EAAAtS,KAAAsS,EAAApqB,KAAG,GACC2uF,EAAO7M,SAAS+M,GAAW,QAAzCtyC,EAAKnyB,EAAAtS,KAAAsS,EAAApqB,KAAG,GAAH,cAGLu8C,EAAQ,sCAAsC,QAG5CuyC,EAAcvyC,EAAMuwB,WAAW,IAAK,KAE1C5pB,EAAKigB,UAAU5mB,EAAO,CACtB5hD,EAAG,IAAQ+gB,EAAW,EAAMozE,EAAYpyE,MAAQ,EAChD/E,EAAG,IACH+M,OAAQoqE,EAAYpqE,OACpBhI,MAAOoyE,EAAYpyE,QAChB,yBAAA0N,EAAA0jE,OAAA,GAAAY,EAAA,KAEV,gBAhCoBS,EAAAC,GAAA,OAAAX,EAAA76F,MAAA,KAAAD,UAAA,KAkCf07F,EAAe,SAACnsC,EAAMosC,GACxB,IAAMC,EAAiB,CACnBtqE,EAAOuqE,MACPvqE,EAAOnsB,cACPmsB,EAAOwqE,IACPxqE,EAAOzrB,SACPyrB,EAAOyqE,UACPzqE,EAAO0qE,SACP1qE,EAAO2qE,QACP3qE,EAAO4qE,UAIPC,EAAQ,IAEZP,EAAev2F,SAAQ,SAAA63C,GACnBqS,EAAKgkC,SAASr2C,EAAK,CACfl2C,EALI,IAMJgd,EAAGm4E,EACHjoE,KAAM,EACNlF,KAAM2sE,EACNziC,MAAOoS,GAAI,EAAG,EAAG,KAErB6wB,GAAS,EACb,GACJ,EAEMC,EAAc,SAAC1vF,GACjB,OAAGA,EAAKxP,QAAU,IACP,EAEJ,EACX,EAYMm6E,EAAU,SAAC3qE,EAAM2vF,GACnB,OAAG3vF,EAAKxP,QAAU,IACPm/F,EAEJ3vF,CACX,EAEM4vF,EAA4B,SAAC5vF,GAC/B,OAAGA,EAAKxP,QAAU,IACP,GAERwP,EAAKxP,QAAU,IACP,GAEJ,EACX,EACiC,SAAAq/F,IAqGhC,OArGgCA,EAAA7B,GAAA/C,KAAAmC,MAAjC,SAAA0C,IAAA,IAAApxF,EAAAqxF,EAAAzB,EAAAW,EAAAe,EAAAh8B,EAAAnR,EAAAotC,EAAA5zE,EAAA+hE,EAAA8R,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAzpD,EAAA0pD,EAAA32B,EAAAxhD,EAAAo4E,EAAAC,EAAAC,EAAA,OAAA1F,KAAAG,MAAA,SAAAwF,GAAA,cAAAA,EAAAhwD,KAAAgwD,EAAAjxF,MAAA,OAE+B,OAArBjB,EAAMkmB,EAAOisE,SAAQD,EAAAjxF,KAAA,EACI8H,MAAM/I,GAAKzJ,MAAK,SAAAuqB,GAAG,OAAIA,EAAIqvE,aAAa,IAAC,OAAlD,OAAhBkB,EAAgBa,EAAAn5E,KAAAm5E,EAAAjxF,KAAG,EACJk9E,GAAAA,KAAiBkT,GAAiB,OAA3C,OAANzB,EAAMsC,EAAAn5E,KAAAm5E,EAAAjxF,KAAG,EAEa2uF,EAAOjN,UAAU/L,GAAcI,WAAU,OAiEnC,OAjE5BuZ,EAAa2B,EAAAn5E,KACbu4E,EAAaf,EAAc1iB,kBAE3BvY,EAAQs6B,EAAOhW,WACfz1B,EAAOmR,EAAM,GAAEi8B,EAEKptC,EAAKkiC,UAAvB1oE,EAAK4zE,EAAL5zE,MAAa4zE,EAAN5rE,OAEX+5D,EAAQ,GAEM,MAAfx5D,EAAOruB,MAA+Bd,MAAfmvB,EAAOruB,OAC7B6nF,EAAQx5D,EAAOruB,KAAK6M,eAElB8sF,EAAc9R,EAAM5tF,QAAU,GAAM,GAAK,GACzC2/F,EAAalB,EAAc/wD,kBAAkBkgD,EAAO8R,GAEpDE,EAAyB,SAACpwF,GAE5B,IADA,IAAI8wF,EAAa,GACRvgG,EAAI,EAAGA,EAAIyP,EAAKxP,OAAQD,KACkB,GAA3Cy/F,EAAW7sF,QAAQnD,EAAK2Y,WAAWpoB,KAA+B,KAAlByP,EAAKwtF,OAAOj9F,IAAmC,IAAtByP,EAAK2Y,WAAWpoB,KACzFugG,GAAc9wF,EAAKwtF,OAAOj9F,IAGlC,OAAOugG,CACX,EAKMT,EAAS,GAAG,IACZC,EAAS,GAAG,IACZC,EAAS,IAAI,IAEnB1tC,EAAKgkC,SAASzI,EAAM,CAChB9jF,EAAG+hB,EAAQ,EAAI8zE,EAAa,EAC5B74E,EAAG,IACHkQ,KAAM0oE,EACN5tE,KAAM2sE,EACNziC,MAAOoS,GAAIyxB,EAAQC,EAAQC,KAG3BzpD,EAAcspD,EAAuBzlB,EAAQ/lD,EAAOkiB,YAAaliB,EAAOmsE,mBACxEP,EAAeJ,EAAuBzlB,EAAQ/lD,EAAO4rE,aAAc5rE,EAAOosE,oBAE9EnuC,EAAKgkC,SAAS//C,EAAa,CACvBxsC,EAAG,GACHgd,EAAG,IACH+D,SAAUgB,EAAQ,IAClBisD,YAhFetoE,EAgFW8mC,EA/E3B9mC,EAAKxP,QAAU,IACP,EAERwP,EAAKxP,QAAU,IACP,GAEJ,IA0EHg3B,KAAMkoE,EAAY5oD,GAClB5qB,MAAO,GACPoG,KAAM2sE,EACNziC,MAAOoS,GAAI,EAAG,EAAG,KAGrB/b,EAAKgkC,SAAS2J,EAAa,CACvBl2F,EAAG,GACHgd,EAAG,IACHkQ,KAAMkoE,EAAYc,GAClBluE,KAAM2sE,EACNziC,MAAOoS,GAAI,EAAG,EAAG,GACjBvjD,SAAUgB,EAAQ,IAClBisD,WAAYsnB,EAA0BY,KAG1CxB,EAAansC,EAAMosC,GAAe2B,EAAAjxF,KAAA,GAE5BwuF,EAAgBtrC,EAAMyrC,GAAO,eAAAsC,EAAAjxF,KAAA,GAEZ2uF,EAAO5L,OAAM,QAA9B7oB,EAAQ+2B,EAAAn5E,KAEVY,EAAItiB,SAASk7F,cAAc,KAC/Bl7F,SAASuR,KAAK4pF,YAAY74E,GAC1BA,EAAE3S,MAAQ,gBAEJ+qF,EAAO,IAAIU,KAAK,CAACt3B,GAAW,CAAE1lE,KAAM,oBACpCu8F,EAAUU,IAAIC,gBAAgBZ,GAAKG,EAAA7kD,GAEjCw+C,GAAWA,EAAQh0F,KAAIq6F,EAAAjxF,KACtB,YADsBixF,EAAA7kD,GACb,oBAGA,OAFV1zB,EAAEjG,KAAOs+E,EACTr4E,EAAEhoB,OAAS,SACXgoB,EAAEi5E,QAAQV,EAAAtE,OAAA,oBASA,OANJqE,EAAYzpF,OAAOqqF,QACfhgG,OACVo/F,EAAU9kF,SAASuG,KAAOs+E,EAE1Br4E,EAAEjG,KAAOs+E,EACTr4E,EAAEm5E,SAAW5sE,EAAOruB,KACpB8hB,EAAEi5E,QAAQV,EAAAtE,OAAA,qCAAAsE,EAAAnD,OA3HA,IAACztF,CA2HD,GAAA8vF,EAAA,KAIrBD,EAAAt8F,MAAA,KAAAD,UAAA,CAED,OACI+M,EAAAA,cAAA,SAAOoF,UAAU,qBACbpF,EAAAA,cAAA,KAAGoF,UAAU,gBACbpF,EAAAA,cAAA,KAAGoF,UAAU,YAAWW,QA3G/B,WACgC,OAAAypF,EAAAt8F,MAAC,KAADD,UAAA,IA0G6BkH,EAAAA,GAAAA,GAAU,yBAG5E,w/CClNoD,IAE9Ci3F,GAAkB,SAAA/wF,GACpB,SAAA+wF,EAAYnhG,GAAO,IAAAkF,EAOgC,mGAPhCxF,CAAA,KAAAyhG,IACfj8F,EAAAoL,GAAA,KAAA6wF,EAAA,CAAMnhG,KACD0Q,MAAQ,CACT0wF,WAAW,EACXC,kBAAoB,GAExBn8F,EAAKo8F,eAAiBp8F,EAAKo8F,eAAe7/F,KAAIyD,GAC9CA,EAAKq8F,YAAcr8F,EAAKq8F,YAAY9/F,KAAIyD,GAAOA,CACnD,CAAC,6RAAApE,CAAAqgG,EAAA/wF,KAAA+wF,KAAA,EAAA1gG,IAAA,oBAAAU,MAED,WACI,IAAM8G,EAA4D,IAAlDlF,KAAKy+F,KAAKviF,KAAKwiF,wBAAwB1tE,OACjD2tE,EAAc3+F,KAAK/C,MAAMmc,MAAMpY,QAAQ7D,OAAS6C,KAAK2N,MAAM2wF,kBACjEp5F,GAAWy5F,GAAe3+F,KAAKu+F,gBACnC,GAAC,CAAA7gG,IAAA,iBAAAU,MAED,WAAiB,IAAAmR,EAAA,KACPqvF,EAAS5+F,KAAKy+F,KAAKviF,KAAKwiF,wBAAwB7uC,IAChDgvC,EAAgB7+F,KAAKy+F,KAAKK,SAASJ,wBAAwB9uC,OAC3DmvC,EAAgB/+F,KAAKy+F,KAAKO,SAASN,wBAAwB9uC,OAC3D+hC,EAAY,WAAH,OAASpiF,EAAKkvF,KAAKviF,KAAK7J,MAAM2e,OAAS,GAAH9gB,QAAQX,EAAK5B,MAAM0wF,UAAYQ,EAAgBE,GAAkBH,EAAM,KAAK,EACzHK,EAAiB,WACnB1vF,EAAKC,UAAS,SAAC0vF,EAAWjiG,GAAK,MAAM,CACjCohG,WAAYa,EAAUb,UACzB,IAAE,WACC1M,GACJ,GACJ,EACK3xF,KAAKy+F,KAAKviF,KAAK7J,MAAM2e,OAKtBiuE,KAJAtN,IACAhqF,YAAW,WAAMs3F,GAAgB,GAAG,GAK5C,GAAC,CAAAvhG,IAAA,cAAAU,MAED,WACI4B,KAAK/C,MAAMkiG,kBAAkBn/F,KAAK/C,MAAMmc,MAAM+K,OAE3CnkB,KAAK/C,MAAMghB,YACVje,KAAK/C,MAAM0e,gBAEnB,GAAC,CAAAje,IAAA,SAAAU,MAED,WAAS,IAAAyR,EAAA,KAAA8P,EACgC3f,KAAK/C,MAAlCmc,EAAKuG,EAALvG,MAAOM,EAAiBiG,EAAjBjG,kBACf,OACI1M,EAAAA,cAACkG,EAAAA,SAAQ,KACLlG,EAAAA,cAAA,OAAKoF,UAAWpS,KAAK/C,MAAMghB,WAAc,gCAAkC,wBAAyBmC,IAAI,QACxGpT,EAAAA,cAAA,OAAK+F,QAAS/S,KAAKw+F,YAAapsF,UAAWpS,KAAK/C,MAAMghB,WAAa,gBAAkB,UAC7EjR,EAAAA,cAAA,OAAKoF,UAAU,+BAA+B4N,KAAK,6BAA6B5G,EAAM+K,OACtFnX,EAAAA,cAAA,KAAGoF,UAAWpS,KAAK/C,MAAMghB,WAAa,sBAAwB,wBAEtEjR,EAAAA,cAAA,OAAKoF,UAAWpS,KAAK/C,MAAMghB,WAAa,yBAA2B,kBAC/DjR,EAAAA,cAAA,OAAKoF,UAAU,OACXpF,EAAAA,cAAA,OAAKoF,UAAU,kBACVgH,EAAMpY,SAAWoY,EAAMpY,QAAQwG,KAAI,SAACoI,EAAMwvF,EAAWlgF,GAAK,OACvDlS,EAAAA,cAAA,OAAKtP,IAAG,GAAAwS,OAAKN,EAAKuU,MAAK,KAAAjU,OAAIkvF,GAAahtF,UAAU,oBAClDpF,EAAAA,cAAA,MAAIoF,UAAU,uBAAuB4N,KAAK,sBAAsBI,IAAKg/E,IAAYvvF,EAAKlC,MAAM2wF,kBAAkB,EAAI,WAAac,IAAYlgF,EAAM/hB,OAAO,EAAI,WAAa,MACrK6P,EAAAA,cAACqyF,GAAqB,CAACzvF,KAAMA,EAAMwJ,MAAOA,EAAOM,kBAAmBA,KAElE,MAIjBN,EAAMpY,QAAQ7D,OAAS6C,KAAK2N,MAAM2wF,mBACnCtxF,EAAAA,cAAA,QAAMoF,UAAU,4BAA4BW,QAAS/S,KAAKu+F,mBAQ1E,iGAAC,CA5EmB,CAAStxF,EAAAA,WAuF3BoyF,GAAwB,SAAHtE,GAAA,IAAKnrF,EAAImrF,EAAJnrF,KAAMwJ,EAAK2hF,EAAL3hF,MAAOM,EAAiBqhF,EAAjBrhF,kBAAiB,OAC1D1M,EAAAA,cAAA,SAAOoF,UAAU,kBACbpF,EAAAA,cAAA,SAAOoF,UAAU,wBAAwBtR,KAAK,WAAWyR,SAAU,SAAAjR,GAAK,OAAIoY,EAAkBN,EAAOxJ,EAAK,EAAE0vF,QAAkC,MAAzBlmF,EAAMC,iBAA2BD,EAAMC,gBAAgBN,SAASnJ,EAAKxR,SAC1L4O,EAAAA,cAAA,QAAMoF,UAAU,yBACXxC,EAAKuU,OACJzd,MAAMkJ,EAAK9J,WACTkH,EAAAA,cAAA,QAAMoF,UAAU,4BAA2B,KAAQxC,EAAK9J,SAAS,MAGrE,EAGZ,SApBsB,SAAHJ,GAAA,IAAKwS,EAAYxS,EAAZwS,aAAqBwB,GAAFhU,EAALgR,MAAwBhR,EAAjBgU,mBAAmBoC,EAAepW,EAAfoW,gBAAiBC,EAAWrW,EAAXqW,YAAawjF,EAAa75F,EAAb65F,cAAeJ,EAAiBz5F,EAAjBy5F,kBAAmBnjF,EAActW,EAAdsW,eAAgBL,EAAcjW,EAAdiW,eAAc,MAA2B,aAApBG,GACjK9O,EAAAA,cAAA,MAAIoF,UAAU,kBACT8F,GAAgBA,EAAa1Q,KAAI,SAAC4R,EAAOomF,EAAYtgF,GAAK,OACvDlS,EAAAA,cAACoxF,GAAkB,CAAC1gG,IAAG,GAAAwS,OAAKkJ,EAAM+K,MAAK,KAAAjU,OAAIsvF,GAAcpmF,MAAOA,EAAOM,kBAAmBA,EAAmBqC,YAAaA,EAAawjF,cAAeA,EAAeJ,kBAAmBA,EAAmBlhF,WAAYjC,IAAmB5C,EAAM+K,MAAOxI,eAAgBA,GAAiB,IAGnS,w/CCpF4F,IAEvF8jF,GAAsB,SAAApyF,GAAA,SAAAoyF,IAAA,mGAAA9iG,CAAA,KAAA8iG,GAAAlyF,GAAA,KAAAkyF,EAAAx/F,UAAA,8RAAAlC,CAAA0hG,EAAApyF,KAAAoyF,KAAA,EAAA/hG,IAAA,SAAAU,MACxB,WACI,OAAO4O,EAAAA,cAAC0yF,GAAkB1/F,KAAK/C,MACnC,iGAAC,CAHuB,CAASgQ,EAAAA,WAwBrC,UAAesG,EAAAA,EAAAA,KAnBS,SAAH7N,GAAsE,IAAAmZ,EAAAnZ,EAAhEmU,cAAiB3B,EAAY2G,EAAZ3G,aAAc4D,EAAe+C,EAAf/C,gBAAmBwC,EAAO5Y,EAAP4Y,QACzE,MAAO,CACHpG,aAAAA,EACA4D,gBAAAA,EACAC,YAAauC,EAAQvC,YACrBC,eAAgBsC,EAAQtC,eAEhC,IAE2B,SAAA/X,GACvB,MAAO,CACHyS,MAAO,SAACsC,EAAG2mF,GAAa,OAAK17F,EAASyS,EAAMsC,EAAG2mF,GAAe,EAC9DjmF,kBAAmB,SAACN,EAAOxJ,GAAI,OAAK3L,EAASyV,EAAkBN,EAAOxJ,GAAM,EAC5E2vF,cAAe,WAAF,OAAQt7F,G5JnBM,SAACA,GAAQ,OACxCA,EAAS,CACLnD,KAAM2a,IACR,G4JgBgD,EAC9C0jF,kBAAmB,SAACziF,GAAS,OAAKzY,G5JVRsa,E4JUmC7B,E5JVtB,SAACzY,GAAQ,OACpDA,EAAS,CACLnD,KAAM4a,GACN6C,SAAUA,GACZ,IAJ2B,IAACA,C4JU8C,EACxE5C,eAAgB,WAAF,OAAQ1X,EAAS0X,KAAiB,EAExD,GAEA,CAA4D8jF,IC3B5D,IAsBMJ,GAAwB,SAAHtE,GAAA,IAAKnrF,EAAImrF,EAAJnrF,KAAMwJ,EAAK2hF,EAAL3hF,MAAOwmF,EAAa7E,EAAb6E,cAAa,OACtD5yF,EAAAA,cAAA,SAAOoF,UAAU,kBACbpF,EAAAA,cAAA,SAAOoF,UAAU,wBAAwBtR,KAAK,WAAWyR,SAAU,SAAAjR,GAAK,OAAIs+F,EAAcxmF,EAAOxJ,EAAK,EAAE0vF,QAASlmF,EAAMC,gBAAgBN,SAASnJ,EAAKxR,SACrJ4O,EAAAA,cAAA,QAAMoF,UAAU,yBACXxC,EAAKuU,OACJzd,MAAMkJ,EAAK9J,WAAa8J,EAAK9J,SAAW,GACtCkH,EAAAA,cAAA,QAAMoF,UAAU,4BAA2B,KAAGxC,EAAK9J,SAAS,MAGhE,EAGZ,SAlC6B,SAAHJ,GAAA,IAAKwS,EAAYxS,EAAZwS,aAAc2D,EAAmBnW,EAAnBmW,oBAAqBgkF,EAAyBn6F,EAAzBm6F,0BAA2BD,EAAal6F,EAAbk6F,cAAeE,EAAQp6F,EAARo6F,SAAQ,OAChH9yF,EAAAA,cAAA,MAAIoF,UAAU,8CACT8F,GAAgBA,EAAa1Q,KAAI,SAAC4R,EAAOomF,EAAYtgF,GAAK,OAAK9F,EAAMpY,SAAWoY,EAAMpY,QAAQ7D,OAAS,GACpG6P,EAAAA,cAAA,MAAIoF,UAAU,gDAAgD1U,IAAG,GAAAwS,OAAKkJ,EAAM+K,MAAK,KAAAjU,OAAIsvF,IACjFxyF,EAAAA,cAAA,OAAKoF,UAAS,gCAAAlC,OAAkC2L,EAAoB9C,SAASK,EAAMtK,IAAK,6CAA6C,IAAMkR,KAAK,4BAA4BjN,QAAS,SAAAzR,GAAK,OAAIu+F,EAA0BzmF,EAAM,GACxNA,EAAM+K,OAEZnX,EAAAA,cAAA,MAAIoF,UAAU,2BACTgH,EAAMpY,SAAWoY,EAAMpY,QAAQwG,KAAI,SAACoI,EAAMwvF,EAAWlgF,GAAK,OACvDlS,EAAAA,cAAA,MAAItP,IAAG,GAAAwS,OAAKN,EAAKuU,MAAK,KAAAjU,OAAIkvF,GAAahtF,UAAU,uBAAuB4N,KAAK,uBACzEhT,EAAAA,cAACqyF,GAAqB,CAACzvF,KAAMA,EAAMwJ,MAAOA,EAAOwmF,cAAeA,IAC/D,IAET5yF,EAAAA,cAAA,MAAIoF,UAAU,wBACVpF,EAAAA,cAAA,UAAQoF,UAAU,iBAAiBW,QAAS,SAAAzR,GAAUu+F,EAA0BzmF,GAAO0mF,EAAS5nF,EAAa,IAAI/Q,EAAAA,GAAAA,GAAU,qBAI1I,IACA,unDCpBF,IAAM44F,GAAiB,SAAC9iG,GAAK,OAAKA,CAAK,EAEjC+iG,GAAS,SAAA3yF,GAClB,SAAA2yF,EAAY/iG,GAAO,IAAAkF,+FAAAxF,CAAA,KAAAqjG,GACf79F,EAAAoL,GAAA,KAAAyyF,EAAA,CAAM/iG,IAAO,IAAAgjG,EACQhjG,EAAdoP,MAAAA,OAAK,IAAA4zF,GAAI,EAACA,EAGf,OAFF99F,EAAKwL,MAAQ,CACTtB,MAAAA,GACFlK,CACN,CAAC,6RAAApE,CAAAiiG,EAAA3yF,KAAA2yF,IAAA,EAAAtiG,IAAA,cAAAU,MACD,SAAYiB,EAAGgN,GACXrM,KAAKwP,UAAS,SAAC0vF,EAAWjiG,GAAK,wVAAA8N,CAAA,GACxBm0F,EAAS,CACZ7yF,MAAOA,IAAQ6yF,EAAU7yF,OAAS,EAAIA,GAAK,GAEnD,GAAC,CAAA3O,IAAA,SAAAU,MACD,WAAS,IAAAmR,EAAA,KACC2wF,EAAalzF,EAAAA,SAAAA,QAAuBhN,KAAK/C,MAAMkjG,UAC/CC,EAAc,SAAA/zF,GAAK,OAAIkD,EAAK5B,MAAMtB,QAAQA,EAAQ,SAAW,EAAE,EAC/DuH,EAAUssF,EAAW14F,KAAI,SAAC64F,EAAWh0F,GAAK,OAC5CW,EAAAA,cAAA,OAAKoF,UAAU,UAAU1U,IAAG,qBAAAwS,OAAuB7D,IAC/CW,EAAAA,cAAA,OAAKoF,UAAS,qBAAAlC,OAAuBkwF,EAAY/zF,GAAM,KAAA6D,OAAImwF,EAAUpjG,MAAMqjG,MAAM,IAAMvtF,QAAW,SAAA1T,GAAC,OAAIkQ,EAAKivF,YAAYn/F,EAAGgN,EAAM,GAC5Hg0F,EAAUpjG,MAAMuhC,QAAQ,IAE3B,IAEJ+hE,EAASL,EAAW14F,KAAI,SAAC64F,EAAWh0F,GAAK,OAC3CW,EAAAA,cAAA,OAAKoF,UAAS,oBAAAlC,OAAsBkwF,EAAY/zF,IAAU3O,IAAG,oBAAAwS,OAAsB7D,IAC9Eg0F,EAAUpjG,MAAMkjG,SACf,IAEV,OACInzF,EAAAA,cAAA,OAAKoF,UAAWpS,KAAK/C,MAAMmV,WACvBpF,EAAAA,cAAA,OAAKoF,UAAS,+BACTwB,GAEJ2sF,EAGb,kGAAC,CArCiB,CAAStzF,EAAAA,WCIzBuzF,GAAgB,SAAAC,GAAM,OACxBzzF,EAAAA,cAAA,MAAIoF,UAAU,gBACTquF,GAAUA,EAAOj5F,KAAI,SAAAuzF,EAAkC1uF,GAAK,IAArCnJ,EAAI63F,EAAJ73F,KAAMmI,EAAG0vF,EAAH1vF,IAAK4M,EAAU8iF,EAAV9iF,WAAYJ,EAAKkjF,EAALljF,MAAK,OAChD7K,EAAAA,cAAA,MAAIoF,UAAS,gBAAAlC,OAAkB2H,EAAM1a,OAAS,EAAI,eAAiB,GAAE,KAAA+S,OAAI+H,EAAa,SAAW,IAAMva,IAAG,iBAAAwS,OAAmB7D,IACzHW,EAAAA,cAAA,KAAGoF,UAAU,eAAe2M,KAAM1T,GAAMnI,GACvCs9F,GAAc3oF,GACd,IAER,EAGT,SAjBsB,SAAHnS,GAAA,IAAKyR,EAAazR,EAAbyR,cAAa,OACjCnK,EAAAA,cAAA,OAAKoF,UAAU,yBAAyB4N,KAAK,cACxCwgF,GAAcrpF,GACb,quBCSV,SAZ4B,SAAHzR,GAAuB,IAAlBwR,EAAYxR,EAAZwR,aACpBwpF,EAAiB,GAAAxwF,OAAA+I,GAAI/B,EAAalQ,QAAO,SAAAqpB,GAAI,OAAsB,IAAlBA,EAAK+nD,QAAiB,KAAC,CAAE,CAAC,IAAI,GACrF,OACAprE,EAAAA,cAAA,OAAKoF,UAAU,WACXpF,EAAAA,cAAA,UAAQ5O,MAAOsiG,EAAetiG,MAAOgU,UAAU,cAAcG,SAAU,SAAAjR,GAAK,OAAIuS,OAAO2E,SAAWlX,EAAMtE,OAAOoB,KAAK,GAC/G8Y,GAAgBA,EAAa1P,KAAI,SAAAuzF,EAA0B1uF,GAAK,IAA7BM,EAAIouF,EAAJpuF,KAAMvO,EAAK28F,EAAL38F,MAAe28F,EAAR3iB,SAAQ,OACrDprE,EAAAA,cAAA,UAAQ5O,MAAOA,EAAOV,IAAG,mBAAAwS,OAAqB7D,IAAUM,EAAc,KAIrF,m4CCuBD,SAhCoB,SAAJjH,GAA4D,IAAtDwS,EAAYxS,EAAZwS,aAAcwB,EAAiBhU,EAAjBgU,kBAAmBoC,EAAepW,EAAfoW,gBAC7C6kF,EAAqBzoF,EAAalR,QAAO,SAAAA,GAAM,OAAIA,EAAOqS,gBAAgBlc,OAAO,CAAC,IAClFyjG,EAAsBD,EAAmBpnF,QAAO,SAACsnF,EAAaznF,GAChE,IAAKA,EACD,OAAOynF,EACV,IACM7/F,EAA4BoY,EAA5BpY,QAASqY,EAAmBD,EAAnBC,gBACVynF,EAAe9/F,EAAQgG,QAAO,SAAA2S,GAAM,OAAIN,EAAgBN,SAASY,EAAOvb,MAAM,IAAEoJ,KAAI,SAAAmS,GAAM,wVAAA5O,CAAA,GAAO4O,EAAQ,CAAAP,MAAAA,GAAK,IACpH,MAAO,GAAPlJ,OAAA+I,GACO4nF,GAAW5nF,GACX6nF,GAEX,GAAG,IACH,OAAuC,IAA9BH,EAAmBxjG,OAAe,KACvC6P,EAAAA,cAAA,OAAKoF,UAAU,mBACXpF,EAAAA,cAAA,QAAMoF,UAAU,kBACZpF,EAAAA,cAAA,YAAM,KAAE7F,EAAAA,GAAAA,GAAU,qBAAqB,OACtCw5F,GAAsBA,EAAmBn5F,KAAI,SAAC4R,EAAO/M,GAAK,OACvDW,EAAAA,cAAA,QAAMoF,UAAU,uBAAuBW,QAAS,SAAAzR,GAAK,OAAIoY,EAAkBN,EAAM,EAAE1b,IAAG,SAAAwS,OAAW7D,IAAS,IAAE+M,EAAM+K,MAAM,IAAQ,KAGnH,aAApBrI,GACG9O,EAAAA,cAAA,QAAMoF,UAAU,kBACZpF,EAAAA,cAAA,YAAM,KAAE7F,EAAAA,GAAAA,GAAU,qBAAqB,OACtCy5F,GAAuBA,EAAoBp5F,KAAI,SAACmS,EAAQtN,GAAK,OAC1DW,EAAAA,cAAA,QAAMoF,UAAU,uBAAuBW,QAAS,SAAAzR,GAAK,OAAIoY,EAAkBC,EAAOP,MAAOO,EAAO,EAAEjc,IAAG,UAAAwS,OAAY7D,IAAS,IAAEsN,EAAOwK,MAAM,IAAQ,KAKxK,28DCxB0F,IAErF48E,GAA6B,SAAA1zF,GAC/B,SAAA0zF,EAAY9jG,GAAO,IAAAkF,+FAAAxF,CAAA,KAAAokG,IACf5+F,EAAAoL,GAAA,KAAAwzF,EAAA,CAAM9jG,KACD+jG,4BAA8B,KAAK,IACjC9oF,EAAgBjb,EAAhBib,aACD+oF,EAAerzF,KAAKe,UAAUuJ,GAIlC,OAHF/V,EAAKwL,MAAQ,CACTuK,aAAAA,EACA+oF,aAAAA,GACF9+F,CACN,CAAC,6RAAApE,CAAAgjG,EAAA1zF,KAAA0zF,IAAA,EAAArjG,IAAA,oBAAAU,MAED,WACI4B,KAAK/C,MAAMyZ,MAAM7C,OAAO2E,SAASC,OAAOC,OAAO,IAAM,IAAI,EAC7D,GAAC,CAAAhb,IAAA,gBAAAU,MAED,SAAe4I,EAAQ2S,GAAQ,IAAApK,EAAA,KAC3BvP,KAAKwP,UAAS,SAAC0vF,EAAWjiG,GAAU,IACxBib,EAAiB3I,EAAK5B,MAAtBuK,aAER,OAAAnN,GAAA,GACOm0F,EAAS,CACZhnF,aAHe6B,EAAmB7B,EAAclR,EAAQ2S,IAKhE,GACJ,GAAC,CAAAjc,IAAA,2BAAAU,MAeD,SAAyB8iG,GACrB,IAAK,CAAC,UAAM9+F,GAAW2W,SAASmoF,GAAhC,CAGA,IAAMC,EAAYz+F,SAASk7F,cAAc,OACzCuD,EAAUC,UAAYF,EACtB,IAAMG,EAAiB3+F,SAAS0E,cAAc,kBACxCk6F,EAAaH,EAAU/5F,cAAc,kBACrCm6F,EAAiBF,EAAej6F,cAAc,yBAE9CigB,EAAU,SAACmZ,EAAMghE,GAAO,OAAKhhE,EAAKihE,WAAWC,aAAaF,EAAShhE,EAAK,EAE9EnZ,EAHmBi6E,EAAWl6F,cAAc,yBAGxBm6F,GAEpBl6E,EAAQg6E,EAAgBC,GAExBztF,OAAOC,SAAS6tF,qBAbhB,CAcJ,GAAC,CAAAjkG,IAAA,qBAAAU,MAED,WAAqB,IACVyY,EAAwB7W,KAAK/C,MAA7B4Z,qBACP,GAAIA,GAAwB7W,KAAKghG,8BAAgCnqF,EAAsB,CACnF7W,KAAKghG,4BAA8BnqF,EACnC,IAAM+qF,EAAoB/tF,OAAOC,SAASwD,OAAQzD,OAAOC,SAASwD,MAAMb,IAA6B,CAAC,EACtG,IAAKmrF,GAAqBA,EAAkB/qF,uBAAyB7W,KAAKghG,4BACtE,OAEJ,IAAME,EAAMU,EAAkB3qF,aAC9BiqF,GAAOlhG,KAAK6hG,yBAAyBX,EACzC,CACJ,GAAC,CAAAxjG,IAAA,SAAAU,MAED,WAAS,IAAAyR,EAAA,KAAA8P,EAMD3f,KAAK/C,MAAK6kG,EAAAniF,EAJVxI,cAAAA,OAAa,IAAA2qF,EAAC,GAAEA,EAAAC,EAAApiF,EAChBzI,aAAAA,OAAY,IAAA6qF,EAAC,GAAEA,EAAAC,EAAAriF,EACf7D,gBAAAA,OAAe,IAAAkmF,EAAC,GAAEA,EACfC,uWAAU5qF,CAAAsI,EAAA,oDAETzH,EAAiBlY,KAAK2N,MAAtBuK,aACFgqF,EAAUn3F,GAAA,GACTk3F,EAAU,CACb/pF,aAAAA,EACA0nF,cAAe,SAAC54F,EAAQ2S,GAAM,OAAK9J,EAAK+vF,cAAc54F,EAAQ2S,EAAO,IAGzE,MADe,CAACxC,EAAee,EAAchB,GAAcirF,OAAM,SAAAC,GAAG,OAAKA,GAAsB,IAAfA,EAAIjlG,MAAY,IAC9E,KACd6P,EAAAA,cAACkG,EAAAA,SAAQ,KACLlG,EAAAA,cAACq1F,GAASt3F,GAAA,GAASk3F,EAAY,CAAAnmF,gBAAAA,KAC/B9O,EAAAA,cAACgzF,GAAS,CAAC5tF,UAAU,iCAChB+E,EAAcha,OAAS,GACxB6P,EAAAA,cAAC+yF,GAAc,CAACvhE,QAAQr3B,EAAAA,GAAAA,GAAU,uBAC9B6F,EAAAA,cAACs1F,GAAM,CAAMnrF,cAAAA,KAGhBe,EAAa/a,OAAS,GACvB6P,EAAAA,cAAC+yF,GAAc,CAACvhE,QAAQr3B,EAAAA,GAAAA,GAAU,mBAC9B6F,EAAAA,cAACu1F,GAAyBL,IAG7BhrF,EAAa/Z,OAAS,GACvB6P,EAAAA,cAAC+yF,GAAc,CAACvhE,QAAQr3B,EAAAA,GAAAA,GAAU,iBAC9B6F,EAAAA,cAACw1F,GAAmB,CAAMtrF,aAAAA,MAIf,aAAlB4E,GACG9O,EAAAA,cAAA,OAAKoF,UAAU,gDACXpF,EAAAA,cAACu1F,GAAyBL,IAK9C,MAAC,EAAAxkG,IAAA,2BAAAU,MAtFD,SAAgCqkG,EAAUvD,GAAW,IAC1ChnF,EAAgBuqF,EAAhBvqF,aACD+oF,EAAerzF,KAAKe,UAAUuJ,GACpC,OAAI+oF,IAAiB/B,EAAU+B,aAC3Bl2F,GAAA,GACOm0F,EAAS,CACZhnF,aAAAA,EACA+oF,aAAAA,IAGD/B,CACX,kGAAC,CAtC8B,CAASjyF,EAAAA,WAwI5C,UAAesG,EAAAA,EAAAA,KApBS,SAAH7N,GAAgI,IAAAmZ,EAAAnZ,EAA3HmU,cACtB,MAAO,CACH1C,cAF8C0H,EAAb1H,cAGjCD,aAH4D2H,EAAZ3H,aAIhDgB,aAJ0E2G,EAAZ3G,aAK9D2D,oBAL+FgD,EAAnBhD,oBAM5EC,gBANgH+C,EAAf/C,gBAOjGjF,qBAPsIgI,EAApBhI,qBAS1H,IAE2B,SAAA5S,GACvB,MAAO,CACHyS,MAAO,SAACsC,EAAGpC,GAAc,OAAK3S,EAASyS,EAAMsC,EAAGpC,GAAgB,EAChEkpF,SAAU,SAAClmF,GAAU,OAAK3V,EzK3BD,SAAA2V,GAAU,OAAI,SAAC3V,EAAUC,GAEtD,OADAD,EAASsW,EAAmBX,IACrB3V,EAASiH,EAAO0O,GAC3B,CAAC,CyKwB0C8oF,CAAkB9oF,GAAY,EACjEimF,0BAA2B,SAACzmF,GAAK,OAAKnV,GzKhBH6K,EyKgBsCsK,EzKhBtCtK,GAAS,CAChDhO,KAAM0V,EACN5R,QAAS,CACLiX,oBAAqB/M,MAHY,IAAEA,CyKgB6C,EAChF4K,kBAAmB,SAACN,EAAOxJ,GAAI,OAAK3L,EAASyV,EAAkBN,EAAOxJ,GAAM,EAEpF,GAEA,CAA4DmxF,IC7I5D,SAJqB,SAAHr7F,GAAA,IAAMiH,EAAIjH,EAAJiH,KAAMkjD,EAAGnqD,EAAHmqD,IAAK9kB,EAAIrlC,EAAJqlC,KAAI,OACnC/9B,EAAAA,cAAA,QAAMoF,UAAU,sBAAsBC,MAAO,CAAEw9C,IAAK,GAAF3/C,OAAK2/C,EAAG,MAAM9kB,KAAM,GAAF76B,OAAK66B,EAAI,QAASp+B,EAAY,k1DCAhD,IAEhDg2F,GAAqB,SAAAt1F,GACvB,SAAAs1F,EAAY1lG,GAAO,IAAAkF,EAIb,mGAJaxF,CAAA,KAAAgmG,IACfxgG,EAAAoL,GAAA,KAAAo1F,EAAA,CAAM1lG,KACD0Q,MAAQ,CACTi1F,OAAQ,IACVzgG,CACN,CAAC,6RAAApE,CAAA4kG,EAAAt1F,KAAAs1F,IAAA,EAAAjlG,IAAA,qBAAAU,MAED,SAAmBykG,GAAW,IAAAtzF,EAAA,KAC1B,GAAIvP,KAAK/C,MAAMkhB,aAAa/X,OAASy8F,EAAU1kF,aAAa/X,KAA5D,CAKA,IAAM08F,EAAkBtlG,OAAO2yB,KAAKnwB,KAAK/C,MAAMkhB,aAAaC,MACtD2kF,EAAiB/iG,KAAK2N,MAAMi1F,OAAO57F,QAAO,SAAAg8F,GAAK,OAAKF,EAAgB/pF,SAASiqF,EAAMl0F,GAAG,IACtFm0F,EAAcH,EAAgB97F,QAAO,SAAA8H,GAAE,OAAKS,EAAK5B,MAAMi1F,OAAOtyF,MAAK,SAAA0yF,GAAK,OAAIA,EAAMl0F,KAAOA,CAAE,GAAC,IAElG,GADAi0F,EAAez9F,SAAQ,SAAA09F,GAAK,OAAIE,aAAaF,EAAM1I,OAAO,IACrD2I,GAAgBA,EAAY9lG,OAAjC,CAIA,IAAMylG,EAAS,GACfK,EAAY39F,SAAQ,SAAAwJ,GAChB8zF,EAAO1hG,KAAK,CAAE4N,GAAAA,EAAIwrF,OAAQ3yF,YAAW,kBAAM4H,EAAKtS,MAAM2P,KAAKkC,EAAI8C,KAAKC,MAAM,GAAE,MAChF,IACA7R,KAAKwP,SAAS,CAAEozF,OAAAA,GALhB,MAFI5iG,KAAKwP,SAAS,CAAEozF,OAAQ,IAR5B,CAgBJ,GAAC,CAAAllG,IAAA,SAAAU,MAED,WAAS,IAAAyR,EAAA,KAECszF,EADM3lG,OAAO2yB,KAAKnwB,KAAK/C,MAAMkhB,aAAaC,MACtB5W,KAAI,SAAAsH,GAAE,wVAAA/D,CAAA,GAAU8E,EAAK5S,MAAMkhB,aAAaC,KAAKtP,GAAK,CAAAA,GAAAA,GAAE,IAC9E,OAAO9B,EAAAA,cAACkG,EAAAA,SAAQ,KACXiwF,GAAiBA,EAAc37F,KAAI,SAAA2W,GAAY,OAAInR,EAAAA,cAACo2F,GAAYC,GAAA,CAAC3lG,IAAKygB,EAAarP,GAAInC,KAAMwR,EAAaxR,MAAUkD,EAAK+iF,YAAYz0E,EAAarP,KAAO,IAElK,GAAC,CAAApR,IAAA,cAAAU,MAED,SAAYsO,GACR,IAAI42F,EAAU5gG,SAASuN,eAAevD,GAEtC,GAAK42F,EAAL,CAIA,IAAIhyF,EACEiyF,EAAa1vF,OAAO2vF,YAAelyF,EAAU5O,SAAS+gG,mBAAqBnyF,EAAU5O,SAASuR,KAAKwtF,cACrD,iBAAtBnwF,EAAQiyF,WAAyBjyF,EAAU5O,SAASuR,MAAMsvF,WAClFG,EAAY7vF,OAAO8vF,YAAcryF,EAAU5O,SAAS+gG,mBAAqBnyF,EAAU5O,SAASuR,KAAKwtF,cACpD,iBAArBnwF,EAAQoyF,UAAwBpyF,EAAU5O,SAASuR,MAAMyvF,UAAUE,EAC3EN,EAAQ5E,wBAAtB7uC,EAAG+zC,EAAH/zC,IAAK9kB,EAAI64D,EAAJ74D,KAEb,MAAa,YAAVr+B,EACQ,CAAEmjD,IAAKA,EAAM6zC,EAAY,IAAK34D,KAAMA,EAAOw4D,EAAa,KAG5D,CAAE1zC,IAAKA,EAAM6zC,EAAW34D,KAAMA,EAAOw4D,EAb5C,CAcJ,kGAAC,CAxDsB,CAASt2F,EAAAA,WAiE9B42F,GAAqB,CACvBj3F,KAAAA,GAAAA,IAGJ,UAAe2G,EAAAA,EAAAA,KAVS,SAAA5F,GACpB,MAAO,CACHwQ,aAAcxQ,EAAMwQ,aAE5B,GAMwC0lF,GAAxC,CAA4DlB,wgCCvE5D,IAAMmB,GAAgB,UAEP,SAASC,GAAoB9mG,GAAO,IACvC4a,EAAuB5a,EAAvB4a,MAAOmsF,EAAgB/mG,EAAhB+mG,YAEoDC,EAAAnrF,GAA7B9L,EAAAA,SAAe82F,IAAc,GAA5DI,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAM5BG,EAAU,WAAH,OAASF,GAAeA,GAAeJ,EAAa,EAEjE,OAAO92F,EAAAA,cAAA,OAAKoF,UAAW4xF,EAAc,YAAc,MAC/Ch3F,EAAAA,cAAA,OAAKoF,UAAW4xF,EAAc,4BAA8B,MACxDh3F,EAAAA,cAAA,UAAQoF,UAAU,cAAcG,SARvB,SAAAlT,GACb8kG,EAAe9kG,EAAErC,OAAOoB,MAC5B,EAM4DA,MAAO8lG,GACtDrsF,EAAMrQ,KAAI,SAACmb,EAAMzlB,GAAC,OACf8P,EAAAA,cAAA,UAAQtP,IAAKilB,EAAKzf,KAAKyf,EAAKtX,IAAKjN,MAAY,GAALlB,EAASylB,EAAKtX,IAAMy4F,GAAe1wF,SAAe,GAALlW,GAChFylB,EAAKzf,KACD,MAIrB8J,EAAAA,cAAA,OAAKoF,UAAW4xF,EAAc,6BAA+B,MACzDh3F,EAAAA,cAAA,KAAGoF,UAAU,SAASpV,OAAO,SAAS+hB,KAAMqlF,IAAYF,EAAc,KAAM9wF,UAAWgxF,MAAYj9F,EAAAA,GAAAA,GAAU,0CAGzH,iLCnBInG,GAAU,CAAC,EAEfA,GAAQqjG,kBAAoB,KAC5BrjG,GAAQsjG,cAAgB,KAElBtjG,GAAQy2B,OAAS,UAAc,KAAM,QAE3Cz2B,GAAQujG,OAAS,KACjBvjG,GAAQwjG,mBAAqB,KAEhB,KAAI,KAASxjG,IAKJ,MAAW,aAAiB,YCClD,SAvByB,WASrB,OACIgM,EAAAA,cAAA,QAAM9J,KAAK,QAAQyQ,OAAO,OAAO8wF,QAAQ,sBAAsB/pF,OAAO,2BAClE1N,EAAAA,cAAA,OAAKqF,MAAO,CAAEmqD,QAAS,OAAQkoC,cAAe,SAAUC,WAAY,UAChE33F,EAAAA,cAAA,UAAI,gBACJA,EAAAA,cAAA,WACIA,EAAAA,cAAA,SAAOlM,KAAK,OAAOgO,GAAG,aAAa5L,KAAK,eACxC8J,EAAAA,cAAA,OAAKqF,MATE,CACnBuyF,UAAW,SASK53F,EAAAA,cAAA,SAAOqF,MAdP,CAChB2W,MAAO,QACP67E,YAAa,QAY8B/jG,KAAK,SAAS1C,MAAM,iBAKvE,6BCzBI,GAAWZ,OAAO2lB,QAAU,SAAUnmB,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CAAE,IAAI+xD,EAAShvD,UAAU/C,GAAI,IAAK,IAAIQ,KAAOuxD,EAAczxD,OAAOM,UAAUwC,eAAelB,KAAK6vD,EAAQvxD,KAAQV,EAAOU,GAAOuxD,EAAOvxD,GAAU,CAAE,OAAOV,CAAQ,EAE/P,SAAS,GAAyB4zB,EAAKT,GAAQ,IAAInzB,EAAS,CAAC,EAAG,IAAK,IAAIE,KAAK0zB,EAAWT,EAAKrgB,QAAQ5S,IAAM,GAAkBM,OAAOM,UAAUwC,eAAelB,KAAKwxB,EAAK1zB,KAAcF,EAAOE,GAAK0zB,EAAI1zB,IAAM,OAAOF,CAAQ,CAK3N,UACEwD,IAoBF,SAAaowB,EAAK3U,EAAM6oF,GACtB,IAAK7oF,EACH,OAAO2U,EAET,IAAIm0E,EAAUC,GAAc/oF,GACxB3C,OAAM,EACV,IACEA,EAAMyrF,EAAQxrF,QAAO,SAAUE,EAASwrF,GACtC,OAAOxrF,EAAQwrF,EACjB,GAAGr0E,EACL,CAAE,MAAOvxB,GAET,CACA,YAAsB,IAARia,EAAsBA,EAAMwrF,CAC5C,EAjCEptE,IAmCF,WACE,IAAI9G,EAAM3wB,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE3E7B,EAAQ6B,UAAU,GAElBkwB,EAAO60E,GAHA/kG,UAAU,IAIjBilG,OAAU,EACVC,EAASv0E,EACb,MAAQs0E,EAAU/0E,EAAKi1E,UAAYj1E,EAAKhzB,QACjCgoG,EAAOD,KACVC,EAAOD,GAAW,CAAC,GAErBC,EAASA,EAAOD,GAGlB,OADAC,EAAOD,GAAW9mG,EACXwyB,CACT,EAlDEy0E,UAoDF,SAAmBj6E,EAAK9H,GACtB,IAAI2lC,EAAQ3lC,EAAI8H,EAAIjuB,OAAS,EAAIiuB,EAAIjuB,OAASmmB,EAC9C,OAAO8H,EAAI5pB,MAAMynD,EACnB,EAtDEx+B,KAwDF,SAAcW,GACZ,OAAOA,EAAIA,EAAIjuB,OAAS,EAC1B,EAzDEmoG,QAmEF,SAAiBl6E,EAAKm6E,EAAOC,EAAMC,GACjC,OAAOr6E,EAAIiF,MAAK,SAAUq1E,EAAMC,GAC9B,IAAK,IAAIzoG,EAAI,EAAGA,EAAIqoG,EAAMpoG,OAAQD,GAAK,EAAG,CACxC,IAAI0oG,EAAOL,EAAMroG,GACbyD,GAAmB,IAAZ6kG,EAAKtoG,IAA4B,SAAZsoG,EAAKtoG,GACjC2oG,EAAUD,EAAKF,EAAMC,GACzB,GAAIE,EACF,OAAOllG,GAAQklG,EAAUA,CAE7B,CAEA,OAAOL,EAAK,GAAKE,EAAKD,GAAYE,EAAKF,GAAYE,EAAKF,GAAYC,EAAKD,EAC3E,GACF,EA/EEjhE,MA0DF,SAAelhB,GAEb,IADA,IAAI8H,EAAM,GACDluB,EAAI,EAAGA,EAAIomB,EAAGpmB,GAAK,EAC1BkuB,EAAIlqB,KAAKoiB,GAEX,OAAO8H,CACT,EA/DE5a,OAgFF,SAAgBwU,EAAGzf,GACjB,OAAOyf,EAAEhe,QAAO,SAAUzI,EAAGrB,GAE3B,QADQqI,EAAEhH,KAERymB,EAAE3jB,OAAOnE,EAAG,IACL,EAGX,GACF,EAxFEu5B,MA0FF,SAAezR,GACb,IACE,OAAOpX,KAAKC,MAAMD,KAAKe,UAAUqW,GAAG,SAAUtnB,EAAKU,GACjD,MAAqB,mBAAVA,EACFA,EAAMooB,WAERpoB,CACT,IACF,CAAE,MAAOiB,GACP,OAAO2lB,CACT,CACF,EApGE8gF,gBAsGF,WACE,IAAK,IAAI5oG,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,GAAK,EACzC,QAAkE,KAAtD+C,UAAU9C,QAAUD,OAAIkF,EAAYnC,UAAU/C,IACxD,OAAO+C,UAAU9C,QAAUD,OAAIkF,EAAYnC,UAAU/C,EAG3D,EA3GEisC,IA6GF,SAAa/d,GACX,OAAOA,EAAI7R,QAAO,SAAUyL,EAAGzf,GAC7B,OAAOyf,EAAIzf,CACb,GAAG,EACL,EAhHEwgG,sBAkHF,SAA+BC,EAAWnM,GACxC,IAAKA,EACH,MAAM,IAAI52F,MAAM,+CAAgD+iG,GAElE,IAAIC,EAAM,SAAavgG,GACrB,IAAIy6F,EAAWz6F,EAAKy6F,SAChB/tF,EAAY1M,EAAK0M,UACjB8zF,EAAO,GAAyBxgG,EAAM,CAAC,WAAY,cAEvD,OAAO,gBACL,MACA,GAAS,CAAE0M,UAAW,KAAW4zF,EAAW5zF,IAAc8zF,GAC1D/F,EAEJ,EAEA,OADA8F,EAAIpM,YAAcA,EACXoM,CACT,EAlIEE,QAoIF,SAAiBC,EAAI1oG,GACnB,OAAO0oG,EAAG7sF,QAAO,SAAU8sF,EAAIp/F,EAAG/J,GAChC,IAAIopG,EAAwB,mBAAR5oG,EAAqBA,EAAIuJ,EAAG/J,GAAK+J,EAAEvJ,GAGvD,OAFA2oG,EAAGC,GAAUh1E,GAAQ+0E,EAAGC,IAAWD,EAAGC,GAAU,GAChDD,EAAGC,GAAQplG,KAAK+F,GACTo/F,CACT,GAAG,CAAC,EACN,EA1IE/0E,QAASA,GACTi1E,WAyKF,SAAoBxL,GAClB,IAAI3oF,EAAY2oF,EAAM3oF,UAClBC,EAAQ0oF,EAAM1oF,MACd6zF,EAAO,GAAyBnL,EAAO,CAAC,YAAa,UAEzD,MAAO,CACL3oF,UAAWA,EACXC,MAAOA,EACP6zF,KAAMA,GAAQ,CAAC,EAEnB,EAlLEM,cAoLF,SAAuB51E,GACrB,IAAI61E,EAAS,CAAC,EACV71E,GACFpzB,OAAO2yB,KAAKS,GAAKppB,KAAI,SAAU9J,GAI7B,OAHIF,OAAOM,UAAUwC,eAAelB,KAAKwxB,EAAKlzB,SAAqB0E,IAAbwuB,EAAIlzB,SAA0C,IAAbkzB,EAAIlzB,KACzF+oG,EAAO/oG,GAAOkzB,EAAIlzB,KAEb,CACT,IAEF,OAAO+oG,CACT,EA9LEC,cAgMF,SAAuB5jF,GACrB,QAAqB,SAAXA,EAAEuN,OAA8B,IAAXvN,EAAEniB,OAA2B,IAAVmiB,EAAE6jF,IACtD,EAjMEC,mBAmMF,SAA4BC,GAC1B,IAAI13C,EAASlvD,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9EmN,EAAWnN,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK4mG,EAEnF,MAAuB,mBAATA,EAAsBrpG,OAAOiB,eAAeooG,GAAMC,iBAAmB,gBAAoBD,EAAM13C,GAAU03C,EAAK13C,GAAU/hD,CACxI,EAvME25F,KAuIF,SAAc3oG,GAEZ,OADAA,EAAQgyB,OAAOhyB,GACRgyB,OAAO1pB,MAAMtI,GAAS,KAAOA,EAAQ,IAC9C,GAEA,SAASkzB,GAAQtM,GACf,OAAOjC,MAAMuO,QAAQtM,EACvB,CAMA,SAASggF,GAAcp0E,GACrB,OAAOo2E,GAAYp2E,GAAK1X,KAAK,KAAKmO,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAI1O,MAAM,IACjF,CAEA,SAASquF,GAAY57E,GACnB,IAAI67E,EAAShnG,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,GAEjF,GAAKqxB,GAAQlG,GAGX,IAAK,IAAIluB,EAAI,EAAGA,EAAIkuB,EAAIjuB,OAAQD,GAAK,EACnC8pG,GAAY57E,EAAIluB,GAAI+pG,QAHtBA,EAAO/lG,KAAKkqB,GAMd,OAAO67E,CACT,CC5LA,IAAI,GAAe,WAAc,SAASC,EAAiBlqG,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUP,EAAae,EAAYC,GAAiJ,OAA9HD,GAAYspG,EAAiBrqG,EAAYiB,UAAWF,GAAiBC,GAAaqpG,EAAiBrqG,EAAagB,GAAqBhB,CAAa,CAAG,CAA7hB,GCAnB,IAAI,GAAgb,SAAUuuB,EAAKluB,GAAK,GAAI6lB,MAAMuO,QAAQlG,GAAQ,OAAOA,EAAY,GAAIznB,OAAO6gB,YAAYhnB,OAAO4tB,GAAQ,OAAxf,SAAuBA,EAAKluB,GAAK,IAAIiqG,EAAO,GAAQC,GAAK,EAAUz9E,GAAK,EAAWE,OAAKznB,EAAW,IAAM,IAAK,IAAiCilG,EAA7Bv8E,EAAKM,EAAIznB,OAAO6gB,cAAmB4iF,GAAMC,EAAKv8E,EAAGxe,QAAQyX,QAAoBojF,EAAKjmG,KAAKmmG,EAAGjpG,QAAYlB,GAAKiqG,EAAKhqG,SAAWD,GAA3DkqG,GAAK,GAAkE,CAAE,MAAOhkG,GAAOumB,GAAK,EAAME,EAAKzmB,CAAK,CAAE,QAAU,KAAWgkG,GAAMt8E,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAInB,EAAI,MAAME,CAAI,CAAE,CAAE,OAAOs9E,CAAM,CAAuHG,CAAcl8E,EAAKluB,GAAa,MAAM,IAAIJ,UAAU,uDAA2D,EAE7oB,GAAWU,OAAO2lB,QAAU,SAAUnmB,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CAAE,IAAI+xD,EAAShvD,UAAU/C,GAAI,IAAK,IAAIQ,KAAOuxD,EAAczxD,OAAOM,UAAUwC,eAAelB,KAAK6vD,EAAQvxD,KAAQV,EAAOU,GAAOuxD,EAAOvxD,GAAU,CAAE,OAAOV,CAAQ,EAE3P,GAAe,WAAc,SAASkqG,EAAiBlqG,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUP,EAAae,EAAYC,GAAiJ,OAA9HD,GAAYspG,EAAiBrqG,EAAYiB,UAAWF,GAAiBC,GAAaqpG,EAAiBrqG,EAAagB,GAAqBhB,CAAa,CAAG,CAA7hB,GAEnB,SAAS,GAAgB+zB,EAAKlzB,EAAKU,GAAiK,OAApJV,KAAOkzB,EAAOpzB,OAAOC,eAAemzB,EAAKlzB,EAAK,CAAEU,MAAOA,EAAOf,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBqzB,EAAIlzB,GAAOU,EAAgBwyB,CAAK,CAEhN,SAAS,GAAmBxF,GAAO,GAAIrI,MAAMuO,QAAQlG,GAAM,CAAE,IAAK,IAAIluB,EAAI,EAAGqqG,EAAOxkF,MAAMqI,EAAIjuB,QAASD,EAAIkuB,EAAIjuB,OAAQD,IAAOqqG,EAAKrqG,GAAKkuB,EAAIluB,GAAM,OAAOqqG,CAAM,CAAS,OAAOxkF,MAAM6W,KAAKxO,EAAQ,CCRlM,IAAI,GAAe,WAAc,SAAS87E,EAAiBlqG,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUP,EAAae,EAAYC,GAAiJ,OAA9HD,GAAYspG,EAAiBrqG,EAAYiB,UAAWF,GAAiBC,GAAaqpG,EAAiBrqG,EAAagB,GAAqBhB,CAAa,CAAG,CAA7hB,GAEf,GAAWW,OAAO2lB,QAAU,SAAUnmB,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CAAE,IAAI+xD,EAAShvD,UAAU/C,GAAI,IAAK,IAAIQ,KAAOuxD,EAAczxD,OAAOM,UAAUwC,eAAelB,KAAK6vD,EAAQvxD,KAAQV,EAAOU,GAAOuxD,EAAOvxD,GAAU,CAAE,OAAOV,CAAQ,EAa/P,IAAIwqG,GAAgB,SAAuBvqG,GACzC,OAAO,gBACL,SACA,GAAS,CAAE6D,KAAM,UAAY7D,EAAO,CAAEmV,UAAW,SACjDnV,EAAMkjG,SAEV,EAEIsH,GAAuB,SAAUp6F,GAGnC,SAASo6F,EAAqBxqG,IAtBhC,SAAyBL,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAuBpJ,CAAgBkD,KAAMynG,GAEtB,IAAItlG,EAvBR,SAAoC5C,EAAMH,GAAQ,IAAKG,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOJ,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BG,EAAPH,CAAa,CAuB/N,CAA2BY,MAAOynG,EAAqB9oG,WAAanB,OAAOiB,eAAegpG,IAAuBroG,KAAKY,OASlI,OAPAmC,EAAMulG,YAAcvlG,EAAMulG,YAAYhpG,KAAKyD,GAC3CA,EAAMwlG,WAAaxlG,EAAMwlG,WAAWjpG,KAAKyD,GACzCA,EAAMylG,UAAYzlG,EAAMylG,UAAUlpG,KAAKyD,GAEvCA,EAAMwL,MAAQ,CACZ6hD,KAAMvyD,EAAMuyD,MAEPrtD,CACT,CA8JA,OA7LF,SAAmBnE,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAInB,UAAU,kEAAoEmB,GAAeD,EAASF,UAAYN,OAAOU,OAAOD,GAAcA,EAAWH,UAAW,CAAEK,YAAa,CAAEC,MAAOJ,EAAUX,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeW,IAAYT,OAAOgB,eAAiBhB,OAAOgB,eAAeR,EAAUC,GAAcD,EAASW,UAAYV,EAAY,CAgB3e,CAAUwpG,EAAsBp6F,GAiBhC,GAAao6F,EAAsB,CAAC,CAClC/pG,IAAK,4BACLU,MAAO,SAAmCypG,GACxC7nG,KAAKwP,SAAS,CAAEggD,KAAMq4C,EAAUr4C,MAClC,GACC,CACD9xD,IAAK,cACLU,MAAO,SAAqBoxD,GAI1B,OAHIp/B,OAAO1pB,MAAM8oD,KACfA,EAAOxvD,KAAK/C,MAAMuyD,MAEb7jC,KAAKhZ,IAAIgZ,KAAKtK,IAAImuC,EAAM,GAAIxvD,KAAK/C,MAAM0jE,MAAQ,EACxD,GACC,CACDjjE,IAAK,aACLU,MAAO,SAAoBoxD,GACzBA,EAAOxvD,KAAK0nG,YAAYl4C,GACxBxvD,KAAKwP,SAAS,CAAEggD,KAAMA,IAClBxvD,KAAK/C,MAAMuyD,OAASA,GACtBxvD,KAAK/C,MAAM6qG,aAAat4C,EAE5B,GACC,CACD9xD,IAAK,YACLU,MAAO,SAAmBiB,GACpBA,GACFA,EAAE0oG,iBAEJ,IAAIv4C,EAAOxvD,KAAK2N,MAAM6hD,KACtBxvD,KAAK2nG,WAAoB,KAATn4C,EAAcxvD,KAAK/C,MAAMuyD,KAAOA,EAClD,GACC,CACD9xD,IAAK,SACLU,MAAO,WACL,IAAImR,EAASvP,KAETgoG,EAAShoG,KAAK/C,MACd0jE,EAAQqnC,EAAOrnC,MACfnR,EAAOw4C,EAAOx4C,KACdy4C,EAAsBD,EAAOC,oBAC7BC,EAAkBF,EAAOE,gBACzBC,EAAWH,EAAOG,SAClBC,EAAeJ,EAAOI,aACtBC,EAAcL,EAAOK,YACrBC,EAAUN,EAAOM,QACjBC,EAAmBP,EAAOO,iBAC1Bn2F,EAAY41F,EAAO51F,UACnBo2F,EAAwBR,EAAOS,kBAC/BA,OAA8CrmG,IAA1BomG,EAAsChB,GAAgBgB,EAC1EE,EAAuBV,EAAOW,cAC9BA,OAAyCvmG,IAAzBsmG,EAAqClB,GAAgBkB,EAGzE,OAAO,gBACL,MACA,CAAEt2F,UAAW,KAAWA,EAAW,eAAgBC,MAAOrS,KAAK/C,MAAMoV,OACrE,gBACE,MACA,CAAED,UAAW,aACb,gBACEq2F,EACA,CACE11F,QAAS,WACFs1F,GACL94F,EAAOo4F,WAAWn4C,EAAO,EAC3B,EACAp8C,UAAWi1F,GAEbroG,KAAK/C,MAAM2rG,eAGf,gBACE,MACA,CAAEx2F,UAAW,WACb,gBACE,OACA,CAAEA,UAAW,aACbpS,KAAK/C,MAAM4rG,SACX,IACAT,EAAe,gBACb,MACA,CAAEh2F,UAAW,aACb,gBAAoB,QAAS,CAC3BtR,KAA0B,KAApBd,KAAK2N,MAAM6hD,KAAc,OAAS,SACxCj9C,SAAU,SAAkBlT,GAC1B,IAAIia,EAAMja,EAAErC,OAAOoB,MACfoxD,EAAOl2C,EAAM,EACjB,GAAY,KAARA,EACF,OAAO/J,EAAOC,SAAS,CAAEggD,KAAMl2C,IAEjC/J,EAAOC,SAAS,CAAEggD,KAAMjgD,EAAOm4F,YAAYl4C,IAC7C,EACApxD,MAA2B,KAApB4B,KAAK2N,MAAM6hD,KAAc,GAAKxvD,KAAK2N,MAAM6hD,KAAO,EACvD98C,OAAQ1S,KAAK4nG,UACbp1F,WAAY,SAAoBnT,GACd,KAAZA,EAAEypG,OAA8B,KAAdzpG,EAAEkiB,SACtBhS,EAAOq4F,WAEX,KAEA,gBACF,OACA,CAAEx1F,UAAW,gBACbo9C,EAAO,GAET,IACAxvD,KAAK/C,MAAM8rG,OACX,IACA,gBACE,OACA,CAAE32F,UAAW,eACbuuD,GAAS,IAGbsnC,GAAuB,gBACrB,OACA,CAAE71F,UAAW,gCACb,gBACE,SACA,CAAEG,SAAU,SAAkBlT,GAC1B,OAAOkpG,EAAiBn4E,OAAO/wB,EAAErC,OAAOoB,OAC1C,EAAGA,MAAO+pG,GACZD,EAAgB1gG,KAAI,SAAUmS,EAAQzc,GACpC,OAEE,gBACE,SACA,CAAEQ,IAAKR,EAAGkB,MAAOub,GACjBA,EACA,IACApK,EAAOtS,MAAM+rG,SAGnB,OAIN,gBACE,MACA,CAAE52F,UAAW,SACb,gBACEu2F,EACA,CACE51F,QAAS,WACFu1F,GACL/4F,EAAOo4F,WAAWn4C,EAAO,EAC3B,EACAp8C,UAAWk1F,GAEbtoG,KAAK/C,MAAMgsG,WAInB,KAGKxB,CACT,CA/K2B,CA+KzB,EAAAx6F,WAEF,YCxMA,IAAI,GAAWzP,OAAO2lB,QAAU,SAAUnmB,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CAAE,IAAI+xD,EAAShvD,UAAU/C,GAAI,IAAK,IAAIQ,KAAOuxD,EAAczxD,OAAOM,UAAUwC,eAAelB,KAAK6vD,EAAQvxD,KAAQV,EAAOU,GAAOuxD,EAAOvxD,GAAU,CAAE,OAAOV,CAAQ,EAE/P,SAAS,GAAyB4zB,EAAKT,GAAQ,IAAInzB,EAAS,CAAC,EAAG,IAAK,IAAIE,KAAK0zB,EAAWT,EAAKrgB,QAAQ5S,IAAM,GAAkBM,OAAOM,UAAUwC,eAAelB,KAAKwxB,EAAK1zB,KAAcF,EAAOE,GAAK0zB,EAAI1zB,IAAM,OAAOF,CAAQ,CAQ3N,IAAIksG,GAAW,WACb,MAAO,CAAC,CACV,EAEA,UAEE5/F,KAAM,GACN6/F,YAAa,SAAqB7/F,GAChC,OAAOA,CACT,EACAyD,SAAS,EACTq8F,gBAAgB,EAChBC,mBAAmB,EACnBC,sBAAsB,EACtBrB,qBAAqB,EACrBC,gBAAiB,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,KACrCqB,gBAAiB,GACjBnB,cAAc,EACdoB,yBAAyB,EACzBC,sBAAsB,EACtBC,sBAAsB,EACtBC,oBAAoB,EACpBC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,iBAAiB,EACjBC,cAAe,GACfC,gBAAiB,GACjBC,eAAgB,GAChBC,gBAAiB,CAAC,EAElBC,oBAAqB,SAA6BrjG,EAAQm2C,EAAKjoB,GAC7D,IAAIpmB,EAAK9H,EAAOsjG,SAAWtjG,EAAO8H,GAClC,YAAmB1M,IAAZ+6C,EAAIruC,IAAoB6X,OAAOw2B,EAAIruC,IAAKy7F,WAAWvjG,EAAO5I,MACnE,EAEAosG,kBAAmB,SAA2BxlF,EAAGzf,EAAG5E,GAQlD,OALA4E,EAAIA,QAAgC,GAAKA,GAEzCyf,EAAiB,iBAHjBA,EAAIA,QAAgC,GAAKA,GAGbA,EAAEs2E,cAAgBt2E,IAC9Czf,EAAiB,iBAANA,EAAiBA,EAAE+1F,cAAgB/1F,GAGrC,EAELyf,EAAIzf,GACE,EAIH,CACT,EAWAuiG,kBAAc1lG,EACdmmG,sBAAkBnmG,EAClBqoG,oBAAgBroG,EAChBsoG,sBAAkBtoG,EAClBuoG,qBAAiBvoG,EACjBwoG,sBAAkBxoG,EAGlByoG,aAASzoG,EAGT0oG,YAAa,YACbC,WAAY,WACZC,WAAY,WACZC,cAAe,cACfC,gBAAiB,gBACjBC,YAAa,YACb1F,SAAU,SACV2F,kBAAmB,kBAGnBC,YAAa,WACX,OAAO,IACT,EAGAj5F,UAAW,GACXC,MAAO,CAAC,EAGRi5F,SAAUpC,GACVqC,cAAerC,GACfsC,mBAAoBtC,GACpBuC,qBAAsBvC,GACtBwC,qBAAsBxC,GACtByC,cAAezC,GACf0C,gBAAiB1C,GACjB2C,gBAAiB3C,GACjB4C,oBAAqB5C,GACrB6C,sBAAuB7C,GACvB8C,sBAAuB9C,GACvB+C,cAAe/C,GACfgD,gBAAiBhD,GACjBiD,WAAYjD,GACZkD,WAAYlD,GACZmD,cAAenD,GACfoD,gBAAiBpD,GACjBqD,gBAAiBrD,GACjBsD,mBAAoBtD,GACpBuD,gBAAiBvD,GACjBwD,eAAgBxD,GAChByD,gBAAiBzD,GAGjBh0E,OAAQ,CAEN03E,UAAMxqG,EACNyqG,YAAQzqG,EACR0qG,YAAQ1qG,EACR2qG,gBAAY3qG,EACZ4qG,WAAO5qG,EACP6qG,gBAAY7qG,EACZ8qG,cAAU9qG,EACV+8B,YAAQ/8B,EAERwnG,cAAUxnG,EACV0nG,eAAW1nG,EACX2nG,gBAAY3nG,EACZ4C,MAAM,EACNmoG,SAAU,IAEV/6F,UAAW,GACXC,MAAO,CAAC,EACRi5F,SAAUpC,GAEVkE,eAAWhrG,EAEXirG,gBAAiB,GACjBC,YAAa,CAAC,EACdC,eAAgBrE,GAEhBsE,gBAAiB,GACjBC,YAAa,CAAC,EACdC,eAAgBxE,GAChByE,kBAAcvrG,EACdwrG,WAAW,EACXC,gBAAYzrG,GAId0rG,iBAAkB,CAChBlE,UAAU,EACVE,WAAW,EACXC,YAAY,EACZ/gF,MAAO,IAGT+kF,cAAe,CAEf,EAGAnF,aAAc,WACdK,SAAU,OACV+E,YAAa,aACbC,WAAY,gBACZpF,SAAU,OACVE,OAAQ,KACRC,SAAU,OAGVkF,eAAgB,SAAwBxoG,GACtC,IAAIy6F,EAAWz6F,EAAKy6F,SAChB/tF,EAAY1M,EAAK0M,UACjB8zF,EAAO,GAAyBxgG,EAAM,CAAC,WAAY,cAEvD,OAAO,gBACL,MACA,GAAS,CACP0M,UAAW,KAAW,WAAYA,GAClC4N,KAAM,QAELkmF,GACH/F,EAEJ,EACAgO,eAAgB,yBAAwB,WAAY,SACpDC,eAAgB,yBAAwB,WAAY,SACpDC,iBAAkB,SAA0BtT,GAC1C,IAAIoF,EAAWpF,EAAMoF,SACjB/tF,EAAY2oF,EAAM3oF,UAClB8zF,EAAO,GAAyBnL,EAAO,CAAC,WAAY,cAExD,OAAO,gBACL,MACA,GAAS,CAAE3oF,UAAW,KAAW,cAAeA,GAAY4N,KAAM,YAAckmF,GAChF/F,EAEJ,EACAmO,YAAa,SAAqBC,GAChC,IAAIpO,EAAWoO,EAAMpO,SACjB/tF,EAAYm8F,EAAMn8F,UAClB8zF,EAAO,GAAyBqI,EAAO,CAAC,WAAY,cAExD,OAAO,gBACL,MACA,GAAS,CAAEn8F,UAAW,KAAW,QAASA,GAAY4N,KAAM,OAASkmF,GACrE/F,EAEJ,EACAqO,YAAa,SAAqBC,GAChC,IAAIC,EAAaD,EAAMC,WACnBt8F,EAAYq8F,EAAMr8F,UAClB+tF,EAAWsO,EAAMtO,SACjB+F,EAAO,GAAyBuI,EAAO,CAAC,aAAc,YAAa,aAEvE,OAEE,gBACE,MACA,GAAS,CACPr8F,UAAW,KAAW,QAASA,GAC/BW,QAAS,SAAiB1T,GACxB,OAAOqvG,GAAcA,EAAWrvG,EAClC,EACA2gB,KAAM,eACNlN,SAAU,MACTozF,GACH/F,EAGN,EACAwO,YAAa,SAAqBC,GACfA,EAAMF,WAAvB,IACIt8F,EAAYw8F,EAAMx8F,UAClB+tF,EAAWyO,EAAMzO,SACjB+F,EAAO,GAAyB0I,EAAO,CAAC,aAAc,YAAa,aAEvE,OAAO,gBACL,MACA,GAAS,CAAEx8F,UAAW,KAAW,QAASA,GAAY4N,KAAM,YAAckmF,GAC1E/F,EAEJ,EACA0O,eAAgB,yBAAwB,WAAY,SACpDC,gBAAiB,SAAyBC,GACxC,IAAI/nG,EAAS+nG,EAAM/nG,OACfgoG,EAAYD,EAAMx8F,SACtB,OAAO,gBAAoB,QAAS,CAClCzR,KAAM,OACNuR,MAAO,CACL2W,MAAO,QAET5qB,MAAO4I,EAASA,EAAO5I,MAAQ,GAC/BmU,SAAU,SAAkBjR,GAC1B,OAAO0tG,EAAU1tG,EAAMtE,OAAOoB,MAChC,GAEJ,EACA6wG,kBAAmB,SAA2BC,GAC5C,IAAIC,EAAaD,EAAMC,WACvB,OAAO,gBACL,MACA,CAAE/8F,UAAW,KAAW,cAAe+8F,GAAc,UACrD,IAEJ,EACAC,oBAAqB,SAA6BC,GAChD,IAAIC,EAAUD,EAAMC,QAChBlxG,EAAQixG,EAAMjxG,MAClB,OAAO,gBACL,OACA,KACAA,EACA,IACAkxG,GAAW,IAAMA,EAAQnyG,OAAS,IAEtC,EACAoyG,oBAAqB,SAA6BC,GAChD,IAAIF,EAAUE,EAAMF,QAChBp6E,EAASs6E,EAAMt6E,OAEfu6E,EAAgBH,EAAQtoG,QAAO,SAAU8b,GAC3C,YAA+B,IAAjBA,EAAEoS,EAAOpmB,GACzB,IAAGtH,KAAI,SAAU21C,EAAKjgD,GACpB,OAEE,gBACE,OACA,CAAEQ,IAAKR,GACPigD,EAAIjoB,EAAOpmB,IACX5R,EAAIoyG,EAAQnyG,OAAS,EAAI,KAAO,GAGtC,IACA,OAAO,gBACL,OACA,KACAsyG,EAEJ,EACAC,oBAAgBttG,EAEhButG,oBAAqB,GACrBlH,uBAAmBrmG,EACnBumG,mBAAevmG,EACfwtG,iBAAkB,SAA0BC,GAC1C,IAAIz9F,EAAYy9F,EAAOz9F,UACnBrF,EAAU8iG,EAAO9iG,QACjBihG,EAAc6B,EAAO7B,YACrB9H,EAAO,GAAyB2J,EAAQ,CAAC,YAAa,UAAW,gBAErE,OAAO,gBACL,MACA,GAAS,CAAEz9F,UAAW,KAAW,WAAY,CAAE,UAAWrF,GAAWqF,IAAc8zF,GACnF,gBACE,MACA,CAAE9zF,UAAW,kBACb47F,GAGN,EACA8B,gBAAiB,yBAAwB,YAAa,UACtDC,iBAAkB,yBAAwB,aAAc,WACxDC,gBAAiB,WACf,OAAO,gBACL,OACA,KACA,IAEJ,8BCvVF,UAEE1mG,KAAM,SACNyD,QAAS,UACTq8F,eAAgB,UAChBC,kBAAmB,UACnBC,qBAAsB,UACtBrB,oBAAqB,UACrBC,gBAAiB,WACjBqB,gBAAiB,YACjBnB,aAAc,UACdoB,wBAAyB,UACzBC,qBAAsB,UACtBC,qBAAsB,UACtBC,mBAAoB,UACpBC,SAAU,UACVE,UAAW,UACXC,WAAY,UACZC,gBAAiB,UACjBC,cAAe,WACfC,gBAAiB,WACjBC,eAAgB,WAChBC,gBAAiB,YACjBC,oBAAqB,UACrBG,kBAAmB,UAGnB1C,aAAc,UACdS,iBAAkB,UAClBkC,eAAgB,UAChBC,iBAAkB,UAClBC,gBAAiB,UACjBC,iBAAkB,UAGlBC,QAAS,WAGTC,YAAa,YACbC,WAAY,YACZC,WAAY,YACZC,cAAe,YACfC,gBAAiB,YACjBC,YAAa,YACb1F,SAAU,YACV2F,kBAAmB,YAGnBC,YAAa,UAGbj5F,UAAW,YACXC,MAAO,YAGPi5F,SAAU,UACVC,cAAe,UACfC,mBAAoB,UACpBC,qBAAsB,UACtBC,qBAAsB,UACtBC,cAAe,UACfC,gBAAiB,UACjBC,gBAAiB,UACjBC,oBAAqB,UACrBC,sBAAuB,UACvBC,sBAAuB,UACvBC,cAAe,UACfC,gBAAiB,UACjBC,WAAY,UACZC,WAAY,UACZC,cAAe,UACfC,gBAAiB,UACjBC,gBAAiB,UACjBC,mBAAoB,UACpBC,gBAAiB,UACjBC,eAAgB,UAChBC,gBAAiB,UAGjBsD,QAAS,aAAkB,WAAgB,CAEzCrD,KAAM,eAAoB,CAAC,aAAmB,YAAkB,YAChEC,OAAQ,eAAoB,CAAC,aAAmB,YAAkB,YAClEC,OAAQ,eAAoB,CAAC,aAAmB,YAAkB,YAClEC,WAAY,eAAoB,CAAC,aAAmB,YAAkB,YACtEC,MAAO,eAAoB,CAAC,aAAmB,YAAkB,YACjEC,WAAY,eAAoB,CAAC,aAAmB,YAAkB,YACtEC,SAAU,eAAoB,CAAC,aAAmB,YAAkB,YACpE/tE,OAAQ,eAAoB,CAAC,aAAmB,YAGhDyqE,SAAU,UACVE,UAAW,UACXC,WAAY,UACZ/kG,KAAM,UACNmoG,SAAU,YAGV/6F,UAAW,YACXC,MAAO,YACPi5F,SAAU,UAGV8B,UAAW,UAGXC,gBAAiB,YACjBC,YAAa,YACbC,eAAgB,UAGhBC,gBAAiB,YACjBC,YAAa,YACbC,eAAgB,YAChBC,aAAc,UACdC,UAAW,UACXC,WAAY,aAIdC,iBAAkB,WAAgB,CAChClE,SAAU,UACVE,UAAW,UACXC,WAAY,UACZ/gF,MAAO,cAGT+kF,cAAe,YAGfnF,aAAc,UACdK,SAAU,UACV+E,YAAa,UACbC,WAAY,UACZpF,SAAU,UACVE,OAAQ,UACRC,SAAU,UAGVkF,eAAgB,eAAoB,CAAC,UAAgB,eACrDC,eAAgB,eAAoB,CAAC,UAAgB,eACrDC,eAAgB,eAAoB,CAAC,UAAgB,eACrDC,iBAAkB,eAAoB,CAAC,UAAgB,eACvDC,YAAa,eAAoB,CAAC,UAAgB,eAClDE,YAAa,eAAoB,CAAC,UAAgB,eAClDG,YAAa,eAAoB,CAAC,UAAgB,eAClDE,eAAgB,eAAoB,CAAC,UAAgB,eACrDC,gBAAiB,eAAoB,CAAC,UAAgB,eACtDG,kBAAmB,eAAoB,CAAC,UAAgB,eACxDG,oBAAqB,eAAoB,CAAC,UAAgB,eAC1DG,oBAAqB,eAAoB,CAAC,UAAgB,eAE1DG,eAAgB,eAAoB,CAAC,UAAgB,eAErDC,oBAAqB,eAAoB,CAAC,UAAgB,eAC1DlH,kBAAmB,eAAoB,CAAC,UAAgB,eACxDE,cAAe,eAAoB,CAAC,UAAgB,eACpDiH,iBAAkB,eAAoB,CAAC,UAAgB,eACvDE,gBAAiB,eAAoB,CAAC,UAAgB,eACtDC,iBAAkB,eAAoB,CAAC,UAAgB,eACvDC,gBAAiB,eAAoB,CAAC,UAAgB,gBClKxD,IAAI,GAAgb,SAAU5kF,EAAKluB,GAAK,GAAI6lB,MAAMuO,QAAQlG,GAAQ,OAAOA,EAAY,GAAIznB,OAAO6gB,YAAYhnB,OAAO4tB,GAAQ,OAAxf,SAAuBA,EAAKluB,GAAK,IAAIiqG,EAAO,GAAQC,GAAK,EAAUz9E,GAAK,EAAWE,OAAKznB,EAAW,IAAM,IAAK,IAAiCilG,EAA7Bv8E,EAAKM,EAAIznB,OAAO6gB,cAAmB4iF,GAAMC,EAAKv8E,EAAGxe,QAAQyX,QAAoBojF,EAAKjmG,KAAKmmG,EAAGjpG,QAAYlB,GAAKiqG,EAAKhqG,SAAWD,GAA3DkqG,GAAK,GAAkE,CAAE,MAAOhkG,GAAOumB,GAAK,EAAME,EAAKzmB,CAAK,CAAE,QAAU,KAAWgkG,GAAMt8E,EAAW,QAAGA,EAAW,QAAK,CAAE,QAAU,GAAInB,EAAI,MAAME,CAAI,CAAE,CAAE,OAAOs9E,CAAM,CAAuHG,CAAcl8E,EAAKluB,GAAa,MAAM,IAAIJ,UAAU,uDAA2D,EAE7oB,GAAWU,OAAO2lB,QAAU,SAAUnmB,GAAU,IAAK,IAAIE,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CAAE,IAAI+xD,EAAShvD,UAAU/C,GAAI,IAAK,IAAIQ,KAAOuxD,EAAczxD,OAAOM,UAAUwC,eAAelB,KAAK6vD,EAAQvxD,KAAQV,EAAOU,GAAOuxD,EAAOvxD,GAAU,CAAE,OAAOV,CAAQ,EAE3P,GAAe,WAAc,SAASkqG,EAAiBlqG,EAAQC,GAAS,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAME,OAAQD,IAAK,CAAE,IAAIE,EAAaH,EAAMC,GAAIE,EAAWC,WAAaD,EAAWC,aAAc,EAAOD,EAAWE,cAAe,EAAU,UAAWF,IAAYA,EAAWG,UAAW,GAAMC,OAAOC,eAAeT,EAAQI,EAAWM,IAAKN,EAAa,CAAE,CAAE,OAAO,SAAUP,EAAae,EAAYC,GAAiJ,OAA9HD,GAAYspG,EAAiBrqG,EAAYiB,UAAWF,GAAiBC,GAAaqpG,EAAiBrqG,EAAagB,GAAqBhB,CAAa,CAAG,CAA7hB,GAiBZ,IAEHqzG,GAAa,SAAUC,GAGzB,SAASD,EAAWjzG,IApBtB,SAAyBL,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAqBpJ,CAAgBkD,KAAMkwG,GAEtB,IAAI/tG,EArBR,SAAoC5C,EAAMH,GAAQ,IAAKG,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOJ,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BG,EAAPH,CAAa,CAqB/N,CAA2BY,MAAOkwG,EAAWvxG,WAAanB,OAAOiB,eAAeyxG,IAAa9wG,KAAKY,OA6B9G,OA3BAmC,EAAMiuG,iBAAmBjuG,EAAMiuG,iBAAiB1xG,KAAKyD,GACrDA,EAAMkuG,aAAeluG,EAAMkuG,aAAa3xG,KAAKyD,GAC7CA,EAAMmuG,cAAgBnuG,EAAMmuG,cAAc5xG,KAAKyD,GAC/CA,EAAMouG,cAAgBpuG,EAAMouG,cAAc7xG,KAAKyD,GAC/CA,EAAMquG,eAAiBruG,EAAMquG,eAAe9xG,KAAKyD,GACjDA,EAAMsuG,eAAiBtuG,EAAMsuG,eAAe/xG,KAAKyD,GACjDA,EAAMuuG,WAAavuG,EAAMuuG,WAAWhyG,KAAKyD,GACzCA,EAAMwuG,SAAWxuG,EAAMwuG,SAASjyG,KAAKyD,GACrCA,EAAMyuG,WAAazuG,EAAMyuG,WAAWlyG,KAAKyD,GACzCA,EAAM2lG,aAAe3lG,EAAM2lG,aAAappG,KAAKyD,GAC7CA,EAAMomG,iBAAmBpmG,EAAMomG,iBAAiB7pG,KAAKyD,GACrDA,EAAM0uG,WAAa1uG,EAAM0uG,WAAWnyG,KAAKyD,GACzCA,EAAM2uG,aAAe3uG,EAAM2uG,aAAapyG,KAAKyD,GAC7CA,EAAM4uG,kBAAoB5uG,EAAM4uG,kBAAkBryG,KAAKyD,GACvDA,EAAM6uG,gBAAkB7uG,EAAM6uG,gBAAgBtyG,KAAKyD,GACnDA,EAAM8uG,mBAAqB9uG,EAAM8uG,mBAAmBvyG,KAAKyD,GAEzDA,EAAMwL,MAAQ,CACZ6hD,KAAM,EACN24C,SAAUlrG,EAAMssG,gBAChB2H,OAAQj0G,EAAMgtG,cACdkH,SAAUl0G,EAAMmtG,gBAChBgH,SAAUn0G,EAAMitG,gBAChBmH,QAASp0G,EAAMktG,eACfmH,mBAAmB,EACnBC,cAAc,GAETpvG,CACT,CA8tBA,OA/wBF,SAAmBnE,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAInB,UAAU,kEAAoEmB,GAAeD,EAASF,UAAYN,OAAOU,OAAOD,GAAcA,EAAWH,UAAW,CAAEK,YAAa,CAAEC,MAAOJ,EAAUX,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeW,IAAYT,OAAOgB,eAAiBhB,OAAOgB,eAAeR,EAAUC,GAAcD,EAASW,UAAYV,EAAY,CAc3e,CAAUiyG,EAAYC,GAqCtB,GAAaD,EAAY,CAAC,CACxBxyG,IAAK,SACLU,MAAO,WACL,IAAImR,EAASvP,KAETwxG,EAAgBxxG,KAAKowG,mBACrBjQ,EAAWqR,EAAcrR,SACzB/tF,EAAYo/F,EAAcp/F,UAC1BC,EAAQm/F,EAAcn/F,MACtBi5F,EAAWkG,EAAclG,SACzBC,EAAgBiG,EAAcjG,cAC9BC,EAAqBgG,EAAchG,mBACnCC,EAAuB+F,EAAc/F,qBACrCC,EAAuB8F,EAAc9F,qBACrCC,EAAgB6F,EAAc7F,cAC9BC,EAAkB4F,EAAc5F,gBAChCC,EAAkB2F,EAAc3F,gBAChCC,EAAsB0F,EAAc1F,oBACpCC,EAAwByF,EAAczF,sBACtCC,EAAwBwF,EAAcxF,sBACtCC,EAAgBuF,EAAcvF,cAC9BC,EAAkBsF,EAActF,gBAChCC,EAAaqF,EAAcrF,WAC3BC,EAAaoF,EAAcpF,WAC3BC,EAAgBmF,EAAcnF,cAC9BC,EAAkBkF,EAAclF,gBAChCC,EAAkBiF,EAAcjF,gBAChCC,EAAqBgF,EAAchF,mBACnCC,EAAkB+E,EAAc/E,gBAChCC,EAAiB8E,EAAc9E,eAC/BC,EAAkB6E,EAAc7E,gBAChCvD,EAAiBoI,EAAcpI,eAC/BC,EAAoBmI,EAAcnI,kBAClCC,EAAuBkI,EAAclI,qBACrCmI,EAASD,EAAcC,OACvBzD,EAAcwD,EAAcxD,YAC5BC,EAAauD,EAAcvD,WAC3BrE,EAAW4H,EAAc5H,SACzBC,EAAY2H,EAAc3H,UAC1BC,EAAY0H,EAAc1H,UAC1BC,EAAayH,EAAczH,WAC3BgB,EAAayG,EAAczG,WAC3BD,EAAc0G,EAAc1G,YAC5BD,EAAU2G,EAAc3G,QACxBG,EAAawG,EAAcxG,WAC3BC,EAAgBuG,EAAcvG,cAC9BE,EAAcqG,EAAcrG,YAC5B1F,EAAW+L,EAAc/L,SACzB2F,EAAoBoG,EAAcpG,kBAClCr+F,EAAUykG,EAAczkG,QACxBo7F,EAAWqJ,EAAcrJ,SACzB34C,EAAOgiD,EAAchiD,KACrB0hD,EAASM,EAAcN,OACvBE,EAAWI,EAAcJ,SACzBC,EAAUG,EAAcH,QACxBF,EAAWK,EAAcL,SACzBxwC,EAAQ6wC,EAAc7wC,MACtBiqC,GAAmB4G,EAAc5G,iBACjCsD,GAAiBsD,EAActD,eAC/BC,GAAiBqD,EAAcrD,eAC/BC,GAAiBoD,EAAcpD,eAC/BC,GAAmBmD,EAAcnD,iBACjCC,GAAckD,EAAclD,YAC5BE,GAAcgD,EAAchD,YAC5BG,GAAc6C,EAAc7C,YAC5BE,GAAiB2C,EAAc3C,eAC/Bc,GAAsB6B,EAAc7B,oBACpCC,GAAmB4B,EAAc5B,iBACjC8B,GAAeF,EAAcE,aAC7B5B,GAAkB0B,EAAc1B,gBAChCC,GAAmByB,EAAczB,iBACjCd,GAAoBuC,EAAcvC,kBAClCG,GAAsBoC,EAAcpC,oBACpCM,GAAiB8B,EAAc9B,eAC/BH,GAAsBiC,EAAcjC,oBACpCT,GAAkB0C,EAAc1C,gBAChCkB,GAAkBwB,EAAcxB,gBAChC2B,GAAeH,EAAcG,aAC7BC,GAAoBJ,EAAcI,kBAClCC,GAAeL,EAAcK,aAC7BC,GAAkBN,EAAcM,gBAChCC,GAAaP,EAAcO,WAC3BT,GAAoBE,EAAcF,kBAIlCU,GAAW7J,EAAW34C,EACtByiD,GAASD,GAAW7J,EACpB+J,GAAWT,EAASE,GAAeI,GAAWvwG,MAAMwwG,GAAUC,IAC9DE,GAAUnyG,KAAK4wG,aACfwB,GAAU,SAAQzmF,KAAKtK,IAAI8wF,GAAUD,GAAS/0G,OAAQ,IAEtDk1G,GAAkBT,GAAkBxpD,MAAK,SAAUtlC,GACrD,OAAOA,EAAEgqF,MACX,IACIwF,GAAavI,GAAc6H,GAAkBxpD,MAAK,SAAUtlC,GAC9D,OAAOA,EAAEinF,UACX,IAuBIwI,GArBuB,SAASC,EAAqBC,GACvD,IAAIx2F,EAAOhc,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,GAC3EoM,EAAQpM,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,IAAM,EACjF,MAAO,CAACwyG,EAAKjrG,KAAI,SAAU21C,EAAKjgD,GAE9B,IAAIw1G,EAAmB,GAAS,CAAC,EAAGv1D,EAAK,CACvCw1D,WAFFtmG,GAAS,IAILumG,EAAU32F,EAAK/L,OAAO,CAAChT,IAC3B,GAAIw1G,EAAiB1H,IAAe,OAAMmG,EAAUyB,GAAU,CAC5D,IAAIC,EAAwBL,EAAqBE,EAAiB1H,GAAa4H,EAASvmG,GAEpFymG,EAAyB,GAAeD,EAAuB,GAEnEH,EAAiB1H,GAAc8H,EAAuB,GACtDzmG,EAAQymG,EAAuB,EACjC,CACA,OAAOJ,CACT,IAAIrmG,EACN,CAE6BmmG,CAAqBN,IAE9Ca,GAAyB,GAAeR,GAAwB,GAEpEL,GAAWa,GAAuB,GAGlC,IAAI1K,GAAc74C,EAAO,EACrB84C,GAAU94C,EAAO,EAAImR,EAErBqyC,GAAc,OAAMpB,GAAkBpqG,KAAI,SAAUsb,GACtD,IAAImwF,EAAgB5B,EAAQ/gG,MAAK,SAAUrJ,GACzC,OAAOA,EAAE6H,KAAOgU,EAAEhU,EACpB,KAAM,CAAC,EACP,OAAO,mBAAkBmkG,EAAc70G,MAAO0kB,EAAEkG,MAAOlG,EAAEqqF,SAC3D,KAEI+F,IAAY,EAEZC,GAAa,GAAS,CAAC,EAAG3B,EAAe,CAC3CQ,SAAUA,GACVC,OAAQA,GACRC,SAAUA,GACVC,QAASA,GACTC,QAASA,GACTC,gBAAiBA,GACjBhK,YAAaA,GACbC,QAASA,GACT0K,YAAaA,KAGXI,GAAY,cAAa9H,EAAS6H,QAAY/wG,OAAWA,EAAWpC,OACpEqzG,GAAa,cAAa9H,EAAc4H,QAAY/wG,OAAWA,EAAWpC,OAC1EszG,GAAa,cAAarH,EAAckH,QAAY/wG,OAAWA,EAAWpC,OAC1EuzG,GAAe9G,EAAgB0G,QAAY/wG,OAAWA,EAAWpC,MACjEwzG,GAAc9G,EAAeyG,QAAY/wG,OAAWA,EAAWpC,MAI/DyzG,GAAkB,SAAyBv+E,EAAQh4B,GACrD,IAAIw2G,EAAe,SAAsBt2D,GACvC,OAAQi0D,EAAQ/gG,MAAK,SAAUrJ,GAC7B,OAAOA,EAAE6H,KAAOsuC,EAAItuC,EACtB,KAAM,CAAC,GAAG1Q,KACZ,EACIu1G,EAAO,OAAMz+E,EAAO+6E,QAAQzoG,KAAI,SAAU41C,GAC5C,OAAOA,EAAIp0B,OAAS0qF,EAAat2D,GAAO,EAAIA,EAAI+vD,QAClD,KACInkF,EAAQ,OAAMkM,EAAO+6E,QAAQzoG,KAAI,SAAU41C,GAC7C,OAAO,mBAAkBs2D,EAAat2D,GAAMA,EAAIp0B,MAAOo0B,EAAI+vD,SAC7D,KACInlF,EAAW,OAAMkN,EAAO+6E,QAAQzoG,KAAI,SAAU41C,GAChD,OAAO,mBAAkBs2D,EAAat2D,GAAMA,EAAIp0B,MAAOo0B,EAAIp1B,SAC7D,KAEI4rF,EAAoB,cAAalI,EAAqByH,QAAY/wG,EAAW8yB,EAAQ3lB,IACrFskG,EAAoB,cAAa3+E,EAAOq4E,eAAe4F,QAAY/wG,EAAW8yB,EAAQ3lB,IAEtFukG,EAAU,CAAC5+E,EAAOm4E,gBAAiBuG,EAAkBxhG,UAAWyhG,EAAkBzhG,WAElF2hG,EAAS,GAAS,CAAC,EAAG7+E,EAAOo4E,YAAasG,EAAkBvhG,MAAOwhG,EAAkBxhG,OAErF6zF,EAAO,GAAS,CAAC,EAAG0N,EAAkB1N,KAAM2N,EAAkB3N,MAE9D8N,EAAa,CACfL,KAAMA,EAAO,UACb3qF,MAAO,QAAOA,GACdhB,SAAU,QAAOA,IAGnB,OAAO,gBACLwmF,GACA,GAAS,CACP9wG,IAAKR,EAAI,IAAMg4B,EAAOpmB,GACtBsD,UAAW,KAAW0hG,GACtBzhG,MAAO,GAAS,CAAC,EAAG0hG,EAAQC,IAC3B9N,GACH,sBAAqBhxE,EAAO23E,OAAQ,CAClCvjG,KAAMyoG,GACN78E,OAAQA,IAGd,EAwBI++E,GAAa,SAAoB/+E,EAAQh4B,GAC3C,IAAIg3G,EAAa7C,EAAQ/gG,MAAK,SAAUrJ,GACtC,OAAOA,EAAE6H,KAAOomB,EAAOpmB,EACzB,KAAM,CAAC,EACHuhB,EAAO6gF,EAAO5gG,MAAK,SAAUwS,GAC/B,OAAOA,EAAEhU,KAAOomB,EAAOpmB,EACzB,IACI9J,EAA8B,mBAAhBkwB,EAAOlwB,KAAsBkwB,EAAOlwB,OAASkwB,EAAOlwB,KAClEgkB,EAAQ,mBAAkBkrF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOi4E,UACjEnlF,EAAW,mBAAkBksF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOlN,UACpEmsF,EAAe,cAAatI,EAAgBsH,QAAY/wG,EAAW8yB,EAAQ3lB,IAC3EskG,EAAoB,cAAa3+E,EAAOq4E,eAAe4F,QAAY/wG,EAAW8yB,EAAQ3lB,IAEtFukG,EAAU,CAAC5+E,EAAOm4E,gBAAiB8G,EAAa/hG,UAAWyhG,EAAkBzhG,WAE7E2hG,EAAS,GAAS,CAAC,EAAG7+E,EAAOo4E,YAAa6G,EAAa9hG,MAAOwhG,EAAkBxhG,OAEhF6zF,EAAO,GAAS,CAAC,EAAGiO,EAAajO,KAAM2N,EAAkB3N,MAEzDkO,EAAc,mBAAkBl/E,EAAO40E,UAAWA,GAAW,GAC7DuK,EAAUD,EAAc,gBAAoBrE,GAAkB,GAAS,CACzEuE,YAAa,SAAqBj1G,GAChC,OAAOkQ,EAAOwhG,kBAAkB1xG,EAAG61B,GAAQ,EAC7C,EACAq/E,aAAc,SAAsBl1G,GAClC,OAAOkQ,EAAOwhG,kBAAkB1xG,EAAG61B,GAAQ,EAC7C,GACCy3E,EAAgB,kBAAcvqG,EAAW8yB,EAAQ3lB,KAAY,KAE5DilG,EAAa,mBAAkBt/E,EAAO00E,SAAUA,GAAU,GAE9D,OAAO,gBACL4E,GACA,GAAS,CACP9wG,IAAKR,EAAI,IAAMg4B,EAAOpmB,GACtBsD,UAAW,KAAW0hG,EAASM,GAAe,sBAAuB/jF,EAAOA,EAAK1vB,KAAO,aAAe,YAAc,GAAI6zG,GAAc,mBAAoBxvG,GAAQ,UAAW6lG,GAAWA,EAAQrpG,MAAM,GAAI,GAAGuX,SAASmc,EAAOpmB,KAAO,mBACrOuD,MAAO,GAAS,CAAC,EAAG0hG,EAAQ,CAC1BJ,KAAM3qF,EAAQ,UACdA,MAAO,QAAOA,GACdhB,SAAU,QAAOA,KAEnB0mF,WAAY,SAAoBrvG,GAC1Bm1G,GAAYjlG,EAAOshG,WAAW37E,IAAQ20E,GAAYxqG,EAAEo1G,SAC1D,GACCvO,GACH,gBACE,MACA,CAAE9zF,UAAW,KAAWgiG,GAAe,gCACvC,sBAAqBl/E,EAAO23E,OAAQ,CAClCvjG,KAAMyoG,GACN78E,OAAQA,KAGZm/E,EAEJ,EAwBIK,GAAa,SAAoBx/E,EAAQh4B,GAC3C,IAAIg3G,EAAa7C,EAAQ/gG,MAAK,SAAUrJ,GACtC,OAAOA,EAAE6H,KAAOomB,EAAOpmB,EACzB,KAAM,CAAC,EACHka,EAAQ,mBAAkBkrF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOi4E,UACjEnlF,EAAW,mBAAkBksF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOlN,UACpE2sF,EAAqB,cAAa3I,EAAsBmH,QAAY/wG,EAAW8yB,EAAQ3lB,IACvFskG,EAAoB,cAAa3+E,EAAOq4E,eAAe4F,QAAY/wG,EAAW8yB,EAAQ3lB,IAEtFukG,EAAU,CAAC5+E,EAAOm4E,gBAAiBsH,EAAmBviG,UAAWyhG,EAAkBzhG,WAEnF2hG,EAAS,GAAS,CAAC,EAAG7+E,EAAOo4E,YAAaqH,EAAmBtiG,MAAOwhG,EAAkBxhG,OAEtF6zF,EAAO,GAAS,CAAC,EAAGyO,EAAmBzO,KAAM2N,EAAkB3N,MAE/Dl/F,EAASoqG,EAAS9gG,MAAK,SAAUtJ,GACnC,OAAOA,EAAO8H,KAAOomB,EAAOpmB,EAC9B,IAEI8lG,EAA0B1/E,EAAOiK,QAAU2vE,GAE3C+F,EAAe,mBAAkB3/E,EAAO60E,WAAYA,GAAY,GAEpE,OAAO,gBACLyE,GACA,GAAS,CACP9wG,IAAKR,EAAI,IAAMg4B,EAAOpmB,GACtBsD,UAAW,KAAW0hG,GACtBzhG,MAAO,GAAS,CAAC,EAAG0hG,EAAQ,CAC1BJ,KAAM3qF,EAAQ,UACdA,MAAO,QAAOA,GACdhB,SAAU,QAAOA,MAElBk+E,GACH2O,EAAe,sBAAqBD,EAAyB,CAC3D1/E,OAAQA,EACRluB,OAAQA,EACRuL,SAAU,SAAkBnU,GAC1B,OAAOmR,EAAOuhG,aAAa57E,EAAQ92B,EACrC,GACC,kBAA8B,KAErC,EAwBI02G,GAAc,SAASA,EAAY33D,EAAKjgD,GAC1C,IAAI+e,EAAOhc,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,GAE3E80G,EAAU,CACZC,SAAU73D,EAAIguD,GACdhuD,IAAKA,EACL9wC,MAAO8wC,EAAIsoD,GACXwP,UAAW/B,IAAY,EACvB/K,SAAUA,EACV34C,KAAMA,EACNtL,MAAOjoC,EAAK9e,OACZ+3G,YAAaj5F,EAAK/L,OAAO,CAAChT,IAC1Bi4G,WAAYh4D,EAAI8tD,GAChBmK,eAAgBj4D,EAAIiuD,GACpBkE,QAASnyD,EAAI6tD,IAEXmE,EAAa,OAAMgC,EAAU4D,EAAQG,aACrCG,EAAenJ,EAAgBiH,GAAY4B,OAAS3yG,EAAWmN,GAC/D+lG,EAAU,cAAanJ,EAAWgH,GAAY4B,OAAS3yG,EAAWmN,IACtE,OAAO,gBACL8+F,GACA,GAAS,CAAE3wG,IAAKq3G,EAAQG,YAAYh8F,KAAK,MAAQm8F,GACjD,gBACE/G,GACA,GAAS,CACPl8F,UAAW,KAAWkjG,EAAQljG,UAAW+qC,EAAIw1D,WAAa,EAAI,QAAU,QACxEtgG,MAAOijG,EAAQjjG,OACdijG,EAAQpP,MACX0L,GAAkBpqG,KAAI,SAAU0tB,EAAQqgF,GACtC,IAAIrB,EAAa7C,EAAQ/gG,MAAK,SAAUrJ,GACtC,OAAOA,EAAE6H,KAAOomB,EAAOpmB,EACzB,KAAM,CAAC,EACH9J,EAA8B,mBAAhBkwB,EAAOlwB,KAAsBkwB,EAAOlwB,OAASkwB,EAAOlwB,KAClEgkB,EAAQ,mBAAkBkrF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOi4E,UACjEnlF,EAAW,mBAAkBksF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOlN,UACpEwtF,EAAU,cAAapJ,EAAW+G,GAAY4B,EAAS7/E,EAAQ3lB,IAC/DkmG,EAAc,cAAavgF,EAAOo2E,SAAS6H,GAAY4B,EAAS7/E,EAAQ3lB,IAExEukG,EAAU,CAAC0B,EAAQpjG,UAAW8iB,EAAO9iB,UAAWqjG,EAAYrjG,WAE5D2hG,EAAS,GAAS,CAAC,EAAGyB,EAAQnjG,MAAO6iB,EAAO7iB,MAAOojG,EAAYpjG,OAE/DqjG,EAAW,GAAS,CAAC,EAAGX,EAAS,CACnC5F,WAAYA,EACZj6E,OAAQ,GAAS,CAAC,EAAGA,GACrB92B,MAAO22G,EAAQ53D,IAAIjoB,EAAOpmB,IAC1B6mG,QAASzgF,EAAOygF,QAChBC,SAAU1gF,EAAO0gF,SACjBvE,QAASA,EACTrsG,KAAMA,EACNgkB,MAAOA,EACPhB,SAAUA,EACVwtF,QAASA,EACTC,YAAaA,EACb3B,QAASA,EACTC,OAAQA,IAGN31G,EAAQs3G,EAASt3G,MAEjBy3G,OAAqB,EACrBC,OAAW,EACXC,OAAY,EAkBZC,EAAe,sBAAqB9gF,EAAO03E,KAAM8I,EAAUt3G,GAG3D63G,EAA8B/gF,EAAO63E,aAAgB73E,EAAOk4E,UAAkCl4E,EAAO03E,KAA7B2C,IACxE2G,EAA4BhhF,EAAOg4E,UAAY+B,GAC/CkH,EAA8BjhF,EAAO+3E,YAAcmC,GACnDgH,EAAgC1G,IAAkB,SAAUzyG,GAC9D,OAAO,gBACL,MACA,KACA,gBAAoBi5G,EAA2Bj5G,GAC/C,gBAAoBk5G,EAA6Bl5G,GAErD,EACIo5G,EAAyBnhF,EAAO83E,OAASoJ,GAGzCV,EAASC,SAAWD,EAASE,YAE/BF,EAASY,YAAa,EACtBT,GAAqB,GAGjBH,EAASC,SAAYD,EAASpG,SAAYoC,KAC5CgE,EAASY,YAAa,IAItBZ,EAASC,SAEXG,EAAWf,EAAQ53D,IAAI4tD,KAAgB71E,EAAOpmB,IAAM4mG,EAASpG,QAE7DyG,EAAYlL,EAAQ/6F,QAAQolB,EAAOpmB,IAAM+7F,EAAQ/6F,QAAQilG,EAAQ53D,IAAI4tD,KAAgB2K,EAASpG,QAI5F0G,EAFEF,EAEa,sBAAqBO,EAAwB,GAAS,CAAC,EAAGX,EAAU,CACjFt3G,MAAO++C,EAAI2tD,KACT3tD,EAAI2tD,IACCiL,EAEM,sBAAqBE,EAA6BP,EAAUt3G,GAE5D,MAERs3G,EAASP,aAClBa,EAAe,sBAAqBC,EAA6BP,EAAUt3G,IAGzEs3G,EAASE,WACXI,EAAe,sBAAqBE,EAA2BR,EAAUv4D,EAAI2tD,IACzED,IACE6K,EAASN,iBACXY,EAAe,MAEZN,EAASpG,SAAYoC,KACxBsE,EAAe,QAKrB,IAAIO,EAA0BV,EA7ER,SAAyBx2G,GAC7C,IAAIm3G,EAAc,SAAQrF,GAO1B,OALEqF,EADErH,EACY,OAAMqH,EAAad,EAASR,aAAa,GAEzC,OAAMsB,EAAad,EAASR,YAAa,CAAC,GAGnD3lG,EAAOknG,iBAAiB,CAC7BtF,SAAUqF,IACT,WACD,OAAO5L,IAAoBA,GAAiB4L,EAAad,EAASR,YAAa71G,EACjF,GACF,EAgEqE,WAAa,EAK9Eq3G,EAAmB,CACrB3jG,QAASwjG,GAoBX,OAjBIf,EAAQtP,KAAKnzF,UACf2jG,EAAiB3jG,QAAU,SAAU1T,GACnCm2G,EAAQtP,KAAKnzF,QAAQ1T,GAAG,WACtB,OAAOk3G,EAAwBl3G,EACjC,GACF,GAGEo2G,EAAYvP,KAAKnzF,UACnB2jG,EAAiB3jG,QAAU,SAAU1T,GACnCo2G,EAAYvP,KAAKnzF,QAAQ1T,GAAG,WAC1B,OAAOk3G,EAAwBl3G,EACjC,GACF,GAIK,gBACLsvG,GAGA,GAAS,CAAEjxG,IAAK63G,EAAK,IAAMrgF,EAAOpmB,GAChCsD,UAAW,KAAW0hG,GAAU9uG,GAAQ,SAAU0wG,EAASY,YAAc,iBAAkBR,GAAYC,IAAc,YACrH1jG,MAAO,GAAS,CAAC,EAAG0hG,EAAQ,CAC1BJ,KAAM3qF,EAAQ,UACdA,MAAO,QAAOA,GACdhB,SAAU,QAAOA,MAElBwtF,EAAQtP,KAAMuP,EAAYvP,KAAMwQ,GACnCV,EAEJ,KAEFjB,EAAQzF,SAAWH,GAAc4F,EAAQzF,QAAQ9nG,KAAI,SAAUsb,EAAG5lB,GAChE,OAAO43G,EAAYhyF,EAAG5lB,EAAG63G,EAAQG,YACnC,IACAxD,KAAiBqD,EAAQzF,SAAWH,GAAcuC,GAAaqD,GAEnE,EAEI4B,GAAgB,SAAuBzhF,EAAQh4B,GACjD,IAAIg3G,EAAa7C,EAAQ/gG,MAAK,SAAUrJ,GACtC,OAAOA,EAAE6H,KAAOomB,EAAOpmB,EACzB,KAAM,CAAC,EACH9J,EAA8B,mBAAhBkwB,EAAOlwB,KAAsBkwB,EAAOlwB,OAASkwB,EAAOlwB,KAClEgkB,EAAQ,mBAAkBkrF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOi4E,UACjEwG,EAAO3qF,EACPhB,EAAW,mBAAkBksF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOlN,UACpEwtF,EAAU,cAAapJ,EAAW+G,QAAY/wG,EAAW8yB,EAAQ3lB,IACjEkmG,EAAc,cAAavgF,EAAOo2E,SAAS6H,QAAY/wG,EAAW8yB,EAAQ3lB,IAE1EukG,EAAU,CAAC0B,EAAQpjG,UAAW8iB,EAAO9iB,UAAWqjG,EAAYrjG,WAE5D2hG,EAAS,GAAS,CAAC,EAAGyB,EAAQnjG,MAAO6iB,EAAO7iB,MAAOojG,EAAYpjG,OAEnE,OAAO,gBACLs8F,GACA,GAAS,CACPjxG,IAAKR,EAAI,IAAMg4B,EAAOpmB,GACtBsD,UAAW,KAAW0hG,GAAU9uG,GAAQ,UACxCqN,MAAO,GAAS,CAAC,EAAG0hG,EAAQ,CAC1BJ,KAAMA,EAAO,UACb3qF,MAAO,QAAOA,GACdhB,SAAU,QAAOA,MAElBwtF,EAAQtP,MACX,sBAAqB8J,IAEzB,EAEI4G,GAAa,SAAoBz5D,EAAKjgD,GACxC,IAAIm4G,EAAenJ,EAAgBiH,QAAY/wG,OAAWA,EAAWmN,GACjE+lG,EAAU,cAAanJ,EAAWgH,QAAY/wG,OAAWA,EAAWmN,IACxE,OAAO,gBACL8+F,GACA,GAAS,CAAE3wG,IAAKR,GAAKm4G,GACrB,gBACE/G,GACA,CACEl8F,UAAW,KAAW,WAAY8/F,GAAS/0G,OAASD,GAAK,EAAI,QAAU,OAAQo4G,EAAQljG,WACvFC,MAAOijG,EAAQjjG,OAAS,CAAC,GAE3Bu/F,GAAkBpqG,IAAImvG,KAG5B,EAEIE,GAAmB,SAA0B3hF,EAAQh4B,GACvD,IAAIg3G,EAAa7C,EAAQ/gG,MAAK,SAAUrJ,GACtC,OAAOA,EAAE6H,KAAOomB,EAAOpmB,EACzB,KAAM,CAAC,EACH9J,EAA8B,mBAAhBkwB,EAAOlwB,KAAsBkwB,EAAOlwB,OAASkwB,EAAOlwB,KAClEgkB,EAAQ,mBAAkBkrF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOi4E,UACjEnlF,EAAW,mBAAkBksF,EAAW91G,MAAO82B,EAAOlM,MAAOkM,EAAOlN,UACpE8uF,EAAe,cAAavK,EAAgB4G,QAAY/wG,OAAWA,EAAWmN,IAC9EkmG,EAAc,cAAavgF,EAAOo2E,SAAS6H,QAAY/wG,EAAW8yB,EAAQ3lB,IAC1EwnG,EAAoB,cAAa7hF,EAAOw4E,eAAeyF,QAAY/wG,EAAW8yB,EAAQ3lB,IAEtFukG,EAAU,CAACgD,EAAa1kG,UAAW8iB,EAAO9iB,UAAWqjG,EAAYrjG,UAAW2kG,EAAkB3kG,WAE9F2hG,EAAS,GAAS,CAAC,EAAG+C,EAAazkG,MAAO6iB,EAAO7iB,MAAOojG,EAAYpjG,MAAO0kG,EAAkB1kG,OAEjG,OAAO,gBACLs8F,GACA,GAAS,CACPjxG,IAAKR,EAAI,IAAMg4B,EAAOpmB,GACtBsD,UAAW,KAAW0hG,GAAU9uG,GAAQ,UACxCqN,MAAO,GAAS,CAAC,EAAG0hG,EAAQ,CAC1BJ,KAAM3qF,EAAQ,UACdA,MAAO,QAAOA,GACdhB,SAAU,QAAOA,MAElBytF,EAAYvP,KAAM4Q,EAAa5Q,KAAM6Q,EAAkB7Q,MAC1D,sBAAqBhxE,EAAO43E,OAAQ,CAClCxjG,KAAMyoG,GACN78E,OAAQA,IAGd,EAqCI8hF,GAAY,WACd,IAbIC,EAtBAC,EACAC,EArSAC,EACAC,EAnEAC,EACAC,EAhFAC,EACAC,EAudAC,GAbAT,EAAkB,cAAazK,EAAmB2G,QAAY/wG,OAAWA,EAAWmN,IACjF,gBAAoBogG,GAAqB,GAAS,CAAC,EAAG6B,EAAe,CAC1E7wC,MAAOA,EACP0nC,YAAaA,GACbC,QAASA,GACTR,aAAcv4F,EAAOu4F,aACrBS,iBAAkBh5F,EAAOg5F,iBACzBn2F,UAAW6kG,EAAgB7kG,UAC3BC,MAAO4kG,EAAgB5kG,OACtB4kG,EAAgB/Q,QAKnB,OAAO,gBACL,MACA,GAAS,CACP9zF,UAAW,KAAW,aAAcA,EAAWghG,GAAUhhG,WACzDC,MAAO,GAAS,CAAC,EAAGA,EAAO+gG,GAAU/gG,QACpC+gG,GAAUlN,MACbkD,GAAkBC,EAAoB,gBACpC,MACA,CAAEj3F,UAAW,kBACbslG,GACE,KACJ,gBACExJ,GACA,GAAS,CACP97F,UAAW,KAAWihG,GAAWjhG,UAAWk/F,GAAoB,cAAgB,IAChFj/F,MAAOghG,GAAWhhG,OACjBghG,GAAWnN,MACd4L,IA1eA0F,EAAkB,cAAahM,EAAmB2H,QAAY/wG,OAAWA,EAAWmN,IACpFkoG,EAAoB,cAAahM,EAAqB0H,QAAY/wG,OAAWA,EAAWmN,IACrF,gBACL4+F,GACA,GAAS,CACP/7F,UAAW,KAAW,gBAAiBolG,EAAgBplG,WACvDC,MAAO,GAAS,CAAC,EAAGmlG,EAAgBnlG,MAAO,CACzC86F,SAAU6F,GAAc,QAEzBwE,EAAgBtR,MACnB,gBACEoI,GACA,GAAS,CACPl8F,UAAWqlG,EAAkBrlG,UAC7BC,MAAOolG,EAAkBplG,OACxBolG,EAAkBvR,MACrB2L,GAAarqG,IAAIisG,OA0dsB,MA3ZvC6D,EAAa,cAAa3L,EAAcwH,QAAY/wG,OAAWA,EAAWmN,IAC1EgoG,EAAe,cAAa3L,EAAgBuH,QAAY/wG,OAAWA,EAAWmN,IAC3E,gBACL4+F,GACA,GAAS,CACP/7F,UAAW,KAAW,UAAWklG,EAAWllG,WAC5CC,MAAO,GAAS,CAAC,EAAGilG,EAAWjlG,MAAO,CACpC86F,SAAU6F,GAAc,QAEzBsE,EAAWpR,MACd,gBACEoI,GACA,GAAS,CACPl8F,UAAWmlG,EAAanlG,UACxBC,MAAOklG,EAAallG,OACnBklG,EAAarR,MAChB0L,GAAkBpqG,IAAIysG,OA6YtB3B,IA3VA8E,EAAmB,cAAatL,EAAoBqH,QAAY/wG,OAAWA,EAAWmN,IACtF8nG,EAAqB,cAAatL,EAAsBoH,QAAY/wG,OAAWA,EAAWmN,IACvF,gBACL4+F,GACA,GAAS,CACP/7F,UAAW,KAAW,WAAYglG,EAAiBhlG,WACnDC,MAAO,GAAS,CAAC,EAAG+kG,EAAiB/kG,MAAO,CAC1C86F,SAAU6F,GAAc,QAEzBoE,EAAiBlR,MACpB,gBACEoI,GACA,GAAS,CACPl8F,UAAWilG,EAAmBjlG,UAC9BC,MAAOglG,EAAmBhlG,OACzBglG,EAAmBnR,MACtB0L,GAAkBpqG,IAAIktG,OA2UO,KAC7B,gBACEtG,GACA,GAAS,CACPh8F,UAAW,KAAWkhG,GAAWlhG,WACjCC,MAAO,GAAS,CAAC,EAAGihG,GAAWjhG,MAAO,CACpC86F,SAAU6F,GAAc,QAEzBM,GAAWpN,MACdgM,GAAS1qG,KAAI,SAAUsb,EAAG5lB,GACxB,OAAO43G,GAAYhyF,EAAG5lB,EACxB,IACAk1G,GAAQ5qG,IAAIovG,KAEdvE,IArEA6E,EAAa7K,EAAc8G,QAAY/wG,OAAWA,EAAWmN,GAC7D4nG,EAAe,cAAa7K,EAAgB6G,QAAY/wG,OAAWA,EAAWmN,IAC3E,gBACLs/F,GACA,GAAS,CACPz8F,UAAW8kG,EAAW9kG,UACtBC,MAAO,GAAS,CAAC,EAAG6kG,EAAW7kG,MAAO,CACpC86F,SAAU6F,GAAc,QAEzBkE,EAAWhR,MACd,gBACEoI,GACA,GAAS,CACPl8F,UAAW,KAAW+kG,EAAa/kG,WACnCC,MAAO8kG,EAAa9kG,OACnB8kG,EAAajR,MAChB0L,GAAkBpqG,IAAIqvG,OAqDkB,MAE1CzN,GAAkBE,EAAuB,gBACvC,MACA,CAAEl3F,UAAW,qBACbslG,GACE,MACHxF,GAAS/0G,QAAU,gBAClB2yG,GACA0D,GACA,sBAAqBvF,IAEvB,gBAAoB2B,GAAkB,GAAS,CAAE7iG,QAASA,EAASihG,YAAaA,GAAeuF,KAEnG,EAGA,OAAOpT,EAAWA,EAASgT,GAAY6D,GAAWh3G,MAAQg3G,IAC5D,KAGK9G,CACT,CAnwBiB,CJJjB,SAA0ByH,GACxB,OAAO,SAAUC,GAGf,SAASC,IAGP,OAhBN,SAAyBj7G,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAclJ,CAAgBkD,KAAM63G,GAZ5B,SAAoCt4G,EAAMH,GAAQ,IAAKG,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOJ,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BG,EAAPH,CAAa,CAclO,CAA2BY,MAAO63G,EAAOl5G,WAAanB,OAAOiB,eAAeo5G,IAAS33G,MAAMF,KAAMC,WAC1G,CAosBA,OAjtBJ,SAAmBjC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAInB,UAAU,kEAAoEmB,GAAeD,EAASF,UAAYN,OAAOU,OAAOD,GAAcA,EAAWH,UAAW,CAAEK,YAAa,CAAEC,MAAOJ,EAAUX,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeW,IAAYT,OAAOgB,eAAiBhB,OAAOgB,eAAeR,EAAUC,GAAcD,EAASW,UAAYV,EAAY,CAOze,CAAU45G,EAAQD,GAQlB,GAAaC,EAAQ,CAAC,CACpBn6G,IAAK,mBACLU,MAAO,SAA0BnB,EAAO0Q,GAEtC,OADoB,GAAS,CAAC,EAAG,iBAAgB3N,KAAK2N,OAAQ,iBAAgB3N,KAAK/C,OAAQ,iBAAgB0Q,GAAQ,iBAAgB1Q,GAErI,GACC,CACDS,IAAK,eACLU,MAAO,SAAsBigB,EAAUy5F,GACrC,IAAIvoG,EAASvP,KAETiwG,EAAU5xF,EAAS4xF,QACnB8H,EAAoB15F,EAASwsF,QAC7BA,OAAgCzoG,IAAtB21G,EAAkC,GAAKA,EACjDzuG,EAAO+U,EAAS/U,KAChB6/F,EAAc9qF,EAAS8qF,YACvB4B,EAAa1sF,EAAS0sF,WACtBD,EAAczsF,EAASysF,YACvBE,EAAa3sF,EAAS2sF,WACtBC,EAAgB5sF,EAAS4sF,cACzBC,EAAkB7sF,EAAS6sF,gBAC3BC,EAAc9sF,EAAS8sF,YACvB1F,EAAWpnF,EAASonF,SACpB2F,EAAoB/sF,EAAS+sF,kBAC7BsG,EAAerzF,EAASqzF,aAIxBI,GAAkB,EACtB7B,EAAQ3qG,SAAQ,SAAU4vB,GACpBA,EAAO+6E,UACT6B,GAAkB,EAEtB,IAEA,IAAIkG,EAAsB,GAAG9nG,OAAO,GAAmB+/F,IAEnDgI,EAAiBhI,EAAQ3/F,MAAK,SAAU8sC,GAC1C,OAAOA,EAAIw4D,UAAYx4D,EAAI6yD,SAAW7yD,EAAI6yD,QAAQ7nD,MAAK,SAAU8vD,GAC/D,OAAOA,EAAKtC,QACd,GACF,IAEIqC,IAAmBA,EAAerC,WACpCqC,EAAiBA,EAAehI,QAAQ3/F,MAAK,SAAU8sC,GACrD,OAAOA,EAAIw4D,QACb,KAIElE,IAAiBuG,IAEnBD,EAAsB,CADtBC,EAAiB,CAAErC,UAAU,IACU1lG,OAAO,GAAmB8nG,KAGnE,IA2CIG,EAAsB,GAGtBC,EAAsB,SAA6BljF,EAAQmjF,GAC7D,IAAIC,EA/CoB,SAA6BpjF,EAAQmjF,GAC7D,IAAIE,OAAO,EAiBX,IAfEA,EADErjF,EAAO0gF,SACF,GAAS,CAAC,EAAGrmG,EAAOtS,MAAMi4B,OAAQ3lB,EAAOtS,MAAM6wG,iBAAkB54E,GAEjE,GAAS,CAAC,EAAG3lB,EAAOtS,MAAMi4B,OAAQA,IAIlClN,SAAWuwF,EAAKpL,WACvBoL,EAAKpL,SAAWoL,EAAKvwF,UAGnBqwF,IACFE,EAAKF,aAAeA,GAIO,iBAAlBE,EAAKC,SAAuB,CACrCD,EAAKzpG,GAAKypG,EAAKzpG,IAAMypG,EAAKC,SAC1B,IAAIC,EAAiBF,EAAKC,SAI1B,OAHAD,EAAKC,SAAW,SAAUr7D,GACxB,OAAO,OAAMA,EAAKs7D,EACpB,EACOF,CACT,CAGA,GAAIA,EAAKC,WAAaD,EAAKzpG,GAEzB,MADArS,QAAQC,KAAK67G,GACP,IAAIt1G,MAAM,4EAUlB,OANKs1G,EAAKC,WACRD,EAAKC,SAAW,WAEhB,GAGKD,CACT,CAMwBG,CAAoBxjF,EAAQmjF,GAElD,OADAF,EAAoBj3G,KAAKo3G,GAClBA,CACT,EAcIK,EAZmBX,EAAoBxwG,KAAI,SAAU0tB,GACvD,OAAIA,EAAO+6E,QACF,GAAS,CAAC,EAAG/6E,EAAQ,CAC1B+6E,QAAS/6E,EAAO+6E,QAAQzoG,KAAI,SAAUsb,GACpC,OAAOs1F,EAAoBt1F,EAAGoS,EAChC,MAGGkjF,EAAoBljF,EAC7B,IAGsC1zB,QAClCowG,EAAoB,GAmBpBgH,GALJD,GAZAA,EAAiBA,EAAenxG,KAAI,SAAU0tB,GAC5C,GAAIA,EAAO+6E,QAAS,CAClB,IAAI4I,EAAoB3jF,EAAO+6E,QAAQjpG,QAAO,SAAU8b,GACtD,QAAO+nF,EAAQ/6F,QAAQgT,EAAEhU,KAAO,IAAY,mBAAkBgU,EAAE9d,MAAM,EACxE,IACA,OAAO,GAAS,CAAC,EAAGkwB,EAAQ,CAC1B+6E,QAAS4I,GAEb,CACA,OAAO3jF,CACT,KAEgCluB,QAAO,SAAUkuB,GAC/C,OAAOA,EAAO+6E,QAAU/6E,EAAO+6E,QAAQ9yG,SAAS0tG,EAAQ/6F,QAAQolB,EAAOpmB,KAAO,IAAY,mBAAkBomB,EAAOlwB,MAAM,EAC3H,KAGgCiV,WAAU,SAAUmjC,GAClD,OAAOA,EAAI07D,KACb,IAGA,GAAIjO,EAAQ1tG,OAAQ,CAElB,IAAI47G,EAAe,GACnBlO,EAAQvlG,SAAQ,SAAU0zG,GACxB,IAAIC,EAAQd,EAAoB7nG,MAAK,SAAUwS,GAC7C,OAAOA,EAAEhU,KAAOkqG,CAClB,IACIC,GACFF,EAAa73G,KAAK+3G,EAEtB,IAEA,IAAIC,EAAoBH,EAAax/F,QAAO,SAAUg0B,EAAM9zB,GAC1D,OAAO8zB,GAAQA,IAAS9zB,EAAQ4+F,cAAgB5+F,EAAQ4+F,YAC1D,GAAGU,EAAa,GAAGV,cAEfc,EAAmBrH,GAAmBoH,EAAkBrM,OASxDuM,EAAmB,CACrBvM,OATFsM,EAAmBA,GAAoB,WACrC,OAAO,gBACL,SACA,KACA,UAEJ,EAIElJ,QAAS8I,EAAavxG,KAAI,SAAU41C,GAClC,OAAO,GAAS,CAAC,EAAG7tC,EAAOtS,MAAM8wG,cAAe3wD,EAAK,CACnDu4D,SAAS,GAEb,KAGIiD,GAAc,GAClBQ,EAAmB,GAAS,CAAC,EAAGT,EAAeC,GAAaQ,GAC5DT,EAAet3G,OAAOu3G,EAAY,EAAGQ,IAErCT,EAAeU,QAAQD,EAE3B,CAGA,IAAIvH,EAAe,GACfyH,EAAc,GAGdC,EAAY,SAAmBtJ,EAAS/6E,GAC1C28E,EAAa3wG,KAAK,GAAS,CAAC,EAAGqO,EAAOtS,MAAMi4B,OAAQA,EAAQ,CAC1D+6E,QAASA,KAEXqJ,EAAc,EAChB,EAGAX,EAAerzG,SAAQ,SAAU4vB,GAC/B,GAAIA,EAAO+6E,QAMT,OALA2B,EAAoBA,EAAkB1hG,OAAOglB,EAAO+6E,SAChDqJ,EAAYn8G,OAAS,GACvBo8G,EAAUD,QAEZC,EAAUrkF,EAAO+6E,QAAS/6E,GAG5B08E,EAAkB1wG,KAAKg0B,GACvBokF,EAAYp4G,KAAKg0B,EACnB,IACI48E,GAAmBwH,EAAYn8G,OAAS,GAC1Co8G,EAAUD,GAIZ,IAAIE,EAAY,SAASA,EAAU12F,EAAG5lB,GACpC,IAAIu8G,EAEAv1D,EAAQjkD,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,EAE5Ek9C,GAAkB,GAAXs8D,EAAO,CAAC,EAAyBtO,EAAaroF,GAAI,GAAgB22F,EAAMhU,EAAUvoG,GAAI,GAAgBu8G,EAAMzO,EAAYloF,EAAEkoF,IAAc,GAAgByO,EAAMvO,EAAiBhnD,GAAQu1D,GAUlM,OATAtB,EAAoB7yG,SAAQ,SAAU4vB,GAChCA,EAAO0gF,WACXz4D,EAAIjoB,EAAOpmB,IAAMomB,EAAOsjF,SAAS11F,GACnC,IACIq6B,EAAI6tD,KACN7tD,EAAI6tD,GAAc7tD,EAAI6tD,GAAYxjG,KAAI,SAAUsb,EAAG5lB,GACjD,OAAOs8G,EAAU12F,EAAG5lB,EAAGgnD,EAAQ,EACjC,KAEK/G,CACT,EAGIw0D,EAAe3xG,KAAK2xG,aAEnB3xG,KAAK2xG,eAAgBmG,IACxBnG,EAAexI,EAAY7/F,GAC3BtJ,KAAK2xG,aAAeA,GAGtBA,EAAeA,EAAanqG,KAAI,SAAUsb,EAAG5lB,GAC3C,OAAOs8G,EAAU12F,EAAG5lB,EACtB,IAGA,IAAIw8G,EAAqB9H,EAAkB5qG,QAAO,SAAU8b,GAC1D,OAAQA,EAAE8yF,UAAY9yF,EAAEsqF,SAC1B,IAaA,GAAIvC,EAAQ1tG,OAAQ,CA2BlBw0G,EA1BuB,SAASgI,EAAiBlH,EAAMtiF,GACrD,IAAIjzB,EAAI+C,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,EAG5E,GAAI/C,IAAMizB,EAAKhzB,OACb,OAAOs1G,EAGT,IAAImH,EAAcp8G,OAAOm+B,QAAQ,WAAU82E,EAAMtiF,EAAKjzB,KAAKsK,KAAI,SAAU9B,GACvE,IAAI6oG,EAEAxT,EAAQ,GAAer1F,EAAM,GAC7BhI,EAAMq9F,EAAM,GACZ38F,EAAQ28F,EAAM,GAElB,OAAmB,GAAZwT,EAAQ,CAAC,EAA0BxD,EAAY56E,EAAKjzB,IAAK,GAAgBqxG,EAAOzD,EAAaptG,GAAM,GAAgB6wG,EAAOp+E,EAAKjzB,GAAIQ,GAAM,GAAgB6wG,EAAOvD,EAAY5sG,GAAQ,GAAgBmwG,EAAOrD,EAAiBhuG,GAAI,GAAgBqxG,EAAOnD,GAAmB,GAAOmD,CAC1R,IAQA,OANAqL,EAAcA,EAAYpyG,KAAI,SAAUqyG,GACtC,IAAIC,EAEAxK,EAAUqK,EAAiBE,EAAS7O,GAAa76E,EAAMjzB,EAAI,GAC/D,OAAO,GAAS,CAAC,EAAG28G,GAA2B,GAAhBC,EAAY,CAAC,EAA8B9O,EAAYsE,GAAU,GAAgBwK,EAAW7O,GAAe,GAAO6O,GAjCvI,SAAmBrH,GACjC,IAAIsH,EAAoB,CAAC,EAOzB,OANAL,EAAmBp0G,SAAQ,SAAU4vB,GACnC,IAAI3D,EAASkhF,EAAKjrG,KAAI,SAAUsb,GAC9B,OAAOA,EAAEoS,EAAOpmB,GAClB,IACAirG,EAAkB7kF,EAAOpmB,IAAMomB,EAAOk4E,UAAU77E,EAAQkhF,EAC1D,IACOsH,CACT,CAwBmK3M,CAAUkC,GACzK,IACOsK,CACT,CACeD,CAAiBhI,EAAc9G,EAChD,CAEA,OAAO,GAAS,CAAC,EAAGxsF,EAAU,CAC5BszF,aAAcA,EACdC,kBAAmBA,EACnBC,aAAcA,EACdsG,oBAAqBA,EACrBrG,gBAAiBA,GAErB,GACC,CACDp0G,IAAK,gBACLU,MAAO,SAAuBozG,GAC5B,IAAIC,EAASD,EAAcC,OACvBP,EAASM,EAAcN,OACvBE,EAAWI,EAAcJ,SACzB/G,EAAsBmH,EAAcnH,oBACpCsH,EAAeH,EAAcG,aAC7BC,EAAoBJ,EAAcI,kBAClCuG,EAAsB3G,EAAc2G,oBAGpC6B,EAAwB,CAAC,EAS7B,OAPA7B,EAAoBnxG,QAAO,SAAUo2C,GACnC,OAAOA,EAAIywD,UACb,IAAGvoG,SAAQ,SAAU83C,GACnB48D,EAAsB58D,EAAItuC,IAAMsuC,EAAIywD,UACtC,IAGO,CACLkE,WAAYN,EAASE,EAAe3xG,KAAK2wG,SAAS3wG,KAAK0wG,WAAWiB,EAAcP,EAAU/G,EAAqBuH,GAAoBV,EAAQ8I,GAE/I,GACC,CACDt8G,IAAK,gBACLU,MAAO,WACL4B,KAAK/C,MAAMouG,YAAYrrG,KAAKowG,mBAAoBpwG,KAClD,GACC,CACDtC,IAAK,iBACLU,MAAO,SAAwBV,GAC7B,OAAO,mBAAkBsC,KAAK/C,MAAMS,GAAMsC,KAAK2N,MAAMjQ,GACvD,GACC,CACDA,IAAK,iBACLU,MAAO,SAAwBV,GAC7B,OAAO,mBAAkBsC,KAAK2N,MAAMjQ,GAAMsC,KAAK/C,MAAMS,GACvD,GACC,CACDA,IAAK,aACLU,MAAO,SAAoBkL,EAAM8nG,EAAU/G,EAAqBuH,GAC9D,IAAI/hG,EAAS7P,KAETi6G,EAAe3wG,EAuCnB,OArCI8nG,EAASj0G,SAwBX88G,GAvBAA,EAAe7I,EAAS73F,QAAO,SAAU2gG,EAAeC,GACtD,IAAIjlF,EAAS08E,EAAkBthG,MAAK,SAAUrJ,GAC5C,OAAOA,EAAE6H,KAAOqrG,EAAWrrG,EAC7B,IAGA,IAAKomB,IAAgC,IAAtBA,EAAO60E,WACpB,OAAOmQ,EAGT,IAAIvM,EAAez4E,EAAOy4E,cAAgBtD,EAG1C,OAAIn1E,EAAO04E,UACFD,EAAawM,EAAYD,EAAehlF,GAE1CglF,EAAclzG,QAAO,SAAUm2C,GACpC,OAAOwwD,EAAawM,EAAYh9D,EAAKjoB,EACvC,GACF,GAAG+kF,IAIyBzyG,KAAI,SAAU21C,GACxC,OAAKA,EAAIttC,EAAO5S,MAAM+tG,YAGf,GAAS,CAAC,EAAG7tD,EAAK,GAAgB,CAAC,EAAGttC,EAAO5S,MAAM+tG,WAAYn7F,EAAO6gG,WAAWvzD,EAAIttC,EAAO5S,MAAM+tG,YAAaoG,EAAU/G,EAAqBuH,KAF5Iz0D,CAGX,IAAGn2C,QAAO,SAAUm2C,GAClB,OAAKA,EAAIttC,EAAO5S,MAAM+tG,aAGf7tD,EAAIttC,EAAO5S,MAAM+tG,YAAY7tG,OAAS,CAC/C,KAGK88G,CACT,GACC,CACDv8G,IAAK,WACLU,MAAO,SAAkBkL,EAAM4nG,GAC7B,IAAI9gG,EAASpQ,KAETg6G,EAAwB/5G,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAEjG,IAAKixG,EAAO/zG,OACV,OAAOmM,EAGT,IAAIyoG,GAAc/xG,KAAK/C,MAAMm9G,eAAiB,YAAW9wG,EAAM4nG,EAAO1pG,KAAI,SAAU6oB,GAElF,OAAI2pF,EAAsB3pF,EAAKvhB,IACtB,SAAUkW,EAAGzf,GAClB,OAAOy0G,EAAsB3pF,EAAKvhB,IAAIkW,EAAEqL,EAAKvhB,IAAKvJ,EAAE8qB,EAAKvhB,IAAKuhB,EAAK1vB,KACrE,EAEK,SAAUqkB,EAAGzf,GAClB,OAAO6K,EAAOnT,MAAMutG,kBAAkBxlF,EAAEqL,EAAKvhB,IAAKvJ,EAAE8qB,EAAKvhB,IAAKuhB,EAAK1vB,KACrE,CACF,IAAIuwG,EAAO1pG,KAAI,SAAUsb,GACvB,OAAQA,EAAEniB,IACZ,IAAIX,KAAK/C,MAAMwoG,UASf,OAPAsM,EAAWzsG,SAAQ,SAAU63C,GACtBA,EAAI/sC,EAAOnT,MAAM+tG,cAGtB7tD,EAAI/sC,EAAOnT,MAAM+tG,YAAc56F,EAAOugG,SAASxzD,EAAI/sC,EAAOnT,MAAM+tG,YAAakG,EAAQ8I,GACvF,IAEOjI,CACT,GACC,CACDr0G,IAAK,aACLU,MAAO,WACL,OAAO,mBAAkB4B,KAAK/C,MAAMk1G,QAASnyG,KAAKywG,eAAe,YACnE,GAIC,CACD/yG,IAAK,eACLU,MAAO,SAAsBoxD,GAC3B,IAAIw4C,EAAShoG,KAAK/C,MACd6qG,EAAeE,EAAOF,aACtB2B,EAAuBzB,EAAOyB,qBAG9BprF,EAAW,CAAEmxC,KAAMA,GACnBi6C,IACFprF,EAAS8yF,SAAW,CAAC,GAEvBnxG,KAAKy2G,iBAAiBp4F,GAAU,WAC9B,OAAOypF,GAAgBA,EAAat4C,EACtC,GACF,GACC,CACD9xD,IAAK,mBACLU,MAAO,SAA0Bi8G,GAC/B,IAAI9R,EAAmBvoG,KAAK/C,MAAMsrG,iBAE9B+R,EAAoBt6G,KAAKowG,mBAOzBmK,EANWD,EAAkBnS,SACtBmS,EAAkB9qD,KAMzBgrD,EAAU7uF,KAAKC,MAAM2uF,EAAaF,GAEtCr6G,KAAKy2G,iBAAiB,CACpBtO,SAAUkS,EACV7qD,KAAMgrD,IACL,WACD,OAAOjS,GAAoBA,EAAiB8R,EAAaG,EAC3D,GACF,GACC,CACD98G,IAAK,aACLU,MAAO,SAAoB82B,EAAQulF,GACjC,IAAIC,EAAqB16G,KAAKowG,mBAC1Bc,EAASwJ,EAAmBxJ,OAC5BK,EAAemJ,EAAmBnJ,aAClCvH,EAAkB0Q,EAAmB1Q,gBAErC2Q,EAAqBn9G,OAAOM,UAAUwC,eAAelB,KAAK81B,EAAQ,mBAAqBA,EAAO80E,gBAAkBA,EAChH4Q,GAAuBD,EAM3B,GAAIpJ,EACFvxG,KAAKy2G,iBAAiB,CACpBlF,cAAc,QAFlB,CAOA,IAAI9G,EAAiBzqG,KAAK/C,MAAMwtG,eAG5BoQ,EAAY,SAAQ3J,GAAU,IAAI1pG,KAAI,SAAUsb,GAElD,OADAA,EAAEniB,KAAO,iBAAgBmiB,GAClBA,CACT,IACA,GAAK,WAAUoS,GA+BR,CAEL,IAAI4lF,EAAiBD,EAAU5gG,WAAU,SAAU6I,GACjD,OAAOA,EAAEhU,KAAOomB,EAAO,GAAGpmB,EAC5B,IAEA,GAAIgsG,GAAkB,EACJD,EAAUC,GACZn6G,OAASi6G,EACjBH,EACFI,EAAUx5G,OAAOy5G,EAAgB5lF,EAAO/3B,QAExC+3B,EAAO5vB,SAAQ,SAAUwd,EAAG5lB,GAC1B29G,EAAUC,EAAiB59G,GAAGyD,KAAOg6G,CACvC,IAGFzlF,EAAO5vB,SAAQ,SAAUwd,EAAG5lB,GAC1B29G,EAAUC,EAAiB59G,GAAGyD,KAAOi6G,CACvC,IAEGH,IACHI,EAAYA,EAAUr5G,MAAMs5G,EAAgB5lF,EAAO/3B,cAIrD09G,EADSJ,EACGI,EAAU3qG,OAAOglB,EAAO1tB,KAAI,SAAUsb,GAChD,MAAO,CACLhU,GAAIgU,EAAEhU,GACNnO,KAAMg6G,EAEV,KAEYzlF,EAAO1tB,KAAI,SAAUsb,GAC/B,MAAO,CACLhU,GAAIgU,EAAEhU,GACNnO,KAAMg6G,EAEV,GAEJ,KAvEwB,CAEtB,IAAII,EAAgBF,EAAU5gG,WAAU,SAAU6I,GAChD,OAAOA,EAAEhU,KAAOomB,EAAOpmB,EACzB,IACA,GAAIisG,GAAiB,EAAG,CACtB,IAAIvtG,EAAWqtG,EAAUE,GACrBvtG,EAAS7M,OAASi6G,EAChBH,EACFI,EAAUx5G,OAAO05G,EAAe,IAEhCvtG,EAAS7M,KAAOg6G,EAChBE,EAAY,CAACrtG,KAGfA,EAAS7M,KAAOi6G,EACXH,IACHI,EAAY,CAACrtG,IAGnB,MAAWitG,EACTI,EAAU35G,KAAK,CACb4N,GAAIomB,EAAOpmB,GACXnO,KAAMg6G,IAGRE,EAAY,CAAC,CACX/rG,GAAIomB,EAAOpmB,GACXnO,KAAMg6G,GAGZ,CA0CA36G,KAAKy2G,iBAAiB,CACpBjnD,MAAO0hD,EAAO/zG,QAAU09G,EAAU19G,SAAWs9G,EAAW,EAAIz6G,KAAK2N,MAAM6hD,KACvE0hD,OAAQ2J,IACP,WACD,OAAOpQ,GAAkBA,EAAeoQ,EAAW3lF,EAAQulF,EAC7D,GAvFA,CAwFF,GACC,CACD/8G,IAAK,eACLU,MAAO,SAAsB82B,EAAQ92B,GACnC,IACIgzG,EADqBpxG,KAAKowG,mBACIgB,SAE9B1G,EAAmB1qG,KAAK/C,MAAMytG,iBAI9BsQ,GAAgB5J,GAAY,IAAIpqG,QAAO,SAAUC,GACnD,OAAOA,EAAE6H,KAAOomB,EAAOpmB,EACzB,IAEc,KAAV1Q,GACF48G,EAAa95G,KAAK,CAChB4N,GAAIomB,EAAOpmB,GACX1Q,MAAOA,IAIX4B,KAAKy2G,iBAAiB,CACpBrF,SAAU4J,IACT,WACD,OAAOtQ,GAAoBA,EAAiBsQ,EAAc9lF,EAAQ92B,EACpE,GACF,GACC,CACDV,IAAK,oBACLU,MAAO,SAA2BkD,EAAO4zB,EAAQ+lF,GAC/C,IAAI1qG,EAASvQ,KAEbsB,EAAM45G,kBACN,IAAIC,EAAc75G,EAAMtE,OAAOo+G,cAAc1c,wBAAwB11E,MAEjEqyF,OAAQ,EAEVA,EADEJ,EACM35G,EAAMg6G,eAAe,GAAGD,MAExB/5G,EAAM+5G,MAGhBr7G,KAAKu7G,YAAa,EAClBv7G,KAAKy2G,iBAAiB,CACpBnF,kBAAmB,CACjBxiG,GAAIomB,EAAOpmB,GACX0sG,OAAQH,EACRF,YAAaA,KAEd,WACGF,GACFv4G,SAASge,iBAAiB,YAAanQ,EAAO0gG,oBAC9CvuG,SAASge,iBAAiB,cAAenQ,EAAOygG,iBAChDtuG,SAASge,iBAAiB,WAAYnQ,EAAOygG,mBAE7CtuG,SAASge,iBAAiB,YAAanQ,EAAO0gG,oBAC9CvuG,SAASge,iBAAiB,UAAWnQ,EAAOygG,iBAC5CtuG,SAASge,iBAAiB,aAAcnQ,EAAOygG,iBAEnD,GACF,GACC,CACDtzG,IAAK,qBACLU,MAAO,SAA4BkD,GACjCA,EAAM45G,kBACN,IAAIvQ,EAAkB3qG,KAAK/C,MAAM0tG,gBAE7B8Q,EAAqBz7G,KAAKowG,mBAC1BiB,EAAUoK,EAAmBpK,QAC7BC,EAAoBmK,EAAmBnK,kBAKvCoK,EAAarK,EAAQrqG,QAAO,SAAUC,GACxC,OAAOA,EAAE6H,KAAOwiG,EAAkBxiG,EACpC,IAEIusG,OAAQ,EAEO,cAAf/5G,EAAMR,KACRu6G,EAAQ/5G,EAAMg6G,eAAe,GAAGD,MACR,cAAf/5G,EAAMR,OACfu6G,EAAQ/5G,EAAM+5G,OAKhB,IAAIM,EAAWhwF,KAAKtK,IAAIiwF,EAAkB6J,YAAcE,EAAQ/J,EAAkBkK,OAAQ,IAE1FE,EAAWx6G,KAAK,CACd4N,GAAIwiG,EAAkBxiG,GACtB1Q,MAAOu9G,IAGT37G,KAAKy2G,iBAAiB,CACpBpF,QAASqK,IACR,WACD,OAAO/Q,GAAmBA,EAAgB+Q,EAAYp6G,EACxD,GACF,GACC,CACD5D,IAAK,kBACLU,MAAO,SAAyBkD,GAC9BA,EAAM45G,kBACN,IAAID,EAAyB,aAAf35G,EAAMR,MAAsC,gBAAfQ,EAAMR,KAE7Cm6G,IACFv4G,SAASZ,oBAAoB,YAAa9B,KAAKixG,oBAC/CvuG,SAASZ,oBAAoB,cAAe9B,KAAKgxG,iBACjDtuG,SAASZ,oBAAoB,WAAY9B,KAAKgxG,kBAKhDtuG,SAASZ,oBAAoB,YAAa9B,KAAKixG,oBAC/CvuG,SAASZ,oBAAoB,UAAW9B,KAAKgxG,iBAC7CtuG,SAASZ,oBAAoB,aAAc9B,KAAKgxG,iBAK3CiK,GACHj7G,KAAKy2G,iBAAiB,CACpBlF,cAAc,EACdD,mBAAmB,GAGzB,KAGKuG,CACT,CA5sBO,CA4sBLF,EACH,CIyDC,CLjxBO,SAAUC,GAGf,SAASC,IAGP,OAbN,SAAyBj7G,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAWlJ,CAAgBkD,KAAM63G,GAT5B,SAAoCt4G,EAAMH,GAAQ,IAAKG,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOJ,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BG,EAAPH,CAAa,CAWlO,CAA2BY,MAAO63G,EAAOl5G,WAAanB,OAAOiB,eAAeo5G,IAAS33G,MAAMF,KAAMC,WAC1G,CAyGA,OAnHJ,SAAmBjC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAInB,UAAU,kEAAoEmB,GAAeD,EAASF,UAAYN,OAAOU,OAAOD,GAAcA,EAAWH,UAAW,CAAEK,YAAa,CAAEC,MAAOJ,EAAUX,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeW,IAAYT,OAAOgB,eAAiBhB,OAAOgB,eAAeR,EAAUC,GAAcD,EAASW,UAAYV,EAAY,CAIze,CAAU45G,EAAQD,GAQlB,GAAaC,EAAQ,CAAC,CACpBn6G,IAAK,qBACLU,MAAO,WACL4B,KAAKy2G,iBAAiBz2G,KAAKqwG,aAAarwG,KAAKowG,oBAAoB,GACnE,GACC,CACD1yG,IAAK,oBACLU,MAAO,WACL4B,KAAKuwG,eACP,GACC,CACD7yG,IAAK,4BACLU,MAAO,SAAmCypG,EAAW+T,GACnD,IAAInsG,EAAWzP,KAAKowG,mBAChB/xF,EAAWre,KAAKowG,iBAAiBvI,EAAW+T,GAIvB,CAAC,SAAU,WAAY,UAAW,YACxCt2G,SAAQ,SAAU2B,GACnC,IAAI40G,EAAc,WAAa50G,EAAEkzF,OAAO,GAAGpqF,cAAgB9I,EAAEzF,MAAM,IAC/DoM,KAAKe,UAAUc,EAASosG,MAAkBjuG,KAAKe,UAAU0P,EAASw9F,MACpEx9F,EAASpX,GAAKoX,EAASw9F,GAE3B,IAMwB,CAAC,WAAY,aAAc,aACjCv2G,SAAQ,SAAU2B,GAClC,GAAIwI,EAASxI,KAAOoX,EAASpX,GAAI,CAC/B,IACI60G,EADW70G,EAAEogB,QAAQ,OAAQ,IACL,KACxBw0F,EAAc,WAAaC,EAAW3hB,OAAO,GAAGpqF,cAAgB+rG,EAAWt6G,MAAM,IACrF6c,EAASy9F,GAAcz9F,EAASw9F,EAClC,CACF,IAGIpsG,EAASnG,OAAS+U,EAAS/U,MAAQmG,EAASwgG,UAAY5xF,EAAS4xF,SAAWxgG,EAASo7F,UAAYxsF,EAASwsF,SAAWp7F,EAASyhG,SAAW7yF,EAAS6yF,QAAUzhG,EAAS2hG,WAAa/yF,EAAS+yF,UAC7LpxG,KAAKy2G,iBAAiBz2G,KAAKqwG,aAAahyF,EAAU5O,EAASnG,OAAS+U,EAAS/U,MAEjF,GACC,CACD5L,IAAK,mBACLU,MAAO,SAA0BigB,EAAU09F,GACzC,IAAIxsG,EAASvP,KAETyP,EAAWzP,KAAKowG,mBAChB4L,EAAmBh8G,KAAKowG,iBAAiB,CAAC,EAAG/xF,GAC7CsrF,EAAqBqS,EAAiBrS,mBAO1C,GAHAqS,EAAiBC,QAAS,EAGtBtS,EAGF,IADA,IAAIx5E,EAAO3yB,OAAO2yB,KAAK6rF,EAAiB7K,UAC/Bj0G,EAAI,EAAGA,EAAIizB,EAAKhzB,OAAQD,GAAK,EACpC,GAAI8+G,EAAiB7K,SAAShhF,EAAKjzB,IAAK,CACtC8+G,EAAiBC,QAAS,EAC1B,KACF,CA0BJ,OApBIxsG,EAASwsG,SAAWD,EAAiBC,QAAUxsG,EAASyhG,SAAW8K,EAAiB9K,QAAUzhG,EAAS2hG,WAAa4K,EAAiB5K,UAAY3hG,EAASysG,cAAgBF,EAAiBE,cAAgBF,EAAiBC,QAAUxsG,EAASkiG,eAAiBqK,EAAiBrK,iBAE/QliG,EAASyhG,SAAW8K,EAAiB9K,QAAUlxG,KAAK/C,MAAMusG,yBAA2B/5F,EAAS2hG,WAAa4K,EAAiB5K,UAAY3hG,EAASysG,cAAgBF,EAAiBE,aAAezsG,EAASsiG,aAAeiK,EAAiBC,QAAUxsG,EAASkiG,eAAiBqK,EAAiBrK,cAAgB3xG,KAAK/C,MAAMysG,wBAC5TsS,EAAiB7K,SAAW,CAAC,GAG/B3zG,OAAO2lB,OAAO64F,EAAkBh8G,KAAKswG,cAAc0L,KAIjDvsG,EAAS2hG,WAAa4K,EAAiB5K,WACzC4K,EAAiBxsD,KAAO,GAItBwsD,EAAiBjK,aACnBiK,EAAiBr7C,MAAQq7C,EAAiBvK,OAASuK,EAAiBr7C,MAAQh1C,KAAKmC,KAAKkuF,EAAiBjK,WAAW50G,OAAS6+G,EAAiB7T,UAC5I6T,EAAiBxsD,KAAO7jC,KAAKtK,IAAI26F,EAAiBxsD,MAAQwsD,EAAiBr7C,MAAQq7C,EAAiBr7C,MAAQ,EAAIq7C,EAAiBxsD,KAAM,IAGlIxvD,KAAKwP,SAASwsG,GAAkB,WACjCD,GACFA,IAEEtsG,EAAS+/C,OAASwsD,EAAiBxsD,MAAQ//C,EAAS04F,WAAa6T,EAAiB7T,UAAY14F,EAASyhG,SAAW8K,EAAiB9K,QAAUzhG,EAAS2hG,WAAa4K,EAAiB5K,UACtL7hG,EAAOghG,eAEX,GACF,KAGKsH,CACT,CAjHO,CKixBW,EAAA5qG,aAEpBijG,GAAWiM,UAAYA,GACvBjM,GAAWkM,aAAe,GAC1B,kgECzxBe,SAASC,KAAyB,IAEHC,EAAAxjG,IAAZyjG,EAAAA,EAAAA,UAAS,IAAG,GAAnCxH,EAAOuH,EAAA,GAAEE,EAAUF,EAAA,GACUG,EAAA3jG,IAAZyjG,EAAAA,EAAAA,UAAS,IAAG,GAA7BjzG,EAAImzG,EAAA,GAAEC,EAAOD,EAAA,GAC0BE,EAAA7jG,IAAZyjG,EAAAA,EAAAA,UAAS,IAAG,GAAvCK,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAyCxBG,EAAc,CAChB3jD,MAAO,QACPgsC,OAAQ,UACR4X,OAAQ,YACRhtC,YAAa,cACbitC,aAAc,MACdC,UAAW,SACXn2F,QAAS,OACTivC,SAAU,OACVyG,QAAS,OACT0gD,WAAY,SACZrY,YAAa,OACbsY,aAAc,OACdvY,UAAW,QAoDf,OACI53F,EAAAA,cAAA,OAAKqF,MAAO,CAAEsyF,WAAY,iCAAkC79E,QAAS,aACjE9Z,EAAAA,cAAA,OAAKqF,MACD,CACImqD,QAAS,SAGbxvD,EAAAA,cAAA,OAAK+F,QAAS,WAAF,OAzGpBnM,EAAAA,EAAAA,IAAK,wCACLnK,QAAQgH,IAAI,kBAwGkC,EAAE4O,MAAKtH,GAAA,GAAM+xG,EAxD9C,CACb9qC,WAAY,aAuD0E,YAC9EhlE,EAAAA,cAAA,OAAK+F,QAAS,YAhGtBnM,EAAAA,EAAAA,IAAK,8BACAhF,MAAK,SAAAuC,GAAQ,OAAIA,EAASC,MAAM,IAChCxC,MAAK,SAAA/B,GACF28G,EAAW,IACXK,EAAa,IACIh9G,EAAOmH,QAAO,SAAAC,GAAC,OAAmB,MAAfA,EAAEm2G,SAAiB,IAC5C51G,KAAI,SAACoI,GACZA,EAAKwtG,UAAY,IAAIxrG,KAAKhC,EAAKwtG,WAAW52F,UAC9C,IAEAk2F,EAAQ78G,EACZ,GAqFmC,EAAEwS,MAAKtH,GAAA,GAAM+xG,EAtDxC,CACZ9qC,WAAY,aAqDkE,cACtEhlE,EAAAA,cAAA,OAAK+F,QAAS,WAAF,OAhHpBnM,EAAAA,EAAAA,IAAK,yCACLnK,QAAQgH,IAAI,qBA+GiC,EAAE4O,MAAKtH,GAAA,GAAM+xG,EApD5C,CACd9qC,WAAY,aAmD0E,sBAC9EhlE,EAAAA,cAAA,OAAK+F,QAAS,WAAF,OAvGpBnM,EAAAA,EAAAA,IAAK,wCACLnK,QAAQgH,IAAI,qBAsG+B,EAAE4O,MAAKtH,GAAA,GAAM+xG,EAlD1C,CACd9qC,WAAY,aAiDwE,oBAGhFhlE,EAAAA,cAACkjG,GAAU,CACP5mG,KAAMA,EACN2mG,QA5CI,CAAC,CACbpD,OAAQ,KACR2L,SAAU,MACX,CACC3L,OAAQ,iBACR2L,SAAU,iBACX,CACC3L,OAAQ,OACR2L,SAAU,QACX,CACC3L,OAAQ,aACR2L,SAAU,aAEd,CACI3L,OAAQ,SACR2L,SAAU,WA8BFzO,YAAY,EACZqC,WAAY,SAACz+F,EAAOonG,EAAS7/E,EAAQt4B,GACjC,MAAO,CACHmW,QAAS,SAAC1T,EAAGg+G,GA7FhB,IAACvuG,IA8FeimG,EAAQC,SAASlmG,IA7F9ClI,EAAAA,EAAAA,IAAK,4BAA6BkI,GAC7BlN,MAAK,SAAAuC,GAAQ,OAAIA,EAASC,MAAM,IAChCxC,MAAK,SAAA/B,GACFg9G,EAAah9G,EAAOiO,OACpB0uG,EAAW38G,EAAOiO,MAAM,GAAGmiF,KAC/B,GAyFY,EAER,EACA59E,MAAO,CAAE8yF,OAAQ,aAEpByX,EAAUz/G,OAAS,GAChB6P,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,UAAI,WACJA,EAAAA,cAACkjG,GAAU,CACP5mG,KAAMszG,EACN3M,QA1CC,CAAC,CAClBpD,OAAQ,KACR2L,SAAU,MACX,CACC3L,OAAQ,wBACR2L,SAAU,uBACX,CACC3L,OAAQ,SACR2L,SAAU,WAmCMjP,gBAAiBqT,EAAUz/G,OAC3BisG,gBAAgB,EAChBC,mBAAmB,EACnBC,sBAAsB,EACtBrB,qBAAqB,EACrB51F,MAAO,CAAEuyF,UAAW,WAGpB,IAAXmQ,GACG/nG,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,MAAIqF,MAAO,CAAE8qG,aAAc,SAAU,QACrCnwG,EAAAA,cAAA,OAAKoF,UAAU,eAAeC,MA/E7B,CACb0qG,OAAQ,oBACRnY,UAAW,OACXoY,aAAc,MACdl2F,QAAS,SA4EO9Z,EAAAA,cAAA,WACIA,EAAAA,cAAA,WAAM+nG,MAOlC,k4CClKIryG,SAASuN,eAAe,kBAExBqtG,EAAAA,OACItwG,EAAAA,cAACqvG,GAAsB,MACvB35G,SAASuN,eAAe,kBAG5BvN,SAASuN,eAAe,qBAExBqtG,EAAAA,OACItwG,EAAAA,cAACuwG,GAAgB,MACjB76G,SAASuN,eAAe,qBCgBhC4D,OAAOC,SAAWD,OAAOC,UAAY,CAAC,EACtC,IAAM0pG,GAAe3pG,OAAOC,SAAS0pG,cAAgB,CAAC,EAChDC,IAAQC,EAAAA,EAAAA,IAAYl/F,GAAKg/F,IAAcG,EAAAA,EAAAA,KAAoBC,EAAAA,EAAAA,IAAgBjjG,GChChD,SAAA8iG,GAAK,OAAI,SAAAnxG,GAAI,OAAI,SAAAoO,GAAU,IACjD5Z,EAAiB4Z,EAAjB5Z,KAAM8D,EAAW8V,EAAX9V,QACb,GAAQ9D,IACCuV,EAAL,CAAyB,IAChBK,EAAS9R,EAAT8R,MACCrL,EAAMwI,OAAO2E,SAASuG,KAAKsI,QAAQxT,OAAO2E,SAASC,OAAQ,IAAMolG,UAAU,GAAD3tG,OAAIwG,EAAM,IAAI,IAAExG,OAAGwG,IACnG7C,OAAOiqG,QAAQC,UAAU,SAAU,cAAe1yG,EAC7C,CAEbiB,EAAKoO,EACT,CAAC,ODwBD+iG,GAAM9+F,cAAgB,CAAC,EAIvB8+F,GAAMO,cAAgB,SAACtgH,EAAKugH,GACrBR,GAAM9+F,cAAcjhB,KACvB+/G,GAAM9+F,cAAcjhB,GAAOugH,EAC3BR,GAAMS,eAAex/F,GAAc++F,GAAM9+F,gBAE7C,EAGA9K,OAAOC,0VAAQ/I,CAAA,GACR8I,OAAOC,SAAQ,CAClBqqG,cAAcC,EAAAA,EAAAA,IAAmB,CAAErsG,UAAAA,EAAAA,GAAWlK,QAAAA,EAAAA,GAASw2G,0BAAAA,GAAAA,GAA2BC,0BAAAA,GAAAA,GAA2BC,8BAAAA,GAAAA,GAA+Bz3G,iBAAAA,GAAAA,IAAoB22G,GAAMx5G,UACtKu6G,OAAQ,CACJC,uBAAwB,SAACC,EAAet5G,GAA0C,IAM1EQ,EAAcC,EANiC84G,EAAe1+G,UAAA9C,OAAA,QAAAiF,IAAAnC,UAAA,GAAAA,UAAA,GAAG,KAC/D+F,EAA2B04G,EAAc5vG,GAAK8C,KAAKC,MACrD+sG,EAAoB,EACpBC,EAAc,EACdC,EAAc,EACdC,EAAc3uF,OAAO1tB,SAASuN,eAAe0uG,GAAiBvgH,OAElEwH,GAAUuB,EAAAA,GAAAA,GAAU,qBACpBtB,GAAUsB,EAAAA,GAAAA,GAAU,qBACpB,IAAI63G,EAAc,GAEdN,EAAcO,aAAa,0BAC3BL,EAAoBF,EAAcO,aAAa,yBAE/CP,EAAcO,aAAa,uBAC3BJ,EAAcH,EAAcO,aAAa,sBAEzCP,EAAcO,aAAa,uBAC3BH,EAAcJ,EAAcO,aAAa,sBAEzCP,EAAcO,aAAa,uBAC3BD,EAAcN,EAAcO,aAAa,sBAEpB,KAArBL,IACAA,EAAoB,GAEJ,SAAhBI,GACAnrG,OAAOC,SAASqqG,aAAapsG,UAAU,CACnC3M,cAAAA,EACAU,SAAU64G,EAAkBj8G,SAASuN,eAAe0uG,GAAiBvgH,MAAQ,EAC7E8gH,WAAYH,GAA4B,EACxC/4G,yBAAAA,EACAE,qBAAqBiB,EAAAA,GAAAA,GAAU,uBAC/Bf,KAAMwL,KAAKC,MACXvL,gBAAiBs4G,EACjBp4G,SAAU4pB,OAAO0uF,GAAe1uF,OAAO0uF,GAAe,EACtDr4G,SAAU2pB,OAAOyuF,GAAezuF,OAAOyuF,GAAe,IACtDj5G,QAASA,EACTC,QAASA,GAGrB,EACAs5G,mBAAoB,SAACT,GACjB,IAAM14G,EAA2B04G,EAAc5vG,GAAK8C,KAAKC,MACzDgC,OAAOC,SAASqqG,aAAar3G,iBACzBd,GACAmB,EAAAA,GAAAA,GAAU,sBACVyK,KAAKC,MAEb,EAEAutG,eAAgB,SAACV,EAAe52G,GACK42G,EAAc5vG,GAA/C,IACM5I,GAAsBiB,EAAAA,GAAAA,GAAU,uBAChCf,EAAOwL,KAAKC,MACd/J,GACA+L,OAAOC,SAASqqG,aAAat2G,QAAQ,CAAEC,QAAAA,EACnC5B,oBAAAA,EACAE,KAAAA,GAGZ,EACAy7F,yBAA0B,SAAAX,GACtB,IAAIn1E,EAAOrpB,SAASk7F,cAAc,OAClC7xE,EAAKq1E,UAAYF,EACjB,IAAMme,EAAgB38G,SAAS0E,cAAc,kBACvCk4G,EAAYvzF,EAAK3kB,cAAc,kBAErCk4G,EAAU5d,aAAa2d,EAAcj4G,cAAc,yBAA0Bk4G,EAAUl4G,cAAc,0BAErGi4G,EAAc5d,WAAWC,aAAa4d,EAAWD,EACrD,EACAE,oBAAqB,SAAAnd,GACjB,IAAMod,EAAwB,iBAExBC,EAAU,SAACtnF,EAAI/lB,GAAS,OAAK+lB,EAAMA,EAAGhoB,UAAUyQ,SAASxO,GAAa+lB,EAAKsnF,EAAQtnF,EAAGspE,WAAYrvF,GAAc,IAAI,EACpHstG,EAActd,EAAIqd,QAAUrd,EAAIqd,QAAQ,IAADvvG,OAAKsvG,IAA2BC,EAAQrd,EAAKod,GACpFrzG,EAAS4W,MAAM6W,KAAK8lF,EAAYr6G,iBAAiB,IAAD6K,OAHzB,mBAIxB1I,KAAI,SAAA+uC,GAAG,MAAK,CAAEz1C,KAAMy1C,EAAIopE,QAAQ7+G,KAAM0e,IAAK+2B,EAAIopE,QAAQngG,IAAKogG,UAAWrpE,EAAIopE,QAAQC,UAAW,IAC7FvzG,EAAQF,EAAO8N,WAAU,SAAA4lG,GAAI,OAAIzd,EAAIud,QAAQngG,MAAQqgG,EAAKrgG,GAAG,IAEnE3L,OAAOC,SAASqqG,aAAaE,0BAA0BlyG,GACvD0H,OAAOC,SAASqqG,aAAaG,2BAA0B,GACvDzqG,OAAOC,SAASqqG,aAAaI,8BAA8BlyG,EAC/D,EACAyzG,wBAAyB,SAACpB,IACLA,EAAce,QAAQ,gBACnCf,EAAce,QAAQ,gBAAgBr4G,cAAc,wBACpDs3G,EAAce,QAAQ,uCAAuCr4G,cAAc,gCACpE5B,aAAa,uBAAwBk5G,EAActgH,MAClE,GAEJujG,oBAAqB,WAIjBA,IACJ,EACArqF,MAAO,CAAC,IAEZ,IAAMqqF,GAAsB,WA0DxB,GAzDIj/F,SAASuN,eAAe,aACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACgzG,GAAgB,OAErBt9G,SAASuN,eAAe,aAG5BvN,SAASuN,eAAe,aACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACizG,GAAiB,OAEtBv9G,SAASuN,eAAe,aAG5BvN,SAASuN,eAAe,gBACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACuT,GAAoB,OAEzB7d,SAASuN,eAAe,gBAG5BvN,SAASuN,eAAe,WACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACkzG,GAAmB,OAExBx9G,SAASuN,eAAe,WAG5BvN,SAASuN,eAAe,kBACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACyyF,GAAsB,OAE3B/8F,SAASuN,eAAe,kBAG5BvN,SAASuN,eAAe,yBACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAAC+zF,GAA6B,OAElCr+F,SAASuN,eAAe,yBAG5BvN,SAASuN,eAAe,uBACxBqtG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAAC21F,GAAqB,OAE1BjgG,SAASuN,eAAe,uBAI5BvN,SAASuN,eAAe,iBAAkB,CAC1C,IAAMkwG,GAAaC,EAAAA,GAAAA,GAAiB,CAChCvzG,OAAQ,WAAF,OAAQ,qDAA2C,IAE7DywG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACmzG,EAAU,OAEfz9G,SAASuN,eAAe,iBAEhC,CACA,GAAIvN,SAASuN,eAAe,mBAAoB,CAC5C,IAAMowG,GAAcD,EAAAA,GAAAA,GAAiB,CACjCvzG,OAAQ,WAAF,OAAQ,sDAA4C,IAE9DywG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACqzG,EAAW,OAEhB39G,SAASuN,eAAe,mBAEhC,CACA,GAAIvN,SAASuN,eAAe,YAAa,CACrC,IAAMqwG,GAAWF,EAAAA,GAAAA,GAAiB,CAC9BvzG,OAAQ,WAAF,OAAQ,sDAAyC,IAE3DywG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACszG,EAAQ,OAEb59G,SAASuN,eAAe,YAEhC,CACA,GAAIvN,SAASuN,eAAe,kBAAmB,CAC3C,IAAMswG,GAAiBH,EAAAA,GAAAA,GAAiB,CACpCvzG,OAAQ,WAAF,OAAQ,sDAA+C,IAGjEywG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAACuzG,EAAc,OAEnB79G,SAASuN,eAAe,kBAEhC,CAEA,GAAIvN,SAAS2C,iBAAiB,WAAWlI,OAAS,EAAG,CACjD,IAAMqjH,GAASJ,EAAAA,GAAAA,GAAiB,CAC5BvzG,OAAQ,WAAF,OAAQ,sDAA6B,IAE/CkW,MAAM6W,KAAKl3B,SAAS2C,iBAAiB,YAAYC,SAAQ,SAACm7G,EAAQp0G,GAC9D,IAAMklB,EAAStY,GAAIwnG,EAAOp7G,iBAAiB,mBAAmBmC,KAAI,SAAAk5G,GAC9D,MAAQ,CACJ73D,MAAO63D,EAAMf,QAAQ92D,MACrBx9C,IAAKq1G,EAAMf,QAAQt0G,IACnBsB,KAAM+zG,EAAMf,QAAQhzG,KAE5B,IACI4kB,EAAOp0B,OAAS,GAChBmgH,EAAAA,OACItwG,EAAAA,cAACwzG,EAAM,CAACjvF,OAAQA,IAChBkvF,EAGZ,GACJ,CAEA,GAAI/9G,SAAS2C,iBAAiB,mBAAmBlI,OAAS,EAAG,CACzD,IAAMwjH,EAAiBC,IAAS,CAC5B/zG,OAAQ,WAAF,OAAQ,sDAAqC,EACnDE,QAAS,WAAF,OAAQC,EAAAA,cAAA,WAAW,IAE9B+V,MAAM6W,KAAKl3B,SAAS2C,iBAAiB,oBAAoBC,SAAQ,SAACm7G,EAAQp0G,GACtE,IAAMklB,EAAStY,GAAIwnG,EAAOp7G,iBAAiB,mBAAmBmC,KAAI,SAAAk5G,GAC9D,MAAQ,CACJG,gBAAiBH,EAAMf,QAAQkB,gBAC/BC,aAAcJ,EAAMf,QAAQmB,aAC5BC,YAAaL,EAAMf,QAAQoB,YAC3BC,oBAAqBN,EAAMf,QAAQqB,oBACnCC,aAAcP,EAAMf,QAAQsB,aAEpC,IACI1vF,EAAOp0B,OAAS,GAChBmgH,EAAAA,OACItwG,EAAAA,cAAC2zG,EAAc,CAACpvF,OAAQA,IACxBkvF,EAGZ,GACJ,CAEA,GAAI/9G,SAAS2C,iBAAiB,kBAAkBlI,OAAS,EAAG,CACxD,IAAM+jH,EAAqBN,IAAS,CAChC/zG,OAAQ,WAAF,OAAQ,sDAAyC,EACvDE,QAAS,WAAF,OAAQC,EAAAA,cAAA,WAAW,IAE9B+V,MAAM6W,KAAKl3B,SAAS2C,iBAAiB,mBAAmBC,SAAQ,SAACm7G,EAAQp0G,GACrE,IAAMklB,EAAStY,GAAIwnG,EAAOp7G,iBAAiB,mBAAmBmC,KAAI,SAAAk5G,GAC9D,MAAQ,CACJG,gBAAiBH,EAAMf,QAAQkB,gBAC/BM,sBAAuBT,EAAMf,QAAQwB,sBACrCx0G,KAAM+zG,EAAMf,QAAQhzG,KACpBy0G,WAAYV,EAAMf,QAAQyB,WAC1BC,mBAAoBX,EAAMf,QAAQ0B,mBAClC1+F,KAAM+9F,EAAMf,QAAQh9F,KACpB2+F,WAAYZ,EAAMf,QAAQ2B,WAC1BC,wBAAyBb,EAAMf,QAAQ4B,wBACvCC,SAAUd,EAAMf,QAAQ6B,SAEhC,IACIjwF,EAAOp0B,OAAS,GAChBmgH,EAAAA,OACItwG,EAAAA,cAACk0G,EAAkB,CAAC3vF,OAAQA,IAC5BkvF,EAGZ,GACJ,CAEA,GAAI/9G,SAAS2C,iBAAiB,oBAAoBlI,OAAS,EAAG,CAC1D,IAAM+jH,EAAqBN,IAAS,CAChC/zG,OAAQ,WAAF,OAAQ,+DAAkC,EAChDE,QAAS,WAAF,OAAQC,EAAAA,cAAA,WAAW,IAE9B+V,MAAM6W,KAAKl3B,SAAS2C,iBAAiB,qBAAqBC,SAAQ,SAACm7G,EAAQp0G,GACvE,IAAMklB,EAAStY,GAAIwnG,EAAOp7G,iBAAiB,mBAAmBmC,KAAI,SAAAk5G,GAC9D,MAAQ,CACJ/zG,KAAM+zG,EAAMf,QAAQhzG,KACpBizG,UAAWc,EAAMf,QAAQC,UACzB6B,eAAgBf,EAAMf,QAAQ8B,eAC9BC,UAAWhB,EAAMf,QAAQ+B,UACzBC,iBAAkBjB,EAAMf,QAAQgC,iBAChCC,QAASlB,EAAMf,QAAQiC,QACvBJ,SAAUd,EAAMf,QAAQ6B,SAEhC,IACIjwF,EAAOp0B,OAAS,GAChBmgH,EAAAA,OACItwG,EAAAA,cAAC60G,EAAkB,CAACtwF,OAAQA,IAC5BkvF,EAGZ,GACJ,CAEA,GAAI/9G,SAASuN,eAAe,cAAe,CACvC,IAAMqD,GAAsB8sG,EAAAA,GAAAA,GAAiB,CACzCvzG,OAAQ,WAAF,OAAQ,uCAA2C,IAE7DywG,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAAC80G,EAAmB,OAExBp/G,SAASuN,eAAe,cAEhC,CAEA,IAAI8xG,EAAmBr/G,SAASuN,eAAe,0BAC/C,GAAGvN,SAASuN,eAAe,0BAA0B,CACjD,IAAMshB,EAAS,CACXisE,SAAUukB,EAAiBpC,QAAQt0G,IACnCywF,MAAOimB,EAAiBpC,QAAQ7jB,MAChC12F,cAAe28G,EAAiBpC,QAAQqC,UACxC3mB,gBAAiB0mB,EAAiBpC,QAAQsC,gBAC1C/+G,KAAM6+G,EAAiBpC,QAAQz8G,KAC/Bg/G,SAAUH,EAAiBpC,QAAQwC,SACnChlB,aAAc4kB,EAAiBpC,QAAQxiB,aACvC1pD,YAAasuE,EAAiBpC,QAAQlsE,YACtC3tC,SAAUi8G,EAAiBpC,QAAQ75G,SACnCk2F,UAAW+lB,EAAiBpC,QAAQyC,UACpCrmB,IAAKgmB,EAAiBpC,QAAQ0C,IAC9BpmB,SAAU8lB,EAAiBpC,QAAQ2C,SACnCpmB,QAAS6lB,EAAiBpC,QAAQ4C,QAClCpmB,SAAU4lB,EAAiBpC,QAAQ6C,SACnC7kB,kBAAmBokB,EAAiBpC,QAAQ8C,OAC5C/kB,iBAAkBqkB,EAAiBpC,QAAQ+C,OAE/CpF,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAAC21G,GAAY,CAACpxF,OAAQA,KAE1B7uB,SAASuN,eAAe,0BAEhC,CAEA,IAAI2yG,EAAuBlgH,SAAS2C,iBAAiB,0BAarD,GAZIu9G,GACAA,EAAqBt9G,SAAQ,SAAA67F,GACzB,IAAItpF,EAAQkL,MAAM6W,KAAKunE,EAAU97F,iBAAiB,MAClDi4G,EAAAA,OACItwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACbzwG,EAAAA,cAAC+2F,GAAmB,CAACC,YAAkD,SAArC7C,EAAUwe,QAAqB,YAAc9nG,MAAOA,EAAMrQ,KAAI,SAAAq7G,GAAM,MAAK,CAAE3/G,KAAM2/G,EAAOC,UAAWz3G,IAAKw3G,EAAO5D,aAAa,QAAS,OAE3K9d,EAER,IAGAz+F,SAASuN,eAAe,uBAAwB,CAChD,IAAM8yG,GAAoB3C,EAAAA,GAAAA,GAAiB,CACzCvzG,OAAQ,WAAF,OAAQ,4BAAgD,IAEhEywG,EAAAA,OACEtwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACfzwG,EAAAA,cAAC+1G,EAAiB,OAEpBrgH,SAASuN,eAAe,uBAE5B,CACA,GAAIvN,SAASuN,eAAe,wBAAyB,CACnD,IAAM+yG,GAAsB5C,EAAAA,GAAAA,GAAiB,CAC3CvzG,OAAQ,WAAF,OAAQ,uEAAkD,IAGlEywG,EAAAA,OACEtwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACfzwG,EAAAA,cAACg2G,EAAmB,OAEtBtgH,SAASuN,eAAe,wBAE5B,CACA,GAAIvN,SAASuN,eAAe,oBAAqB,CAC/C,IAAMgzG,GAAY7C,EAAAA,GAAAA,GAAiB,CACjCvzG,OAAQ,WAAF,OAAQ,8BAAgD,IAEhEywG,EAAAA,OACEtwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACfzwG,EAAAA,cAACi2G,EAAS,OAEZvgH,SAASuN,eAAe,oBAE5B,CACA,GAAIvN,SAASuN,eAAe,uBAAwB,CAClD,IAAMizG,GAAmB9C,EAAAA,GAAAA,GAAiB,CACxCvzG,OAAQ,WAAF,OAAQ,8BAA+C,IAE/DywG,EAAAA,OACEtwG,EAAAA,cAAC+yG,EAAAA,GAAQ,CAACtC,MAAOA,IACfzwG,EAAAA,cAACk2G,EAAgB,OAEnBxgH,SAASuN,eAAe,uBAE5B,CACN,EAEA0xF,sBEvcA,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,KACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACRwhB,EAAOC,QAAU,EAAjB,wBC1IA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,uCCDA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,uCCDA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,yDCDA,EAAQ,IACRD,EAAOC,QAAU,EAAjB,mDCAA,EAAQ,MACR,EAAQ,MACRD,EAAOC,QAAU,EAAjB,wCCHA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,sCCDA,EAAQ,OACRD,EAAOC,QAAU,EAAjB,wCCDA,EAAQ,OACRD,EAAOC,QAAU,WAAoC,4BCDrDD,EAAOC,QAAU,SAAUxgE,GACzB,GAAiB,mBAANA,EAAkB,MAAM9lD,UAAU8lD,EAAK,uBAClD,OAAOA,CACT,mBCHA,IAAIhB,EAAM,EAAQ,OAClBuhE,EAAOC,QAAU,SAAUxgE,EAAI50B,GAC7B,GAAiB,iBAAN40B,GAA6B,UAAXhB,EAAIgB,GAAiB,MAAM9lD,UAAUkxB,GAClE,OAAQ40B,CACV,mBCHA,IAAIygE,EAAc,EAAQ,MAAR,CAAkB,eAChCC,EAAavgG,MAAMjlB,UACQsE,MAA3BkhH,EAAWD,IAA2B,EAAQ,MAAR,CAAmBC,EAAYD,EAAa,CAAC,GACvFF,EAAOC,QAAU,SAAU1lH,GACzB4lH,EAAWD,GAAa3lH,IAAO,CACjC,gCCLA,IAAI6lH,EAAK,EAAQ,MAAR,EAAwB,GAIjCJ,EAAOC,QAAU,SAAUrnE,EAAG1vC,EAAO2lC,GACnC,OAAO3lC,GAAS2lC,EAAUuxE,EAAGxnE,EAAG1vC,GAAOlP,OAAS,EAClD,aCPAgmH,EAAOC,QAAU,SAAUxgE,EAAI/lD,EAAaqG,EAAMsgH,GAChD,KAAM5gE,aAAc/lD,SAAoCuF,IAAnBohH,GAAgCA,KAAkB5gE,EACrF,MAAM9lD,UAAUoG,EAAO,2BACvB,OAAO0/C,CACX,kBCJA,IAAI6gE,EAAW,EAAQ,OACvBN,EAAOC,QAAU,SAAUxgE,GACzB,IAAK6gE,EAAS7gE,GAAK,MAAM9lD,UAAU8lD,EAAK,sBACxC,OAAOA,CACT,gCCFA,IAAI8gE,EAAW,EAAQ,OACnBC,EAAkB,EAAQ,OAC1BC,EAAW,EAAQ,OAEvBT,EAAOC,QAAU,GAAGS,YAAc,SAAoB7mH,EAAkBisD,GACtE,IAAI66D,EAAIJ,EAAS1jH,MACb+lB,EAAM69F,EAASE,EAAE3mH,QACjB47C,EAAK4qE,EAAgB3mH,EAAQ+oB,GAC7B6T,EAAO+pF,EAAgB16D,EAAOljC,GAC9BmjC,EAAMjpD,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAC5Cm1F,EAAQ5rE,KAAKhZ,UAAavQ,IAAR8mD,EAAoBnjC,EAAM49F,EAAgBz6D,EAAKnjC,IAAQ6T,EAAM7T,EAAMgzB,GACrFgrE,EAAM,EAMV,IALInqF,EAAOmf,GAAMA,EAAKnf,EAAO29D,IAC3BwsB,GAAO,EACPnqF,GAAQ29D,EAAQ,EAChBx+C,GAAMw+C,EAAQ,GAETA,KAAU,GACX39D,KAAQkqF,EAAGA,EAAE/qE,GAAM+qE,EAAElqF,UACbkqF,EAAE/qE,GACdA,GAAMgrE,EACNnqF,GAAQmqF,EACR,OAAOD,CACX,gCCvBA,IAAIJ,EAAW,EAAQ,OACnBC,EAAkB,EAAQ,OAC1BC,EAAW,EAAQ,OACvBT,EAAOC,QAAU,SAAchlH,GAO7B,IANA,IAAI0lH,EAAIJ,EAAS1jH,MACb7C,EAASymH,EAASE,EAAE3mH,QACpB6mH,EAAO/jH,UAAU9C,OACjBkP,EAAQs3G,EAAgBK,EAAO,EAAI/jH,UAAU,QAAKmC,EAAWjF,GAC7D+rD,EAAM86D,EAAO,EAAI/jH,UAAU,QAAKmC,EAChC6hH,OAAiB7hH,IAAR8mD,EAAoB/rD,EAASwmH,EAAgBz6D,EAAK/rD,GACxD8mH,EAAS53G,GAAOy3G,EAAEz3G,KAAWjO,EACpC,OAAO0lH,CACT,mBCZA,IAAII,EAAY,EAAQ,OACpBN,EAAW,EAAQ,OACnBD,EAAkB,EAAQ,OAC9BR,EAAOC,QAAU,SAAUe,GACzB,OAAO,SAAUC,EAAOjsF,EAAIksF,GAC1B,IAGIjmH,EAHA0lH,EAAII,EAAUE,GACdjnH,EAASymH,EAASE,EAAE3mH,QACpBkP,EAAQs3G,EAAgBU,EAAWlnH,GAIvC,GAAIgnH,GAAehsF,GAAMA,GAAI,KAAOh7B,EAASkP,GAG3C,IAFAjO,EAAQ0lH,EAAEz3G,OAEGjO,EAAO,OAAO,OAEtB,KAAMjB,EAASkP,EAAOA,IAAS,IAAI83G,GAAe93G,KAASy3G,IAC5DA,EAAEz3G,KAAW8rB,EAAI,OAAOgsF,GAAe93G,GAAS,EACpD,OAAQ83G,IAAgB,CAC5B,CACF,mBCfA,IAAIG,EAAM,EAAQ,OACdC,EAAU,EAAQ,MAClBb,EAAW,EAAQ,OACnBE,EAAW,EAAQ,OACnBjd,EAAM,EAAQ,OAClBwc,EAAOC,QAAU,SAAUoB,EAAMC,GAC/B,IAAIC,EAAiB,GAARF,EACTG,EAAoB,GAARH,EACZI,EAAkB,GAARJ,EACVK,EAAmB,GAARL,EACXM,EAAwB,GAARN,EAChBO,EAAmB,GAARP,GAAaM,EACxB5mH,EAASumH,GAAW9d,EACxB,OAAO,SAAUyd,EAAOY,EAAYC,GAQlC,IAPA,IAMI3rG,EAAK6S,EANL23F,EAAIJ,EAASU,GACb7kH,EAAOglH,EAAQT,GACf5pG,EAAIoqG,EAAIU,EAAYC,EAAM,GAC1B9nH,EAASymH,EAASrkH,EAAKpC,QACvBkP,EAAQ,EACRxM,EAAS6kH,EAASxmH,EAAOkmH,EAAOjnH,GAAUwnH,EAAYzmH,EAAOkmH,EAAO,QAAKhiH,EAEvEjF,EAASkP,EAAOA,IAAS,IAAI04G,GAAY14G,KAAS9M,KAEtD4sB,EAAMjS,EADNZ,EAAM/Z,EAAK8M,GACEA,EAAOy3G,GAChBU,GACF,GAAIE,EAAQ7kH,EAAOwM,GAAS8f,OACvB,GAAIA,EAAK,OAAQq4F,GACpB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOlrG,EACf,KAAK,EAAG,OAAOjN,EACf,KAAK,EAAGxM,EAAOqB,KAAKoY,QACf,GAAIurG,EAAU,OAAO,EAGhC,OAAOC,GAAiB,EAAIF,GAAWC,EAAWA,EAAWhlH,CAC/D,CACF,mBC3CA,IAAIqlH,EAAY,EAAQ,OACpBxB,EAAW,EAAQ,OACnBa,EAAU,EAAQ,MAClBX,EAAW,EAAQ,OAEvBT,EAAOC,QAAU,SAAU6B,EAAMD,EAAYhB,EAAMmB,EAAMC,GACvDF,EAAUF,GACV,IAAIlB,EAAIJ,EAASuB,GACb1lH,EAAOglH,EAAQT,GACf3mH,EAASymH,EAASE,EAAE3mH,QACpBkP,EAAQ+4G,EAAUjoH,EAAS,EAAI,EAC/BD,EAAIkoH,GAAW,EAAI,EACvB,GAAIpB,EAAO,EAAG,OAAS,CACrB,GAAI33G,KAAS9M,EAAM,CACjB4lH,EAAO5lH,EAAK8M,GACZA,GAASnP,EACT,KACF,CAEA,GADAmP,GAASnP,EACLkoH,EAAU/4G,EAAQ,EAAIlP,GAAUkP,EAClC,MAAMvP,UAAU,8CAEpB,CACA,KAAMsoH,EAAU/4G,GAAS,EAAIlP,EAASkP,EAAOA,GAASnP,EAAOmP,KAAS9M,IACpE4lH,EAAOH,EAAWG,EAAM5lH,EAAK8M,GAAQA,EAAOy3G,IAE9C,OAAOqB,CACT,mBC3BA,IAAI1B,EAAW,EAAQ,OACnBnyF,EAAU,EAAQ,OAClB+zF,EAAU,EAAQ,MAAR,CAAkB,WAEhClC,EAAOC,QAAU,SAAUpO,GACzB,IAAI/5D,EASF,OARE3pB,EAAQ0jF,KAGM,mBAFhB/5D,EAAI+5D,EAAS72G,cAEkB88C,IAAMl4B,QAASuO,EAAQ2pB,EAAEn9C,aAAam9C,OAAI74C,GACrEqhH,EAASxoE,IAED,QADVA,EAAIA,EAAEoqE,MACUpqE,OAAI74C,SAETA,IAAN64C,EAAkBl4B,MAAQk4B,CACrC,mBCdA,IAAIqqE,EAAqB,EAAQ,OAEjCnC,EAAOC,QAAU,SAAUpO,EAAU73G,GACnC,OAAO,IAAKmoH,EAAmBtQ,GAAxB,CAAmC73G,EAC5C,+BCJA,IAAI+nH,EAAY,EAAQ,OACpBzB,EAAW,EAAQ,OACnBhrB,EAAS,EAAQ,OACjB8sB,EAAa,GAAG/jH,MAChBgkH,EAAY,CAAC,EAUjBrC,EAAOC,QAAUxxF,SAASlzB,MAAQ,SAAcumH,GAC9C,IAAIQ,EAAKP,EAAUllH,MACf0lH,EAAWH,EAAWnmH,KAAKa,UAAW,GACtC0lH,EAAQ,WACV,IAAIvoF,EAAOsoF,EAASx1G,OAAOq1G,EAAWnmH,KAAKa,YAC3C,OAAOD,gBAAgB2lH,EAbX,SAAU1xE,EAAGluB,EAAKqX,GAChC,KAAMrX,KAAOy/F,GAAY,CACvB,IAAK,IAAIliG,EAAI,GAAIpmB,EAAI,EAAGA,EAAI6oB,EAAK7oB,IAAKomB,EAAEpmB,GAAK,KAAOA,EAAI,IAExDsoH,EAAUz/F,GAAO6L,SAAS,MAAO,gBAAkBtO,EAAEpK,KAAK,KAAO,IACnE,CAAE,OAAOssG,EAAUz/F,GAAKkuB,EAAG7W,EAC7B,CAOmCr+B,CAAU0mH,EAAIroF,EAAKjgC,OAAQigC,GAAQq7D,EAAOgtB,EAAIroF,EAAM6nF,EACrF,EAEA,OADIxB,EAASgC,EAAG3nH,aAAY6nH,EAAM7nH,UAAY2nH,EAAG3nH,WAC1C6nH,CACT,mBCvBA,IAAI/jE,EAAM,EAAQ,OACdgkE,EAAM,EAAQ,MAAR,CAAkB,eAExBC,EAAkD,aAA5CjkE,EAAI,WAAc,OAAO3hD,SAAW,CAAhC,IASdkjH,EAAOC,QAAU,SAAUxgE,GACzB,IAAIkhE,EAAG7nE,EAAG6pE,EACV,YAAc1jH,IAAPwgD,EAAmB,YAAqB,OAAPA,EAAc,OAEN,iBAApC3G,EAVD,SAAU2G,EAAIllD,GACzB,IACE,OAAOklD,EAAGllD,EACZ,CAAE,MAAO2B,GAAiB,CAC5B,CAMkB0mH,CAAOjC,EAAItmH,OAAOolD,GAAKgjE,IAAoB3pE,EAEvD4pE,EAAMjkE,EAAIkiE,GAEM,WAAfgC,EAAIlkE,EAAIkiE,KAAsC,mBAAZA,EAAEkC,OAAuB,YAAcF,CAChF,aCtBA,IAAIt/F,EAAW,CAAC,EAAEA,SAElB28F,EAAOC,QAAU,SAAUxgE,GACzB,OAAOp8B,EAASpnB,KAAKwjD,GAAIphD,MAAM,GAAI,EACrC,gCCHA,IAAIykH,EAAK,WACL/nH,EAAS,EAAQ,OACjBgoH,EAAc,EAAQ,OACtB5B,EAAM,EAAQ,OACd6B,EAAa,EAAQ,OACrBC,EAAQ,EAAQ,OAChBC,EAAc,EAAQ,OACtBzzG,EAAO,EAAQ,OACf0zG,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OACtBC,EAAU,iBACVC,EAAW,EAAQ,OACnBC,EAAOH,EAAc,KAAO,OAE5BI,EAAW,SAAU1B,EAAMvnH,GAE7B,IACIinC,EADAt4B,EAAQm6G,EAAQ9oH,GAEpB,GAAc,MAAV2O,EAAe,OAAO44G,EAAKn6F,GAAGze,GAElC,IAAKs4B,EAAQsgF,EAAKl7F,GAAI4a,EAAOA,EAAQA,EAAMrhB,EACzC,GAAIqhB,EAAM5f,GAAKrnB,EAAK,OAAOinC,CAE/B,EAEAw+E,EAAOC,QAAU,CACfwD,eAAgB,SAAUC,EAASC,EAAMpC,EAAQqC,GAC/C,IAAI9rE,EAAI4rE,GAAQ,SAAU5B,EAAM+B,GAC9Bb,EAAWlB,EAAMhqE,EAAG6rE,EAAM,MAC1B7B,EAAKgC,GAAKH,EACV7B,EAAKn6F,GAAK5sB,EAAO,MACjB+mH,EAAKl7F,QAAK3nB,EACV6iH,EAAKtwB,QAAKvyF,EACV6iH,EAAKyB,GAAQ,EACGtkH,MAAZ4kH,GAAuBZ,EAAMY,EAAUtC,EAAQO,EAAK8B,GAAQ9B,EAClE,IAqDA,OApDAiB,EAAYjrE,EAAEn9C,UAAW,CAGvBkgF,MAAO,WACL,IAAK,IAAIinC,EAAOwB,EAASzmH,KAAM8mH,GAAOx9G,EAAO27G,EAAKn6F,GAAI6Z,EAAQsgF,EAAKl7F,GAAI4a,EAAOA,EAAQA,EAAMrhB,EAC1FqhB,EAAM7f,GAAI,EACN6f,EAAM/lC,IAAG+lC,EAAM/lC,EAAI+lC,EAAM/lC,EAAE0kB,OAAIlhB,UAC5BkH,EAAKq7B,EAAMznC,GAEpB+nH,EAAKl7F,GAAKk7F,EAAKtwB,QAAKvyF,EACpB6iH,EAAKyB,GAAQ,CACf,EAGA,OAAU,SAAUhpH,GAClB,IAAIunH,EAAOwB,EAASzmH,KAAM8mH,GACtBniF,EAAQgiF,EAAS1B,EAAMvnH,GAC3B,GAAIinC,EAAO,CACT,IAAIr4B,EAAOq4B,EAAMrhB,EACbiqB,EAAO5I,EAAM/lC,SACVqmH,EAAKn6F,GAAG6Z,EAAMznC,GACrBynC,EAAM7f,GAAI,EACNyoB,IAAMA,EAAKjqB,EAAIhX,GACfA,IAAMA,EAAK1N,EAAI2uC,GACf03E,EAAKl7F,IAAM4a,IAAOsgF,EAAKl7F,GAAKzd,GAC5B24G,EAAKtwB,IAAMhwD,IAAOsgF,EAAKtwB,GAAKpnD,GAChC03E,EAAKyB,IACP,CAAE,QAAS/hF,CACb,EAGAr/B,QAAS,SAAiB0/G,GACxByB,EAASzmH,KAAM8mH,GAGf,IAFA,IACIniF,EADAzqB,EAAIoqG,EAAIU,EAAY/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAAW,GAElEuiC,EAAQA,EAAQA,EAAMrhB,EAAItjB,KAAK+pB,IAGpC,IAFA7P,EAAEyqB,EAAMlgB,EAAGkgB,EAAM5f,EAAG/kB,MAEb2kC,GAASA,EAAM7f,GAAG6f,EAAQA,EAAM/lC,CAE3C,EAGAi9B,IAAK,SAAan+B,GAChB,QAASipH,EAASF,EAASzmH,KAAM8mH,GAAOppH,EAC1C,IAEE6oH,GAAaN,EAAGhrE,EAAEn9C,UAAW,OAAQ,CACvC0C,IAAK,WACH,OAAOimH,EAASzmH,KAAM8mH,GAAMJ,EAC9B,IAEKzrE,CACT,EACA6pD,IAAK,SAAUmgB,EAAMvnH,EAAKU,GACxB,IACImvC,EAAMlhC,EADNs4B,EAAQgiF,EAAS1B,EAAMvnH,GAoBzB,OAjBEinC,EACFA,EAAMlgB,EAAIrmB,GAGV6mH,EAAKtwB,GAAKhwD,EAAQ,CAChBznC,EAAGmP,EAAQm6G,EAAQ9oH,GAAK,GACxBqnB,EAAGrnB,EACH+mB,EAAGrmB,EACHQ,EAAG2uC,EAAO03E,EAAKtwB,GACfrxE,OAAGlhB,EACH0iB,GAAG,GAEAmgG,EAAKl7F,KAAIk7F,EAAKl7F,GAAK4a,GACpB4I,IAAMA,EAAKjqB,EAAIqhB,GACnBsgF,EAAKyB,KAES,MAAVr6G,IAAe44G,EAAKn6F,GAAGze,GAASs4B,IAC7BsgF,CACX,EACA0B,SAAUA,EACVO,UAAW,SAAUjsE,EAAG6rE,EAAMpC,GAG5B2B,EAAYprE,EAAG6rE,GAAM,SAAUK,EAAUC,GACvCpnH,KAAKinH,GAAKR,EAASU,EAAUL,GAC7B9mH,KAAK00F,GAAK0yB,EACVpnH,KAAK20F,QAAKvyF,CACZ,IAAG,WAKD,IAJA,IAAI6iH,EAAOjlH,KACPonH,EAAOnC,EAAKvwB,GACZ/vD,EAAQsgF,EAAKtwB,GAEVhwD,GAASA,EAAM7f,GAAG6f,EAAQA,EAAM/lC,EAEvC,OAAKqmH,EAAKgC,KAAQhC,EAAKtwB,GAAKhwD,EAAQA,EAAQA,EAAMrhB,EAAI2hG,EAAKgC,GAAGl9F,IAMnCnX,EAAK,EAApB,QAARw0G,EAA+BziF,EAAM5f,EAC7B,UAARqiG,EAAiCziF,EAAMlgB,EAC5B,CAACkgB,EAAM5f,EAAG4f,EAAMlgB,KAN7BwgG,EAAKgC,QAAK7kH,EACHwQ,EAAK,GAMhB,GAAG8xG,EAAS,UAAY,UAAWA,GAAQ,GAG3C4B,EAAWQ,EACb,iCC7IF,IAAIZ,EAAc,EAAQ,OACtBmB,EAAU,iBACVC,EAAW,EAAQ,MACnB7D,EAAW,EAAQ,OACnB0C,EAAa,EAAQ,OACrBC,EAAQ,EAAQ,OAChBmB,EAAoB,EAAQ,OAC5BC,EAAO,EAAQ,OACff,EAAW,EAAQ,OACnBgB,EAAYF,EAAkB,GAC9BG,EAAiBH,EAAkB,GACnCz4G,EAAK,EAGL64G,EAAsB,SAAU1C,GAClC,OAAOA,EAAKtwB,KAAOswB,EAAKtwB,GAAK,IAAIizB,EACnC,EACIA,EAAsB,WACxB5nH,KAAKglB,EAAI,EACX,EACI6iG,EAAqB,SAAUpK,EAAO//G,GACxC,OAAO+pH,EAAUhK,EAAMz4F,GAAG,SAAU49B,GAClC,OAAOA,EAAG,KAAOllD,CACnB,GACF,EACAkqH,EAAoB9pH,UAAY,CAC9B0C,IAAK,SAAU9C,GACb,IAAIinC,EAAQkjF,EAAmB7nH,KAAMtC,GACrC,GAAIinC,EAAO,OAAOA,EAAM,EAC1B,EACA9I,IAAK,SAAUn+B,GACb,QAASmqH,EAAmB7nH,KAAMtC,EACpC,EACAg6B,IAAK,SAAUh6B,EAAKU,GAClB,IAAIumC,EAAQkjF,EAAmB7nH,KAAMtC,GACjCinC,EAAOA,EAAM,GAAKvmC,EACjB4B,KAAKglB,EAAE9jB,KAAK,CAACxD,EAAKU,GACzB,EACA,OAAU,SAAUV,GAClB,IAAI2O,EAAQq7G,EAAe1nH,KAAKglB,GAAG,SAAU49B,GAC3C,OAAOA,EAAG,KAAOllD,CACnB,IAEA,OADK2O,GAAOrM,KAAKglB,EAAE3jB,OAAOgL,EAAO,MACvBA,CACZ,GAGF82G,EAAOC,QAAU,CACfwD,eAAgB,SAAUC,EAASC,EAAMpC,EAAQqC,GAC/C,IAAI9rE,EAAI4rE,GAAQ,SAAU5B,EAAM+B,GAC9Bb,EAAWlB,EAAMhqE,EAAG6rE,EAAM,MAC1B7B,EAAKgC,GAAKH,EACV7B,EAAKn6F,GAAKhc,IACVm2G,EAAKtwB,QAAKvyF,EACMA,MAAZ4kH,GAAuBZ,EAAMY,EAAUtC,EAAQO,EAAK8B,GAAQ9B,EAClE,IAmBA,OAlBAiB,EAAYjrE,EAAEn9C,UAAW,CAGvB,OAAU,SAAUJ,GAClB,IAAK+lH,EAAS/lH,GAAM,OAAO,EAC3B,IAAI4L,EAAO+9G,EAAQ3pH,GACnB,OAAa,IAAT4L,EAAsBq+G,EAAoBlB,EAASzmH,KAAM8mH,IAAe,OAAEppH,GACvE4L,GAAQk+G,EAAKl+G,EAAMtJ,KAAK8qB,YAAcxhB,EAAKtJ,KAAK8qB,GACzD,EAGA+Q,IAAK,SAAan+B,GAChB,IAAK+lH,EAAS/lH,GAAM,OAAO,EAC3B,IAAI4L,EAAO+9G,EAAQ3pH,GACnB,OAAa,IAAT4L,EAAsBq+G,EAAoBlB,EAASzmH,KAAM8mH,IAAOjrF,IAAIn+B,GACjE4L,GAAQk+G,EAAKl+G,EAAMtJ,KAAK8qB,GACjC,IAEKmwB,CACT,EACA6pD,IAAK,SAAUmgB,EAAMvnH,EAAKU,GACxB,IAAIkL,EAAO+9G,EAAQC,EAAS5pH,IAAM,GAGlC,OAFa,IAAT4L,EAAeq+G,EAAoB1C,GAAMvtF,IAAIh6B,EAAKU,GACjDkL,EAAK27G,EAAKn6F,IAAM1sB,EACd6mH,CACT,EACA6C,QAASH,iCClFX,IAAII,EAAS,EAAQ,OACjBC,EAAU,EAAQ,OAClBC,EAAW,EAAQ,OACnB/B,EAAc,EAAQ,OACtBgC,EAAO,EAAQ,OACf9B,EAAQ,EAAQ,OAChBD,EAAa,EAAQ,OACrB1C,EAAW,EAAQ,OACnB0E,EAAQ,EAAQ,OAChBC,EAAc,EAAQ,OACtBC,EAAiB,EAAQ,OACzBC,EAAoB,EAAQ,OAEhCnF,EAAOC,QAAU,SAAU0D,EAAMD,EAAS0B,EAASC,EAAQ9D,EAAQ+D,GACjE,IAAI9Q,EAAOoQ,EAAOjB,GACd7rE,EAAI08D,EACJoP,EAAQrC,EAAS,MAAQ,MACzBgE,EAAQztE,GAAKA,EAAEn9C,UACfgmH,EAAI,CAAC,EACL6E,EAAY,SAAUC,GACxB,IAAInD,EAAKiD,EAAME,GACfX,EAASS,EAAOE,EACP,UAAPA,GAEW,OAAPA,EAFc,SAAU5jG,GAC1B,QAAOyjG,IAAYhF,EAASz+F,KAAaygG,EAAGrmH,KAAKY,KAAY,IAANglB,EAAU,EAAIA,EACvE,EAEW,OAAP4jG,EAAe,SAAa5jG,GAC9B,OAAOyjG,IAAYhF,EAASz+F,QAAK5iB,EAAYqjH,EAAGrmH,KAAKY,KAAY,IAANglB,EAAU,EAAIA,EAC3E,EAAW,OAAP4jG,EAAe,SAAa5jG,GAAqC,OAAhCygG,EAAGrmH,KAAKY,KAAY,IAANglB,EAAU,EAAIA,GAAWhlB,IAAM,EAC9E,SAAaglB,EAAGzf,GAAwC,OAAnCkgH,EAAGrmH,KAAKY,KAAY,IAANglB,EAAU,EAAIA,EAAGzf,GAAWvF,IAAM,EAE7E,EACA,GAAgB,mBAALi7C,IAAqBwtE,GAAWC,EAAMpjH,UAAY6iH,GAAM,YACjE,IAAIltE,GAAItf,UAAUrvB,MACpB,KAKO,CACL,IAAI1P,EAAW,IAAIq+C,EAEf4tE,EAAiBjsH,EAASmqH,GAAO0B,EAAU,CAAC,GAAK,EAAG,IAAM7rH,EAE1DksH,EAAuBX,GAAM,WAAcvrH,EAASi/B,IAAI,EAAI,IAE5DktF,EAAmBX,GAAY,SAAUY,GAAQ,IAAI/tE,EAAE+tE,EAAO,IAE9DC,GAAcR,GAAWN,GAAM,WAIjC,IAFA,IAAIe,EAAY,IAAIjuE,EAChB5uC,EAAQ,EACLA,KAAS68G,EAAUnC,GAAO16G,EAAOA,GACxC,OAAQ68G,EAAUrtF,KAAK,EACzB,IACKktF,KACH9tE,EAAI4rE,GAAQ,SAAU7pH,EAAQgqH,GAC5Bb,EAAWnpH,EAAQi+C,EAAG6rE,GACtB,IAAI7B,EAAOqD,EAAkB,IAAI3Q,EAAQ36G,EAAQi+C,GAEjD,OADgB74C,MAAZ4kH,GAAuBZ,EAAMY,EAAUtC,EAAQO,EAAK8B,GAAQ9B,GACzDA,CACT,KACEnnH,UAAY4qH,EACdA,EAAMvqH,YAAc88C,IAElB6tE,GAAwBG,KAC1BN,EAAU,UACVA,EAAU,OACVjE,GAAUiE,EAAU,SAElBM,GAAcJ,IAAgBF,EAAU5B,GAExC0B,GAAWC,EAAM1qC,cAAc0qC,EAAM1qC,KAC3C,MArCE/iC,EAAIutE,EAAO5B,eAAeC,EAASC,EAAMpC,EAAQqC,GACjDb,EAAYjrE,EAAEn9C,UAAWyqH,GACzBL,EAAKiB,MAAO,EA4Cd,OAPAd,EAAeptE,EAAG6rE,GAElBhD,EAAEgD,GAAQ7rE,EACV+sE,EAAQA,EAAQoB,EAAIpB,EAAQx4E,EAAIw4E,EAAQ/zE,GAAKgH,GAAK08D,GAAOmM,GAEpD2E,GAASD,EAAOtB,UAAUjsE,EAAG6rE,EAAMpC,GAEjCzpE,CACT,aCpFA,IAAIouE,EAAOlG,EAAOC,QAAU,CAAErtB,QAAS,UACrB,iBAAPuzB,MAAiBA,IAAMD,iCCAlC,IAAIE,EAAkB,EAAQ,OAC1BC,EAAa,EAAQ,OAEzBrG,EAAOC,QAAU,SAAUhjH,EAAQiM,EAAOjO,GACpCiO,KAASjM,EAAQmpH,EAAgBrvG,EAAE9Z,EAAQiM,EAAOm9G,EAAW,EAAGprH,IAC/DgC,EAAOiM,GAASjO,CACvB,mBCNA,IAAI8mH,EAAY,EAAQ,OACxB/B,EAAOC,QAAU,SAAUqC,EAAIR,EAAM9nH,GAEnC,GADA+nH,EAAUO,QACGrjH,IAAT6iH,EAAoB,OAAOQ,EAC/B,OAAQtoH,GACN,KAAK,EAAG,OAAO,SAAU6nB,GACvB,OAAOygG,EAAGrmH,KAAK6lH,EAAMjgG,EACvB,EACA,KAAK,EAAG,OAAO,SAAUA,EAAGzf,GAC1B,OAAOkgH,EAAGrmH,KAAK6lH,EAAMjgG,EAAGzf,EAC1B,EACA,KAAK,EAAG,OAAO,SAAUyf,EAAGzf,EAAGs2C,GAC7B,OAAO4pE,EAAGrmH,KAAK6lH,EAAMjgG,EAAGzf,EAAGs2C,EAC7B,EAEF,OAAO,WACL,OAAO4pE,EAAGvlH,MAAM+kH,EAAMhlH,UACxB,CACF,gCCjBA,IAAIkoH,EAAQ,EAAQ,OAChBrxG,EAAUlF,KAAK9T,UAAUgZ,QACzB2yG,EAAe73G,KAAK9T,UAAU4rH,YAE9BC,EAAK,SAAUtjG,GACjB,OAAOA,EAAM,EAAIA,EAAM,IAAMA,CAC/B,EAGA88F,EAAOC,QAAW+E,GAAM,WACtB,MAAiD,4BAA1CsB,EAAarqH,KAAK,IAAIwS,MAAK,gBACpC,MAAOu2G,GAAM,WACXsB,EAAarqH,KAAK,IAAIwS,KAAKg4G,KAC7B,IAAM,WACJ,IAAK3nD,SAASnrD,EAAQ1X,KAAKY,OAAQ,MAAM6pH,WAAW,sBACpD,IAAI/mG,EAAI9iB,KACJikB,EAAInB,EAAE0pB,iBACN2O,EAAIr4B,EAAEgnG,qBACNzmG,EAAIY,EAAI,EAAI,IAAMA,EAAI,KAAO,IAAM,GACvC,OAAOZ,GAAK,QAAUsI,KAAKsL,IAAIhT,IAAIziB,MAAM6hB,GAAK,GAAK,GACjD,IAAMsmG,EAAG7mG,EAAE2pB,cAAgB,GAAK,IAAMk9E,EAAG7mG,EAAE4pB,cAC3C,IAAMi9E,EAAG7mG,EAAE6pB,eAAiB,IAAMg9E,EAAG7mG,EAAE8pB,iBACvC,IAAM+8E,EAAG7mG,EAAE+pB,iBAAmB,KAAOsO,EAAI,GAAKA,EAAI,IAAMwuE,EAAGxuE,IAAM,GACrE,EAAIsuE,gCCxBJ,IAAInC,EAAW,EAAQ,MACnByC,EAAc,EAAQ,OACtBC,EAAS,SAEb7G,EAAOC,QAAU,SAAU6G,GACzB,GAAa,WAATA,GAAqBA,IAASD,GAAmB,YAATC,EAAoB,MAAMntH,UAAU,kBAChF,OAAOitH,EAAYzC,EAAStnH,MAAOiqH,GAAQD,EAC7C,aCPA7G,EAAOC,QAAU,SAAUxgE,GACzB,GAAUxgD,MAANwgD,EAAiB,MAAM9lD,UAAU,yBAA2B8lD,GAChE,OAAOA,CACT,mBCHAugE,EAAOC,SAAW,EAAQ,MAAR,EAAoB,WACpC,OAA+E,GAAxE5lH,OAAOC,eAAe,CAAC,EAAG,IAAK,CAAE+C,IAAK,WAAc,OAAO,CAAG,IAAKwkB,CAC5E,oBCHA,IAAIy+F,EAAW,EAAQ,OACnB/gH,EAAW,kBAEXwnH,EAAKzG,EAAS/gH,IAAa+gH,EAAS/gH,EAASk7F,eACjDulB,EAAOC,QAAU,SAAUxgE,GACzB,OAAOsnE,EAAKxnH,EAASk7F,cAAch7C,GAAM,CAAC,CAC5C,aCLAugE,EAAOC,QAAU,gGAEfzqG,MAAM,sBCFR,IAAIwxG,EAAU,EAAQ,OAClBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OAClBlH,EAAOC,QAAU,SAAUxgE,GACzB,IAAI/iD,EAASsqH,EAAQvnE,GACjB0nE,EAAaF,EAAKlwG,EACtB,GAAIowG,EAKF,IAJA,IAGI5sH,EAHA6sH,EAAUD,EAAW1nE,GACrB4nE,EAASH,EAAInwG,EACbhd,EAAI,EAEDqtH,EAAQptH,OAASD,GAAOstH,EAAOprH,KAAKwjD,EAAIllD,EAAM6sH,EAAQrtH,OAAO2C,EAAOqB,KAAKxD,GAChF,OAAOmC,CACX,mBCdA,IAAIkoH,EAAS,EAAQ,OACjBsB,EAAO,EAAQ,OACfz8G,EAAO,EAAQ,OACfq7G,EAAW,EAAQ,OACnB3D,EAAM,EAAQ,OACdmG,EAAY,YAEZzC,EAAU,SAAUlnH,EAAMoC,EAAM+rD,GAClC,IAQIvxD,EAAKgtH,EAAK30E,EAAK40E,EARfC,EAAY9pH,EAAOknH,EAAQ/zE,EAC3B42E,EAAY/pH,EAAOknH,EAAQoB,EAC3B0B,EAAYhqH,EAAOknH,EAAQjsE,EAC3BgvE,EAAWjqH,EAAOknH,EAAQtkG,EAC1BsnG,EAAUlqH,EAAOknH,EAAQlC,EACzB9oH,EAAS6tH,EAAY9C,EAAS+C,EAAY/C,EAAO7kH,KAAU6kH,EAAO7kH,GAAQ,CAAC,IAAM6kH,EAAO7kH,IAAS,CAAC,GAAGunH,GACrGrH,EAAUyH,EAAYxB,EAAOA,EAAKnmH,KAAUmmH,EAAKnmH,GAAQ,CAAC,GAC1D+nH,EAAW7H,EAAQqH,KAAerH,EAAQqH,GAAa,CAAC,GAG5D,IAAK/sH,KADDmtH,IAAW57D,EAAS/rD,GACZ+rD,EAIVlZ,IAFA20E,GAAOE,GAAa5tH,QAA0BoF,IAAhBpF,EAAOU,IAExBV,EAASiyD,GAAQvxD,GAE9BitH,EAAMK,GAAWN,EAAMpG,EAAIvuE,EAAKgyE,GAAUgD,GAA0B,mBAAPh1E,EAAoBuuE,EAAI1yF,SAASxyB,KAAM22C,GAAOA,EAEvG/4C,GAAQirH,EAASjrH,EAAQU,EAAKq4C,EAAKj1C,EAAOknH,EAAQkD,GAElD9H,EAAQ1lH,IAAQq4C,GAAKnpC,EAAKw2G,EAAS1lH,EAAKitH,GACxCI,GAAYE,EAASvtH,IAAQq4C,IAAKk1E,EAASvtH,GAAOq4C,EAE1D,EACAgyE,EAAOsB,KAAOA,EAEdrB,EAAQ/zE,EAAI,EACZ+zE,EAAQoB,EAAI,EACZpB,EAAQjsE,EAAI,EACZisE,EAAQtkG,EAAI,EACZskG,EAAQlC,EAAI,GACZkC,EAAQx4E,EAAI,GACZw4E,EAAQkD,EAAI,GACZlD,EAAQ9sE,EAAI,IACZioE,EAAOC,QAAU4E,mBC1CjB,IAAImD,EAAQ,EAAQ,MAAR,CAAkB,SAC9BhI,EAAOC,QAAU,SAAUwF,GACzB,IAAIwC,EAAK,IACT,IACE,MAAMxC,GAAKwC,EACb,CAAE,MAAO/rH,GACP,IAEE,OADA+rH,EAAGD,IAAS,GACJ,MAAMvC,GAAKwC,EACrB,CAAE,MAAOlxG,GAAiB,CAC5B,CAAE,OAAO,CACX,aCXAipG,EAAOC,QAAU,SAAUhsB,GACzB,IACE,QAASA,GACX,CAAE,MAAO/3F,GACP,OAAO,CACT,CACF,gCCLA,EAAQ,OACR,IAAI4oH,EAAW,EAAQ,OACnBr7G,EAAO,EAAQ,OACfu7G,EAAQ,EAAQ,OAChBkD,EAAU,EAAQ,OAClBC,EAAM,EAAQ,OACdC,EAAa,EAAQ,OAErBlG,EAAUiG,EAAI,WAEdE,GAAiCrD,GAAM,WAIzC,IAAIiD,EAAK,IAMT,OALAA,EAAGh0B,KAAO,WACR,IAAIv3F,EAAS,GAEb,OADAA,EAAOsZ,OAAS,CAAE6L,EAAG,KACdnlB,CACT,EACkC,MAA3B,GAAGwnB,QAAQ+jG,EAAI,OACxB,IAEIK,EAAoC,WAEtC,IAAIL,EAAK,OACLM,EAAeN,EAAGh0B,KACtBg0B,EAAGh0B,KAAO,WAAc,OAAOs0B,EAAaxrH,MAAMF,KAAMC,UAAY,EACpE,IAAIJ,EAAS,KAAK8Y,MAAMyyG,GACxB,OAAyB,IAAlBvrH,EAAO1C,QAA8B,MAAd0C,EAAO,IAA4B,MAAdA,EAAO,EAC3D,CAPuC,GASxCsjH,EAAOC,QAAU,SAAUwF,EAAKzrH,EAAQi6F,GACtC,IAAIu0B,EAASL,EAAI1C,GAEbgD,GAAuBzD,GAAM,WAE/B,IAAIrE,EAAI,CAAC,EAET,OADAA,EAAE6H,GAAU,WAAc,OAAO,CAAG,EACf,GAAd,GAAG/C,GAAK9E,EACjB,IAEI+H,EAAoBD,GAAuBzD,GAAM,WAEnD,IAAI2D,GAAa,EACbV,EAAK,IAST,OARAA,EAAGh0B,KAAO,WAAiC,OAAnB00B,GAAa,EAAa,IAAM,EAC5C,UAARlD,IAGFwC,EAAGjtH,YAAc,CAAC,EAClBitH,EAAGjtH,YAAYknH,GAAW,WAAc,OAAO+F,CAAI,GAErDA,EAAGO,GAAQ,KACHG,CACV,SAAK1pH,EAEL,IACGwpH,IACAC,GACQ,YAARjD,IAAsB4C,GACd,UAAR5C,IAAoB6C,EACrB,CACA,IAAIM,EAAqB,IAAIJ,GACzBK,EAAM50B,EACRi0B,EACAM,EACA,GAAG/C,IACH,SAAyBqD,EAAcC,EAAQjlG,EAAKklG,EAAMC,GACxD,OAAIF,EAAO90B,OAASm0B,EACdK,IAAwBQ,EAInB,CAAEroG,MAAM,EAAM3lB,MAAO2tH,EAAmB3sH,KAAK8sH,EAAQjlG,EAAKklG,IAE5D,CAAEpoG,MAAM,EAAM3lB,MAAO6tH,EAAa7sH,KAAK6nB,EAAKilG,EAAQC,IAEtD,CAAEpoG,MAAM,EACjB,IAEEsoG,EAAQL,EAAI,GACZM,EAAON,EAAI,GAEf/D,EAASthG,OAAO7oB,UAAW8qH,EAAKyD,GAChCz/G,EAAK2b,OAAOzqB,UAAW6tH,EAAkB,GAAVxuH,EAG3B,SAAUovH,EAAQlvF,GAAO,OAAOivF,EAAKltH,KAAKmtH,EAAQvsH,KAAMq9B,EAAM,EAG9D,SAAUkvF,GAAU,OAAOD,EAAKltH,KAAKmtH,EAAQvsH,KAAO,EAE1D,CACF,gCC7FA,IAAIsnH,EAAW,EAAQ,MACvBnE,EAAOC,QAAU,WACf,IAAI6B,EAAOqC,EAAStnH,MAChBH,EAAS,GAMb,OALIolH,EAAK8C,SAAQloH,GAAU,KACvBolH,EAAKuH,aAAY3sH,GAAU,KAC3BolH,EAAKlxC,YAAWl0E,GAAU,KAC1BolH,EAAKjzE,UAASnyC,GAAU,KACxBolH,EAAKwH,SAAQ5sH,GAAU,KACpBA,CACT,mBCZA,IAAIykH,EAAM,EAAQ,OACdllH,EAAO,EAAQ,OACfstH,EAAc,EAAQ,OACtBpF,EAAW,EAAQ,MACnB1D,EAAW,EAAQ,OACnB+I,EAAY,EAAQ,MACpBC,EAAQ,CAAC,EACTC,EAAS,CAAC,EACVzJ,EAAUD,EAAOC,QAAU,SAAU4D,EAAUrrF,EAAS8pF,EAAIR,EAAM6H,GACpE,IAGI3vH,EAAQyV,EAAM4R,EAAU3kB,EAHxBktH,EAASD,EAAW,WAAc,OAAO9F,CAAU,EAAI2F,EAAU3F,GACjE9sG,EAAIoqG,EAAImB,EAAIR,EAAMtpF,EAAU,EAAI,GAChCtvB,EAAQ,EAEZ,GAAqB,mBAAV0gH,EAAsB,MAAMjwH,UAAUkqH,EAAW,qBAE5D,GAAI0F,EAAYK,IAAS,IAAK5vH,EAASymH,EAASoD,EAAS7pH,QAASA,EAASkP,EAAOA,IAEhF,IADAxM,EAAS87B,EAAUzhB,EAAEotG,EAAS10G,EAAOo0G,EAAS36G,IAAQ,GAAIuG,EAAK,IAAMsH,EAAE8sG,EAAS36G,OACjEugH,GAAS/sH,IAAWgtH,EAAQ,OAAOhtH,OAC7C,IAAK2kB,EAAWuoG,EAAO3tH,KAAK4nH,KAAap0G,EAAO4R,EAASlY,QAAQyX,MAEtE,IADAlkB,EAAST,EAAKolB,EAAUtK,EAAGtH,EAAKxU,MAAOu9B,MACxBixF,GAAS/sH,IAAWgtH,EAAQ,OAAOhtH,CAEtD,EACAujH,EAAQwJ,MAAQA,EAChBxJ,EAAQyJ,OAASA,mBCxBjB1J,EAAOC,QAAU,EAAQ,KAAR,CAAqB,4BAA6BxxF,SAASpL,qBCC5E,IAAIuhG,EAAS5E,EAAOC,QAA2B,oBAAVvvG,QAAyBA,OAAO8X,MAAQA,KACzE9X,OAAwB,oBAARtU,MAAuBA,KAAKosB,MAAQA,KAAOpsB,KAE3DqyB,SAAS,cAATA,GACc,iBAAPo7F,MAAiBA,IAAMjF,cCLlC,IAAIznH,EAAiB,CAAC,EAAEA,eACxB6iH,EAAOC,QAAU,SAAUxgE,EAAIllD,GAC7B,OAAO4C,EAAelB,KAAKwjD,EAAIllD,EACjC,mBCHA,IAAIuoH,EAAK,EAAQ,OACbuD,EAAa,EAAQ,OACzBrG,EAAOC,QAAU,EAAQ,OAAoB,SAAUhjH,EAAQ1C,EAAKU,GAClE,OAAO6nH,EAAG/rG,EAAE9Z,EAAQ1C,EAAK8rH,EAAW,EAAGprH,GACzC,EAAI,SAAUgC,EAAQ1C,EAAKU,GAEzB,OADAgC,EAAO1C,GAAOU,EACPgC,CACT,kBCPA,IAAIsC,EAAW,kBACfygH,EAAOC,QAAU1gH,GAAYA,EAAS+gG,gCCDtC0f,EAAOC,SAAW,EAAQ,SAAsB,EAAQ,MAAR,EAAoB,WAClE,OAA4G,GAArG5lH,OAAOC,eAAe,EAAQ,KAAR,CAAyB,OAAQ,IAAK,CAAE+C,IAAK,WAAc,OAAO,CAAG,IAAKwkB,CACzG,qBCFA,IAAIy+F,EAAW,EAAQ,OACnBjlH,EAAiB,aACrB2kH,EAAOC,QAAU,SAAU6B,EAAMjoH,EAAQi+C,GACvC,IACIv3B,EADAq4B,EAAI/+C,EAAOmB,YAIb,OAFE49C,IAAMd,GAAiB,mBAALc,IAAoBr4B,EAAIq4B,EAAEj+C,aAAem9C,EAAEn9C,WAAa2lH,EAAS//F,IAAMllB,GAC3FA,EAAeymH,EAAMvhG,GACduhG,CACX,aCPA9B,EAAOC,QAAU,SAAUqC,EAAIroF,EAAM6nF,GACnC,IAAIgI,OAAc7qH,IAAT6iH,EACT,OAAQ7nF,EAAKjgC,QACX,KAAK,EAAG,OAAO8vH,EAAKxH,IACAA,EAAGrmH,KAAK6lH,GAC5B,KAAK,EAAG,OAAOgI,EAAKxH,EAAGroF,EAAK,IACRqoF,EAAGrmH,KAAK6lH,EAAM7nF,EAAK,IACvC,KAAK,EAAG,OAAO6vF,EAAKxH,EAAGroF,EAAK,GAAIA,EAAK,IACjBqoF,EAAGrmH,KAAK6lH,EAAM7nF,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAO6vF,EAAKxH,EAAGroF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1BqoF,EAAGrmH,KAAK6lH,EAAM7nF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACzD,KAAK,EAAG,OAAO6vF,EAAKxH,EAAGroF,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnCqoF,EAAGrmH,KAAK6lH,EAAM7nF,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,OAAOqoF,EAAGvlH,MAAM+kH,EAAM7nF,EAC1B,kBCdA,IAAIwkB,EAAM,EAAQ,OAElBuhE,EAAOC,QAAU5lH,OAAO,KAAKmyF,qBAAqB,GAAKnyF,OAAS,SAAUolD,GACxE,MAAkB,UAAXhB,EAAIgB,GAAkBA,EAAGjqC,MAAM,IAAMnb,OAAOolD,EACrD,mBCJA,IAAIsqE,EAAY,EAAQ,OACpBJ,EAAW,EAAQ,MAAR,CAAkB,YAC7BxJ,EAAavgG,MAAMjlB,UAEvBqlH,EAAOC,QAAU,SAAUxgE,GACzB,YAAcxgD,IAAPwgD,IAAqBsqE,EAAUnqG,QAAU6/B,GAAM0gE,EAAWwJ,KAAclqE,EACjF,mBCNA,IAAIhB,EAAM,EAAQ,OAClBuhE,EAAOC,QAAUrgG,MAAMuO,SAAW,SAAiB+L,GACjD,MAAmB,SAAZukB,EAAIvkB,EACb,mBCHA,IAAIomF,EAAW,EAAQ,OACnB73F,EAAQD,KAAKC,MACjBu3F,EAAOC,QAAU,SAAmBxgE,GAClC,OAAQ6gE,EAAS7gE,IAAOqf,SAASrf,IAAOh3B,EAAMg3B,KAAQA,CACxD,aCLAugE,EAAOC,QAAU,SAAUxgE,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,CACvD,mBCDA,IAAI6gE,EAAW,EAAQ,OACnB7hE,EAAM,EAAQ,OACdupE,EAAQ,EAAQ,MAAR,CAAkB,SAC9BhI,EAAOC,QAAU,SAAUxgE,GACzB,IAAIuqE,EACJ,OAAO1J,EAAS7gE,UAAmCxgD,KAA1B+qH,EAAWvqE,EAAGuoE,MAA0BgC,EAAsB,UAAXvrE,EAAIgB,GAClF,mBCNA,IAAI0kE,EAAW,EAAQ,MACvBnE,EAAOC,QAAU,SAAU5+F,EAAUihG,EAAIrnH,EAAOu9B,GAC9C,IACE,OAAOA,EAAU8pF,EAAG6B,EAASlpH,GAAO,GAAIA,EAAM,IAAMqnH,EAAGrnH,EAEzD,CAAE,MAAOiB,GACP,IAAIgwE,EAAM7qD,EAAiB,OAE3B,WADYpiB,IAARitE,GAAmBi4C,EAASj4C,EAAIjwE,KAAKolB,IACnCnlB,CACR,CACF,gCCVA,IAAInB,EAAS,EAAQ,OACjBd,EAAa,EAAQ,OACrBirH,EAAiB,EAAQ,OACzB+E,EAAoB,CAAC,EAGzB,EAAQ,MAAR,CAAmBA,EAAmB,EAAQ,MAAR,CAAkB,aAAa,WAAc,OAAOptH,IAAM,IAEhGmjH,EAAOC,QAAU,SAAUvmH,EAAaiqH,EAAMx6G,GAC5CzP,EAAYiB,UAAYI,EAAOkvH,EAAmB,CAAE9gH,KAAMlP,EAAW,EAAGkP,KACxE+7G,EAAexrH,EAAaiqH,EAAO,YACrC,gCCXA,IAAIuG,EAAU,EAAQ,OAClBrF,EAAU,EAAQ,OAClBC,EAAW,EAAQ,OACnBr7G,EAAO,EAAQ,OACfsgH,EAAY,EAAQ,OACpBI,EAAc,EAAQ,OACtBjF,EAAiB,EAAQ,OACzB5pH,EAAiB,EAAQ,OACzBquH,EAAW,EAAQ,MAAR,CAAkB,YAC7BS,IAAU,GAAGp9F,MAAQ,QAAU,GAAGA,QAElCq9F,EAAO,OACPC,EAAS,SAETC,EAAa,WAAc,OAAO1tH,IAAM,EAE5CmjH,EAAOC,QAAU,SAAUzL,EAAMmP,EAAMjqH,EAAayP,EAAMqhH,EAASC,EAAQC,GACzEP,EAAYzwH,EAAaiqH,EAAMx6G,GAC/B,IAeIi8G,EAAS7qH,EAAK0vH,EAfdU,EAAY,SAAU1G,GACxB,IAAKmG,GAASnG,KAAQsB,EAAO,OAAOA,EAAMtB,GAC1C,OAAQA,GACN,KAAKoG,EACL,KAAKC,EAAQ,OAAO,WAAoB,OAAO,IAAI5wH,EAAYmD,KAAMonH,EAAO,EAC5E,OAAO,WAAqB,OAAO,IAAIvqH,EAAYmD,KAAMonH,EAAO,CACpE,EACIxB,EAAMkB,EAAO,YACbiH,EAAaJ,GAAWF,EACxBO,GAAa,EACbtF,EAAQ/Q,EAAK75G,UACbmwH,EAAUvF,EAAMoE,IAAapE,EAnBjB,eAmBuCiF,GAAWjF,EAAMiF,GACpEO,EAAWD,GAAWH,EAAUH,GAChCQ,EAAWR,EAAWI,EAAwBD,EAAU,WAArBI,OAAkC9rH,EACrEgsH,EAAqB,SAARtH,GAAkB4B,EAAM/sF,SAAqBsyF,EAwB9D,GArBIG,IACFhB,EAAoB3uH,EAAe2vH,EAAWhvH,KAAK,IAAIu4G,OAC7Bn6G,OAAOM,WAAasvH,EAAkB9gH,OAE9D+7G,EAAe+E,EAAmBxH,GAAK,GAElCyH,GAAiD,mBAA/BD,EAAkBN,IAAyBlgH,EAAKwgH,EAAmBN,EAAUY,IAIpGK,GAAcE,GAAWA,EAAQ/qH,OAASuqH,IAC5CO,GAAa,EACbE,EAAW,WAAoB,OAAOD,EAAQ7uH,KAAKY,KAAO,GAGtDqtH,IAAWQ,IAAYN,IAASS,GAAetF,EAAMoE,IACzDlgH,EAAK87G,EAAOoE,EAAUoB,GAGxBhB,EAAUpG,GAAQoH,EAClBhB,EAAUtH,GAAO8H,EACbC,EAMF,GALApF,EAAU,CACRh3F,OAAQw8F,EAAaG,EAAWJ,EAAUL,GAC1Ct9F,KAAMy9F,EAASM,EAAWJ,EAAUN,GACpC7xF,QAASwyF,GAEPN,EAAQ,IAAKnwH,KAAO6qH,EAChB7qH,KAAOgrH,GAAQT,EAASS,EAAOhrH,EAAK6qH,EAAQ7qH,SAC7CsqH,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKs5E,GAASS,GAAalH,EAAMyB,GAEtE,OAAOA,CACT,mBCpEA,IAAIuE,EAAW,EAAQ,MAAR,CAAkB,YAC7BuB,GAAe,EAEnB,IACE,IAAIC,EAAQ,CAAC,GAAGxB,KAChBwB,EAAc,OAAI,WAAcD,GAAe,CAAM,EAErDtrG,MAAM6W,KAAK00F,GAAO,WAAc,MAAM,CAAG,GAC3C,CAAE,MAAOjvH,GAAiB,CAE1B8jH,EAAOC,QAAU,SAAUhsB,EAAMm3B,GAC/B,IAAKA,IAAgBF,EAAc,OAAO,EAC1C,IAAIG,GAAO,EACX,IACE,IAAIpjG,EAAM,CAAC,GACP49F,EAAO59F,EAAI0hG,KACf9D,EAAK18G,KAAO,WAAc,MAAO,CAAEyX,KAAMyqG,GAAO,EAAQ,EACxDpjG,EAAI0hG,GAAY,WAAc,OAAO9D,CAAM,EAC3C5xB,EAAKhsE,EACP,CAAE,MAAO/rB,GAAiB,CAC1B,OAAOmvH,CACT,aCrBArL,EAAOC,QAAU,SAAUr/F,EAAM3lB,GAC/B,MAAO,CAAEA,MAAOA,EAAO2lB,OAAQA,EACjC,aCFAo/F,EAAOC,QAAU,CAAC,aCAlBD,EAAOC,SAAU,YCCjB,IAAIqL,EAAS9iG,KAAK+iG,MAClBvL,EAAOC,SAAYqL,GAEdA,EAAO,IAAM,oBAAsBA,EAAO,IAAM,qBAE7B,OAAnBA,GAAQ,OACT,SAAexnH,GACjB,OAAmB,IAAXA,GAAKA,GAAUA,EAAIA,GAAK,MAAQA,EAAI,KAAOA,EAAIA,EAAIA,EAAI,EAAI0kB,KAAKg/F,IAAI1jH,GAAK,CACnF,EAAIwnH,mBCRJ,IAAIj8F,EAAO,EAAQ,OACf2E,EAAMxL,KAAKwL,IACXw3F,EAAUx3F,EAAI,GAAI,IAClBy3F,EAAYz3F,EAAI,GAAI,IACpB03F,EAAQ13F,EAAI,EAAG,MAAQ,EAAIy3F,GAC3BE,EAAQ33F,EAAI,GAAI,KAMpBgsF,EAAOC,QAAUz3F,KAAKojG,QAAU,SAAgB9nH,GAC9C,IAEI+d,EAAGnlB,EAFHmvH,EAAOrjG,KAAKsL,IAAIhwB,GAChBgoH,EAAQz8F,EAAKvrB,GAEjB,OAAI+nH,EAAOF,EAAcG,GAAwBD,EAAOF,EAAQF,EAPrD,EAAID,EAAU,EAAIA,GAOgDG,EAAQF,GAErF/uH,GADAmlB,GAAK,EAAI4pG,EAAYD,GAAWK,IAClBhqG,EAAIgqG,IAELH,GAAShvH,GAAUA,EAAeovH,GAAQvoD,KAChDuoD,EAAQpvH,CACjB,aCrBAsjH,EAAOC,QAAUz3F,KAAKujG,OAAS,SAAejoH,GAC5C,OAAQA,GAAKA,IAAM,MAAQA,EAAI,KAAOA,EAAIA,EAAIA,EAAI,EAAI0kB,KAAKloB,IAAI,EAAIwD,EACrE,aCFAk8G,EAAOC,QAAUz3F,KAAK6G,MAAQ,SAAcvrB,GAE1C,OAAmB,IAAXA,GAAKA,IAAWA,GAAKA,EAAIA,EAAIA,EAAI,GAAK,EAAI,CACpD,mBCJA,IAAIkoH,EAAO,EAAQ,MAAR,CAAkB,QACzB1L,EAAW,EAAQ,OACnB5nF,EAAM,EAAQ,OACduzF,EAAU,WACVtgH,EAAK,EACLugH,EAAe7xH,OAAO6xH,cAAgB,WACxC,OAAO,CACT,EACIC,GAAU,EAAQ,MAAR,EAAoB,WAChC,OAAOD,EAAa7xH,OAAO+xH,kBAAkB,CAAC,GAChD,IACIC,EAAU,SAAU5sE,GACtBwsE,EAAQxsE,EAAIusE,EAAM,CAAE/wH,MAAO,CACzBlB,EAAG,OAAQ4R,EACXknC,EAAG,CAAC,IAER,EA8BIkyE,EAAO/E,EAAOC,QAAU,CAC1BwF,IAAKuG,EACLhG,MAAM,EACN3C,QAhCY,SAAU5jE,EAAI1kD,GAE1B,IAAKulH,EAAS7gE,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAK/mB,EAAI+mB,EAAIusE,GAAO,CAElB,IAAKE,EAAazsE,GAAK,MAAO,IAE9B,IAAK1kD,EAAQ,MAAO,IAEpBsxH,EAAQ5sE,EAEV,CAAE,OAAOA,EAAGusE,GAAMjyH,CACpB,EAqBEmqH,QApBY,SAAUzkE,EAAI1kD,GAC1B,IAAK29B,EAAI+mB,EAAIusE,GAAO,CAElB,IAAKE,EAAazsE,GAAK,OAAO,EAE9B,IAAK1kD,EAAQ,OAAO,EAEpBsxH,EAAQ5sE,EAEV,CAAE,OAAOA,EAAGusE,GAAMn5E,CACpB,EAWEy5E,SATa,SAAU7sE,GAEvB,OADI0sE,GAAUpH,EAAKiB,MAAQkG,EAAazsE,KAAQ/mB,EAAI+mB,EAAIusE,IAAOK,EAAQ5sE,GAChEA,CACT,oBC7CA,IAAImlE,EAAS,EAAQ,OACjB2H,EAAY,aACZC,EAAW5H,EAAO6H,kBAAoB7H,EAAO8H,uBAC7C35B,EAAU6xB,EAAO7xB,QACjBx0F,EAAUqmH,EAAOrmH,QACjBouH,EAAuC,WAA9B,EAAQ,MAAR,CAAkB55B,GAE/BitB,EAAOC,QAAU,WACf,IAAIjyE,EAAM1mB,EAAMslG,EAEZviC,EAAQ,WACV,IAAInrD,EAAQojF,EAEZ,IADIqK,IAAWztF,EAAS6zD,EAAQ85B,SAAS3tF,EAAO4tF,OACzC9+E,GAAM,CACXs0E,EAAKt0E,EAAKs0E,GACVt0E,EAAOA,EAAK7kC,KACZ,IACEm5G,GACF,CAAE,MAAOpmH,GAGP,MAFI8xC,EAAM4+E,IACLtlG,OAAOroB,EACN/C,CACR,CACF,CAAEorB,OAAOroB,EACLigC,GAAQA,EAAO6tF,OACrB,EAGA,GAAIJ,EACFC,EAAS,WACP75B,EAAQi6B,SAAS3iC,EACnB,OAEK,IAAImiC,GAAc5H,EAAOjxB,WAAaixB,EAAOjxB,UAAUs5B,WAQvD,GAAI1uH,GAAWA,EAAQC,QAAS,CAErC,IAAI0uH,EAAU3uH,EAAQC,aAAQS,GAC9B2tH,EAAS,WACPM,EAAQzuH,KAAK4rF,EACf,CAOF,MACEuiC,EAAS,WAEPL,EAAUtwH,KAAK2oH,EAAQv6B,EACzB,MAxByE,CACzE,IAAIzoF,GAAS,EACTy7B,EAAO99B,SAAS4tH,eAAe,IACnC,IAAIX,EAASniC,GAAO+iC,QAAQ/vF,EAAM,CAAEgwF,eAAe,IACnDT,EAAS,WACPvvF,EAAKl3B,KAAOvE,GAAUA,CACxB,CAEF,CAmBA,OAAO,SAAU0gH,GACf,IAAIgL,EAAO,CAAEhL,GAAIA,EAAIn5G,UAAMlK,GACvBqoB,IAAMA,EAAKne,KAAOmkH,GACjBt/E,IACHA,EAAOs/E,EACPV,KACAtlG,EAAOgmG,CACX,CACF,gCClEA,IAAIvL,EAAY,EAAQ,OAExB,SAASwL,EAAkBz1E,GACzB,IAAIt5C,EAASiiB,EACb5jB,KAAKqwH,QAAU,IAAIp1E,GAAE,SAAU01E,EAAWC,GACxC,QAAgBxuH,IAAZT,QAAoCS,IAAXwhB,EAAsB,MAAM9mB,UAAU,2BACnE6E,EAAUgvH,EACV/sG,EAASgtG,CACX,IACA5wH,KAAK2B,QAAUujH,EAAUvjH,GACzB3B,KAAK4jB,OAASshG,EAAUthG,EAC1B,CAEAu/F,EAAOC,QAAQlpG,EAAI,SAAU+gC,GAC3B,OAAO,IAAIy1E,EAAkBz1E,EAC/B,+BCfA,IAAIsrE,EAAc,EAAQ,OACtB4D,EAAU,EAAQ,OAClBC,EAAO,EAAQ,OACfC,EAAM,EAAQ,OACd3G,EAAW,EAAQ,OACnBa,EAAU,EAAQ,MAClBsM,EAAUrzH,OAAO2lB,OAGrBggG,EAAOC,SAAWyN,GAAW,EAAQ,MAAR,EAAoB,WAC/C,IAAIp1E,EAAI,CAAC,EACLqqE,EAAI,CAAC,EAEL/pE,EAAIp4C,SACJm4C,EAAI,uBAGR,OAFAL,EAAEM,GAAK,EACPD,EAAEnjC,MAAM,IAAIrT,SAAQ,SAAUyf,GAAK+gG,EAAE/gG,GAAKA,CAAG,IACjB,GAArB8rG,EAAQ,CAAC,EAAGp1E,GAAGM,IAAWv+C,OAAO2yB,KAAK0gG,EAAQ,CAAC,EAAG/K,IAAI5sG,KAAK,KAAO4iC,CAC3E,IAAK,SAAgB9+C,EAAQiyD,GAM3B,IALA,IAAIhT,EAAIynE,EAAS1mH,GACbgnH,EAAO/jH,UAAU9C,OACjBkP,EAAQ,EACRi+G,EAAaF,EAAKlwG,EAClBswG,EAASH,EAAInwG,EACV8pG,EAAO33G,GAMZ,IALA,IAII3O,EAJAq+C,EAAIwoE,EAAQtkH,UAAUoM,MACtB8jB,EAAOm6F,EAAaH,EAAQpuE,GAAG7rC,OAAOo6G,EAAWvuE,IAAMouE,EAAQpuE,GAC/D5+C,EAASgzB,EAAKhzB,OACd8nB,EAAI,EAED9nB,EAAS8nB,GACdvnB,EAAMyyB,EAAKlL,KACNshG,IAAeiE,EAAOprH,KAAK28C,EAAGr+C,KAAMu+C,EAAEv+C,GAAOq+C,EAAEr+C,IAEtD,OAAOu+C,CACX,EAAI40E,mBCpCJ,IAAIvJ,EAAW,EAAQ,MACnBwJ,EAAM,EAAQ,MACdC,EAAc,EAAQ,OACtBC,EAAW,EAAQ,MAAR,CAAyB,YACpCC,EAAQ,WAA0B,EAClCxG,EAAY,YAGZyG,EAAa,WAEf,IAIIC,EAJAC,EAAS,EAAQ,KAAR,CAAyB,UAClCl0H,EAAI6zH,EAAY5zH,OAcpB,IAVAi0H,EAAO/+G,MAAMmqD,QAAU,OACvB,oBAA+B40D,GAC/BA,EAAO5xG,IAAM,eAGb2xG,EAAiBC,EAAOC,cAAc3uH,UACvBw7F,OACfizB,EAAeG,MAAMC,uCACrBJ,EAAeK,QACfN,EAAaC,EAAel9E,EACrB/2C,YAAYg0H,EAAWzG,GAAWsG,EAAY7zH,IACrD,OAAOg0H,GACT,EAEA/N,EAAOC,QAAU5lH,OAAOU,QAAU,SAAgB4lH,EAAG2N,GACnD,IAAI5xH,EAQJ,OAPU,OAANikH,GACFmN,EAAMxG,GAAanD,EAASxD,GAC5BjkH,EAAS,IAAIoxH,EACbA,EAAMxG,GAAa,KAEnB5qH,EAAOmxH,GAAYlN,GACdjkH,EAASqxH,SACM9uH,IAAfqvH,EAA2B5xH,EAASixH,EAAIjxH,EAAQ4xH,EACzD,mBCxCA,IAAInK,EAAW,EAAQ,MACnBoK,EAAiB,EAAQ,MACzB3H,EAAc,EAAQ,OACtB9D,EAAKzoH,OAAOC,eAEhB2lH,EAAQlpG,EAAI,EAAQ,OAAoB1c,OAAOC,eAAiB,SAAwBqmH,EAAGpgG,EAAGiuG,GAI5F,GAHArK,EAASxD,GACTpgG,EAAIqmG,EAAYrmG,GAAG,GACnB4jG,EAASqK,GACLD,EAAgB,IAClB,OAAOzL,EAAGnC,EAAGpgG,EAAGiuG,EAClB,CAAE,MAAOtyH,GAAiB,CAC1B,GAAI,QAASsyH,GAAc,QAASA,EAAY,MAAM70H,UAAU,4BAEhE,MADI,UAAW60H,IAAY7N,EAAEpgG,GAAKiuG,EAAWvzH,OACtC0lH,CACT,kBCfA,IAAImC,EAAK,EAAQ,OACbqB,EAAW,EAAQ,MACnB6C,EAAU,EAAQ,OAEtBhH,EAAOC,QAAU,EAAQ,OAAoB5lH,OAAO0pG,iBAAmB,SAA0B4c,EAAG2N,GAClGnK,EAASxD,GAKT,IAJA,IAGIpgG,EAHAyM,EAAOg6F,EAAQsH,GACft0H,EAASgzB,EAAKhzB,OACdD,EAAI,EAEDC,EAASD,GAAG+oH,EAAG/rG,EAAE4pG,EAAGpgG,EAAIyM,EAAKjzB,KAAMu0H,EAAW/tG,IACrD,OAAOogG,CACT,mBCZA,IAAIuG,EAAM,EAAQ,OACdb,EAAa,EAAQ,OACrBtF,EAAY,EAAQ,OACpB6F,EAAc,EAAQ,OACtBluF,EAAM,EAAQ,OACd61F,EAAiB,EAAQ,MACzBE,EAAOp0H,OAAOoD,yBAElBwiH,EAAQlpG,EAAI,EAAQ,OAAoB03G,EAAO,SAAkC9N,EAAGpgG,GAGlF,GAFAogG,EAAII,EAAUJ,GACdpgG,EAAIqmG,EAAYrmG,GAAG,GACfguG,EAAgB,IAClB,OAAOE,EAAK9N,EAAGpgG,EACjB,CAAE,MAAOrkB,GAAiB,CAC1B,GAAIw8B,EAAIioF,EAAGpgG,GAAI,OAAO8lG,GAAYa,EAAInwG,EAAE9a,KAAK0kH,EAAGpgG,GAAIogG,EAAEpgG,GACxD,mBCdA,IAAIwgG,EAAY,EAAQ,OACpB2N,EAAO,WACPrrG,EAAW,CAAC,EAAEA,SAEdsrG,EAA+B,iBAAVj+G,QAAsBA,QAAUrW,OAAOu0H,oBAC5Dv0H,OAAOu0H,oBAAoBl+G,QAAU,GAUzCsvG,EAAOC,QAAQlpG,EAAI,SAA6B0oC,GAC9C,OAAOkvE,GAAoC,mBAArBtrG,EAASpnB,KAAKwjD,GATjB,SAAUA,GAC7B,IACE,OAAOivE,EAAKjvE,EACd,CAAE,MAAOvjD,GACP,OAAOyyH,EAAYtwH,OACrB,CACF,CAGiEwwH,CAAepvE,GAAMivE,EAAK3N,EAAUthE,GACrG,mBCjBA,IAAIqvE,EAAQ,EAAQ,OAChBC,EAAa,gBAAmC,SAAU,aAE9D9O,EAAQlpG,EAAI1c,OAAOu0H,qBAAuB,SAA6BjO,GACrE,OAAOmO,EAAMnO,EAAGoO,EAClB,iBCNA9O,EAAQlpG,EAAI1c,OAAOkyF,uCCCnB,IAAI7zD,EAAM,EAAQ,OACd6nF,EAAW,EAAQ,OACnBsN,EAAW,EAAQ,MAAR,CAAyB,YACpCmB,EAAc30H,OAAOM,UAEzBqlH,EAAOC,QAAU5lH,OAAOiB,gBAAkB,SAAUqlH,GAElD,OADAA,EAAIJ,EAASI,GACTjoF,EAAIioF,EAAGkN,GAAkBlN,EAAEkN,GACH,mBAAjBlN,EAAE3lH,aAA6B2lH,aAAaA,EAAE3lH,YAChD2lH,EAAE3lH,YAAYL,UACdgmH,aAAatmH,OAAS20H,EAAc,IAC/C,mBCZA,IAAIt2F,EAAM,EAAQ,OACdqoF,EAAY,EAAQ,OACpBkO,EAAe,EAAQ,MAAR,EAA6B,GAC5CpB,EAAW,EAAQ,MAAR,CAAyB,YAExC7N,EAAOC,QAAU,SAAUhjH,EAAQiyH,GACjC,IAGI30H,EAHAomH,EAAII,EAAU9jH,GACdlD,EAAI,EACJ2C,EAAS,GAEb,IAAKnC,KAAOomH,EAAOpmH,GAAOszH,GAAUn1F,EAAIioF,EAAGpmH,IAAQmC,EAAOqB,KAAKxD,GAE/D,KAAO20H,EAAMl1H,OAASD,GAAO2+B,EAAIioF,EAAGpmH,EAAM20H,EAAMn1H,SAC7Ck1H,EAAavyH,EAAQnC,IAAQmC,EAAOqB,KAAKxD,IAE5C,OAAOmC,CACT,mBCfA,IAAIoyH,EAAQ,EAAQ,OAChBlB,EAAc,EAAQ,OAE1B5N,EAAOC,QAAU5lH,OAAO2yB,MAAQ,SAAc2zF,GAC5C,OAAOmO,EAAMnO,EAAGiN,EAClB,iBCNA3N,EAAQlpG,EAAI,CAAC,EAAEy1E,oCCCf,IAAIq4B,EAAU,EAAQ,OAClBqB,EAAO,EAAQ,OACflB,EAAQ,EAAQ,OACpBhF,EAAOC,QAAU,SAAUwF,EAAKxxB,GAC9B,IAAIquB,GAAM4D,EAAK7rH,QAAU,CAAC,GAAGorH,IAAQprH,OAAOorH,GACxC+B,EAAM,CAAC,EACXA,EAAI/B,GAAOxxB,EAAKquB,GAChBuC,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAIk0E,GAAM,WAAc1C,EAAG,EAAI,IAAI,SAAUkF,EAC3E,mBCTA,IAAIpE,EAAc,EAAQ,OACtB4D,EAAU,EAAQ,OAClBjG,EAAY,EAAQ,OACpBsG,EAAS,WACbrH,EAAOC,QAAU,SAAUkP,GACzB,OAAO,SAAU1vE,GAOf,IANA,IAKIllD,EALAomH,EAAII,EAAUthE,GACdzyB,EAAOg6F,EAAQrG,GACf3mH,EAASgzB,EAAKhzB,OACdD,EAAI,EACJ2C,EAAS,GAEN1C,EAASD,GACdQ,EAAMyyB,EAAKjzB,KACNqpH,IAAeiE,EAAOprH,KAAK0kH,EAAGpmH,IACjCmC,EAAOqB,KAAKoxH,EAAY,CAAC50H,EAAKomH,EAAEpmH,IAAQomH,EAAEpmH,IAG9C,OAAOmC,CACT,CACF,mBCnBA,IAAIgyH,EAAO,EAAQ,OACfzH,EAAO,EAAQ,OACf9C,EAAW,EAAQ,MACnBxoH,EAAU,iBACdqkH,EAAOC,QAAUtkH,GAAWA,EAAQyzH,SAAW,SAAiB3vE,GAC9D,IAAIzyB,EAAO0hG,EAAK33G,EAAEotG,EAAS1kE,IACvB0nE,EAAaF,EAAKlwG,EACtB,OAAOowG,EAAan6F,EAAKjgB,OAAOo6G,EAAW1nE,IAAOzyB,CACpD,mBCTA,IAAIqiG,EAAc,oBACdC,EAAQ,aAEZtP,EAAOC,QAAU,EAAIoP,EAAY,EAAQ,OAAkB,QAAW9rD,IAAW,SAAoBz/C,GACnG,IAAIslG,EAASkG,EAAM9rG,OAAOM,GAAM,GAC5BpnB,EAAS2yH,EAAYjG,GACzB,OAAkB,IAAX1sH,GAAoC,KAApB0sH,EAAOpyB,OAAO,IAAa,EAAIt6F,CACxD,EAAI2yH,mBCPJ,IAAIE,EAAY,kBACZD,EAAQ,aACRE,EAAK,EAAQ,OACb55F,EAAM,cAEVoqF,EAAOC,QAAmC,IAAzBsP,EAAUC,EAAK,OAA0C,KAA3BD,EAAUC,EAAK,QAAiB,SAAkB1rG,EAAK2rG,GACpG,IAAIrG,EAASkG,EAAM9rG,OAAOM,GAAM,GAChC,OAAOyrG,EAAUnG,EAASqG,IAAU,IAAO75F,EAAIrW,KAAK6pG,GAAU,GAAK,IACrE,EAAImG,aCRJvP,EAAOC,QAAU,SAAUhsB,GACzB,IACE,MAAO,CAAE/3F,GAAG,EAAOolB,EAAG2yE,IACxB,CAAE,MAAO/3F,GACP,MAAO,CAAEA,GAAG,EAAMolB,EAAGplB,EACvB,CACF,kBCNA,IAAIioH,EAAW,EAAQ,MACnB7D,EAAW,EAAQ,OACnBoP,EAAuB,EAAQ,OAEnC1P,EAAOC,QAAU,SAAUnoE,EAAGh0C,GAE5B,GADAqgH,EAASrsE,GACLwoE,EAASx8G,IAAMA,EAAE9I,cAAgB88C,EAAG,OAAOh0C,EAC/C,IAAI6rH,EAAoBD,EAAqB34G,EAAE+gC,GAG/C,OADAt5C,EADcmxH,EAAkBnxH,SACxBsF,GACD6rH,EAAkBzC,OAC3B,aCXAlN,EAAOC,QAAU,SAAU2P,EAAQ30H,GACjC,MAAO,CACLf,aAAuB,EAAT01H,GACdz1H,eAAyB,EAATy1H,GAChBx1H,WAAqB,EAATw1H,GACZ30H,MAAOA,EAEX,mBCPA,IAAI6pH,EAAW,EAAQ,OACvB9E,EAAOC,QAAU,SAAUpmH,EAAQwiB,EAAKgvG,GACtC,IAAK,IAAI9wH,KAAO8hB,EAAKyoG,EAASjrH,EAAQU,EAAK8hB,EAAI9hB,GAAM8wH,GACrD,OAAOxxH,CACT,mBCJA,IAAI+qH,EAAS,EAAQ,OACjBn7G,EAAO,EAAQ,OACfivB,EAAM,EAAQ,OACdm3F,EAAM,EAAQ,MAAR,CAAkB,OACxBC,EAAY,EAAQ,OACpBC,EAAY,WACZC,GAAO,GAAKF,GAAWt6G,MAAMu6G,GAEjC,uBAAmC,SAAUtwE,GAC3C,OAAOqwE,EAAU7zH,KAAKwjD,EACxB,GAECugE,EAAOC,QAAU,SAAUU,EAAGpmH,EAAK4b,EAAKk1G,GACvC,IAAI4E,EAA2B,mBAAP95G,EACpB85G,IAAYv3F,EAAIviB,EAAK,SAAW1M,EAAK0M,EAAK,OAAQ5b,IAClDomH,EAAEpmH,KAAS4b,IACX85G,IAAYv3F,EAAIviB,EAAK05G,IAAQpmH,EAAK0M,EAAK05G,EAAKlP,EAAEpmH,GAAO,GAAKomH,EAAEpmH,GAAOy1H,EAAIj6G,KAAKyN,OAAOjpB,MACnFomH,IAAMiE,EACRjE,EAAEpmH,GAAO4b,EACCk1G,EAGD1K,EAAEpmH,GACXomH,EAAEpmH,GAAO4b,EAET1M,EAAKk3G,EAAGpmH,EAAK4b,WALNwqG,EAAEpmH,GACTkP,EAAKk3G,EAAGpmH,EAAK4b,IAOjB,GAAGsY,SAAS9zB,UAAWo1H,GAAW,WAChC,MAAsB,mBAARlzH,MAAsBA,KAAKgzH,IAAQC,EAAU7zH,KAAKY,KAClE,kCC5BA,IAAIqzH,EAAU,EAAQ,OAClBC,EAAc/qG,OAAOzqB,UAAUs5F,KAInC+rB,EAAOC,QAAU,SAAUloE,EAAGa,GAC5B,IAAIq7C,EAAOl8C,EAAEk8C,KACb,GAAoB,mBAATA,EAAqB,CAC9B,IAAIv3F,EAASu3F,EAAKh4F,KAAK87C,EAAGa,GAC1B,GAAsB,iBAAXl8C,EACT,MAAM,IAAI/C,UAAU,sEAEtB,OAAO+C,CACT,CACA,GAAmB,WAAfwzH,EAAQn4E,GACV,MAAM,IAAIp+C,UAAU,+CAEtB,OAAOw2H,EAAYl0H,KAAK87C,EAAGa,EAC7B,gCClBA,IAaMw3E,EACAC,EAdFC,EAAc,EAAQ,OAEtBC,EAAanrG,OAAOzqB,UAAUs5F,KAI9Bu8B,EAAgBhtG,OAAO7oB,UAAUupB,QAEjCusG,EAAcF,EAEdG,EAAa,YAEbC,GACEP,EAAM,IACNC,EAAM,MACVE,EAAWt0H,KAAKm0H,EAAK,KACrBG,EAAWt0H,KAAKo0H,EAAK,KACM,IAApBD,EAAIM,IAAyC,IAApBL,EAAIK,IAIlCE,OAAuC3xH,IAAvB,OAAOg1F,KAAK,IAAI,IAExB08B,GAA4BC,KAGtCH,EAAc,SAAc3sG,GAC1B,IACI+sG,EAAWC,EAAQvrG,EAAOxrB,EAD1BkuH,EAAKprH,KAwBT,OArBI+zH,IACFE,EAAS,IAAI1rG,OAAO,IAAM6iG,EAAGn8D,OAAS,WAAYwkE,EAAYr0H,KAAKgsH,KAEjE0I,IAA0BE,EAAY5I,EAAGyI,IAE7CnrG,EAAQgrG,EAAWt0H,KAAKgsH,EAAInkG,GAExB6sG,GAA4BprG,IAC9B0iG,EAAGyI,GAAczI,EAAGrD,OAASr/F,EAAMrc,MAAQqc,EAAM,GAAGvrB,OAAS62H,GAE3DD,GAAiBrrG,GAASA,EAAMvrB,OAAS,GAI3Cw2H,EAAcv0H,KAAKspB,EAAM,GAAIurG,GAAQ,WACnC,IAAK/2H,EAAI,EAAGA,EAAI+C,UAAU9C,OAAS,EAAGD,SACfkF,IAAjBnC,UAAU/C,KAAkBwrB,EAAMxrB,QAAKkF,EAE/C,IAGKsmB,CACT,GAGFy6F,EAAOC,QAAUwQ,aCxDjBzQ,EAAOC,QAAU5lH,OAAO0sH,IAAM,SAAYjjH,EAAGgd,GAE3C,OAAOhd,IAAMgd,EAAU,IAANhd,GAAW,EAAIA,GAAM,EAAIgd,EAAIhd,GAAKA,GAAKgd,GAAKA,CAC/D,mBCFA,IAAIw/F,EAAW,EAAQ,OACnB6D,EAAW,EAAQ,MACnBj6D,EAAQ,SAAUy2D,EAAG4E,GAEvB,GADApB,EAASxD,IACJL,EAASiF,IAAoB,OAAVA,EAAgB,MAAM5rH,UAAU4rH,EAAQ,4BAClE,EACAvF,EAAOC,QAAU,CACf1rF,IAAKl6B,OAAOgB,iBAAmB,aAAe,CAAC,EAC7C,SAAUkkB,EAAMwxG,EAAOx8F,GACrB,KACEA,EAAM,EAAQ,MAAR,CAAkB9F,SAASxyB,KAAM,WAA4B5B,OAAOM,UAAW,aAAa45B,IAAK,IACnGhV,EAAM,IACVwxG,IAAUxxG,aAAgBK,MAC5B,CAAE,MAAO1jB,GAAK60H,GAAQ,CAAM,CAC5B,OAAO,SAAwBpQ,EAAG4E,GAIhC,OAHAr7D,EAAMy2D,EAAG4E,GACLwL,EAAOpQ,EAAEnlH,UAAY+pH,EACpBhxF,EAAIosF,EAAG4E,GACL5E,CACT,CACF,CAZA,CAYE,CAAC,GAAG,QAAS1hH,GACjBirD,MAAOA,iCCtBT,IAAI06D,EAAS,EAAQ,OACjB9B,EAAK,EAAQ,OACbM,EAAc,EAAQ,OACtBlB,EAAU,EAAQ,MAAR,CAAkB,WAEhClC,EAAOC,QAAU,SAAUwF,GACzB,IAAI3tE,EAAI8sE,EAAOa,GACXrC,GAAetrE,IAAMA,EAAEoqE,IAAUY,EAAG/rG,EAAE+gC,EAAGoqE,EAAS,CACpD/nH,cAAc,EACdkD,IAAK,WAAc,OAAOR,IAAM,GAEpC,mBCZA,IAAI8kG,EAAM,WACNjpE,EAAM,EAAQ,OACd+pF,EAAM,EAAQ,MAAR,CAAkB,eAE5BzC,EAAOC,QAAU,SAAUxgE,EAAI3mB,EAAKk4F,GAC9BvxE,IAAO/mB,EAAI+mB,EAAKuxE,EAAOvxE,EAAKA,EAAG9kD,UAAW8nH,IAAM9gB,EAAIliD,EAAIgjE,EAAK,CAAEtoH,cAAc,EAAMc,MAAO69B,GAChG,mBCNA,IAAIm4F,EAAS,EAAQ,KAAR,CAAqB,QAC9BC,EAAM,EAAQ,OAClBlR,EAAOC,QAAU,SAAU1lH,GACzB,OAAO02H,EAAO12H,KAAS02H,EAAO12H,GAAO22H,EAAI32H,GAC3C,kBCJA,IAAI2rH,EAAO,EAAQ,OACftB,EAAS,EAAQ,OACjBuM,EAAS,qBACT7W,EAAQsK,EAAOuM,KAAYvM,EAAOuM,GAAU,CAAC,IAEhDnR,EAAOC,QAAU,SAAU1lH,EAAKU,GAC/B,OAAOq/G,EAAM//G,KAAS+/G,EAAM//G,QAAiB0E,IAAVhE,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAI8C,KAAK,CACtB60F,QAASszB,EAAKtzB,QACd55E,KAAM,EAAQ,OAAgB,OAAS,SACvCo4G,UAAW,0DCTb,IAAIjN,EAAW,EAAQ,MACnBpC,EAAY,EAAQ,OACpBG,EAAU,EAAQ,MAAR,CAAkB,WAChClC,EAAOC,QAAU,SAAUU,EAAG9nE,GAC5B,IACID,EADAd,EAAIqsE,EAASxD,GAAG3lH,YAEpB,YAAaiE,IAAN64C,GAAiD74C,OAA7B25C,EAAIurE,EAASrsE,GAAGoqE,IAAyBrpE,EAAIkpE,EAAUnpE,EACpF,gCCPA,IAAIosE,EAAQ,EAAQ,OAEpBhF,EAAOC,QAAU,SAAUzvG,EAAQ0pB,GACjC,QAAS1pB,GAAUw0G,GAAM,WAEvB9qF,EAAM1pB,EAAOvU,KAAK,MAAM,WAA0B,GAAG,GAAKuU,EAAOvU,KAAK,KACxE,GACF,mBCRA,IAAIo1H,EAAY,EAAQ,MACpBnJ,EAAU,EAAQ,OAGtBlI,EAAOC,QAAU,SAAU8P,GACzB,OAAO,SAAUjO,EAAMz6F,GACrB,IAGIxF,EAAGzf,EAHH8d,EAAIsD,OAAO0kG,EAAQpG,IACnB/nH,EAAIs3H,EAAUhqG,GACdppB,EAAIiiB,EAAElmB,OAEV,OAAID,EAAI,GAAKA,GAAKkE,EAAU8xH,EAAY,QAAK9wH,GAC7C4iB,EAAI3B,EAAEiC,WAAWpoB,IACN,OAAU8nB,EAAI,OAAU9nB,EAAI,IAAMkE,IAAMmE,EAAI8d,EAAEiC,WAAWpoB,EAAI,IAAM,OAAUqI,EAAI,MACxF2tH,EAAY7vG,EAAE82E,OAAOj9F,GAAK8nB,EAC1BkuG,EAAY7vG,EAAE7hB,MAAMtE,EAAGA,EAAI,GAA2BqI,EAAI,OAAzByf,EAAI,OAAU,IAAqB,KAC1E,CACF,iBCfA,IAAImoG,EAAW,EAAQ,OACnB9B,EAAU,EAAQ,OAEtBlI,EAAOC,QAAU,SAAU6B,EAAMwP,EAAc3N,GAC7C,GAAIqG,EAASsH,GAAe,MAAM33H,UAAU,UAAYgqH,EAAO,0BAC/D,OAAOngG,OAAO0kG,EAAQpG,GACxB,mBCPA,IAAI+C,EAAU,EAAQ,OAClBG,EAAQ,EAAQ,OAChBkD,EAAU,EAAQ,OAClBqJ,EAAO,KAEPC,EAAa,SAAUpI,EAAQtwF,EAAKqE,EAAWliC,GACjD,IAAI29C,EAAIp1B,OAAO0kG,EAAQkB,IACnBqI,EAAK,IAAM34F,EAEf,MADkB,KAAdqE,IAAkBs0F,GAAM,IAAMt0F,EAAY,KAAO3Z,OAAOvoB,GAAOipB,QAAQqtG,EAAM,UAAY,KACtFE,EAAK,IAAM74E,EAAI,KAAO9f,EAAM,GACrC,EACAknF,EAAOC,QAAU,SAAU0D,EAAM1vB,GAC/B,IAAI0sB,EAAI,CAAC,EACTA,EAAEgD,GAAQ1vB,EAAKu9B,GACf3M,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAIk0E,GAAM,WACpC,IAAIzlG,EAAO,GAAGokG,GAAM,KACpB,OAAOpkG,IAASA,EAAK44E,eAAiB54E,EAAK/J,MAAM,KAAKxb,OAAS,CACjE,IAAI,SAAU2mH,EAChB,mBCjBA,IAAIF,EAAW,EAAQ,OACnBiR,EAAS,EAAQ,OACjBxJ,EAAU,EAAQ,OAEtBlI,EAAOC,QAAU,SAAU6B,EAAM1nD,EAAWu3D,EAAY/pF,GACtD,IAAIgR,EAAIp1B,OAAO0kG,EAAQpG,IACnB8P,EAAeh5E,EAAE5+C,OACjB63H,OAAyB5yH,IAAf0yH,EAA2B,IAAMnuG,OAAOmuG,GAClDG,EAAerR,EAASrmD,GAC5B,GAAI03D,GAAgBF,GAA2B,IAAXC,EAAe,OAAOj5E,EAC1D,IAAIm5E,EAAUD,EAAeF,EACzBI,EAAeN,EAAOz1H,KAAK41H,EAASrpG,KAAKmC,KAAKonG,EAAUF,EAAQ73H,SAEpE,OADIg4H,EAAah4H,OAAS+3H,IAASC,EAAeA,EAAa3zH,MAAM,EAAG0zH,IACjEnqF,EAAOoqF,EAAep5E,EAAIA,EAAIo5E,CACvC,gCCdA,IAAIX,EAAY,EAAQ,MACpBnJ,EAAU,EAAQ,OAEtBlI,EAAOC,QAAU,SAAgB7rB,GAC/B,IAAItwE,EAAMN,OAAO0kG,EAAQrrH,OACrBmsB,EAAM,GACN7I,EAAIkxG,EAAUj9B,GAClB,GAAIj0E,EAAI,GAAKA,GAAKojD,IAAU,MAAMmjD,WAAW,2BAC7C,KAAMvmG,EAAI,GAAIA,KAAO,KAAO2D,GAAOA,GAAc,EAAJ3D,IAAO6I,GAAOlF,GAC3D,OAAOkF,CACT,kBCXA,IAAI67F,EAAU,EAAQ,OAClBqD,EAAU,EAAQ,OAClBlD,EAAQ,EAAQ,OAChBiN,EAAS,EAAQ,OACjBC,EAAQ,IAAMD,EAAS,IAEvBE,EAAQ/sG,OAAO,IAAM8sG,EAAQA,EAAQ,KACrCE,EAAQhtG,OAAO8sG,EAAQA,EAAQ,MAE/BG,EAAW,SAAU5M,EAAKxxB,EAAMq+B,GAClC,IAAI9K,EAAM,CAAC,EACP+K,EAAQvN,GAAM,WAChB,QAASiN,EAAOxM,MAPV,WAOwBA,IAChC,IACInD,EAAKkF,EAAI/B,GAAO8M,EAAQt+B,EAAKrgF,GAAQq+G,EAAOxM,GAC5C6M,IAAO9K,EAAI8K,GAAShQ,GACxBuC,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAIyhF,EAAO,SAAU/K,EACnD,EAKI5zG,EAAOy+G,EAASz+G,KAAO,SAAUw1G,EAAQ/H,GAI3C,OAHA+H,EAAS5lG,OAAO0kG,EAAQkB,IACb,EAAP/H,IAAU+H,EAASA,EAAOllG,QAAQiuG,EAAO,KAClC,EAAP9Q,IAAU+H,EAASA,EAAOllG,QAAQkuG,EAAO,KACtChJ,CACT,EAEApJ,EAAOC,QAAUoS,aC7BjBrS,EAAOC,QAAU,kECAjB,IAaIuS,EAAOC,EAASC,EAbhBvR,EAAM,EAAQ,OACd7rB,EAAS,EAAQ,OACjBq9B,EAAO,EAAQ,MACfC,EAAM,EAAQ,MACdhO,EAAS,EAAQ,OACjB7xB,EAAU6xB,EAAO7xB,QACjB8/B,EAAUjO,EAAOkO,aACjBC,EAAYnO,EAAOoO,eACnBC,EAAiBrO,EAAOqO,eACxBC,EAAWtO,EAAOsO,SAClBC,EAAU,EACVC,EAAQ,CAAC,EACTC,EAAqB,qBAErBC,EAAM,WACR,IAAI3nH,GAAM9O,KAEV,GAAIu2H,EAAMj2H,eAAewO,GAAK,CAC5B,IAAI22G,EAAK8Q,EAAMznH,UACRynH,EAAMznH,GACb22G,GACF,CACF,EACIhkH,EAAW,SAAUH,GACvBm1H,EAAIr3H,KAAKkC,EAAMgI,KACjB,EAEK0sH,GAAYE,IACfF,EAAU,SAAsBvQ,GAG9B,IAFA,IAAIroF,EAAO,GACPlgC,EAAI,EACD+C,UAAU9C,OAASD,GAAGkgC,EAAKl8B,KAAKjB,UAAU/C,MAMjD,OALAq5H,IAAQD,GAAW,WAEjB79B,EAAoB,mBAANgtB,EAAmBA,EAAK7zF,SAAS6zF,GAAKroF,EACtD,EACAu4F,EAAMW,GACCA,CACT,EACAJ,EAAY,SAAwBpnH,UAC3BynH,EAAMznH,EACf,EAEkC,WAA9B,EAAQ,MAAR,CAAkBonF,GACpBy/B,EAAQ,SAAU7mH,GAChBonF,EAAQi6B,SAAS7L,EAAImS,EAAK3nH,EAAI,GAChC,EAESunH,GAAYA,EAASxkH,IAC9B8jH,EAAQ,SAAU7mH,GAChBunH,EAASxkH,IAAIyyG,EAAImS,EAAK3nH,EAAI,GAC5B,EAESsnH,GAETP,GADAD,EAAU,IAAIQ,GACCM,MACfd,EAAQe,MAAMC,UAAYn1H,EAC1Bk0H,EAAQrR,EAAIuR,EAAKgB,YAAahB,EAAM,IAG3B9N,EAAOrnG,kBAA0C,mBAAfm2G,cAA8B9O,EAAO+O,eAChFnB,EAAQ,SAAU7mH,GAChBi5G,EAAO8O,YAAY/nH,EAAK,GAAI,IAC9B,EACAi5G,EAAOrnG,iBAAiB,UAAWjf,GAAU,IAG7Ck0H,EADSa,KAAsBT,EAAI,UAC3B,SAAUjnH,GAChBgnH,EAAKj4B,YAAYk4B,EAAI,WAAWS,GAAsB,WACpDV,EAAKiB,YAAY/2H,MACjBy2H,EAAIr3H,KAAK0P,EACX,CACF,EAGQ,SAAUA,GAChBnH,WAAW28G,EAAImS,EAAK3nH,EAAI,GAAI,EAC9B,GAGJq0G,EAAOC,QAAU,CACf1rF,IAAKs+F,EACLh4C,MAAOk4C,oBClFT,IAAI1B,EAAY,EAAQ,MACpBnzG,EAAMsK,KAAKtK,IACX1O,EAAMgZ,KAAKhZ,IACfwwG,EAAOC,QAAU,SAAU/2G,EAAOlP,GAEhC,OADAkP,EAAQmoH,EAAUnoH,IACH,EAAIgV,EAAIhV,EAAQlP,EAAQ,GAAKwV,EAAItG,EAAOlP,EACzD,mBCLA,IAAIq3H,EAAY,EAAQ,MACpB5Q,EAAW,EAAQ,OACvBT,EAAOC,QAAU,SAAUxgE,GACzB,QAAWxgD,IAAPwgD,EAAkB,OAAO,EAC7B,IAAIo0E,EAASxC,EAAU5xE,GACnBzlD,EAASymH,EAASoT,GACtB,GAAIA,IAAW75H,EAAQ,MAAM0sH,WAAW,iBACxC,OAAO1sH,CACT,YCRA,IAAI2wB,EAAOnC,KAAKmC,KACZlC,EAAQD,KAAKC,MACjBu3F,EAAOC,QAAU,SAAUxgE,GACzB,OAAOl8C,MAAMk8C,GAAMA,GAAM,GAAKA,EAAK,EAAIh3B,EAAQkC,GAAM80B,EACvD,mBCJA,IAAI2hE,EAAU,EAAQ,MAClB8G,EAAU,EAAQ,OACtBlI,EAAOC,QAAU,SAAUxgE,GACzB,OAAO2hE,EAAQ8G,EAAQzoE,GACzB,mBCJA,IAAI4xE,EAAY,EAAQ,MACpB7hH,EAAMgZ,KAAKhZ,IACfwwG,EAAOC,QAAU,SAAUxgE,GACzB,OAAOA,EAAK,EAAIjwC,EAAI6hH,EAAU5xE,GAAK,kBAAoB,CACzD,mBCJA,IAAIyoE,EAAU,EAAQ,OACtBlI,EAAOC,QAAU,SAAUxgE,GACzB,OAAOplD,OAAO6tH,EAAQzoE,GACxB,mBCHA,IAAI6gE,EAAW,EAAQ,OAGvBN,EAAOC,QAAU,SAAUxgE,EAAI7G,GAC7B,IAAK0nE,EAAS7gE,GAAK,OAAOA,EAC1B,IAAI6iE,EAAInsG,EACR,GAAIyiC,GAAkC,mBAArB0pE,EAAK7iE,EAAGp8B,YAA4Bi9F,EAASnqG,EAAMmsG,EAAGrmH,KAAKwjD,IAAM,OAAOtpC,EACzF,GAAgC,mBAApBmsG,EAAK7iE,EAAGzjD,WAA2BskH,EAASnqG,EAAMmsG,EAAGrmH,KAAKwjD,IAAM,OAAOtpC,EACnF,IAAKyiC,GAAkC,mBAArB0pE,EAAK7iE,EAAGp8B,YAA4Bi9F,EAASnqG,EAAMmsG,EAAGrmH,KAAKwjD,IAAM,OAAOtpC,EAC1F,MAAMxc,UAAU,0CAClB,+BCVA,GAAI,EAAQ,OAAmB,CAC7B,IAAIuwH,EAAU,EAAQ,OAClBtF,EAAS,EAAQ,OACjBI,EAAQ,EAAQ,OAChBH,EAAU,EAAQ,OAClBiP,EAAS,EAAQ,OACjBC,EAAU,EAAQ,MAClB5S,EAAM,EAAQ,OACd6B,EAAa,EAAQ,OACrBgR,EAAe,EAAQ,OACvBvqH,EAAO,EAAQ,OACfs5G,EAAc,EAAQ,OACtBsO,EAAY,EAAQ,MACpB5Q,EAAW,EAAQ,OACnBwT,EAAU,EAAQ,OAClBzT,EAAkB,EAAQ,OAC1BoG,EAAc,EAAQ,OACtBluF,EAAM,EAAQ,OACdw3F,EAAU,EAAQ,OAClB5P,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACnBgJ,EAAc,EAAQ,OACtBxuH,EAAS,EAAQ,OACjBO,EAAiB,EAAQ,OACzBozH,EAAO,WACPlF,EAAY,EAAQ,MACpB0H,EAAM,EAAQ,OACd/I,EAAM,EAAQ,OACd/D,EAAoB,EAAQ,OAC5B8P,EAAsB,EAAQ,OAC9B/R,EAAqB,EAAQ,OAC7BgS,EAAiB,EAAQ,OACzBpK,EAAY,EAAQ,OACpB9E,EAAc,EAAQ,OACtB9B,EAAa,EAAQ,OACrBiR,EAAY,EAAQ,OACpBC,EAAkB,EAAQ,OAC1BC,EAAM,EAAQ,OACdC,EAAQ,EAAQ,OAChBzR,EAAKwR,EAAIv9G,EACT03G,EAAO8F,EAAMx9G,EACb2vG,EAAa9B,EAAO8B,WACpB/sH,EAAYirH,EAAOjrH,UACnBuoB,EAAa0iG,EAAO1iG,WACpBsyG,EAAe,cACfC,EAAgB,SAAWD,EAC3BE,EAAoB,oBACpBpN,EAAY,YACZnH,EAAavgG,MAAM0nG,GACnBqN,EAAeZ,EAAQ5qG,YACvByrG,EAAYb,EAAQ/hF,SACpB6iF,EAAezQ,EAAkB,GACjC0Q,GAAc1Q,EAAkB,GAChC2Q,GAAY3Q,EAAkB,GAC9B4Q,GAAa5Q,EAAkB,GAC/BE,GAAYF,EAAkB,GAC9BG,GAAiBH,EAAkB,GACnC6Q,GAAgBf,GAAoB,GACpCjF,GAAeiF,GAAoB,GACnCgB,GAAcf,EAAe/lG,OAC7B+mG,GAAYhB,EAAennG,KAC3BooG,GAAejB,EAAe37F,QAC9B68F,GAAmBlV,EAAWmV,YAC9BC,GAAcpV,EAAW/pG,OACzBo/G,GAAmBrV,EAAWsV,YAC9BC,GAAYvV,EAAWpqG,KACvB4/G,GAAYxV,EAAWjzF,KACvBk1F,GAAajC,EAAW9hH,MACxB2sB,GAAgBm1F,EAAW98F,SAC3BuyG,GAAsBzV,EAAW0V,eACjClM,GAAWxB,EAAI,YACf1F,GAAM0F,EAAI,eACV2N,GAAoB5E,EAAI,qBACxB6E,GAAkB7E,EAAI,mBACtB8E,GAAmBlC,EAAOmC,OAC1BC,GAAcpC,EAAOqC,MACrBC,GAAOtC,EAAOsC,KACdC,GAAe,gBAEfC,GAAOlS,EAAkB,GAAG,SAAUzD,EAAG3mH,GAC3C,OAAOu8H,GAASpU,EAAmBxB,EAAGA,EAAEoV,KAAmB/7H,EAC7D,IAEIw8H,GAAgBxR,GAAM,WAExB,OAA0D,IAAnD,IAAI9iG,EAAW,IAAIqN,YAAY,CAAC,IAAIxL,QAAQ,EACrD,IAEI0yG,KAAev0G,KAAgBA,EAAWolG,GAAW/yF,KAAOywF,GAAM,WACpE,IAAI9iG,EAAW,GAAGqS,IAAI,CAAC,EACzB,IAEImiG,GAAW,SAAUj3E,EAAIk3E,GAC3B,IAAI3yG,EAASqtG,EAAU5xE,GACvB,GAAIz7B,EAAS,GAAKA,EAAS2yG,EAAO,MAAMjQ,EAAW,iBACnD,OAAO1iG,CACT,EAEIs/F,GAAW,SAAU7jE,GACvB,GAAI6gE,EAAS7gE,IAAOy2E,MAAez2E,EAAI,OAAOA,EAC9C,MAAM9lD,EAAU8lD,EAAK,yBACvB,EAEI82E,GAAW,SAAUz+E,EAAG99C,GAC1B,IAAMsmH,EAASxoE,MAAMg+E,MAAqBh+E,GACxC,MAAMn+C,EAAU,wCAChB,OAAO,IAAIm+C,EAAE99C,EACjB,EAEI48H,GAAkB,SAAUjW,EAAG5nG,GACjC,OAAO89G,GAAS1U,EAAmBxB,EAAGA,EAAEoV,KAAmBh9G,EAC7D,EAEI89G,GAAW,SAAU/+E,EAAG/+B,GAI1B,IAHA,IAAI7P,EAAQ,EACRlP,EAAS+e,EAAK/e,OACd0C,EAAS65H,GAASz+E,EAAG99C,GAClBA,EAASkP,GAAOxM,EAAOwM,GAAS6P,EAAK7P,KAC5C,OAAOxM,CACT,EAEIo6H,GAAY,SAAUr3E,EAAIllD,EAAKw8H,GACjCjU,EAAGrjE,EAAIllD,EAAK,CAAE8C,IAAK,WAAc,OAAOR,KAAK2pB,GAAGuwG,EAAW,GAC7D,EAEIC,GAAQ,SAAclrE,GACxB,IAKI/xD,EAAGC,EAAQo0B,EAAQ1xB,EAAQ+S,EAAM4R,EALjCs/F,EAAIJ,EAASz0D,GACb+0D,EAAO/jH,UAAU9C,OACjBi9H,EAAQpW,EAAO,EAAI/jH,UAAU,QAAKmC,EAClCi4H,OAAoBj4H,IAAVg4H,EACVrN,EAASJ,EAAU7I,GAEvB,GAAc1hH,MAAV2qH,IAAwBL,EAAYK,GAAS,CAC/C,IAAKvoG,EAAWuoG,EAAO3tH,KAAK0kH,GAAIvyF,EAAS,GAAIr0B,EAAI,IAAK0V,EAAO4R,EAASlY,QAAQyX,KAAM7mB,IAClFq0B,EAAOrwB,KAAK0R,EAAKxU,OACjB0lH,EAAIvyF,CACR,CAEA,IADI8oG,GAAWrW,EAAO,IAAGoW,EAAQ9V,EAAI8V,EAAOn6H,UAAU,GAAI,IACrD/C,EAAI,EAAGC,EAASymH,EAASE,EAAE3mH,QAAS0C,EAAS65H,GAAS15H,KAAM7C,GAASA,EAASD,EAAGA,IACpF2C,EAAO3C,GAAKm9H,EAAUD,EAAMtW,EAAE5mH,GAAIA,GAAK4mH,EAAE5mH,GAE3C,OAAO2C,CACT,EAEIy6H,GAAM,WAIR,IAHA,IAAIjuH,EAAQ,EACRlP,EAAS8C,UAAU9C,OACnB0C,EAAS65H,GAAS15H,KAAM7C,GACrBA,EAASkP,GAAOxM,EAAOwM,GAASpM,UAAUoM,KACjD,OAAOxM,CACT,EAGI06H,KAAkBl1G,GAAc8iG,GAAM,WAAc4Q,GAAoB35H,KAAK,IAAIimB,EAAW,GAAK,IAEjGm1G,GAAkB,WACpB,OAAOzB,GAAoB74H,MAAMq6H,GAAgBhV,GAAWnmH,KAAKqnH,GAASzmH,OAASymH,GAASzmH,MAAOC,UACrG,EAEIyoH,GAAQ,CACV7E,WAAY,SAAoB7mH,EAAQisD,GACtC,OAAOuuE,EAAgBp4H,KAAKqnH,GAASzmH,MAAOhD,EAAQisD,EAAOhpD,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACnG,EACA+/F,MAAO,SAAe6iB,GACpB,OAAOmT,GAAW1R,GAASzmH,MAAOglH,EAAY/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACtF,EACAuoE,KAAM,SAAcvsE,GAClB,OAAOm5H,EAAUr3H,MAAMumH,GAASzmH,MAAOC,UACzC,EACA+G,OAAQ,SAAgBg+G,GACtB,OAAO+U,GAAgB/5H,KAAMi4H,GAAYxR,GAASzmH,MAAOglH,EACvD/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,GAC1C,EACAkO,KAAM,SAAcmqH,GAClB,OAAOhT,GAAUhB,GAASzmH,MAAOy6H,EAAWx6H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACpF,EACA6X,UAAW,SAAmBwgH,GAC5B,OAAO/S,GAAejB,GAASzmH,MAAOy6H,EAAWx6H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACzF,EACAkD,QAAS,SAAiB0/G,GACxBgT,EAAavR,GAASzmH,MAAOglH,EAAY/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACjF,EACA0N,QAAS,SAAiB4qH,GACxB,OAAOtI,GAAa3L,GAASzmH,MAAO06H,EAAez6H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAC3F,EACA2W,SAAU,SAAkB2hH,GAC1B,OAAOtC,GAAc3R,GAASzmH,MAAO06H,EAAez6H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAC5F,EACA8W,KAAM,SAAcyhH,GAClB,OAAO9B,GAAU34H,MAAMumH,GAASzmH,MAAOC,UACzC,EACAw4H,YAAa,SAAqBiC,GAChC,OAAOlC,GAAiBt4H,MAAMumH,GAASzmH,MAAOC,UAChD,EACAuH,IAAK,SAAa4yH,GAChB,OAAOX,GAAKhT,GAASzmH,MAAOo6H,EAAOn6H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAC3E,EACAmX,OAAQ,SAAgByrG,GACtB,OAAO0T,GAAYx4H,MAAMumH,GAASzmH,MAAOC,UAC3C,EACA24H,YAAa,SAAqB5T,GAChC,OAAO2T,GAAiBz4H,MAAMumH,GAASzmH,MAAOC,UAChD,EACAi6F,QAAS,WAMP,IALA,IAII97F,EAJA6mH,EAAOjlH,KACP7C,EAASspH,GAASxB,GAAM9nH,OACxBy9H,EAASjvG,KAAKC,MAAMzuB,EAAS,GAC7BkP,EAAQ,EAELA,EAAQuuH,GACbx8H,EAAQ6mH,EAAK54G,GACb44G,EAAK54G,KAAW44G,IAAO9nH,GACvB8nH,EAAK9nH,GAAUiB,EACf,OAAO6mH,CACX,EACA78D,KAAM,SAAc48D,GAClB,OAAOkT,GAAUzR,GAASzmH,MAAOglH,EAAY/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACrF,EACAiuB,KAAM,SAAcwqG,GAClB,OAAO/B,GAAU15H,KAAKqnH,GAASzmH,MAAO66H,EACxC,EACAnxE,SAAU,SAAkBoxE,EAAO5xE,GACjC,IAAI46D,EAAI2C,GAASzmH,MACb7C,EAAS2mH,EAAE3mH,OACX49H,EAASpX,EAAgBmX,EAAO39H,GACpC,OAAO,IAAKmoH,EAAmBxB,EAAGA,EAAEoV,KAA7B,CACLpV,EAAE58F,OACF48F,EAAEznE,WAAa0+E,EAASjX,EAAE+T,kBAC1BjU,QAAkBxhH,IAAR8mD,EAAoB/rD,EAASwmH,EAAgBz6D,EAAK/rD,IAAW49H,GAE3E,GAGEC,GAAS,SAAe/xE,EAAOC,GACjC,OAAO6wE,GAAgB/5H,KAAMulH,GAAWnmH,KAAKqnH,GAASzmH,MAAOipD,EAAOC,GACtE,EAEI+xE,GAAO,SAAaC,GACtBzU,GAASzmH,MACT,IAAImnB,EAAS0yG,GAAS55H,UAAU,GAAI,GAChC9C,EAAS6C,KAAK7C,OACdqiB,EAAMkkG,EAASwX,GACfn1G,EAAM69F,EAASpkG,EAAIriB,QACnBkP,EAAQ,EACZ,GAAI0Z,EAAMoB,EAAShqB,EAAQ,MAAM0sH,EAAW2P,IAC5C,KAAOntH,EAAQ0Z,GAAK/lB,KAAKmnB,EAAS9a,GAASmT,EAAInT,IACjD,EAEI8uH,GAAa,CACfx/F,QAAS,WACP,OAAO48F,GAAan5H,KAAKqnH,GAASzmH,MACpC,EACAmwB,KAAM,WACJ,OAAOmoG,GAAUl5H,KAAKqnH,GAASzmH,MACjC,EACAuxB,OAAQ,WACN,OAAO8mG,GAAYj5H,KAAKqnH,GAASzmH,MACnC,GAGEo7H,GAAY,SAAUp+H,EAAQU,GAChC,OAAO+lH,EAASzmH,IACXA,EAAOq8H,KACO,iBAAP37H,GACPA,KAAOV,GACP2pB,QAAQjpB,IAAQipB,OAAOjpB,EAC9B,EACI29H,GAAW,SAAkCr+H,EAAQU,GACvD,OAAO09H,GAAUp+H,EAAQU,EAAMqsH,EAAYrsH,GAAK,IAC5Cy5H,EAAa,EAAGn6H,EAAOU,IACvBk0H,EAAK50H,EAAQU,EACnB,EACI49H,GAAW,SAAwBt+H,EAAQU,EAAKiD,GAClD,QAAIy6H,GAAUp+H,EAAQU,EAAMqsH,EAAYrsH,GAAK,KACxC+lH,EAAS9iH,IACTk7B,EAAIl7B,EAAM,WACTk7B,EAAIl7B,EAAM,QACVk7B,EAAIl7B,EAAM,QAEVA,EAAKrD,cACJu+B,EAAIl7B,EAAM,cAAeA,EAAKpD,UAC9Bs+B,EAAIl7B,EAAM,gBAAiBA,EAAKtD,WAI9B4oH,EAAGjpH,EAAQU,EAAKiD,IAFvB3D,EAAOU,GAAOiD,EAAKvC,MACZpB,EAEX,EAEKm8H,KACHzB,EAAMx9G,EAAImhH,GACV5D,EAAIv9G,EAAIohH,IAGVtT,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAKklF,GAAkB,SAAU,CAC3Dv4H,yBAA0By6H,GAC1B59H,eAAgB69H,KAGdnT,GAAM,WAAch6F,GAAc/uB,KAAK,CAAC,EAAI,MAC9C+uB,GAAgB4qG,GAAsB,WACpC,OAAOF,GAAUz5H,KAAKY,KACxB,GAGF,IAAIu7H,GAAwBrV,EAAY,CAAC,EAAGwC,IAC5CxC,EAAYqV,GAAuBJ,IACnCvuH,EAAK2uH,GAAuBzO,GAAUqO,GAAW5pG,QACjD20F,EAAYqV,GAAuB,CACjC/5H,MAAOw5H,GACPtjG,IAAKujG,GACL98H,YAAa,WAAyB,EACtCqoB,SAAU2H,GACV6qG,eAAgBwB,KAElBP,GAAUsB,GAAuB,SAAU,KAC3CtB,GAAUsB,GAAuB,aAAc,KAC/CtB,GAAUsB,GAAuB,aAAc,KAC/CtB,GAAUsB,GAAuB,SAAU,KAC3CtV,EAAGsV,GAAuB3V,GAAK,CAC7BplH,IAAK,WAAc,OAAOR,KAAKq5H,GAAc,IAI/ClW,EAAOC,QAAU,SAAUwF,EAAKkR,EAAOjT,EAAS2U,GAE9C,IAAI1U,EAAO8B,IADX4S,IAAYA,GACgB,UAAY,IAAM,QAC1CC,EAAS,MAAQ7S,EACjB8S,EAAS,MAAQ9S,EACjB+S,EAAa5T,EAAOjB,GACpBnP,EAAOgkB,GAAc,CAAC,EACtBC,EAAMD,GAAcl9H,EAAek9H,GACnC9N,GAAU8N,IAAe1E,EAAO4E,IAChC/X,EAAI,CAAC,EACLgY,EAAsBH,GAAcA,EAAWlR,GAU/CsR,EAAa,SAAU9W,EAAM54G,GAC/B45G,EAAGhB,EAAM54G,EAAO,CACd7L,IAAK,WACH,OAZO,SAAUykH,EAAM54G,GAC3B,IAAI/C,EAAO27G,EAAKt7F,GAChB,OAAOrgB,EAAKmb,EAAEg3G,GAAQpvH,EAAQytH,EAAQxwH,EAAK/K,EAAGo7H,GAChD,CASaqC,CAAOh8H,KAAMqM,EACtB,EACAqrB,IAAK,SAAUt5B,GACb,OAXO,SAAU6mH,EAAM54G,EAAOjO,GAClC,IAAIkL,EAAO27G,EAAKt7F,GACZ6xG,IAASp9H,GAASA,EAAQutB,KAAKyuB,MAAMh8C,IAAU,EAAI,EAAIA,EAAQ,IAAO,IAAe,IAARA,GACjFkL,EAAKmb,EAAEi3G,GAAQrvH,EAAQytH,EAAQxwH,EAAK/K,EAAGH,EAAOu7H,GAChD,CAOasC,CAAOj8H,KAAMqM,EAAOjO,EAC7B,EACAf,YAAY,GAEhB,EACIwwH,GACF8N,EAAa9U,GAAQ,SAAU5B,EAAM37G,EAAM4yH,EAASC,GAClDhW,EAAWlB,EAAM0W,EAAY7U,EAAM,MACnC,IAEI5/F,EAAQmuB,EAAYl4C,EAAQi/H,EAF5B/vH,EAAQ,EACR8a,EAAS,EAEb,GAAKs8F,EAASn6G,GAIP,MAAIA,aAAgBwuH,IAAiBsE,EAAQ/I,EAAQ/pH,KAAUquH,GAAgByE,GAASxE,GAaxF,OAAIyB,MAAe/vH,EACjB0wH,GAAS2B,EAAYryH,GAErB6wH,GAAM/6H,KAAKu8H,EAAYryH,GAf9B4d,EAAS5d,EACT6d,EAAS0yG,GAASqC,EAASpC,GAC3B,IAAIuC,EAAO/yH,EAAK+rC,WAChB,QAAgBjzC,IAAZ+5H,EAAuB,CACzB,GAAIE,EAAOvC,EAAO,MAAMjQ,EAAW2P,IAEnC,IADAnkF,EAAagnF,EAAOl1G,GACH,EAAG,MAAM0iG,EAAW2P,GACvC,MAEE,IADAnkF,EAAauuE,EAASuY,GAAWrC,GAChB3yG,EAASk1G,EAAM,MAAMxS,EAAW2P,IAEnDr8H,EAASk4C,EAAaykF,CAKxB,MApBE38H,EAASi6H,EAAQ9tH,GAEjB4d,EAAS,IAAI4wG,EADbziF,EAAal4C,EAAS28H,GA2BxB,IAPAltH,EAAKq4G,EAAM,KAAM,CACf1/G,EAAG2hB,EACH3oB,EAAG4oB,EACH/lB,EAAGi0C,EACHh2C,EAAGlC,EACHsnB,EAAG,IAAIszG,EAAU7wG,KAEZ7a,EAAQlP,GAAQ4+H,EAAW9W,EAAM54G,IAC1C,IACAyvH,EAAsBH,EAAWlR,GAAavsH,EAAOq9H,IACrD3uH,EAAKkvH,EAAqB,cAAeH,IAC/BxT,GAAM,WAChBwT,EAAW,EACb,KAAOxT,GAAM,WACX,IAAIwT,GAAY,EAClB,KAAOvT,GAAY,SAAUY,GAC3B,IAAI2S,EACJ,IAAIA,EAAW,MACf,IAAIA,EAAW,KACf,IAAIA,EAAW3S,EACjB,IAAG,KACD2S,EAAa9U,GAAQ,SAAU5B,EAAM37G,EAAM4yH,EAASC,GAElD,IAAIC,EAGJ,OAJAjW,EAAWlB,EAAM0W,EAAY7U,GAIxBrD,EAASn6G,GACVA,aAAgBwuH,IAAiBsE,EAAQ/I,EAAQ/pH,KAAUquH,GAAgByE,GAASxE,OACnEx1H,IAAZ+5H,EACH,IAAIxkB,EAAKruG,EAAMuwH,GAASqC,EAASpC,GAAQqC,QAC7B/5H,IAAZ85H,EACE,IAAIvkB,EAAKruG,EAAMuwH,GAASqC,EAASpC,IACjC,IAAIniB,EAAKruG,GAEb+vH,MAAe/vH,EAAa0wH,GAAS2B,EAAYryH,GAC9C6wH,GAAM/6H,KAAKu8H,EAAYryH,GATF,IAAIquG,EAAKyf,EAAQ9tH,GAU/C,IACA0uH,EAAa4D,IAAQhqG,SAAS9zB,UAAY+zH,EAAKla,GAAMznG,OAAO2hH,EAAK+J,IAAQ/J,EAAKla,IAAO,SAAUj6G,GACvFA,KAAOi+H,GAAa/uH,EAAK+uH,EAAYj+H,EAAKi6G,EAAKj6G,GACvD,IACAi+H,EAAWlR,GAAaqR,EACnBzO,IAASyO,EAAoB39H,YAAcw9H,IAElD,IAAIW,EAAkBR,EAAoBhP,IACtCyP,IAAsBD,IACI,UAAxBA,EAAgBp5H,MAA4Cd,MAAxBk6H,EAAgBp5H,MACtDs5H,EAAYrB,GAAW5pG,OAC3B3kB,EAAK+uH,EAAY1C,IAAmB,GACpCrsH,EAAKkvH,EAAqBzC,GAAavS,GACvCl6G,EAAKkvH,EAAqBvC,IAAM,GAChC3sH,EAAKkvH,EAAqB5C,GAAiByC,IAEvCH,EAAU,IAAIG,EAAW,GAAG/V,KAAQkB,EAASlB,MAAOkW,IACtD7V,EAAG6V,EAAqBlW,GAAK,CAC3BplH,IAAK,WAAc,OAAOsmH,CAAM,IAIpChD,EAAEgD,GAAQ6U,EAEV3T,EAAQA,EAAQoB,EAAIpB,EAAQx4E,EAAIw4E,EAAQ/zE,GAAK0nF,GAAchkB,GAAOmM,GAElEkE,EAAQA,EAAQjsE,EAAG+qE,EAAM,CACvB+Q,kBAAmBiC,IAGrB9R,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAIk0E,GAAM,WAAcxQ,EAAKrgF,GAAGl4B,KAAKu8H,EAAY,EAAI,IAAI7U,EAAM,CACzFltF,KAAMugG,GACN7iG,GAAIgjG,KAGAzC,KAAqBiE,GAAsBlvH,EAAKkvH,EAAqBjE,EAAmBiC,GAE9F9R,EAAQA,EAAQtkG,EAAGojG,EAAM4B,IAEzBpC,EAAWQ,GAEXkB,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI2lF,GAAY9S,EAAM,CAAEpvF,IAAKujG,KAEzDjT,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKsoF,EAAmBzV,EAAMqU,IAErD9N,GAAWyO,EAAoBt1G,UAAY2H,KAAe2tG,EAAoBt1G,SAAW2H,IAE9F65F,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAIk0E,GAAM,WACpC,IAAIwT,EAAW,GAAGn6H,OACpB,IAAIslH,EAAM,CAAEtlH,MAAOw5H,KAEnBhT,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKk0E,GAAM,WACrC,MAAO,CAAC,EAAG,GAAG6Q,kBAAoB,IAAI2C,EAAW,CAAC,EAAG,IAAI3C,gBAC3D,MAAO7Q,GAAM,WACX2T,EAAoB9C,eAAe55H,KAAK,CAAC,EAAG,GAC9C,KAAK0nH,EAAM,CAAEkS,eAAgBwB,KAE7BtN,EAAUpG,GAAQyV,EAAoBD,EAAkBE,EACnDnP,GAAYkP,GAAmB3vH,EAAKkvH,EAAqBhP,GAAU0P,EAC1E,CACF,MAAOrZ,EAAOC,QAAU,WAA0B,+BC9dlD,IAAI2E,EAAS,EAAQ,OACjBxB,EAAc,EAAQ,OACtB8G,EAAU,EAAQ,OAClB4J,EAAS,EAAQ,OACjBrqH,EAAO,EAAQ,OACfs5G,EAAc,EAAQ,OACtBiC,EAAQ,EAAQ,OAChBhC,EAAa,EAAQ,OACrBqO,EAAY,EAAQ,MACpB5Q,EAAW,EAAQ,OACnBwT,EAAU,EAAQ,OAClBvF,EAAO,WACP5L,EAAK,WACLsR,EAAY,EAAQ,OACpBlP,EAAiB,EAAQ,OACzBsP,EAAe,cACf8E,EAAY,WACZhS,EAAY,YAEZiS,EAAc,eACd5E,EAAe/P,EAAO4P,GACtBI,EAAYhQ,EAAO0U,GACnB9wG,EAAOo8F,EAAOp8F,KACdk+F,EAAa9B,EAAO8B,WAEpBnjD,EAAWqhD,EAAOrhD,SAClBi2D,EAAa7E,EACb7gG,EAAMtL,EAAKsL,IACXE,EAAMxL,EAAKwL,IACXvL,EAAQD,EAAKC,MACbnoB,EAAMkoB,EAAKloB,IACXm5H,EAAMjxG,EAAKixG,IACXC,EAAS,SACTC,EAAc,aACdC,EAAc,aACdC,EAAUzW,EAAc,KAAOsW,EAC/BI,EAAU1W,EAAc,KAAOuW,EAC/BI,EAAU3W,EAAc,KAAOwW,EAGnC,SAASI,EAAY/+H,EAAOg/H,EAAMC,GAChC,IAOIh+H,EAAG87C,EAAGU,EAPN30B,EAAS,IAAInE,MAAMs6G,GACnBC,EAAgB,EAATD,EAAaD,EAAO,EAC3BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,EAAc,KAATL,EAAcjmG,EAAI,GAAI,IAAMA,EAAI,GAAI,IAAM,EAC/Cj6B,EAAI,EACJmmB,EAAIjlB,EAAQ,GAAe,IAAVA,GAAe,EAAIA,EAAQ,EAAI,EAAI,EAkCxD,KAhCAA,EAAQ64B,EAAI74B,KAECA,GAASA,IAAUsoE,GAE9BvrB,EAAI/8C,GAASA,EAAQ,EAAI,EACzBiB,EAAIk+H,IAEJl+H,EAAIusB,EAAMnoB,EAAIrF,GAASw+H,GACnBx+H,GAASy9C,EAAI1kB,EAAI,GAAI93B,IAAM,IAC7BA,IACAw8C,GAAK,IAGLz9C,GADEiB,EAAIm+H,GAAS,EACNC,EAAK5hF,EAEL4hF,EAAKtmG,EAAI,EAAG,EAAIqmG,IAEf3hF,GAAK,IACfx8C,IACAw8C,GAAK,GAEHx8C,EAAIm+H,GAASD,GACfpiF,EAAI,EACJ97C,EAAIk+H,GACKl+H,EAAIm+H,GAAS,GACtBriF,GAAK/8C,EAAQy9C,EAAI,GAAK1kB,EAAI,EAAGimG,GAC7B/9H,GAAQm+H,IAERriF,EAAI/8C,EAAQ+4B,EAAI,EAAGqmG,EAAQ,GAAKrmG,EAAI,EAAGimG,GACvC/9H,EAAI,IAGD+9H,GAAQ,EAAGl2G,EAAOhqB,KAAW,IAAJi+C,EAASA,GAAK,IAAKiiF,GAAQ,GAG3D,IAFA/9H,EAAIA,GAAK+9H,EAAOjiF,EAChBmiF,GAAQF,EACDE,EAAO,EAAGp2G,EAAOhqB,KAAW,IAAJmC,EAASA,GAAK,IAAKi+H,GAAQ,GAE1D,OADAp2G,IAAShqB,IAAU,IAAJmmB,EACR6D,CACT,CACA,SAASw2G,EAAcx2G,EAAQk2G,EAAMC,GACnC,IAOIliF,EAPAmiF,EAAgB,EAATD,EAAaD,EAAO,EAC3BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAQL,EAAO,EACfpgI,EAAImgI,EAAS,EACbh6G,EAAI6D,EAAOhqB,KACXmC,EAAQ,IAAJgkB,EAGR,IADAA,IAAM,EACCs6G,EAAQ,EAAGt+H,EAAQ,IAAJA,EAAU6nB,EAAOhqB,GAAIA,IAAKygI,GAAS,GAIzD,IAHAxiF,EAAI97C,GAAK,IAAMs+H,GAAS,EACxBt+H,KAAOs+H,EACPA,GAASP,EACFO,EAAQ,EAAGxiF,EAAQ,IAAJA,EAAUj0B,EAAOhqB,GAAIA,IAAKygI,GAAS,GACzD,GAAU,IAANt+H,EACFA,EAAI,EAAIm+H,MACH,IAAIn+H,IAAMk+H,EACf,OAAOpiF,EAAIyuE,IAAMvmG,GAAKqjD,EAAWA,EAEjCvrB,GAAQhkB,EAAI,EAAGimG,GACf/9H,GAAQm+H,CACV,CAAE,OAAQn6G,GAAK,EAAI,GAAK83B,EAAIhkB,EAAI,EAAG93B,EAAI+9H,EACzC,CAEA,SAASQ,EAAU53G,GACjB,OAAOA,EAAM,IAAM,GAAKA,EAAM,IAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,EACjE,CACA,SAAS63G,EAAOj7E,GACd,MAAO,CAAM,IAALA,EACV,CACA,SAASk7E,EAAQl7E,GACf,MAAO,CAAM,IAALA,EAAWA,GAAM,EAAI,IAC/B,CACA,SAASm7E,EAAQn7E,GACf,MAAO,CAAM,IAALA,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,GAAM,GAAK,IACjE,CACA,SAASo7E,EAAQp7E,GACf,OAAOu6E,EAAYv6E,EAAI,GAAI,EAC7B,CACA,SAASq7E,EAAQr7E,GACf,OAAOu6E,EAAYv6E,EAAI,GAAI,EAC7B,CAEA,SAASq3E,EAAUh/E,EAAGv9C,EAAKw8H,GACzBjU,EAAGhrE,EAAEwvE,GAAY/sH,EAAK,CAAE8C,IAAK,WAAc,OAAOR,KAAKk6H,EAAW,GACpE,CAEA,SAAS15H,EAAI09H,EAAMl4G,EAAO3Z,EAAO8xH,GAC/B,IACIC,EAAWhH,GADC/qH,GAEhB,GAAI+xH,EAAWp4G,EAAQk4G,EAAKjB,GAAU,MAAMpT,EAAW6S,GACvD,IAAIjf,EAAQygB,EAAKlB,GAASzzG,GACtB0/B,EAAQm1E,EAAWF,EAAKhB,GACxBtnC,EAAO6nB,EAAMj8G,MAAMynD,EAAOA,EAAQjjC,GACtC,OAAOm4G,EAAiBvoC,EAAOA,EAAKsE,SACtC,CACA,SAASxiE,EAAIwmG,EAAMl4G,EAAO3Z,EAAOgyH,EAAYjgI,EAAO+/H,GAClD,IACIC,EAAWhH,GADC/qH,GAEhB,GAAI+xH,EAAWp4G,EAAQk4G,EAAKjB,GAAU,MAAMpT,EAAW6S,GAIvD,IAHA,IAAIjf,EAAQygB,EAAKlB,GAASzzG,GACtB0/B,EAAQm1E,EAAWF,EAAKhB,GACxBtnC,EAAOyoC,GAAYjgI,GACdlB,EAAI,EAAGA,EAAI8oB,EAAO9oB,IAAKugH,EAAMx0D,EAAQ/rD,GAAK04F,EAAKuoC,EAAiBjhI,EAAI8oB,EAAQ9oB,EAAI,EAC3F,CAEA,GAAK+5H,EAAO4E,IAgFL,CACL,IAAK1T,GAAM,WACT2P,EAAa,EACf,MAAO3P,GAAM,WACX,IAAI2P,GAAc,EACpB,KAAM3P,GAAM,WAIV,OAHA,IAAI2P,EACJ,IAAIA,EAAa,KACjB,IAAIA,EAAalO,KACVkO,EAAa50H,MAAQy0H,CAC9B,IAAI,CAMF,IADA,IACyCj6H,EADrC4gI,GAJJxG,EAAe,SAAqB36H,GAElC,OADAgpH,EAAWnmH,KAAM83H,GACV,IAAI6E,EAAWvF,EAAQj6H,GAChC,GACoCstH,GAAakS,EAAWlS,GACnDt6F,EAAO0hG,EAAK8K,GAAa13G,EAAI,EAAQkL,EAAKhzB,OAAS8nB,IACnDvnB,EAAMyyB,EAAKlL,QAAS6yG,GAAelrH,EAAKkrH,EAAcp6H,EAAKi/H,EAAWj/H,IAE1E2vH,IAASiR,EAAiBngI,YAAc25H,EAC/C,CAEA,IAAIoG,GAAO,IAAInG,EAAU,IAAID,EAAa,IACtCyG,GAAWxG,EAAUtN,GAAW+T,QACpCN,GAAKM,QAAQ,EAAG,YAChBN,GAAKM,QAAQ,EAAG,aACZN,GAAKO,QAAQ,IAAOP,GAAKO,QAAQ,IAAIvY,EAAY6R,EAAUtN,GAAY,CACzE+T,QAAS,SAAiBniF,EAAYj+C,GACpCmgI,GAASn/H,KAAKY,KAAMq8C,EAAYj+C,GAAS,IAAM,GACjD,EACAsgI,SAAU,SAAkBriF,EAAYj+C,GACtCmgI,GAASn/H,KAAKY,KAAMq8C,EAAYj+C,GAAS,IAAM,GACjD,IACC,EACL,MAjHE05H,EAAe,SAAqB36H,GAClCgpH,EAAWnmH,KAAM83H,EAAcH,GAC/B,IAAItiF,EAAa+hF,EAAQj6H,GACzB6C,KAAKupB,GAAKguG,EAAUn4H,KAAK,IAAI2jB,MAAMsyB,GAAa,GAChDr1C,KAAKi9H,GAAW5nF,CAClB,EAEA0iF,EAAY,SAAkB7wG,EAAQm1B,EAAYhH,GAChD8wE,EAAWnmH,KAAM+3H,EAAW0E,GAC5BtW,EAAWj/F,EAAQ4wG,EAAc2E,GACjC,IAAI32G,EAAeoB,EAAO+1G,GACtB91G,EAASqtG,EAAUn4E,GACvB,GAAIl1B,EAAS,GAAKA,EAASrB,EAAc,MAAM+jG,EAAW,iBAE1D,GAAI1iG,GADJkuB,OAA4BjzC,IAAfizC,EAA2BvvB,EAAeqB,EAASy8F,EAASvuE,IAC/CvvB,EAAc,MAAM+jG,EAxJ/B,iBAyJf7pH,KAAKg9H,GAAW91G,EAChBlnB,KAAKk9H,GAAW/1G,EAChBnnB,KAAKi9H,GAAW5nF,CAClB,EAEIkxE,IACF0T,EAAUnC,EAAcgF,EAAa,MACrC7C,EAAUlC,EAAW8E,EAAQ,MAC7B5C,EAAUlC,EAAW+E,EAAa,MAClC7C,EAAUlC,EAAWgF,EAAa,OAGpC7W,EAAY6R,EAAUtN,GAAY,CAChCgU,QAAS,SAAiBpiF,GACxB,OAAO77C,EAAIR,KAAM,EAAGq8C,GAAY,IAAM,IAAM,EAC9C,EACA/G,SAAU,SAAkB+G,GAC1B,OAAO77C,EAAIR,KAAM,EAAGq8C,GAAY,EAClC,EACAsiF,SAAU,SAAkBtiF,GAC1B,IAAIr2B,EAAQxlB,EAAIR,KAAM,EAAGq8C,EAAYp8C,UAAU,IAC/C,OAAQ+lB,EAAM,IAAM,EAAIA,EAAM,KAAO,IAAM,EAC7C,EACAovB,UAAW,SAAmBiH,GAC5B,IAAIr2B,EAAQxlB,EAAIR,KAAM,EAAGq8C,EAAYp8C,UAAU,IAC/C,OAAO+lB,EAAM,IAAM,EAAIA,EAAM,EAC/B,EACAsjC,SAAU,SAAkBjN,GAC1B,OAAOuhF,EAAUp9H,EAAIR,KAAM,EAAGq8C,EAAYp8C,UAAU,IACtD,EACA2+H,UAAW,SAAmBviF,GAC5B,OAAOuhF,EAAUp9H,EAAIR,KAAM,EAAGq8C,EAAYp8C,UAAU,OAAS,CAC/D,EACA4+H,WAAY,SAAoBxiF,GAC9B,OAAOqhF,EAAcl9H,EAAIR,KAAM,EAAGq8C,EAAYp8C,UAAU,IAAK,GAAI,EACnE,EACA6+H,WAAY,SAAoBziF,GAC9B,OAAOqhF,EAAcl9H,EAAIR,KAAM,EAAGq8C,EAAYp8C,UAAU,IAAK,GAAI,EACnE,EACAu+H,QAAS,SAAiBniF,EAAYj+C,GACpCs5B,EAAI13B,KAAM,EAAGq8C,EAAYwhF,EAAQz/H,EACnC,EACAsgI,SAAU,SAAkBriF,EAAYj+C,GACtCs5B,EAAI13B,KAAM,EAAGq8C,EAAYwhF,EAAQz/H,EACnC,EACA2gI,SAAU,SAAkB1iF,EAAYj+C,GACtCs5B,EAAI13B,KAAM,EAAGq8C,EAAYyhF,EAAS1/H,EAAO6B,UAAU,GACrD,EACA++H,UAAW,SAAmB3iF,EAAYj+C,GACxCs5B,EAAI13B,KAAM,EAAGq8C,EAAYyhF,EAAS1/H,EAAO6B,UAAU,GACrD,EACAg/H,SAAU,SAAkB5iF,EAAYj+C,GACtCs5B,EAAI13B,KAAM,EAAGq8C,EAAY0hF,EAAS3/H,EAAO6B,UAAU,GACrD,EACAi/H,UAAW,SAAmB7iF,EAAYj+C,GACxCs5B,EAAI13B,KAAM,EAAGq8C,EAAY0hF,EAAS3/H,EAAO6B,UAAU,GACrD,EACAk/H,WAAY,SAAoB9iF,EAAYj+C,GAC1Cs5B,EAAI13B,KAAM,EAAGq8C,EAAY4hF,EAAS7/H,EAAO6B,UAAU,GACrD,EACAm/H,WAAY,SAAoB/iF,EAAYj+C,GAC1Cs5B,EAAI13B,KAAM,EAAGq8C,EAAY2hF,EAAS5/H,EAAO6B,UAAU,GACrD,IAqCJooH,EAAeyP,EAAcH,GAC7BtP,EAAe0P,EAAW0E,GAC1B7vH,EAAKmrH,EAAUtN,GAAYwM,EAAOsC,MAAM,GACxCnW,EAAQuU,GAAgBG,EACxB1U,EAAQqZ,GAAa1E,mBCpQrB,IAfA,IASIsH,EATAtX,EAAS,EAAQ,OACjBn7G,EAAO,EAAQ,OACfynH,EAAM,EAAQ,OACdiF,EAAQjF,EAAI,eACZkF,EAAOlF,EAAI,QACXwH,KAAS9T,EAAOz7F,cAAey7F,EAAO5yE,UACtCikF,EAASyC,EACT3+H,EAAI,EAIJoiI,EAAyB,iHAE3B3mH,MAAM,KAEDzb,EAPC,IAQFmiI,EAAQtX,EAAOuX,EAAuBpiI,QACxC0P,EAAKyyH,EAAMvhI,UAAWw7H,GAAO,GAC7B1sH,EAAKyyH,EAAMvhI,UAAWy7H,GAAM,IACvBH,GAAS,EAGlBjW,EAAOC,QAAU,CACfyY,IAAKA,EACLzC,OAAQA,EACRE,MAAOA,EACPC,KAAMA,cC1BR,IAAIzqH,EAAK,EACLu9D,EAAK1gD,KAAK4zG,SACdpc,EAAOC,QAAU,SAAU1lH,GACzB,MAAO,UAAUwS,YAAe9N,IAAR1E,EAAoB,GAAKA,EAAK,QAASoR,EAAKu9D,GAAI7lD,SAAS,IACnF,mBCJA,IACIswE,EADS,EAAQ,OACEA,UAEvBqsB,EAAOC,QAAUtsB,GAAaA,EAAUF,WAAa,oBCHrD,IAAI6sB,EAAW,EAAQ,OACvBN,EAAOC,QAAU,SAAUxgE,EAAI4hE,GAC7B,IAAKf,EAAS7gE,IAAOA,EAAGqkE,KAAOzC,EAAM,MAAM1nH,UAAU,0BAA4B0nH,EAAO,cACxF,OAAO5hE,CACT,mBCJA,IAAImlE,EAAS,EAAQ,OACjBsB,EAAO,EAAQ,OACfgE,EAAU,EAAQ,OAClBmS,EAAS,EAAQ,OACjB/hI,EAAiB,WACrB0lH,EAAOC,QAAU,SAAUlgH,GACzB,IAAIu8H,EAAUpW,EAAK1lH,SAAW0lH,EAAK1lH,OAAS0pH,EAAU,CAAC,EAAItF,EAAOpkH,QAAU,CAAC,GACvD,KAAlBT,EAAKi3F,OAAO,IAAej3F,KAAQu8H,GAAUhiI,EAAegiI,EAASv8H,EAAM,CAAE9E,MAAOohI,EAAOtlH,EAAEhX,IACnG,mBCRAkgH,EAAQlpG,EAAI,EAAZ,wBCAA,IAAIujG,EAAQ,EAAQ,KAAR,CAAqB,OAC7B4W,EAAM,EAAQ,OACd1wH,EAAS,gBACT+7H,EAA8B,mBAAV/7H,GAETw/G,EAAOC,QAAU,SAAUlgH,GACxC,OAAOu6G,EAAMv6G,KAAUu6G,EAAMv6G,GAC3Bw8H,GAAc/7H,EAAOT,KAAUw8H,EAAa/7H,EAAS0wH,GAAK,UAAYnxH,GAC1E,GAESu6G,MAAQA,kBCVjB,IAAI4V,EAAU,EAAQ,OAClBvG,EAAW,EAAQ,MAAR,CAAkB,YAC7BI,EAAY,EAAQ,OACxB/J,EAAOC,QAAU,2BAAuC,SAAUxgE,GAChE,GAAUxgD,MAANwgD,EAAiB,OAAOA,EAAGkqE,IAC1BlqE,EAAG,eACHsqE,EAAUmG,EAAQzwE,GACzB,mBCNA,IAAIolE,EAAU,EAAQ,OAEtBA,EAAQA,EAAQtkG,EAAG,QAAS,CAAEmgG,WAAY,EAAQ,SAElD,EAAQ,MAAR,CAAiC,4CCJjC,IAAImE,EAAU,EAAQ,OAClB2X,EAAS,EAAQ,MAAR,CAA4B,GAEzC3X,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,MAAR,CAA4B,GAAGkuD,OAAO,GAAO,QAAS,CAErFA,MAAO,SAAe6iB,GACpB,OAAO2a,EAAO3/H,KAAMglH,EAAY/kH,UAAU,GAC5C,qBCPF,IAAI+nH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQtkG,EAAG,QAAS,CAAEinD,KAAM,EAAQ,SAE5C,EAAQ,MAAR,CAAiC,sCCJjC,IAAIq9C,EAAU,EAAQ,OAClB4X,EAAU,EAAQ,MAAR,CAA4B,GAE1C5X,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,MAAR,CAA4B,GAAGjtC,QAAQ,GAAO,QAAS,CAEtFA,OAAQ,SAAgBg+G,GACtB,OAAO4a,EAAQ5/H,KAAMglH,EAAY/kH,UAAU,GAC7C,kCCNF,IAAI+nH,EAAU,EAAQ,OAClB6X,EAAQ,EAAQ,MAAR,CAA4B,GACpCjX,EAAM,YACNkX,GAAS,EAETlX,IAAO,IAAI7lG,MAAM,GAAG6lG,IAAK,WAAckX,GAAS,CAAO,IAC3D9X,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI6rF,EAAQ,QAAS,CAC/C7lH,UAAW,SAAmB+qG,GAC5B,OAAO6a,EAAM7/H,KAAMglH,EAAY/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACvE,IAEF,EAAQ,MAAR,CAAiCwmH,iCCXjC,IAAIZ,EAAU,EAAQ,OAClB6X,EAAQ,EAAQ,MAAR,CAA4B,GACpCjX,EAAM,OACNkX,GAAS,EAETlX,IAAO,IAAI7lG,MAAM,GAAG6lG,IAAK,WAAckX,GAAS,CAAO,IAC3D9X,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI6rF,EAAQ,QAAS,CAC/CxvH,KAAM,SAAc00G,GAClB,OAAO6a,EAAM7/H,KAAMglH,EAAY/kH,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACvE,IAEF,EAAQ,MAAR,CAAiCwmH,iCCZjC,IAAIZ,EAAU,EAAQ,OAClB+X,EAAW,EAAQ,MAAR,CAA4B,GACvCC,EAAS,EAAQ,MAAR,CAA4B,GAAG16H,SAAS,GAErD0iH,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK+rF,EAAQ,QAAS,CAEhD16H,QAAS,SAAiB0/G,GACxB,OAAO+a,EAAS//H,KAAMglH,EAAY/kH,UAAU,GAC9C,kCCRF,IAAIqkH,EAAM,EAAQ,OACd0D,EAAU,EAAQ,OAClBtE,EAAW,EAAQ,OACnBtkH,EAAO,EAAQ,OACfstH,EAAc,EAAQ,OACtB9I,EAAW,EAAQ,OACnBqc,EAAiB,EAAQ,OACzBtT,EAAY,EAAQ,MAExB3E,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK,EAAQ,MAAR,EAA0B,SAAU+0E,GAAQjmG,MAAM6W,KAAKovF,EAAO,IAAI,QAAS,CAE1GpvF,KAAM,SAAcshG,GAClB,IAOI/9H,EAAQ0C,EAAQ+S,EAAM4R,EAPtBs/F,EAAIJ,EAASwX,GACbjgF,EAAmB,mBAARj7C,KAAqBA,KAAO+iB,MACvCihG,EAAO/jH,UAAU9C,OACjBi9H,EAAQpW,EAAO,EAAI/jH,UAAU,QAAKmC,EAClCi4H,OAAoBj4H,IAAVg4H,EACV/tH,EAAQ,EACR0gH,EAASJ,EAAU7I,GAIvB,GAFIuW,IAASD,EAAQ9V,EAAI8V,EAAOpW,EAAO,EAAI/jH,UAAU,QAAKmC,EAAW,IAEvDA,MAAV2qH,GAAyB9xE,GAAKl4B,OAAS2pG,EAAYK,GAMrD,IAAKltH,EAAS,IAAIo7C,EADlB99C,EAASymH,EAASE,EAAE3mH,SACSA,EAASkP,EAAOA,IAC3C4zH,EAAepgI,EAAQwM,EAAOguH,EAAUD,EAAMtW,EAAEz3G,GAAQA,GAASy3G,EAAEz3G,SANrE,IAAKmY,EAAWuoG,EAAO3tH,KAAK0kH,GAAIjkH,EAAS,IAAIo7C,IAAOroC,EAAO4R,EAASlY,QAAQyX,KAAM1X,IAChF4zH,EAAepgI,EAAQwM,EAAOguH,EAAUj7H,EAAKolB,EAAU41G,EAAO,CAACxnH,EAAKxU,MAAOiO,IAAQ,GAAQuG,EAAKxU,OASpG,OADAyB,EAAO1C,OAASkP,EACTxM,CACT,kCClCF,IAAImoH,EAAU,EAAQ,OAClBkY,EAAW,EAAQ,MAAR,EAA6B,GACxCjS,EAAU,GAAGn+G,QACbqwH,IAAkBlS,GAAW,EAAI,CAAC,GAAGn+G,QAAQ,GAAI,GAAK,EAE1Dk4G,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKksF,IAAkB,EAAQ,MAAR,CAA4BlS,IAAW,QAAS,CAEjGn+G,QAAS,SAAiB4qH,GACxB,OAAOyF,EAEHlS,EAAQ/tH,MAAMF,KAAMC,YAAc,EAClCigI,EAASlgI,KAAM06H,EAAez6H,UAAU,GAC9C,qBCZF,IAAI+nH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,QAAS,CAAEzqB,QAAS,EAAQ,uCCF/C,IAAI8uG,EAAmB,EAAQ,OAC3BxtH,EAAO,EAAQ,OACfs6G,EAAY,EAAQ,OACpBhJ,EAAY,EAAQ,OAMxBf,EAAOC,QAAU,EAAQ,MAAR,CAA0BrgG,MAAO,SAAS,SAAUokG,EAAUC,GAC7EpnH,KAAKinH,GAAK/C,EAAUiD,GACpBnnH,KAAK8qB,GAAK,EACV9qB,KAAK00F,GAAK0yB,CAEZ,IAAG,WACD,IAAItD,EAAI9jH,KAAKinH,GACTG,EAAOpnH,KAAK00F,GACZroF,EAAQrM,KAAK8qB,KACjB,OAAKg5F,GAAKz3G,GAASy3G,EAAE3mH,QACnB6C,KAAKinH,QAAK7kH,EACHwQ,EAAK,IAEaA,EAAK,EAApB,QAARw0G,EAA+B/6G,EACvB,UAAR+6G,EAAiCtD,EAAEz3G,GACxB,CAACA,EAAOy3G,EAAEz3G,IAC3B,GAAG,UAGH6gH,EAAUmT,UAAYnT,EAAUnqG,MAEhCq9G,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,yCC/BjB,IAAIpY,EAAU,EAAQ,OAClB9D,EAAY,EAAQ,OACpB2U,EAAY,GAAG3/G,KAGnB8uG,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,OAAiBz2C,SAAW,EAAQ,MAAR,CAA4Bq7H,IAAa,QAAS,CACrH3/G,KAAM,SAAcyhH,GAClB,OAAO9B,EAAUz5H,KAAK8kH,EAAUlkH,WAAqBoC,IAAdu4H,EAA0B,IAAMA,EACzE,kCCTF,IAAI3S,EAAU,EAAQ,OAClB9D,EAAY,EAAQ,OACpBsQ,EAAY,EAAQ,MACpB5Q,EAAW,EAAQ,OACnBqK,EAAU,GAAGwK,YACb0H,IAAkBlS,GAAW,EAAI,CAAC,GAAGwK,YAAY,GAAI,GAAK,EAE9DzQ,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKksF,IAAkB,EAAQ,MAAR,CAA4BlS,IAAW,QAAS,CAEjGwK,YAAa,SAAqBiC,GAEhC,GAAIyF,EAAe,OAAOlS,EAAQ/tH,MAAMF,KAAMC,YAAc,EAC5D,IAAI6jH,EAAII,EAAUlkH,MACd7C,EAASymH,EAASE,EAAE3mH,QACpBkP,EAAQlP,EAAS,EAGrB,IAFI8C,UAAU9C,OAAS,IAAGkP,EAAQsf,KAAKhZ,IAAItG,EAAOmoH,EAAUv0H,UAAU,MAClEoM,EAAQ,IAAGA,EAAQlP,EAASkP,GAC1BA,GAAS,EAAGA,IAAS,GAAIA,KAASy3G,GAAOA,EAAEz3G,KAAWquH,EAAe,OAAOruH,GAAS,EAC3F,OAAQ,CACV,kCCnBF,IAAI27G,EAAU,EAAQ,OAClByR,EAAO,EAAQ,MAAR,CAA4B,GAEvCzR,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,MAAR,CAA4B,GAAGzsC,KAAK,GAAO,QAAS,CAEnFA,IAAK,SAAaw9G,GAChB,OAAOyU,EAAKz5H,KAAMglH,EAAY/kH,UAAU,GAC1C,kCCPF,IAAI+nH,EAAU,EAAQ,OAClBiY,EAAiB,EAAQ,OAG7BjY,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAClD,SAASA,IAAkB,CAC3B,QAASlxB,MAAMuU,GAAGl4B,KAAK60C,aAAcA,EACvC,IAAI,QAAS,CAEX3c,GAAI,WAIF,IAHA,IAAIjrB,EAAQ,EACR23G,EAAO/jH,UAAU9C,OACjB0C,EAAS,IAAoB,mBAARG,KAAqBA,KAAO+iB,OAAOihG,GACrDA,EAAO33G,GAAO4zH,EAAepgI,EAAQwM,EAAOpM,UAAUoM,MAE7D,OADAxM,EAAO1C,OAAS6mH,EACTnkH,CACT,kCChBF,IAAImoH,EAAU,EAAQ,OAClBsY,EAAU,EAAQ,OAEtBtY,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,MAAR,CAA4B,GAAG2kF,aAAa,GAAO,QAAS,CAE3FA,YAAa,SAAqB5T,GAChC,OAAOsb,EAAQtgI,KAAMglH,EAAY/kH,UAAU9C,OAAQ8C,UAAU,IAAI,EACnE,iCCPF,IAAI+nH,EAAU,EAAQ,OAClBsY,EAAU,EAAQ,OAEtBtY,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,MAAR,CAA4B,GAAG16B,QAAQ,GAAO,QAAS,CAEtFA,OAAQ,SAAgByrG,GACtB,OAAOsb,EAAQtgI,KAAMglH,EAAY/kH,UAAU9C,OAAQ8C,UAAU,IAAI,EACnE,kCCPF,IAAI+nH,EAAU,EAAQ,OAClB8N,EAAO,EAAQ,MACfl0E,EAAM,EAAQ,OACd+hE,EAAkB,EAAQ,OAC1BC,EAAW,EAAQ,OACnB2B,EAAa,GAAG/jH,MAGpBwmH,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAC9C6hF,GAAMvQ,EAAWnmH,KAAK02H,EAC5B,IAAI,QAAS,CACXt0H,MAAO,SAAes5H,EAAO5xE,GAC3B,IAAInjC,EAAM69F,EAAS5jH,KAAK7C,QACpBi/H,EAAQx6E,EAAI5hD,MAEhB,GADAkpD,OAAc9mD,IAAR8mD,EAAoBnjC,EAAMmjC,EACnB,SAATkzE,EAAkB,OAAO7W,EAAWnmH,KAAKY,KAAM86H,EAAO5xE,GAM1D,IALA,IAAID,EAAQ06D,EAAgBmX,EAAO/0G,GAC/Bw6G,EAAO5c,EAAgBz6D,EAAKnjC,GAC5BoO,EAAOyvF,EAAS2c,EAAOt3E,GACvBxlB,EAAS,IAAI1gB,MAAMoR,GACnBj3B,EAAI,EACDA,EAAIi3B,EAAMj3B,IAAKumC,EAAOvmC,GAAc,UAATk/H,EAC9Bp8H,KAAKm6F,OAAOlxC,EAAQ/rD,GACpB8C,KAAKipD,EAAQ/rD,GACjB,OAAOumC,CACT,kCCzBF,IAAIukF,EAAU,EAAQ,OAClBwY,EAAQ,EAAQ,MAAR,CAA4B,GAExCxY,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAK,EAAQ,MAAR,CAA4B,GAAGmU,MAAM,GAAO,QAAS,CAEpFA,KAAM,SAAc48D,GAClB,OAAOwb,EAAMxgI,KAAMglH,EAAY/kH,UAAU,GAC3C,kCCPF,IAAI+nH,EAAU,EAAQ,OAClB9C,EAAY,EAAQ,OACpBxB,EAAW,EAAQ,OACnByE,EAAQ,EAAQ,OAChBsY,EAAQ,GAAGpwG,KACX3N,EAAO,CAAC,EAAG,EAAG,GAElBslG,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKk0E,GAAM,WAErCzlG,EAAK2N,UAAKjuB,EACZ,MAAO+lH,GAAM,WAEXzlG,EAAK2N,KAAK,KAEZ,MAAO,EAAQ,MAAR,CAA4BowG,IAAS,QAAS,CAEnDpwG,KAAM,SAAcwqG,GAClB,YAAqBz4H,IAAdy4H,EACH4F,EAAMrhI,KAAKskH,EAAS1jH,OACpBygI,EAAMrhI,KAAKskH,EAAS1jH,MAAOklH,EAAU2V,GAC3C,qBCrBF,EAAQ,MAAR,CAA0B,0BCC1B,IAAI7S,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CAAElqC,IAAK,WAAc,OAAO,IAAID,MAAOkF,SAAW,qBCF7E,IAAIkxG,EAAU,EAAQ,OAClB0B,EAAc,EAAQ,OAG1B1B,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKriC,KAAK9T,UAAU4rH,cAAgBA,GAAc,OAAQ,CACpFA,YAAaA,iCCLf,IAAI1B,EAAU,EAAQ,OAClBtE,EAAW,EAAQ,OACnBqG,EAAc,EAAQ,OAE1B/B,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAClD,OAAkC,OAA3B,IAAIriC,KAAKg4G,KAAK8W,UAC2D,IAA3E9uH,KAAK9T,UAAU4iI,OAAOthI,KAAK,CAAEsqH,YAAa,WAAc,OAAO,CAAG,GACzE,IAAI,OAAQ,CAEVgX,OAAQ,SAAgBhjI,GACtB,IAAIomH,EAAIJ,EAAS1jH,MACb2gI,EAAK5W,EAAYjG,GACrB,MAAoB,iBAAN6c,GAAmB1+D,SAAS0+D,GAAa7c,EAAE4F,cAAT,IAClD,qBCdF,IAAIkX,EAAe,EAAQ,MAAR,CAAkB,eACjClY,EAAQ92G,KAAK9T,UAEX8iI,KAAgBlY,GAAQ,EAAQ,MAAR,CAAmBA,EAAOkY,EAAc,EAAQ,yBCH9E,IAAIC,EAAYjvH,KAAK9T,UACjBgjI,EAAe,eACf5N,EAAY,WACZD,EAAY4N,EAAU3N,GACtBp8G,EAAU+pH,EAAU/pH,QACpB,IAAIlF,KAAKg4G,KAAO,IAAMkX,GACxB,EAAQ,MAAR,CAAuBD,EAAW3N,GAAW,WAC3C,IAAI90H,EAAQ0Y,EAAQ1X,KAAKY,MAEzB,OAAO5B,GAAUA,EAAQ60H,EAAU7zH,KAAKY,MAAQ8gI,CAClD,qBCTF,IAAI9Y,EAAU,EAAQ,OAEtBA,EAAQA,EAAQtkG,EAAG,WAAY,CAAEhlB,KAAM,EAAQ,sCCF/C,IAAI+kH,EAAW,EAAQ,OACnBhlH,EAAiB,EAAQ,OACzBsiI,EAAe,EAAQ,MAAR,CAAkB,eACjCC,EAAgBpvG,SAAS9zB,UAEvBijI,KAAgBC,GAAgB,WAA0BA,EAAeD,EAAc,CAAE3iI,MAAO,SAAU0lH,GAC9G,GAAmB,mBAAR9jH,OAAuByjH,EAASK,GAAI,OAAO,EACtD,IAAKL,EAASzjH,KAAKlC,WAAY,OAAOgmH,aAAa9jH,KAEnD,KAAO8jH,EAAIrlH,EAAeqlH,OAAQ9jH,KAAKlC,YAAcgmH,EAAG,OAAO,EAC/D,OAAO,CACT,qBCZA,IAAImC,EAAK,WACLgb,EAASrvG,SAAS9zB,UAClBojI,EAAS,wBACTpa,EAAO,OAGXA,KAAQma,GAAU,EAAQ,QAAqBhb,EAAGgb,EAAQna,EAAM,CAC9DxpH,cAAc,EACdkD,IAAK,WACH,IACE,OAAQ,GAAKR,MAAM0oB,MAAMw4G,GAAQ,EACnC,CAAE,MAAO7hI,GACP,MAAO,EACT,CACF,kCCbF,IAAI8hI,EAAS,EAAQ,OACjB1a,EAAW,EAAQ,OACnB2a,EAAM,MAGVje,EAAOC,QAAU,EAAQ,MAAR,CAAyBge,GAAK,SAAU5gI,GACvD,OAAO,WAAiB,OAAOA,EAAIR,KAAMC,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAAY,CAC7F,GAAG,CAED5B,IAAK,SAAa9C,GAChB,IAAIinC,EAAQw8F,EAAOxa,SAASF,EAASzmH,KAAMohI,GAAM1jI,GACjD,OAAOinC,GAASA,EAAMlgB,CACxB,EAEAiT,IAAK,SAAah6B,EAAKU,GACrB,OAAO+iI,EAAOr8B,IAAI2hB,EAASzmH,KAAMohI,GAAc,IAAR1jI,EAAY,EAAIA,EAAKU,EAC9D,GACC+iI,GAAQ,mBCjBX,IAAInZ,EAAU,EAAQ,OAClBkH,EAAQ,EAAQ,OAChBhoE,EAAOv7B,KAAKu7B,KACZm6E,EAAS11G,KAAK21G,MAElBtZ,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,IAAMotF,GAEW,KAAxC11G,KAAKC,MAAMy1G,EAAOjxG,OAAOqkC,aAEzB4sE,EAAO36D,MAAaA,KACtB,OAAQ,CACT46D,MAAO,SAAer6H,GACpB,OAAQA,GAAKA,GAAK,EAAI2iH,IAAM3iH,EAAI,kBAC5B0kB,KAAKloB,IAAIwD,GAAK0kB,KAAKixG,IACnB1N,EAAMjoH,EAAI,EAAIigD,EAAKjgD,EAAI,GAAKigD,EAAKjgD,EAAI,GAC3C,qBCfF,IAAI+gH,EAAU,EAAQ,OAClBuZ,EAAS51G,KAAK61G,MAOlBxZ,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,IAAMstF,GAAU,EAAIA,EAAO,GAAK,GAAI,OAAQ,CAAEC,MAL1E,SAASA,EAAMv6H,GACb,OAAQg7D,SAASh7D,GAAKA,IAAW,GAALA,EAAaA,EAAI,GAAKu6H,GAAOv6H,GAAK0kB,KAAKloB,IAAIwD,EAAI0kB,KAAKu7B,KAAKjgD,EAAIA,EAAI,IAAxDA,CACvC,qBCLA,IAAI+gH,EAAU,EAAQ,OAClByZ,EAAS91G,KAAK+1G,MAGlB1Z,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,IAAMwtF,GAAU,EAAIA,GAAQ,GAAK,GAAI,OAAQ,CACvEC,MAAO,SAAez6H,GACpB,OAAmB,IAAXA,GAAKA,GAAUA,EAAI0kB,KAAKloB,KAAK,EAAIwD,IAAM,EAAIA,IAAM,CAC3D,qBCPF,IAAI+gH,EAAU,EAAQ,OAClBx1F,EAAO,EAAQ,OAEnBw1F,EAAQA,EAAQjsE,EAAG,OAAQ,CACzB4lF,KAAM,SAAc16H,GAClB,OAAOurB,EAAKvrB,GAAKA,GAAK0kB,KAAKwL,IAAIxL,KAAKsL,IAAIhwB,GAAI,EAAI,EAClD,qBCNF,IAAI+gH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CACzB6lF,MAAO,SAAe36H,GACpB,OAAQA,KAAO,GAAK,GAAK0kB,KAAKC,MAAMD,KAAKloB,IAAIwD,EAAI,IAAO0kB,KAAKk2G,OAAS,EACxE,qBCLF,IAAI7Z,EAAU,EAAQ,OAClB2C,EAAMh/F,KAAKg/F,IAEf3C,EAAQA,EAAQjsE,EAAG,OAAQ,CACzB+lF,KAAM,SAAc76H,GAClB,OAAQ0jH,EAAI1jH,GAAKA,GAAK0jH,GAAK1jH,IAAM,CACnC,qBCNF,IAAI+gH,EAAU,EAAQ,OAClByG,EAAS,EAAQ,MAErBzG,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAKw6E,GAAU9iG,KAAK+iG,OAAQ,OAAQ,CAAEA,MAAOD,qBCHzE,IAAIzG,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CAAEgzE,OAAQ,EAAQ,0BCF7C,IAAI/G,EAAU,EAAQ,OAClB/wF,EAAMtL,KAAKsL,IAEf+wF,EAAQA,EAAQjsE,EAAG,OAAQ,CACzBgmF,MAAO,SAAeC,EAAQC,GAM5B,IALA,IAII5kG,EAAK6kG,EAJL/4F,EAAM,EACNjsC,EAAI,EACJ8mH,EAAO/jH,UAAU9C,OACjBglI,EAAO,EAEJjlI,EAAI8mH,GAELme,GADJ9kG,EAAMpG,EAAIh3B,UAAU/C,QAGlBisC,EAAMA,GADN+4F,EAAMC,EAAO9kG,GACK6kG,EAAM,EACxBC,EAAO9kG,GAGP8L,GAFS9L,EAAM,GACf6kG,EAAM7kG,EAAM8kG,GACCD,EACD7kG,EAEhB,OAAO8kG,IAASz7D,IAAWA,IAAWy7D,EAAOx2G,KAAKu7B,KAAK/d,EACzD,qBCtBF,IAAI6+E,EAAU,EAAQ,OAClBoa,EAAQz2G,KAAK02G,KAGjBra,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAClD,OAAgC,GAAzBmuF,EAAM,WAAY,IAA4B,GAAhBA,EAAMjlI,MAC7C,IAAI,OAAQ,CACVklI,KAAM,SAAcp7H,EAAGgd,GACrB,IAAIq+G,EAAS,MACTC,GAAMt7H,EACNu7H,GAAMv+G,EACNw+G,EAAKH,EAASC,EACdG,EAAKJ,EAASE,EAClB,OAAO,EAAIC,EAAKC,IAAOJ,EAASC,IAAO,IAAMG,EAAKD,GAAMH,EAASE,IAAO,KAAO,KAAO,EACxF,oBCdF,IAAIxa,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CACzB4mF,MAAO,SAAe17H,GACpB,OAAO0kB,KAAKloB,IAAIwD,GAAK0kB,KAAKi3G,MAC5B,qBCLF,IAAI5a,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CAAEmzE,MAAO,EAAQ,0BCF5C,IAAIlH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CACzB8mF,KAAM,SAAc57H,GAClB,OAAO0kB,KAAKloB,IAAIwD,GAAK0kB,KAAKixG,GAC5B,oBCLF,IAAI5U,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CAAEvpB,KAAM,EAAQ,0BCF3C,IAAIw1F,EAAU,EAAQ,OAClB0G,EAAQ,EAAQ,MAChB/D,EAAMh/F,KAAKg/F,IAGf3C,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAClD,OAA8B,QAAtBtoB,KAAKm3G,MAAM,MACrB,IAAI,OAAQ,CACVA,KAAM,SAAc77H,GAClB,OAAO0kB,KAAKsL,IAAIhwB,GAAKA,GAAK,GACrBynH,EAAMznH,GAAKynH,GAAOznH,IAAM,GACxB0jH,EAAI1jH,EAAI,GAAK0jH,GAAK1jH,EAAI,KAAO0kB,KAAKo3G,EAAI,EAC7C,qBCZF,IAAI/a,EAAU,EAAQ,OAClB0G,EAAQ,EAAQ,MAChB/D,EAAMh/F,KAAKg/F,IAEf3C,EAAQA,EAAQjsE,EAAG,OAAQ,CACzBinF,KAAM,SAAc/7H,GAClB,IAAI+d,EAAI0pG,EAAMznH,GAAKA,GACf1B,EAAImpH,GAAOznH,GACf,OAAO+d,GAAK0hD,IAAW,EAAInhE,GAAKmhE,KAAY,GAAK1hD,EAAIzf,IAAMolH,EAAI1jH,GAAK0jH,GAAK1jH,GAC3E,qBCTF,IAAI+gH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,OAAQ,CACzBknF,MAAO,SAAergF,GACpB,OAAQA,EAAK,EAAIj3B,KAAKC,MAAQD,KAAKmC,MAAM80B,EAC3C,kCCLF,IAAImlE,EAAS,EAAQ,OACjBlsF,EAAM,EAAQ,OACd+lB,EAAM,EAAQ,OACd0mE,EAAoB,EAAQ,OAC5ByB,EAAc,EAAQ,OACtB5B,EAAQ,EAAQ,OAChB0J,EAAO,WACPD,EAAO,WACP3L,EAAK,WACLwM,EAAQ,aACRzI,EAAS,SACTkZ,EAAUnb,EAAOiC,GACjBrS,EAAOurB,EACPxa,EAAQwa,EAAQplI,UAEhBqlI,EAAavhF,EAAI,EAAQ,MAAR,CAA4B8mE,KAAWsB,EACxDoZ,EAAO,SAAUz8G,OAAO7oB,UAGxBulI,EAAW,SAAUC,GACvB,IAAI1gF,EAAKmnE,EAAYuZ,GAAU,GAC/B,GAAiB,iBAAN1gF,GAAkBA,EAAGzlD,OAAS,EAAG,CAE1C,IACIirC,EAAOwqF,EAAO2Q,EADdn2G,GADJw1B,EAAKwgF,EAAOxgF,EAAG7rC,OAAS07G,EAAM7vE,EAAI,IACnBt9B,WAAW,GAE1B,GAAc,KAAV8H,GAA0B,KAAVA,GAElB,GAAc,MADdgb,EAAQwa,EAAGt9B,WAAW,KACQ,MAAV8iB,EAAe,OAAOwhF,SACrC,GAAc,KAAVx8F,EAAc,CACvB,OAAQw1B,EAAGt9B,WAAW,IACpB,KAAK,GAAI,KAAK,GAAIstG,EAAQ,EAAG2Q,EAAU,GAAI,MAC3C,KAAK,GAAI,KAAK,IAAK3Q,EAAQ,EAAG2Q,EAAU,GAAI,MAC5C,QAAS,OAAQ3gF,EAEnB,IAAK,IAAoDl8B,EAAhD88G,EAAS5gF,EAAGphD,MAAM,GAAItE,EAAI,EAAGkE,EAAIoiI,EAAOrmI,OAAcD,EAAIkE,EAAGlE,IAIpE,IAHAwpB,EAAO88G,EAAOl+G,WAAWpoB,IAGd,IAAMwpB,EAAO68G,EAAS,OAAO3Z,IACxC,OAAOjjH,SAAS68H,EAAQ5Q,EAC5B,CACF,CAAE,OAAQhwE,CACZ,EAEA,IAAKsgF,EAAQ,UAAYA,EAAQ,QAAUA,EAAQ,QAAS,CAC1DA,EAAU,SAAgB9kI,GACxB,IAAIwkD,EAAK3iD,UAAU9C,OAAS,EAAI,EAAIiB,EAChC6mH,EAAOjlH,KACX,OAAOilH,aAAgBie,IAEjBC,EAAahb,GAAM,WAAcO,EAAMvpH,QAAQC,KAAK6lH,EAAO,IAAKrjE,EAAIqjE,IAAS+E,GAC7E1B,EAAkB,IAAI3Q,EAAK0rB,EAASzgF,IAAMqiE,EAAMie,GAAWG,EAASzgF,EAC5E,EACA,IAAK,IAMgBllD,EANZyyB,EAAO,EAAQ,OAAoB0hG,EAAKla,GAAQ,6KAMvDh/F,MAAM,KAAMsM,EAAI,EAAQkL,EAAKhzB,OAAS8nB,EAAGA,IACrC4W,EAAI87E,EAAMj6G,EAAMyyB,EAAKlL,MAAQ4W,EAAIqnG,EAASxlI,IAC5CuoH,EAAGid,EAASxlI,EAAKk0H,EAAKja,EAAMj6G,IAGhCwlI,EAAQplI,UAAY4qH,EACpBA,EAAMvqH,YAAc+kI,EACpB,EAAQ,MAAR,CAAuBnb,EAAQiC,EAAQkZ,EACzC,mBCnEA,IAAIlb,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAE4yE,QAAShjG,KAAKwL,IAAI,GAAI,uBCFrD,IAAI6wF,EAAU,EAAQ,OAClByb,EAAY,kBAEhBzb,EAAQA,EAAQjsE,EAAG,SAAU,CAC3BkmB,SAAU,SAAkBrf,GAC1B,MAAoB,iBAANA,GAAkB6gF,EAAU7gF,EAC5C,qBCNF,IAAIolE,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAE2Y,UAAW,EAAQ,0BCFlD,IAAIszD,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAC3Br1C,MAAO,SAAeswH,GAEpB,OAAOA,GAAUA,CACnB,qBCNF,IAAIhP,EAAU,EAAQ,OAClBtzD,EAAY,EAAQ,OACpBz9B,EAAMtL,KAAKsL,IAEf+wF,EAAQA,EAAQjsE,EAAG,SAAU,CAC3B2nF,cAAe,SAAuB1M,GACpC,OAAOtiE,EAAUsiE,IAAW//F,EAAI+/F,IAAW,gBAC7C,qBCPF,IAAIhP,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAEomB,iBAAkB,oCCFjD,IAAI6lD,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAE4nF,kBAAmB,oCCHlD,IAAI3b,EAAU,EAAQ,OAClBwK,EAAc,EAAQ,OAE1BxK,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK7jB,OAAOwzG,YAAcpR,GAAc,SAAU,CAAEoR,WAAYpR,qBCH5F,IAAIxK,EAAU,EAAQ,OAClB0K,EAAY,EAAQ,OAExB1K,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK7jB,OAAOzpB,UAAY+rH,GAAY,SAAU,CAAE/rH,SAAU+rH,iCCFtF,IAAI1K,EAAU,EAAQ,OAClBwM,EAAY,EAAQ,MACpBqP,EAAe,EAAQ,OACvBhP,EAAS,EAAQ,OACjBiP,EAAW,GAAIC,QACfn4G,EAAQD,KAAKC,MACbtiB,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACvB06H,EAAQ,wCACRC,EAAO,IAEPC,EAAW,SAAU5gH,EAAGu4B,GAG1B,IAFA,IAAI3+C,GAAK,EACL24E,EAAKh6B,IACA3+C,EAAI,GACX24E,GAAMvyD,EAAIha,EAAKpM,GACfoM,EAAKpM,GAAK24E,EAAK,IACfA,EAAKjqD,EAAMiqD,EAAK,IAEpB,EACIsuD,EAAS,SAAU7gH,GAGrB,IAFA,IAAIpmB,EAAI,EACJ2+C,EAAI,IACC3+C,GAAK,GACZ2+C,GAAKvyC,EAAKpM,GACVoM,EAAKpM,GAAK0uB,EAAMiwB,EAAIv4B,GACpBu4B,EAAKA,EAAIv4B,EAAK,GAElB,EACI8gH,EAAc,WAGhB,IAFA,IAAIlnI,EAAI,EACJmmB,EAAI,KACCnmB,GAAK,GACZ,GAAU,KAANmmB,GAAkB,IAANnmB,GAAuB,IAAZoM,EAAKpM,GAAU,CACxC,IAAIkmB,EAAIuD,OAAOrd,EAAKpM,IACpBmmB,EAAU,KAANA,EAAWD,EAAIC,EAAIwxG,EAAOz1H,KAAK6kI,EAAM,EAAI7gH,EAAEjmB,QAAUimB,CAC3D,CACA,OAAOC,CACX,EACI8T,EAAM,SAAUlwB,EAAGqc,EAAG6L,GACxB,OAAa,IAAN7L,EAAU6L,EAAM7L,EAAI,GAAM,EAAI6T,EAAIlwB,EAAGqc,EAAI,EAAG6L,EAAMloB,GAAKkwB,EAAIlwB,EAAIA,EAAGqc,EAAI,EAAG6L,EAClF,EAcA64F,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,KAAO6vF,IACV,UAAvB,KAAQC,QAAQ,IACG,MAAnB,GAAIA,QAAQ,IACS,SAArB,MAAMA,QAAQ,IACuB,yBAArC,mBAAsBA,QAAQ,MAC1B,EAAQ,MAAR,EAAoB,WAExBD,EAAS1kI,KAAK,CAAC,EACjB,KAAK,SAAU,CACb2kI,QAAS,SAAiBM,GACxB,IAIIhlI,EAAG68C,EAAGj3B,EAAGF,EAJT9d,EAAI48H,EAAa7jI,KAAMgkI,GACvB9pH,EAAIs6G,EAAU6P,GACdhhH,EAAI,GACJ83B,EAAI8oF,EAER,GAAI/pH,EAAI,GAAKA,EAAI,GAAI,MAAM2vG,WAAWma,GAEtC,GAAI/8H,GAAKA,EAAG,MAAO,MACnB,GAAIA,IAAM,MAAQA,GAAK,KAAM,OAAO0f,OAAO1f,GAK3C,GAJIA,EAAI,IACNoc,EAAI,IACJpc,GAAKA,GAEHA,EAAI,MAKN,GAJA5H,EArCI,SAAU4H,GAGlB,IAFA,IAAIqc,EAAI,EACJ6mD,EAAKljE,EACFkjE,GAAM,MACX7mD,GAAK,GACL6mD,GAAM,KAER,KAAOA,GAAM,GACX7mD,GAAK,EACL6mD,GAAM,EACN,OAAO7mD,CACX,CA0BU7f,CAAIwD,EAAIkwB,EAAI,EAAG,GAAI,IAAM,GAC7B+kB,EAAI78C,EAAI,EAAI4H,EAAIkwB,EAAI,GAAI93B,EAAG,GAAK4H,EAAIkwB,EAAI,EAAG93B,EAAG,GAC9C68C,GAAK,kBACL78C,EAAI,GAAKA,GACD,EAAG,CAGT,IAFA6kI,EAAS,EAAGhoF,GACZj3B,EAAI/K,EACG+K,GAAK,GACVi/G,EAAS,IAAK,GACdj/G,GAAK,EAIP,IAFAi/G,EAAS/sG,EAAI,GAAIlS,EAAG,GAAI,GACxBA,EAAI5lB,EAAI,EACD4lB,GAAK,IACVk/G,EAAO,GAAK,IACZl/G,GAAK,GAEPk/G,EAAO,GAAKl/G,GACZi/G,EAAS,EAAG,GACZC,EAAO,GACPhpF,EAAIipF,GACN,MACEF,EAAS,EAAGhoF,GACZgoF,EAAS,IAAM7kI,EAAG,GAClB87C,EAAIipF,IAAgBvP,EAAOz1H,KAAK6kI,EAAM/pH,GAQxC,OAHAihC,EAFEjhC,EAAI,EAEFmJ,IADJ0B,EAAIo2B,EAAEh+C,SACQ+c,EAAI,KAAO26G,EAAOz1H,KAAK6kI,EAAM/pH,EAAI6K,GAAKo2B,EAAIA,EAAE35C,MAAM,EAAGujB,EAAI7K,GAAK,IAAMihC,EAAE35C,MAAMujB,EAAI7K,IAE1FmJ,EAAI83B,CAEZ,kCC/GF,IAAI6sE,EAAU,EAAQ,OAClBsc,EAAS,EAAQ,OACjBT,EAAe,EAAQ,OACvBU,EAAe,GAAIC,YAEvBxc,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,GAAKqwF,GAAO,WAEtC,MAA2C,MAApCC,EAAanlI,KAAK,OAAGgD,EAC9B,MAAOkiI,GAAO,WAEZC,EAAanlI,KAAK,CAAC,EACrB,KAAK,SAAU,CACbolI,YAAa,SAAqBC,GAChC,IAAIxf,EAAO4e,EAAa7jI,KAAM,6CAC9B,YAAqBoC,IAAdqiI,EAA0BF,EAAanlI,KAAK6lH,GAAQsf,EAAanlI,KAAK6lH,EAAMwf,EACrF,qBCfF,IAAIzc,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAG,SAAU,CAAE9wB,OAAQ,EAAQ,wBCH3D,IAAI6kG,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAE79C,OAAQ,EAAQ,0BCF/C,IAAI8pH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK,EAAQ,OAAmB,SAAU,CAAEizD,iBAAkB,EAAQ,yBCFlG,IAAI8gB,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK,EAAQ,OAAmB,SAAU,CAAEx2C,eAAgB,8BCDxF,IAAIgmH,EAAW,EAAQ,OACnByE,EAAO,kBAEX,EAAQ,IAAR,CAAyB,UAAU,SAAUwc,GAC3C,OAAO,SAAgB9hF,GACrB,OAAO8hF,GAAWjhB,EAAS7gE,GAAM8hF,EAAQxc,EAAKtlE,IAAOA,CACvD,CACF,qBCPA,IAAIshE,EAAY,EAAQ,OACpBygB,EAA4B,WAEhC,EAAQ,IAAR,CAAyB,4BAA4B,WACnD,OAAO,SAAkC/hF,EAAIllD,GAC3C,OAAOinI,EAA0BzgB,EAAUthE,GAAKllD,EAClD,CACF,qBCPA,EAAQ,IAAR,CAAyB,uBAAuB,WAC9C,OAAO,UACT,qBCFA,IAAIgmH,EAAW,EAAQ,OACnBkhB,EAAkB,EAAQ,OAE9B,EAAQ,IAAR,CAAyB,kBAAkB,WACzC,OAAO,SAAwBhiF,GAC7B,OAAOgiF,EAAgBlhB,EAAS9gE,GAClC,CACF,qBCPA,IAAI6gE,EAAW,EAAQ,OAEvB,EAAQ,IAAR,CAAyB,gBAAgB,SAAUohB,GACjD,OAAO,SAAsBjiF,GAC3B,QAAO6gE,EAAS7gE,MAAMiiF,GAAgBA,EAAcjiF,GACtD,CACF,qBCNA,IAAI6gE,EAAW,EAAQ,OAEvB,EAAQ,IAAR,CAAyB,YAAY,SAAUqhB,GAC7C,OAAO,SAAkBliF,GACvB,OAAO6gE,EAAS7gE,MAAMkiF,GAAYA,EAAUliF,EAC9C,CACF,qBCNA,IAAI6gE,EAAW,EAAQ,OAEvB,EAAQ,IAAR,CAAyB,YAAY,SAAUshB,GAC7C,OAAO,SAAkBniF,GACvB,OAAO6gE,EAAS7gE,MAAMmiF,GAAYA,EAAUniF,EAC9C,CACF,qBCNA,IAAIolE,EAAU,EAAQ,OACtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAEmuE,GAAI,EAAQ,0BCD3C,IAAIxG,EAAW,EAAQ,OACnBuO,EAAQ,EAAQ,OAEpB,EAAQ,IAAR,CAAyB,QAAQ,WAC/B,OAAO,SAAcrvE,GACnB,OAAOqvE,EAAMvO,EAAS9gE,GACxB,CACF,qBCPA,IAAI6gE,EAAW,EAAQ,OACnByE,EAAO,kBAEX,EAAQ,IAAR,CAAyB,qBAAqB,SAAU8c,GACtD,OAAO,SAA2BpiF,GAChC,OAAOoiF,GAAsBvhB,EAAS7gE,GAAMoiF,EAAmB9c,EAAKtlE,IAAOA,CAC7E,CACF,qBCPA,IAAI6gE,EAAW,EAAQ,OACnByE,EAAO,kBAEX,EAAQ,IAAR,CAAyB,QAAQ,SAAU+c,GACzC,OAAO,SAAcriF,GACnB,OAAOqiF,GAASxhB,EAAS7gE,GAAMqiF,EAAM/c,EAAKtlE,IAAOA,CACnD,CACF,qBCPA,IAAIolE,EAAU,EAAQ,OACtBA,EAAQA,EAAQjsE,EAAG,SAAU,CAAEv9C,eAAgB,6CCA/C,IAAI60H,EAAU,EAAQ,OAClB3wG,EAAO,CAAC,EACZA,EAAK,EAAQ,MAAR,CAAkB,gBAAkB,IACrCA,EAAO,IAAM,cACf,EAAQ,MAAR,CAAuBllB,OAAOM,UAAW,YAAY,WACnD,MAAO,WAAau1H,EAAQrzH,MAAQ,GACtC,IAAG,oBCRL,IAAIgoH,EAAU,EAAQ,OAClBwK,EAAc,EAAQ,OAE1BxK,EAAQA,EAAQoB,EAAIpB,EAAQ/zE,GAAK2vF,YAAcpR,GAAc,CAAEoR,WAAYpR,qBCH3E,IAAIxK,EAAU,EAAQ,OAClB0K,EAAY,EAAQ,OAExB1K,EAAQA,EAAQoB,EAAIpB,EAAQ/zE,GAAKttC,UAAY+rH,GAAY,CAAE/rH,SAAU+rH,iCCFrE,IAwBIwS,EAAUC,EAA6BC,EAAsBC,EAxB7DhY,EAAU,EAAQ,OAClBtF,EAAS,EAAQ,OACjBzD,EAAM,EAAQ,OACd+O,EAAU,EAAQ,OAClBrL,EAAU,EAAQ,OAClBvE,EAAW,EAAQ,OACnByB,EAAY,EAAQ,OACpBiB,EAAa,EAAQ,OACrBC,EAAQ,EAAQ,OAChBd,EAAqB,EAAQ,OAC7BmL,EAAO,aACP6U,EAAY,EAAQ,MAAR,GACZC,EAA6B,EAAQ,OACrCC,EAAU,EAAQ,OAClB5uC,EAAY,EAAQ,OACpB6uC,EAAiB,EAAQ,MACzBC,EAAU,UACV5oI,EAAYirH,EAAOjrH,UACnBo5F,EAAU6xB,EAAO7xB,QACjByvC,EAAWzvC,GAAWA,EAAQyvC,SAC9BC,EAAKD,GAAYA,EAASC,IAAM,GAChCC,EAAW9d,EAAO2d,GAClB5V,EAA6B,WAApBuD,EAAQn9B,GACjB1/C,EAAQ,WAA0B,EAElCq8E,EAAuBsS,EAA8BI,EAA2BrrH,EAEhF4rH,IAAe,WACjB,IAEE,IAAIzV,EAAUwV,EAASlkI,QAAQ,GAC3BokI,GAAe1V,EAAQlyH,YAAc,CAAC,GAAG,EAAQ,MAAR,CAAkB,YAAc,SAAUi5F,GACrFA,EAAK5gD,EAAOA,EACd,EAEA,OAAQs5E,GAA0C,mBAAzBkW,wBACpB3V,EAAQzuH,KAAK40C,aAAkBuvF,GAIT,IAAtBH,EAAG91H,QAAQ,SACyB,IAApC8mF,EAAU9mF,QAAQ,YACzB,CAAE,MAAOzQ,GAAiB,CAC5B,CAhBmB,GAmBf4mI,EAAa,SAAUrjF,GACzB,IAAIhhD,EACJ,SAAO6hH,EAAS7gE,IAAkC,mBAAnBhhD,EAAOghD,EAAGhhD,QAAsBA,CACjE,EACImuH,EAAS,SAAUM,EAAS6V,GAC9B,IAAI7V,EAAQjpB,GAAZ,CACAipB,EAAQjpB,IAAK,EACb,IAAI++B,EAAQ9V,EAAQ5mG,GACpB67G,GAAU,WAoCR,IAnCA,IAAIlnI,EAAQiyH,EAAQ+V,GAChBC,EAAmB,GAAdhW,EAAQhpB,GACbnqG,EAAI,EACJu5H,EAAM,SAAU6P,GAClB,IAIIzmI,EAAQ+B,EAAM2kI,EAJdC,EAAUH,EAAKC,EAASD,GAAKC,EAASG,KACtC9kI,EAAU2kI,EAAS3kI,QACnBiiB,EAAS0iH,EAAS1iH,OAClBosG,EAASsW,EAAStW,OAEtB,IACMwW,GACGH,IACe,GAAdhW,EAAQlmG,IAASu8G,EAAkBrW,GACvCA,EAAQlmG,GAAK,IAEC,IAAZq8G,EAAkB3mI,EAASzB,GAEzB4xH,GAAQA,EAAOE,QACnBrwH,EAAS2mI,EAAQpoI,GACb4xH,IACFA,EAAOC,OACPsW,GAAS,IAGT1mI,IAAWymI,EAASjW,QACtBzsG,EAAO9mB,EAAU,yBACR8E,EAAOqkI,EAAWpmI,IAC3B+B,EAAKxC,KAAKS,EAAQ8B,EAASiiB,GACtBjiB,EAAQ9B,IACV+jB,EAAOxlB,EAChB,CAAE,MAAOiB,GACH2wH,IAAWuW,GAAQvW,EAAOC,OAC9BrsG,EAAOvkB,EACT,CACF,EACO8mI,EAAMhpI,OAASD,GAAGu5H,EAAI0P,EAAMjpI,MACnCmzH,EAAQ5mG,GAAK,GACb4mG,EAAQjpB,IAAK,EACT8+B,IAAa7V,EAAQlmG,IAAIw8G,EAAYtW,EAC3C,GA3CsB,CA4CxB,EACIsW,EAAc,SAAUtW,GAC1BI,EAAKrxH,KAAK2oH,GAAQ,WAChB,IAEIloH,EAAQ2mI,EAAS/pI,EAFjB2B,EAAQiyH,EAAQ+V,GAChBQ,EAAYC,EAAYxW,GAe5B,GAbIuW,IACF/mI,EAAS2lI,GAAQ,WACX1V,EACF55B,EAAQ4wC,KAAK,qBAAsB1oI,EAAOiyH,IACjCmW,EAAUze,EAAOgf,sBAC1BP,EAAQ,CAAEnW,QAASA,EAAS7tH,OAAQpE,KAC1B3B,EAAUsrH,EAAOtrH,UAAYA,EAAQiI,OAC/CjI,EAAQiI,MAAM,8BAA+BtG,EAEjD,IAEAiyH,EAAQlmG,GAAK2lG,GAAU+W,EAAYxW,GAAW,EAAI,GAClDA,EAAQhnG,QAAKjnB,EACXwkI,GAAa/mI,EAAOR,EAAG,MAAMQ,EAAO4kB,CAC1C,GACF,EACIoiH,EAAc,SAAUxW,GAC1B,OAAsB,IAAfA,EAAQlmG,IAAkD,KAArCkmG,EAAQhnG,IAAMgnG,EAAQ5mG,IAAItsB,MACxD,EACIupI,EAAoB,SAAUrW,GAChCI,EAAKrxH,KAAK2oH,GAAQ,WAChB,IAAIye,EACA1W,EACF55B,EAAQ4wC,KAAK,mBAAoBzW,IACxBmW,EAAUze,EAAOif,qBAC1BR,EAAQ,CAAEnW,QAASA,EAAS7tH,OAAQ6tH,EAAQ+V,IAEhD,GACF,EACIa,EAAU,SAAU7oI,GACtB,IAAIiyH,EAAUrwH,KACVqwH,EAAQ1mG,KACZ0mG,EAAQ1mG,IAAK,GACb0mG,EAAUA,EAAQ6W,IAAM7W,GAChB+V,GAAKhoI,EACbiyH,EAAQhpB,GAAK,EACRgpB,EAAQhnG,KAAIgnG,EAAQhnG,GAAKgnG,EAAQ5mG,GAAGjoB,SACzCuuH,EAAOM,GAAS,GAClB,EACI8W,EAAW,SAAU/oI,GACvB,IACIwD,EADAyuH,EAAUrwH,KAEd,IAAIqwH,EAAQ1mG,GAAZ,CACA0mG,EAAQ1mG,IAAK,EACb0mG,EAAUA,EAAQ6W,IAAM7W,EACxB,IACE,GAAIA,IAAYjyH,EAAO,MAAMtB,EAAU,qCACnC8E,EAAOqkI,EAAW7nI,IACpBknI,GAAU,WACR,IAAIze,EAAU,CAAEqgB,GAAI7W,EAAS1mG,IAAI,GACjC,IACE/nB,EAAKxC,KAAKhB,EAAOkmH,EAAI6iB,EAAUtgB,EAAS,GAAIvC,EAAI2iB,EAASpgB,EAAS,GACpE,CAAE,MAAOxnH,GACP4nI,EAAQ7nI,KAAKynH,EAASxnH,EACxB,CACF,KAEAgxH,EAAQ+V,GAAKhoI,EACbiyH,EAAQhpB,GAAK,EACb0oB,EAAOM,GAAS,GAEpB,CAAE,MAAOhxH,GACP4nI,EAAQ7nI,KAAK,CAAE8nI,GAAI7W,EAAS1mG,IAAI,GAAStqB,EAC3C,CArBsB,CAsBxB,EAGKymI,IAEHD,EAAW,SAAiBuB,GAC1BjhB,EAAWnmH,KAAM6lI,EAAUH,EAAS,MACpCxgB,EAAUkiB,GACVlC,EAAS9lI,KAAKY,MACd,IACEonI,EAAS9iB,EAAI6iB,EAAUnnI,KAAM,GAAIskH,EAAI2iB,EAASjnI,KAAM,GACtD,CAAE,MAAOoD,GACP6jI,EAAQ7nI,KAAKY,KAAMoD,EACrB,CACF,GAEA8hI,EAAW,SAAiBkC,GAC1BpnI,KAAKypB,GAAK,GACVzpB,KAAKqpB,QAAKjnB,EACVpC,KAAKqnG,GAAK,EACVrnG,KAAK2pB,IAAK,EACV3pB,KAAKomI,QAAKhkI,EACVpC,KAAKmqB,GAAK,EACVnqB,KAAKonG,IAAK,CACZ,GACStpG,UAAY,EAAQ,MAAR,CAA2B+nI,EAAS/nI,UAAW,CAElE8D,KAAM,SAAcylI,EAAaC,GAC/B,IAAIhB,EAAWzT,EAAqBvN,EAAmBtlH,KAAM6lI,IAO7D,OANAS,EAASD,GAA2B,mBAAfgB,GAA4BA,EACjDf,EAASG,KAA4B,mBAAda,GAA4BA,EACnDhB,EAAStW,OAASF,EAAS55B,EAAQ85B,YAAS5tH,EAC5CpC,KAAKypB,GAAGvoB,KAAKolI,GACTtmI,KAAKqpB,IAAIrpB,KAAKqpB,GAAGnoB,KAAKolI,GACtBtmI,KAAKqnG,IAAI0oB,EAAO/vH,MAAM,GACnBsmI,EAASjW,OAClB,EAEA,MAAS,SAAUiX,GACjB,OAAOtnI,KAAK4B,UAAKQ,EAAWklI,EAC9B,IAEFlC,EAAuB,WACrB,IAAI/U,EAAU,IAAI6U,EAClBllI,KAAKqwH,QAAUA,EACfrwH,KAAK2B,QAAU2iH,EAAI6iB,EAAU9W,EAAS,GACtCrwH,KAAK4jB,OAAS0gG,EAAI2iB,EAAS5W,EAAS,EACtC,EACAkV,EAA2BrrH,EAAI24G,EAAuB,SAAU53E,GAC9D,OAAOA,IAAM4qF,GAAY5qF,IAAMoqF,EAC3B,IAAID,EAAqBnqF,GACzBkqF,EAA4BlqF,EAClC,GAGF+sE,EAAQA,EAAQoB,EAAIpB,EAAQx4E,EAAIw4E,EAAQ/zE,GAAK6xF,EAAY,CAAEpkI,QAASmkI,IACpE,EAAQ,MAAR,CAAgCA,EAAUH,GAC1C,EAAQ,MAAR,CAA0BA,GAC1BL,EAAU,EAAQ,OAAWK,GAG7B1d,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK6xF,EAAYJ,EAAS,CAEpD9hH,OAAQ,SAAgBkB,GACtB,IAAIyiH,EAAa1U,EAAqB7yH,MAGtC,OADA4wH,EADe2W,EAAW3jH,QACjBkB,GACFyiH,EAAWlX,OACpB,IAEFrI,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAKo5E,IAAYyY,GAAaJ,EAAS,CAEjE/jI,QAAS,SAAiBsF,GACxB,OAAOw+H,EAAepY,GAAWrtH,OAASqlI,EAAUQ,EAAW7lI,KAAMiH,EACvE,IAEF+gH,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,IAAM6xF,GAAc,EAAQ,MAAR,EAA0B,SAAU9c,GAClF6c,EAAS2B,IAAIxe,GAAa,MAAExyE,EAC9B,KAAKkvF,EAAS,CAEZ8B,IAAK,SAAaxgB,GAChB,IAAI/rE,EAAIj7C,KACJunI,EAAa1U,EAAqB53E,GAClCt5C,EAAU4lI,EAAW5lI,QACrBiiB,EAAS2jH,EAAW3jH,OACpB/jB,EAAS2lI,GAAQ,WACnB,IAAIj0G,EAAS,GACTllB,EAAQ,EACRo7H,EAAY,EAChBrhB,EAAMY,GAAU,GAAO,SAAUqJ,GAC/B,IAAIqX,EAASr7H,IACTs7H,GAAgB,EACpBp2G,EAAOrwB,UAAKkB,GACZqlI,IACAxsF,EAAEt5C,QAAQ0uH,GAASzuH,MAAK,SAAUxD,GAC5BupI,IACJA,GAAgB,EAChBp2G,EAAOm2G,GAAUtpI,IACfqpI,GAAa9lI,EAAQ4vB,GACzB,GAAG3N,EACL,MACE6jH,GAAa9lI,EAAQ4vB,EACzB,IAEA,OADI1xB,EAAOR,GAAGukB,EAAO/jB,EAAO4kB,GACrB8iH,EAAWlX,OACpB,EAEAuX,KAAM,SAAc5gB,GAClB,IAAI/rE,EAAIj7C,KACJunI,EAAa1U,EAAqB53E,GAClCr3B,EAAS2jH,EAAW3jH,OACpB/jB,EAAS2lI,GAAQ,WACnBpf,EAAMY,GAAU,GAAO,SAAUqJ,GAC/Bp1E,EAAEt5C,QAAQ0uH,GAASzuH,KAAK2lI,EAAW5lI,QAASiiB,EAC9C,GACF,IAEA,OADI/jB,EAAOR,GAAGukB,EAAO/jB,EAAO4kB,GACrB8iH,EAAWlX,OACpB,qBC3RF,IAAIrI,EAAU,EAAQ,OAClB9C,EAAY,EAAQ,OACpBoC,EAAW,EAAQ,MACnBugB,GAAU,kBAAgC,CAAC,GAAG3nI,MAC9C4nI,EAASl2G,SAAS1xB,MAEtB8nH,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK,EAAQ,MAAR,EAAoB,WACnD4zF,GAAO,WAA0B,GACnC,IAAI,UAAW,CACb3nI,MAAO,SAAelD,EAAQ+qI,EAAcC,GAC1C,IAAI/rF,EAAIipE,EAAUloH,GACd2oD,EAAI2hE,EAAS0gB,GACjB,OAAOH,EAASA,EAAO5rF,EAAG8rF,EAAcpiF,GAAKmiF,EAAO1oI,KAAK68C,EAAG8rF,EAAcpiF,EAC5E,qBCbF,IAAIqiE,EAAU,EAAQ,OAClB9pH,EAAS,EAAQ,OACjBgnH,EAAY,EAAQ,OACpBoC,EAAW,EAAQ,MACnB7D,EAAW,EAAQ,OACnB0E,EAAQ,EAAQ,OAChBzpH,EAAO,EAAQ,MACfupI,GAAc,kBAAgC,CAAC,GAAGlpI,UAIlDmpI,EAAiB/f,GAAM,WACzB,SAASl0E,IAAkB,CAC3B,QAASg0F,GAAW,WAA0B,GAAG,GAAIh0F,aAAcA,EACrE,IACIk0F,GAAYhgB,GAAM,WACpB8f,GAAW,WAA0B,GACvC,IAEAjgB,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAKi0F,GAAkBC,GAAW,UAAW,CACvEppI,UAAW,SAAmBqpI,EAAQhrG,GACpC8nF,EAAUkjB,GACV9gB,EAASlqF,GACT,IAAIirG,EAAYpoI,UAAU9C,OAAS,EAAIirI,EAASljB,EAAUjlH,UAAU,IACpE,GAAIkoI,IAAaD,EAAgB,OAAOD,EAAWG,EAAQhrG,EAAMirG,GACjE,GAAID,GAAUC,EAAW,CAEvB,OAAQjrG,EAAKjgC,QACX,KAAK,EAAG,OAAO,IAAIirI,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAOhrG,EAAK,IAC/B,KAAK,EAAG,OAAO,IAAIgrG,EAAOhrG,EAAK,GAAIA,EAAK,IACxC,KAAK,EAAG,OAAO,IAAIgrG,EAAOhrG,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjD,KAAK,EAAG,OAAO,IAAIgrG,EAAOhrG,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG5D,IAAIkrG,EAAQ,CAAC,MAEb,OADAA,EAAMpnI,KAAKhB,MAAMooI,EAAOlrG,GACjB,IAAK1+B,EAAKwB,MAAMkoI,EAAQE,GACjC,CAEA,IAAI5f,EAAQ2f,EAAUvqI,UAClBlB,EAAWsB,EAAOulH,EAASiF,GAASA,EAAQlrH,OAAOM,WACnD+B,EAAS+xB,SAAS1xB,MAAMd,KAAKgpI,EAAQxrI,EAAUwgC,GACnD,OAAOqmF,EAAS5jH,GAAUA,EAASjD,CACrC,qBC5CF,IAAIqpH,EAAK,EAAQ,OACb+B,EAAU,EAAQ,OAClBV,EAAW,EAAQ,MACnByC,EAAc,EAAQ,OAG1B/B,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAElDn1C,QAAQrB,eAAewoH,EAAG/rG,EAAE,CAAC,EAAG,EAAG,CAAE9b,MAAO,IAAM,EAAG,CAAEA,MAAO,GAChE,IAAI,UAAW,CACbX,eAAgB,SAAwBT,EAAQurI,EAAapmH,GAC3DmlG,EAAStqH,GACTurI,EAAcxe,EAAYwe,GAAa,GACvCjhB,EAASnlG,GACT,IAEE,OADA8jG,EAAG/rG,EAAEld,EAAQurI,EAAapmH,IACnB,CACT,CAAE,MAAO9iB,GACP,OAAO,CACT,CACF,qBCpBF,IAAI2oH,EAAU,EAAQ,OAClB4J,EAAO,WACPtK,EAAW,EAAQ,MAEvBU,EAAQA,EAAQjsE,EAAG,UAAW,CAC5BysF,eAAgB,SAAwBxrI,EAAQurI,GAC9C,IAAI5nI,EAAOixH,EAAKtK,EAAStqH,GAASurI,GAClC,QAAO5nI,IAASA,EAAKrD,sBAA8BN,EAAOurI,EAC5D,kCCPF,IAAIvgB,EAAU,EAAQ,OAClBV,EAAW,EAAQ,MACnBmhB,EAAY,SAAUthB,GACxBnnH,KAAKinH,GAAKK,EAASH,GACnBnnH,KAAK8qB,GAAK,EACV,IACIptB,EADAyyB,EAAOnwB,KAAK00F,GAAK,GAErB,IAAKh3F,KAAOypH,EAAUh3F,EAAKjvB,KAAKxD,EAClC,EACA,EAAQ,MAAR,CAA0B+qI,EAAW,UAAU,WAC7C,IAEI/qI,EAFAunH,EAAOjlH,KACPmwB,EAAO80F,EAAKvwB,GAEhB,GACE,GAAIuwB,EAAKn6F,IAAMqF,EAAKhzB,OAAQ,MAAO,CAAEiB,WAAOgE,EAAW2hB,MAAM,YACnDrmB,EAAMyyB,EAAK80F,EAAKn6F,SAAUm6F,EAAKgC,KAC3C,MAAO,CAAE7oH,MAAOV,EAAKqmB,MAAM,EAC7B,IAEAikG,EAAQA,EAAQjsE,EAAG,UAAW,CAC5B2sF,UAAW,SAAmB1rI,GAC5B,OAAO,IAAIyrI,EAAUzrI,EACvB,qBCvBF,IAAI40H,EAAO,EAAQ,OACf5J,EAAU,EAAQ,OAClBV,EAAW,EAAQ,MAEvBU,EAAQA,EAAQjsE,EAAG,UAAW,CAC5Bn7C,yBAA0B,SAAkC5D,EAAQurI,GAClE,OAAO3W,EAAK13G,EAAEotG,EAAStqH,GAASurI,EAClC,qBCPF,IAAIvgB,EAAU,EAAQ,OAClB2gB,EAAW,EAAQ,OACnBrhB,EAAW,EAAQ,MAEvBU,EAAQA,EAAQjsE,EAAG,UAAW,CAC5Bt9C,eAAgB,SAAwBzB,GACtC,OAAO2rI,EAASrhB,EAAStqH,GAC3B,qBCPF,IAAI40H,EAAO,EAAQ,OACfnzH,EAAiB,EAAQ,OACzBo9B,EAAM,EAAQ,OACdmsF,EAAU,EAAQ,OAClBvE,EAAW,EAAQ,OACnB6D,EAAW,EAAQ,MAcvBU,EAAQA,EAAQjsE,EAAG,UAAW,CAAEv7C,IAZhC,SAASA,EAAIxD,EAAQurI,GACnB,IACI5nI,EAAM+nH,EADNjoH,EAAWR,UAAU9C,OAAS,EAAIH,EAASiD,UAAU,GAEzD,OAAIqnH,EAAStqH,KAAYyD,EAAiBzD,EAAOurI,IAC7C5nI,EAAOixH,EAAK13G,EAAEld,EAAQurI,IAAqB1sG,EAAIl7B,EAAM,SACrDA,EAAKvC,WACQgE,IAAbzB,EAAKH,IACHG,EAAKH,IAAIpB,KAAKqB,QACd2B,EACFqhH,EAASiF,EAAQjqH,EAAezB,IAAiBwD,EAAIkoH,EAAO6f,EAAa9nI,QAA7E,CACF,oBCjBA,IAAIunH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,UAAW,CAC5BlgB,IAAK,SAAa7+B,EAAQurI,GACxB,OAAOA,KAAevrI,CACxB,qBCLF,IAAIgrH,EAAU,EAAQ,OAClBV,EAAW,EAAQ,MACnBud,EAAgBrnI,OAAO6xH,aAE3BrH,EAAQA,EAAQjsE,EAAG,UAAW,CAC5BszE,aAAc,SAAsBryH,GAElC,OADAsqH,EAAStqH,IACF6nI,GAAgBA,EAAc7nI,EACvC,oBCRF,IAAIgrH,EAAU,EAAQ,OAEtBA,EAAQA,EAAQjsE,EAAG,UAAW,CAAEw2E,QAAS,EAAQ,0BCFjD,IAAIvK,EAAU,EAAQ,OAClBV,EAAW,EAAQ,MACnB0d,EAAqBxnI,OAAO+xH,kBAEhCvH,EAAQA,EAAQjsE,EAAG,UAAW,CAC5BwzE,kBAAmB,SAA2BvyH,GAC5CsqH,EAAStqH,GACT,IAEE,OADIgoI,GAAoBA,EAAmBhoI,IACpC,CACT,CAAE,MAAOqC,GACP,OAAO,CACT,CACF,oBCbF,IAAI2oH,EAAU,EAAQ,OAClB4gB,EAAW,EAAQ,OAEnBA,GAAU5gB,EAAQA,EAAQjsE,EAAG,UAAW,CAC1Cv9C,eAAgB,SAAwBxB,EAAQ0rH,GAC9CkgB,EAASv7E,MAAMrwD,EAAQ0rH,GACvB,IAEE,OADAkgB,EAASlxG,IAAI16B,EAAQ0rH,IACd,CACT,CAAE,MAAOrpH,GACP,OAAO,CACT,CACF,qBCZF,IAAI4mH,EAAK,EAAQ,OACb2L,EAAO,EAAQ,OACfnzH,EAAiB,EAAQ,OACzBo9B,EAAM,EAAQ,OACdmsF,EAAU,EAAQ,OAClBwB,EAAa,EAAQ,OACrBlC,EAAW,EAAQ,MACnB7D,EAAW,EAAQ,OAwBvBuE,EAAQA,EAAQjsE,EAAG,UAAW,CAAErkB,IAtBhC,SAASA,EAAI16B,EAAQurI,EAAa/sF,GAChC,IAEIqtF,EAAoBngB,EAFpBjoH,EAAWR,UAAU9C,OAAS,EAAIH,EAASiD,UAAU,GACrD6oI,EAAUlX,EAAK13G,EAAEotG,EAAStqH,GAASurI,GAEvC,IAAKO,EAAS,CACZ,GAAIrlB,EAASiF,EAAQjqH,EAAezB,IAClC,OAAO06B,EAAIgxF,EAAO6f,EAAa/sF,EAAG/6C,GAEpCqoI,EAAUtf,EAAW,EACvB,CACA,GAAI3tF,EAAIitG,EAAS,SAAU,CACzB,IAAyB,IAArBA,EAAQvrI,WAAuBkmH,EAAShjH,GAAW,OAAO,EAC9D,GAAIooI,EAAqBjX,EAAK13G,EAAEzZ,EAAU8nI,GAAc,CACtD,GAAIM,EAAmBroI,KAAOqoI,EAAmBnxG,MAAuC,IAAhCmxG,EAAmBtrI,SAAoB,OAAO,EACtGsrI,EAAmBzqI,MAAQo9C,EAC3ByqE,EAAG/rG,EAAEzZ,EAAU8nI,EAAaM,EAC9B,MAAO5iB,EAAG/rG,EAAEzZ,EAAU8nI,EAAa/e,EAAW,EAAGhuE,IACjD,OAAO,CACT,CACA,YAAuBp5C,IAAhB0mI,EAAQpxG,MAA6BoxG,EAAQpxG,IAAIt4B,KAAKqB,EAAU+6C,IAAI,EAC7E,qBC9BA,IAAIusE,EAAS,EAAQ,OACjBO,EAAoB,EAAQ,OAC5BrC,EAAK,WACL4L,EAAO,WACP1E,EAAW,EAAQ,OACnB4b,EAAS,EAAQ,OACjBC,EAAUjhB,EAAOx/F,OACjBovF,EAAOqxB,EACPtgB,EAAQsgB,EAAQlrI,UAChBy1H,EAAM,KACNC,EAAM,KAENyV,EAAc,IAAID,EAAQzV,KAASA,EAEvC,GAAI,EAAQ,UAAuB0V,GAAe,EAAQ,MAAR,EAAoB,WAGpE,OAFAzV,EAAI,EAAQ,MAAR,CAAkB,WAAY,EAE3BwV,EAAQzV,IAAQA,GAAOyV,EAAQxV,IAAQA,GAA4B,QAArBwV,EAAQzV,EAAK,IACpE,KAAK,CACHyV,EAAU,SAAgBpqI,EAAGsb,GAC3B,IAAIgvH,EAAOlpI,gBAAgBgpI,EACvBG,EAAOhc,EAASvuH,GAChBwqI,OAAYhnI,IAAN8X,EACV,OAAQgvH,GAAQC,GAAQvqI,EAAET,cAAgB6qI,GAAWI,EAAMxqI,EACvD0pH,EAAkB2gB,EAChB,IAAItxB,EAAKwxB,IAASC,EAAMxqI,EAAEqwD,OAASrwD,EAAGsb,GACtCy9F,GAAMwxB,EAAOvqI,aAAaoqI,GAAWpqI,EAAEqwD,OAASrwD,EAAGuqI,GAAQC,EAAML,EAAO3pI,KAAKR,GAAKsb,GACpFgvH,EAAOlpI,KAAO0oH,EAAOsgB,EAC3B,EAQA,IAPA,IAAIK,EAAQ,SAAU3rI,GACpBA,KAAOsrI,GAAW/iB,EAAG+iB,EAAStrI,EAAK,CACjCJ,cAAc,EACdkD,IAAK,WAAc,OAAOm3G,EAAKj6G,EAAM,EACrCg6B,IAAK,SAAUkrB,GAAM+0D,EAAKj6G,GAAOklD,CAAI,GAEzC,EACSzyB,EAAO0hG,EAAKla,GAAOz6G,EAAI,EAAGizB,EAAKhzB,OAASD,GAAImsI,EAAMl5G,EAAKjzB,MAChEwrH,EAAMvqH,YAAc6qI,EACpBA,EAAQlrI,UAAY4qH,EACpB,EAAQ,MAAR,CAAuBX,EAAQ,SAAUihB,EAC3C,CAEA,EAAQ,MAAR,CAA0B,wCCzC1B,IAAIzd,EAAa,EAAQ,OACzB,EAAQ,MAAR,CAAqB,CACnBvuH,OAAQ,SACR0rH,OAAO,EACPoX,OAAQvU,IAAe,IAAIn0B,MAC1B,CACDA,KAAMm0B,qBCNJ,EAAQ,QAAmC,KAAd,KAAKl7E,OAAc,WAA0B9nB,OAAOzqB,UAAW,QAAS,CACvGR,cAAc,EACdkD,IAAK,EAAQ,uCCDf,IAAI8mH,EAAW,EAAQ,MACnB1D,EAAW,EAAQ,OACnB0lB,EAAqB,EAAQ,OAC7BC,EAAa,EAAQ,OAGzB,EAAQ,MAAR,CAAyB,QAAS,GAAG,SAAUle,EAASF,EAAOqe,EAAQC,GACrE,MAAO,CAGL,SAAevd,GACb,IAAIpI,EAAIuH,EAAQrrH,MACZylH,EAAerjH,MAAV8pH,OAAsB9pH,EAAY8pH,EAAOf,GAClD,YAAc/oH,IAAPqjH,EAAmBA,EAAGrmH,KAAK8sH,EAAQpI,GAAK,IAAIv7F,OAAO2jG,GAAQf,GAAOxkG,OAAOm9F,GAClF,EAGA,SAAUoI,GACR,IAAI//F,EAAMs9G,EAAgBD,EAAQtd,EAAQlsH,MAC1C,GAAImsB,EAAIpI,KAAM,OAAOoI,EAAI/tB,MACzB,IAAI2uE,EAAKu6C,EAAS4E,GACdnwE,EAAIp1B,OAAO3mB,MACf,IAAK+sE,EAAGg7C,OAAQ,OAAOwhB,EAAWx8D,EAAIhxB,GACtC,IAAI2tF,EAAc38D,EAAG/6B,QACrB+6B,EAAGinD,UAAY,EAIf,IAHA,IAEIn0H,EAFA47C,EAAI,GACJn4B,EAAI,EAEgC,QAAhCzjB,EAAS0pI,EAAWx8D,EAAIhxB,KAAc,CAC5C,IAAI4tF,EAAWhjH,OAAO9mB,EAAO,IAC7B47C,EAAEn4B,GAAKqmH,EACU,KAAbA,IAAiB58D,EAAGinD,UAAYsV,EAAmBvtF,EAAG6nE,EAAS72C,EAAGinD,WAAY0V,IAClFpmH,GACF,CACA,OAAa,IAANA,EAAU,KAAOm4B,CAC1B,EAEJ,kCCrCA,IAAI6rE,EAAW,EAAQ,MACnB5D,EAAW,EAAQ,OACnBE,EAAW,EAAQ,OACnB4Q,EAAY,EAAQ,MACpB8U,EAAqB,EAAQ,OAC7BC,EAAa,EAAQ,OACrBloH,EAAMsK,KAAKtK,IACX1O,EAAMgZ,KAAKhZ,IACXiZ,EAAQD,KAAKC,MACbg+G,EAAuB,4BACvBC,EAAgC,oBAOpC,EAAQ,MAAR,CAAyB,UAAW,GAAG,SAAUxe,EAASye,EAASC,EAAUN,GAC3E,MAAO,CAGL,SAAiBO,EAAaC,GAC5B,IAAInmB,EAAIuH,EAAQrrH,MACZylH,EAAoBrjH,MAAf4nI,OAA2B5nI,EAAY4nI,EAAYF,GAC5D,YAAc1nI,IAAPqjH,EACHA,EAAGrmH,KAAK4qI,EAAalmB,EAAGmmB,GACxBF,EAAS3qI,KAAKunB,OAAOm9F,GAAIkmB,EAAaC,EAC5C,EAGA,SAAU/d,EAAQ+d,GAChB,IAAI99G,EAAMs9G,EAAgBM,EAAU7d,EAAQlsH,KAAMiqI,GAClD,GAAI99G,EAAIpI,KAAM,OAAOoI,EAAI/tB,MAEzB,IAAI2uE,EAAKu6C,EAAS4E,GACdnwE,EAAIp1B,OAAO3mB,MACXkqI,EAA4C,mBAAjBD,EAC1BC,IAAmBD,EAAetjH,OAAOsjH,IAC9C,IAAIliB,EAASh7C,EAAGg7C,OAChB,GAAIA,EAAQ,CACV,IAAI2hB,EAAc38D,EAAG/6B,QACrB+6B,EAAGinD,UAAY,CACjB,CAEA,IADA,IAAImW,EAAU,KACD,CACX,IAAItqI,EAAS0pI,EAAWx8D,EAAIhxB,GAC5B,GAAe,OAAXl8C,EAAiB,MAErB,GADAsqI,EAAQjpI,KAAKrB,IACRkoH,EAAQ,MAEI,KADFphG,OAAO9mB,EAAO,MACRktE,EAAGinD,UAAYsV,EAAmBvtF,EAAG6nE,EAAS72C,EAAGinD,WAAY0V,GACpF,CAGA,IAFA,IAxCwB9mF,EAwCpBwnF,EAAoB,GACpBC,EAAqB,EAChBntI,EAAI,EAAGA,EAAIitI,EAAQhtI,OAAQD,IAAK,CACvC2C,EAASsqI,EAAQjtI,GASjB,IARA,IAAI+5F,EAAUtwE,OAAO9mB,EAAO,IACxByqB,EAAWjJ,EAAI1O,EAAI6hH,EAAU30H,EAAOwM,OAAQ0vC,EAAE5+C,QAAS,GACvDmtI,EAAW,GAMNrlH,EAAI,EAAGA,EAAIplB,EAAO1C,OAAQ8nB,IAAKqlH,EAASppI,UAnDzCkB,KADcwgD,EAoD8C/iD,EAAOolB,IAnDvD29B,EAAKj8B,OAAOi8B,IAoDhC,IAAI2nF,EAAgB1qI,EAAOsZ,OAC3B,GAAI+wH,EAAmB,CACrB,IAAIM,EAAe,CAACvzC,GAAS/mF,OAAOo6H,EAAUhgH,EAAUyxB,QAClC35C,IAAlBmoI,GAA6BC,EAAatpI,KAAKqpI,GACnD,IAAIE,EAAc9jH,OAAOsjH,EAAa/pI,WAAMkC,EAAWooI,GACzD,MACEC,EAAcC,EAAgBzzC,EAASl7C,EAAGzxB,EAAUggH,EAAUC,EAAeN,GAE3E3/G,GAAY+/G,IACdD,GAAqBruF,EAAEv6C,MAAM6oI,EAAoB//G,GAAYmgH,EAC7DJ,EAAqB//G,EAAW2sE,EAAQ95F,OAE5C,CACA,OAAOitI,EAAoBruF,EAAEv6C,MAAM6oI,EACrC,GAIF,SAASK,EAAgBzzC,EAAShwE,EAAKqD,EAAUggH,EAAUC,EAAeE,GACxE,IAAIE,EAAUrgH,EAAW2sE,EAAQ95F,OAC7Bg+C,EAAImvF,EAASntI,OACbotH,EAAUsf,EAKd,YAJsBznI,IAAlBmoI,IACFA,EAAgB7mB,EAAS6mB,GACzBhgB,EAAUqf,GAELG,EAAS3qI,KAAKqrI,EAAalgB,GAAS,SAAU7hG,EAAOoiC,GAC1D,IAAI8/E,EACJ,OAAQ9/E,EAAGqvC,OAAO,IAChB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAOlD,EACjB,IAAK,IAAK,OAAOhwE,EAAIzlB,MAAM,EAAG8oB,GAC9B,IAAK,IAAK,OAAOrD,EAAIzlB,MAAMmpI,GAC3B,IAAK,IACHC,EAAUL,EAAcz/E,EAAGtpD,MAAM,GAAI,IACrC,MACF,QACE,IAAI8hB,GAAKwnC,EACT,GAAU,IAANxnC,EAAS,OAAOoF,EACpB,GAAIpF,EAAI63B,EAAG,CACT,IAAIjhC,EAAI0R,EAAMtI,EAAI,IAClB,OAAU,IAANpJ,EAAgBwO,EAChBxO,GAAKihC,OAA8B/4C,IAApBkoI,EAASpwH,EAAI,GAAmB4wC,EAAGqvC,OAAO,GAAKmwC,EAASpwH,EAAI,GAAK4wC,EAAGqvC,OAAO,GACvFzxE,CACT,CACAkiH,EAAUN,EAAShnH,EAAI,GAE3B,YAAmBlhB,IAAZwoI,EAAwB,GAAKA,CACtC,GACF,CACF,kCCnHA,IAAItjB,EAAW,EAAQ,MACnBujB,EAAY,EAAQ,OACpBtB,EAAa,EAAQ,OAGzB,EAAQ,MAAR,CAAyB,SAAU,GAAG,SAAUle,EAASyf,EAAQC,EAAStB,GACxE,MAAO,CAGL,SAAgBvd,GACd,IAAIpI,EAAIuH,EAAQrrH,MACZylH,EAAerjH,MAAV8pH,OAAsB9pH,EAAY8pH,EAAO4e,GAClD,YAAc1oI,IAAPqjH,EAAmBA,EAAGrmH,KAAK8sH,EAAQpI,GAAK,IAAIv7F,OAAO2jG,GAAQ4e,GAAQnkH,OAAOm9F,GACnF,EAGA,SAAUoI,GACR,IAAI//F,EAAMs9G,EAAgBsB,EAAS7e,EAAQlsH,MAC3C,GAAImsB,EAAIpI,KAAM,OAAOoI,EAAI/tB,MACzB,IAAI2uE,EAAKu6C,EAAS4E,GACdnwE,EAAIp1B,OAAO3mB,MACXgrI,EAAoBj+D,EAAGinD,UACtB6W,EAAUG,EAAmB,KAAIj+D,EAAGinD,UAAY,GACrD,IAAIn0H,EAAS0pI,EAAWx8D,EAAIhxB,GAE5B,OADK8uF,EAAU99D,EAAGinD,UAAWgX,KAAoBj+D,EAAGinD,UAAYgX,GAC9C,OAAXnrI,GAAmB,EAAIA,EAAOwM,KACvC,EAEJ,kCC5BA,IAAI8gH,EAAW,EAAQ,OACnB7F,EAAW,EAAQ,MACnBhC,EAAqB,EAAQ,OAC7BgkB,EAAqB,EAAQ,OAC7B1lB,EAAW,EAAQ,OACnBqnB,EAAiB,EAAQ,OACzB1f,EAAa,EAAQ,OACrBpD,EAAQ,EAAQ,OAChB+iB,EAAOv/G,KAAKhZ,IACZw4H,EAAQ,GAAGjqI,KACXkqI,EAAS,QACTC,EAAS,SACTxX,EAAa,YACbyX,EAAa,WAGbC,GAAcpjB,GAAM,WAAc5/F,OAAO+iH,EAAY,IAAM,IAG/D,EAAQ,MAAR,CAAyB,QAAS,GAAG,SAAUjgB,EAASmgB,EAAOC,EAAQhC,GACrE,IAAIiC,EAkDJ,OAxCEA,EAR6B,KAA7B,OAAON,GAAQ,QAAQ,IACe,GAAtC,OAAOA,GAAQ,QAAS,GAAGC,IACQ,GAAnC,KAAKD,GAAQ,WAAWC,IACW,GAAnC,IAAID,GAAQ,YAAYC,IACxB,IAAID,GAAQ,QAAQC,GAAU,GAC9B,GAAGD,GAAQ,MAAMC,GAGD,SAAU1Q,EAAW1tE,GACnC,IAAIs/D,EAAS5lG,OAAO3mB,MACpB,QAAkBoC,IAAdu4H,GAAqC,IAAV1tE,EAAa,MAAO,GAEnD,IAAKkgE,EAASwN,GAAY,OAAO8Q,EAAOrsI,KAAKmtH,EAAQoO,EAAW1tE,GAWhE,IAVA,IASIvkC,EAAOsrG,EAAW2X,EATlBn0C,EAAS,GACTnnD,GAASsqF,EAAUnO,WAAa,IAAM,KAC7BmO,EAAU5mD,UAAY,IAAM,KAC5B4mD,EAAU3oF,QAAU,IAAM,KAC1B2oF,EAAUlO,OAAS,IAAM,IAClCmf,EAAgB,EAChBC,OAAuBzpI,IAAV6qD,EAAsBq+E,EAAar+E,IAAU,EAE1D6+E,EAAgB,IAAIvjH,OAAOoyG,EAAU1rE,OAAQ5e,EAAQ,MAElD3nB,EAAQ6iG,EAAWnsH,KAAK0sI,EAAevf,QAC5CyH,EAAY8X,EAAcjY,IACV+X,IACdp0C,EAAOt2F,KAAKqrH,EAAO/qH,MAAMoqI,EAAeljH,EAAMrc,QAC1Cqc,EAAM2iH,GAAU,GAAK3iH,EAAMrc,MAAQkgH,EAAO8e,IAASF,EAAMjrI,MAAMs3F,EAAQ9uE,EAAMlnB,MAAM,IACvFmqI,EAAajjH,EAAM,GAAG2iH,GACtBO,EAAgB5X,EACZx8B,EAAO6zC,IAAWQ,KAEpBC,EAAcjY,KAAgBnrG,EAAMrc,OAAOy/H,EAAcjY,KAK/D,OAHI+X,IAAkBrf,EAAO8e,IACvBM,GAAeG,EAAcppH,KAAK,KAAK80E,EAAOt2F,KAAK,IAClDs2F,EAAOt2F,KAAKqrH,EAAO/qH,MAAMoqI,IACzBp0C,EAAO6zC,GAAUQ,EAAar0C,EAAOh2F,MAAM,EAAGqqI,GAAcr0C,CACrE,EAES,IAAI4zC,QAAQhpI,EAAW,GAAGipI,GACnB,SAAU1Q,EAAW1tE,GACnC,YAAqB7qD,IAAdu4H,GAAqC,IAAV1tE,EAAc,GAAKw+E,EAAOrsI,KAAKY,KAAM26H,EAAW1tE,EACpF,EAEgBw+E,EAGX,CAGL,SAAe9Q,EAAW1tE,GACxB,IAAI62D,EAAIuH,EAAQrrH,MACZ+rI,EAAwB3pI,MAAbu4H,OAAyBv4H,EAAYu4H,EAAU6Q,GAC9D,YAAoBppI,IAAb2pI,EACHA,EAAS3sI,KAAKu7H,EAAW7W,EAAG72D,GAC5By+E,EAActsI,KAAKunB,OAAOm9F,GAAI6W,EAAW1tE,EAC/C,EAMA,SAAUi/D,EAAQj/D,GAChB,IAAI9gC,EAAMs9G,EAAgBiC,EAAexf,EAAQlsH,KAAMitD,EAAOy+E,IAAkBD,GAChF,GAAIt/G,EAAIpI,KAAM,OAAOoI,EAAI/tB,MAEzB,IAAI2uE,EAAKu6C,EAAS4E,GACdnwE,EAAIp1B,OAAO3mB,MACXi7C,EAAIqqE,EAAmBv4C,EAAIxkD,QAE3ByjH,EAAkBj/D,EAAG/6B,QACrB3B,GAAS08B,EAAGy/C,WAAa,IAAM,KACtBz/C,EAAGgH,UAAY,IAAM,KACrBhH,EAAG/6B,QAAU,IAAM,KACnBu5F,EAAa,IAAM,KAI5BQ,EAAW,IAAI9wF,EAAEswF,EAAax+D,EAAK,OAASA,EAAG9d,OAAS,IAAK5e,GAC7D47F,OAAgB7pI,IAAV6qD,EAAsBq+E,EAAar+E,IAAU,EACvD,GAAY,IAARg/E,EAAW,MAAO,GACtB,GAAiB,IAAblwF,EAAE5+C,OAAc,OAAuC,OAAhC8tI,EAAec,EAAUhwF,GAAc,CAACA,GAAK,GAIxE,IAHA,IAAIn9C,EAAI,EACJoa,EAAI,EACJyiC,EAAI,GACDziC,EAAI+iC,EAAE5+C,QAAQ,CACnB4uI,EAAS/X,UAAYuX,EAAavyH,EAAI,EACtC,IACI3Z,EADA68C,EAAI+uF,EAAec,EAAUR,EAAaxvF,EAAIA,EAAEv6C,MAAMwX,IAE1D,GACQ,OAANkjC,IACC78C,EAAI6rI,EAAKtnB,EAASmoB,EAAS/X,WAAauX,EAAa,EAAIvyH,IAAK+iC,EAAE5+C,WAAayB,EAE9Eoa,EAAIswH,EAAmBvtF,EAAG/iC,EAAGgzH,OACxB,CAEL,GADAvwF,EAAEv6C,KAAK66C,EAAEv6C,MAAM5C,EAAGoa,IACdyiC,EAAEt+C,SAAW8uI,EAAK,OAAOxwF,EAC7B,IAAK,IAAIv+C,EAAI,EAAGA,GAAKg/C,EAAE/+C,OAAS,EAAGD,IAEjC,GADAu+C,EAAEv6C,KAAKg7C,EAAEh/C,IACLu+C,EAAEt+C,SAAW8uI,EAAK,OAAOxwF,EAE/BziC,EAAIpa,EAAIS,CACV,CACF,CAEA,OADAo8C,EAAEv6C,KAAK66C,EAAEv6C,MAAM5C,IACR68C,CACT,EAEJ,kCCpIA,EAAQ,OACR,IAAI6rE,EAAW,EAAQ,MACnByhB,EAAS,EAAQ,OACjBxiB,EAAc,EAAQ,OACtB2M,EAAY,WACZD,EAAY,IAAIC,GAEhBp7B,EAAS,SAAU2tB,GACrB,EAAQ,MAAR,CAAuBl9F,OAAOzqB,UAAWo1H,EAAWzN,GAAI,EAC1D,EAGI,EAAQ,MAAR,EAAoB,WAAc,MAAsD,QAA/CwN,EAAU7zH,KAAK,CAAE6vD,OAAQ,IAAK5e,MAAO,KAAkB,IAClGynD,GAAO,WACL,IAAI58C,EAAIosE,EAAStnH,MACjB,MAAO,IAAIkQ,OAAOgrC,EAAE+T,OAAQ,IAC1B,UAAW/T,EAAIA,EAAE7K,OAASk2E,GAAerrE,aAAa3yB,OAASwgH,EAAO3pI,KAAK87C,QAAK94C,EACpF,IAES6wH,EAAU/vH,MAAQgwH,GAC3Bp7B,GAAO,WACL,OAAOm7B,EAAU7zH,KAAKY,KACxB,kCCtBF,IAAImhI,EAAS,EAAQ,OACjB1a,EAAW,EAAQ,OAIvBtD,EAAOC,QAAU,EAAQ,MAAR,CAHP,OAGqC,SAAU5iH,GACvD,OAAO,WAAiB,OAAOA,EAAIR,KAAMC,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAAY,CAC7F,GAAG,CAEDqD,IAAK,SAAarH,GAChB,OAAO+iI,EAAOr8B,IAAI2hB,EAASzmH,KARrB,OAQiC5B,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,EAC1E,GACC+iI,iCCXH,EAAQ,MAAR,CAA0B,UAAU,SAAUxM,GAC5C,OAAO,SAAgBzxH,GACrB,OAAOyxH,EAAW30H,KAAM,IAAK,OAAQkD,EACvC,CACF,kCCJA,EAAQ,MAAR,CAA0B,OAAO,SAAUyxH,GACzC,OAAO,WACL,OAAOA,EAAW30H,KAAM,MAAO,GAAI,GACrC,CACF,kCCJA,EAAQ,MAAR,CAA0B,SAAS,SAAU20H,GAC3C,OAAO,WACL,OAAOA,EAAW30H,KAAM,QAAS,GAAI,GACvC,CACF,kCCJA,EAAQ,MAAR,CAA0B,QAAQ,SAAU20H,GAC1C,OAAO,WACL,OAAOA,EAAW30H,KAAM,IAAK,GAAI,GACnC,CACF,kCCLA,IAAIgoH,EAAU,EAAQ,OAClBkkB,EAAM,EAAQ,MAAR,EAAwB,GAClClkB,EAAQA,EAAQtkG,EAAG,SAAU,CAE3BkJ,YAAa,SAAqBpC,GAChC,OAAO0hH,EAAIlsI,KAAMwqB,EACnB,kCCLF,IAAIw9F,EAAU,EAAQ,OAClBpE,EAAW,EAAQ,OACnBpsF,EAAU,EAAQ,KAClB20G,EAAY,WACZC,EAAY,GAAGD,GAEnBnkB,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI,EAAQ,MAAR,CAA8Bk4F,GAAY,SAAU,CAClF5wC,SAAU,SAAkBk5B,GAC1B,IAAIxP,EAAOztF,EAAQx3B,KAAMy0H,EAAc0X,GACnCE,EAAcpsI,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACpD2jB,EAAM69F,EAASqB,EAAK9nH,QACpB+rD,OAAsB9mD,IAAhBiqI,EAA4BtmH,EAAM4F,KAAKhZ,IAAIixG,EAASyoB,GAActmH,GACxEtN,EAASkO,OAAO8tG,GACpB,OAAO2X,EACHA,EAAUhtI,KAAK6lH,EAAMxsG,EAAQywC,GAC7B+7D,EAAKzjH,MAAM0nD,EAAMzwC,EAAOtb,OAAQ+rD,KAASzwC,CAC/C,kCChBF,EAAQ,MAAR,CAA0B,SAAS,SAAUk8G,GAC3C,OAAO,WACL,OAAOA,EAAW30H,KAAM,KAAM,GAAI,GACpC,CACF,kCCJA,EAAQ,MAAR,CAA0B,aAAa,SAAU20H,GAC/C,OAAO,SAAmBx7D,GACxB,OAAOw7D,EAAW30H,KAAM,OAAQ,QAASm5D,EAC3C,CACF,kCCJA,EAAQ,MAAR,CAA0B,YAAY,SAAUw7D,GAC9C,OAAO,SAAkBxgG,GACvB,OAAOwgG,EAAW30H,KAAM,OAAQ,OAAQm0B,EAC1C,CACF,qBCNA,IAAI6zF,EAAU,EAAQ,OAClBrE,EAAkB,EAAQ,OAC1B/8F,EAAeD,OAAOC,aACtB0lH,EAAiB3lH,OAAOoG,cAG5Bi7F,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,KAAOq4F,GAA2C,GAAzBA,EAAenvI,QAAc,SAAU,CAE1F4vB,cAAe,SAAuB9lB,GAKpC,IAJA,IAGIyf,EAHAyF,EAAM,GACN63F,EAAO/jH,UAAU9C,OACjBD,EAAI,EAED8mH,EAAO9mH,GAAG,CAEf,GADAwpB,GAAQzmB,UAAU/C,KACdymH,EAAgBj9F,EAAM,WAAcA,EAAM,MAAMmjG,WAAWnjG,EAAO,8BACtEyF,EAAIjrB,KAAKwlB,EAAO,MACZE,EAAaF,GACbE,EAAyC,QAA1BF,GAAQ,QAAY,IAAcA,EAAO,KAAQ,OAEtE,CAAE,OAAOyF,EAAIjT,KAAK,GACpB,iCCnBF,IAAI8uG,EAAU,EAAQ,OAClBxwF,EAAU,EAAQ,KAClB+0G,EAAW,WAEfvkB,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI,EAAQ,MAAR,CAA8Bs4F,GAAW,SAAU,CACjFxzH,SAAU,SAAkB07G,GAC1B,SAAUj9F,EAAQx3B,KAAMy0H,EAAc8X,GACnCz8H,QAAQ2kH,EAAcx0H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACjE,kCCRF,EAAQ,MAAR,CAA0B,WAAW,SAAUuyH,GAC7C,OAAO,WACL,OAAOA,EAAW30H,KAAM,IAAK,GAAI,GACnC,CACF,kCCLA,IAAIksI,EAAM,EAAQ,MAAR,EAAwB,GAGlC,EAAQ,MAAR,CAA0BvlH,OAAQ,UAAU,SAAUwgG,GACpDnnH,KAAKinH,GAAKtgG,OAAOwgG,GACjBnnH,KAAK8qB,GAAK,CAEZ,IAAG,WACD,IAEI0hH,EAFA1oB,EAAI9jH,KAAKinH,GACT56G,EAAQrM,KAAK8qB,GAEjB,OAAIze,GAASy3G,EAAE3mH,OAAe,CAAEiB,WAAOgE,EAAW2hB,MAAM,IACxDyoH,EAAQN,EAAIpoB,EAAGz3G,GACfrM,KAAK8qB,IAAM0hH,EAAMrvI,OACV,CAAEiB,MAAOouI,EAAOzoH,MAAM,GAC/B,iCCdA,EAAQ,MAAR,CAA0B,QAAQ,SAAU4wG,GAC1C,OAAO,SAActpH,GACnB,OAAOspH,EAAW30H,KAAM,IAAK,OAAQqL,EACvC,CACF,qBCNA,IAAI28G,EAAU,EAAQ,OAClB9D,EAAY,EAAQ,OACpBN,EAAW,EAAQ,OAEvBoE,EAAQA,EAAQjsE,EAAG,SAAU,CAE3B0wF,IAAK,SAAaC,GAMhB,IALA,IAAIC,EAAMzoB,EAAUwoB,EAASD,KACzB1mH,EAAM69F,EAAS+oB,EAAIxvI,QACnB6mH,EAAO/jH,UAAU9C,OACjBgvB,EAAM,GACNjvB,EAAI,EACD6oB,EAAM7oB,GACXivB,EAAIjrB,KAAKylB,OAAOgmH,EAAIzvI,OAChBA,EAAI8mH,GAAM73F,EAAIjrB,KAAKylB,OAAO1mB,UAAU/C,KACxC,OAAOivB,EAAIjT,KAAK,GACpB,qBChBF,IAAI8uG,EAAU,EAAQ,OAEtBA,EAAQA,EAAQtkG,EAAG,SAAU,CAE3BmxG,OAAQ,EAAQ,sCCFlB,EAAQ,MAAR,CAA0B,SAAS,SAAUF,GAC3C,OAAO,WACL,OAAOA,EAAW30H,KAAM,QAAS,GAAI,GACvC,CACF,kCCJA,IAAIgoH,EAAU,EAAQ,OAClBpE,EAAW,EAAQ,OACnBpsF,EAAU,EAAQ,KAClBo1G,EAAc,aACdC,EAAc,GAAGD,GAErB5kB,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAI,EAAQ,MAAR,CAA8B24F,GAAc,SAAU,CACpFriC,WAAY,SAAoBkqB,GAC9B,IAAIxP,EAAOztF,EAAQx3B,KAAMy0H,EAAcmY,GACnCvgI,EAAQu3G,EAASj4F,KAAKhZ,IAAI1S,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAAW6iH,EAAK9nH,SAChFsb,EAASkO,OAAO8tG,GACpB,OAAOoY,EACHA,EAAYztI,KAAK6lH,EAAMxsG,EAAQpM,GAC/B44G,EAAKzjH,MAAM6K,EAAOA,EAAQoM,EAAOtb,UAAYsb,CACnD,kCCdF,EAAQ,MAAR,CAA0B,UAAU,SAAUk8G,GAC5C,OAAO,WACL,OAAOA,EAAW30H,KAAM,SAAU,GAAI,GACxC,CACF,kCCJA,EAAQ,MAAR,CAA0B,OAAO,SAAU20H,GACzC,OAAO,WACL,OAAOA,EAAW30H,KAAM,MAAO,GAAI,GACrC,CACF,kCCJA,EAAQ,MAAR,CAA0B,OAAO,SAAU20H,GACzC,OAAO,WACL,OAAOA,EAAW30H,KAAM,MAAO,GAAI,GACrC,CACF,kCCJA,EAAQ,KAAR,CAA0B,QAAQ,SAAUyyH,GAC1C,OAAO,WACL,OAAOA,EAAMzyH,KAAM,EACrB,CACF,kCCJA,IAAI+nH,EAAS,EAAQ,OACjBlsF,EAAM,EAAQ,OACd0qF,EAAc,EAAQ,OACtByB,EAAU,EAAQ,OAClBC,EAAW,EAAQ,OACnBkH,EAAO,aACPmV,EAAS,EAAQ,OACjBlQ,EAAS,EAAQ,MACjB/L,EAAiB,EAAQ,OACzBgM,EAAM,EAAQ,OACd/I,EAAM,EAAQ,OACdkU,EAAS,EAAQ,OACjBsN,EAAY,EAAQ,OACpBC,EAAW,EAAQ,OACnBz7G,EAAU,EAAQ,OAClBg2F,EAAW,EAAQ,MACnB7D,EAAW,EAAQ,OACnBC,EAAW,EAAQ,OACnBQ,EAAY,EAAQ,OACpB6F,EAAc,EAAQ,OACtBP,EAAa,EAAQ,OACrBwjB,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAClBvV,EAAQ,EAAQ,OAChBwV,EAAQ,EAAQ,OAChBzV,EAAM,EAAQ,OACdxF,EAAQ,EAAQ,OAChBL,EAAO8F,EAAMx9G,EACb+rG,EAAKwR,EAAIv9G,EACT23G,EAAOob,EAAQ/yH,EACfulH,EAAU1X,EAAOpkH,OACjBwpI,EAAQplB,EAAOn6G,KACfw/H,EAAaD,GAASA,EAAMx+H,UAC5B87G,EAAY,YACZ4iB,EAAS/hB,EAAI,WACbsV,EAAetV,EAAI,eACnBd,EAAS,CAAC,EAAE76B,qBACZ29C,EAAiBlZ,EAAO,mBACxBmZ,EAAanZ,EAAO,WACpBoZ,EAAYpZ,EAAO,cACnBjC,EAAc30H,OAAOitH,GACrBqb,EAA+B,mBAAXrG,KAA2ByN,EAAMhzH,EACrDuzH,EAAU1lB,EAAO0lB,QAEjBxR,GAAUwR,IAAYA,EAAQhjB,KAAegjB,EAAQhjB,GAAWijB,UAGhEC,EAAgBpnB,GAAe+d,GAAO,WACxC,OAES,GAFF0I,EAAQ/mB,EAAG,CAAC,EAAG,IAAK,CACzBzlH,IAAK,WAAc,OAAOylH,EAAGjmH,KAAM,IAAK,CAAE5B,MAAO,IAAK4mB,CAAG,KACvDA,CACN,IAAK,SAAU49B,EAAIllD,EAAKs+C,GACtB,IAAI4xF,EAAYhc,EAAKO,EAAaz0H,GAC9BkwI,UAAkBzb,EAAYz0H,GAClCuoH,EAAGrjE,EAAIllD,EAAKs+C,GACR4xF,GAAahrF,IAAOuvE,GAAalM,EAAGkM,EAAaz0H,EAAKkwI,EAC5D,EAAI3nB,EAEAluB,EAAO,SAAU97D,GACnB,IAAI4xG,EAAMN,EAAWtxG,GAAO+wG,EAAQvN,EAAQhV,IAE5C,OADAojB,EAAIn5C,GAAKz4D,EACF4xG,CACT,EAEIC,EAAWhI,GAAyC,iBAApBrG,EAAQj7G,SAAuB,SAAUo+B,GAC3E,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,OAAOA,aAAc68E,CACvB,EAEIlW,EAAkB,SAAwB3mE,EAAIllD,EAAKs+C,GAKrD,OAJI4G,IAAOuvE,GAAa5I,EAAgBikB,EAAW9vI,EAAKs+C,GACxDsrE,EAAS1kE,GACTllD,EAAMqsH,EAAYrsH,GAAK,GACvB4pH,EAAStrE,GACLngB,EAAI0xG,EAAY7vI,IACbs+C,EAAE3+C,YAIDw+B,EAAI+mB,EAAIyqF,IAAWzqF,EAAGyqF,GAAQ3vI,KAAMklD,EAAGyqF,GAAQ3vI,IAAO,GAC1Ds+C,EAAIgxF,EAAQhxF,EAAG,CAAE3+C,WAAYmsH,EAAW,GAAG,OAJtC3tF,EAAI+mB,EAAIyqF,IAASpnB,EAAGrjE,EAAIyqF,EAAQ7jB,EAAW,EAAG,CAAC,IACpD5mE,EAAGyqF,GAAQ3vI,IAAO,GAIXiwI,EAAc/qF,EAAIllD,EAAKs+C,IACzBiqE,EAAGrjE,EAAIllD,EAAKs+C,EACvB,EACI+xF,EAAoB,SAA0BnrF,EAAIl/B,GACpD4jG,EAAS1kE,GAKT,IAJA,IAGIllD,EAHAyyB,EAAO48G,EAASrpH,EAAIwgG,EAAUxgG,IAC9BxmB,EAAI,EACJkE,EAAI+uB,EAAKhzB,OAENiE,EAAIlE,GAAGqsH,EAAgB3mE,EAAIllD,EAAMyyB,EAAKjzB,KAAMwmB,EAAEhmB,IACrD,OAAOklD,CACT,EAIIorF,EAAwB,SAA8BtwI,GACxD,IAAIqlI,EAAIvY,EAAOprH,KAAKY,KAAMtC,EAAMqsH,EAAYrsH,GAAK,IACjD,QAAIsC,OAASmyH,GAAet2F,EAAI0xG,EAAY7vI,KAASm+B,EAAI2xG,EAAW9vI,QAC7DqlI,IAAMlnG,EAAI77B,KAAMtC,KAASm+B,EAAI0xG,EAAY7vI,IAAQm+B,EAAI77B,KAAMqtI,IAAWrtI,KAAKqtI,GAAQ3vI,KAAOqlI,EACnG,EACI4B,EAA4B,SAAkC/hF,EAAIllD,GAGpE,GAFAklD,EAAKshE,EAAUthE,GACfllD,EAAMqsH,EAAYrsH,GAAK,GACnBklD,IAAOuvE,IAAet2F,EAAI0xG,EAAY7vI,IAASm+B,EAAI2xG,EAAW9vI,GAAlE,CACA,IAAIs+C,EAAI41E,EAAKhvE,EAAIllD,GAEjB,OADIs+C,IAAKngB,EAAI0xG,EAAY7vI,IAAUm+B,EAAI+mB,EAAIyqF,IAAWzqF,EAAGyqF,GAAQ3vI,KAAOs+C,EAAE3+C,YAAa,GAChF2+C,CAHuE,CAIhF,EACIiyF,GAAuB,SAA6BrrF,GAKtD,IAJA,IAGIllD,EAHA20H,EAAQR,EAAK3N,EAAUthE,IACvB/iD,EAAS,GACT3C,EAAI,EAEDm1H,EAAMl1H,OAASD,GACf2+B,EAAI0xG,EAAY7vI,EAAM20H,EAAMn1H,OAASQ,GAAO2vI,GAAU3vI,GAAOyxH,GAAMtvH,EAAOqB,KAAKxD,GACpF,OAAOmC,CACX,EACIquI,GAAyB,SAA+BtrF,GAM1D,IALA,IAIIllD,EAJAywI,EAAQvrF,IAAOuvE,EACfE,EAAQR,EAAKsc,EAAQX,EAAYtpB,EAAUthE,IAC3C/iD,EAAS,GACT3C,EAAI,EAEDm1H,EAAMl1H,OAASD,IAChB2+B,EAAI0xG,EAAY7vI,EAAM20H,EAAMn1H,OAAUixI,IAAQtyG,EAAIs2F,EAAaz0H,IAAcmC,EAAOqB,KAAKqsI,EAAW7vI,IACxG,OAAOmC,CACX,EAGKimI,IAYH7d,GAXAwX,EAAU,WACR,GAAIz/H,gBAAgBy/H,EAAS,MAAM3iI,UAAU,gCAC7C,IAAIm/B,EAAMo4F,EAAIp0H,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,GAChD64H,EAAO,SAAU78H,GACf4B,OAASmyH,GAAa8I,EAAK77H,KAAKouI,EAAWpvI,GAC3Cy9B,EAAI77B,KAAMqtI,IAAWxxG,EAAI77B,KAAKqtI,GAASpxG,KAAMj8B,KAAKqtI,GAAQpxG,IAAO,GACrE0xG,EAAc3tI,KAAMi8B,EAAKutF,EAAW,EAAGprH,GACzC,EAEA,OADImoH,GAAe0V,GAAQ0R,EAAcxb,EAAal2F,EAAK,CAAE3+B,cAAc,EAAMo6B,IAAKujG,IAC/EljC,EAAK97D,EACd,GACiBwuF,GAAY,YAAY,WACvC,OAAOzqH,KAAK00F,EACd,IAEAgjC,EAAMx9G,EAAIyqH,EACVlN,EAAIv9G,EAAIqvG,EACR,WAA8B0jB,EAAQ/yH,EAAI+zH,GAC1C,WAA6BD,EAC7Bd,EAAMhzH,EAAIg0H,GAEN3nB,IAAgB,EAAQ,QAC1B0B,EAASkK,EAAa,uBAAwB6b,GAAuB,GAGvExO,EAAOtlH,EAAI,SAAUhX,GACnB,OAAO60F,EAAKuzB,EAAIpoH,GAClB,GAGF8kH,EAAQA,EAAQoB,EAAIpB,EAAQx4E,EAAIw4E,EAAQ/zE,GAAK6xF,EAAY,CAAEniI,OAAQ87H,IAEnE,IAAK,IAAI2O,GAAa,iHAGpBz1H,MAAM,KAAMsM,GAAI,EAAGmpH,GAAWjxI,OAAS8nB,IAAGqmG,EAAI8iB,GAAWnpH,OAE3D,IAAK,IAAIopH,GAAmBpc,EAAM3G,EAAI7N,OAAQ14F,GAAI,EAAGspH,GAAiBlxI,OAAS4nB,IAAI+nH,EAAUuB,GAAiBtpH,OAE9GijG,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK6xF,EAAY,SAAU,CAErD,IAAO,SAAUpoI,GACf,OAAOm+B,EAAIyxG,EAAgB5vI,GAAO,IAC9B4vI,EAAe5vI,GACf4vI,EAAe5vI,GAAO+hI,EAAQ/hI,EACpC,EAEA4wI,OAAQ,SAAgBT,GACtB,IAAKC,EAASD,GAAM,MAAM/wI,UAAU+wI,EAAM,qBAC1C,IAAK,IAAInwI,KAAO4vI,EAAgB,GAAIA,EAAe5vI,KAASmwI,EAAK,OAAOnwI,CAC1E,EACA6wI,UAAW,WAActS,GAAS,CAAM,EACxCuS,UAAW,WAAcvS,GAAS,CAAO,IAG3CjU,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAK6xF,EAAY,SAAU,CAErD5nI,OA/FY,SAAgB0kD,EAAIl/B,GAChC,YAAathB,IAANshB,EAAkBspH,EAAQpqF,GAAMmrF,EAAkBf,EAAQpqF,GAAKl/B,EACxE,EA+FEjmB,eAAgB8rH,EAEhBriB,iBAAkB6mC,EAElBntI,yBAA0B+jI,EAE1B5S,oBAAqBkc,GAErBv+C,sBAAuBw+C,KAKzB,IAAIO,GAAsBnK,GAAO,WAAc4I,EAAMhzH,EAAE,EAAI,IAE3D8tG,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,EAAIw6F,GAAqB,SAAU,CAC7D/+C,sBAAuB,SAA+B9sC,GACpD,OAAOsqF,EAAMhzH,EAAEwpG,EAAS9gE,GAC1B,IAIFuqF,GAASnlB,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,IAAM6xF,GAAcxB,GAAO,WAC9D,IAAIvoF,EAAI0jF,IAIR,MAA0B,UAAnB2N,EAAW,CAACrxF,KAA2C,MAAxBqxF,EAAW,CAAEpoH,EAAG+2B,KAAyC,MAAzBqxF,EAAW5vI,OAAOu+C,GAC1F,KAAK,OAAQ,CACXptC,UAAW,SAAmBi0C,GAI5B,IAHA,IAEI8rF,EAAUC,EAFVvxG,EAAO,CAACwlB,GACR1lD,EAAI,EAED+C,UAAU9C,OAASD,GAAGkgC,EAAKl8B,KAAKjB,UAAU/C,MAEjD,GADAyxI,EAAYD,EAAWtxG,EAAK,IACvBqmF,EAASirB,SAAoBtsI,IAAPwgD,KAAoBkrF,EAASlrF,GAMxD,OALKtxB,EAAQo9G,KAAWA,EAAW,SAAUhxI,EAAKU,GAEhD,GADwB,mBAAbuwI,IAAyBvwI,EAAQuwI,EAAUvvI,KAAKY,KAAMtC,EAAKU,KACjE0vI,EAAS1vI,GAAQ,OAAOA,CAC/B,GACAg/B,EAAK,GAAKsxG,EACHtB,EAAWltI,MAAMitI,EAAO/vG,EACjC,IAIFqiG,EAAQhV,GAAWmW,IAAiB,EAAQ,MAAR,CAAmBnB,EAAQhV,GAAYmW,EAAcnB,EAAQhV,GAAWtrH,SAE5GkpH,EAAeoX,EAAS,UAExBpX,EAAe18F,KAAM,QAAQ,GAE7B08F,EAAeN,EAAOn6G,KAAM,QAAQ,iCCpPpC,IAAIo6G,EAAU,EAAQ,OAClBiP,EAAS,EAAQ,OACjB/vG,EAAS,EAAQ,MACjBogG,EAAW,EAAQ,MACnB3D,EAAkB,EAAQ,OAC1BC,EAAW,EAAQ,OACnBH,EAAW,EAAQ,OACnBn3F,EAAc,qBACdg5F,EAAqB,EAAQ,OAC7BwS,EAAe5wG,EAAOoF,YACtByrG,EAAY7wG,EAAOiuB,SACnBy5F,EAAU3X,EAAO4E,KAAOvvG,EAAYuiH,OACpC7T,EAASlD,EAAah6H,UAAU0D,MAChC+3H,EAAOtC,EAAOsC,KACd5B,EAAe,cAEnB3P,EAAQA,EAAQoB,EAAIpB,EAAQx4E,EAAIw4E,EAAQ/zE,GAAK3nB,IAAgBwrG,GAAe,CAAExrG,YAAawrG,IAE3F9P,EAAQA,EAAQjsE,EAAIisE,EAAQ/zE,GAAKgjF,EAAOmC,OAAQzB,EAAc,CAE5DkX,OAAQ,SAAgBjsF,GACtB,OAAOgsF,GAAWA,EAAQhsF,IAAO6gE,EAAS7gE,IAAO22E,KAAQ32E,CAC3D,IAGFolE,EAAQA,EAAQtkG,EAAIskG,EAAQkD,EAAIlD,EAAQ/zE,EAAI,EAAQ,MAAR,EAAoB,WAC9D,OAAQ,IAAI6jF,EAAa,GAAGt2H,MAAM,OAAGY,GAAWizC,UAClD,IAAIsiF,EAAc,CAEhBn2H,MAAO,SAAeynD,EAAOC,GAC3B,QAAe9mD,IAAX44H,QAAgC54H,IAAR8mD,EAAmB,OAAO8xE,EAAO57H,KAAKkoH,EAAStnH,MAAOipD,GAQlF,IAPA,IAAIljC,EAAMuhG,EAAStnH,MAAMq1C,WACrBjoB,EAAQu2F,EAAgB16D,EAAOljC,GAC/B+oH,EAAMnrB,OAAwBvhH,IAAR8mD,EAAoBnjC,EAAMmjC,EAAKnjC,GACrDlmB,EAAS,IAAKylH,EAAmBtlH,KAAM83H,GAA9B,CAA6ClU,EAASkrB,EAAM1hH,IACrE2hH,EAAQ,IAAIhX,EAAU/3H,MACtBgvI,EAAQ,IAAIjX,EAAUl4H,GACtBwM,EAAQ,EACL+gB,EAAQ0hH,GACbE,EAAMtQ,SAASryH,IAAS0iI,EAAMz5F,SAASloB,MACvC,OAAOvtB,CACX,IAGF,EAAQ,MAAR,CAA0B83H,mBC7C1B,IAAI3P,EAAU,EAAQ,OACtBA,EAAQA,EAAQoB,EAAIpB,EAAQx4E,EAAIw4E,EAAQ/zE,GAAK,aAAyB,CACpEkB,SAAU,oCCFZ,EAAQ,KAAR,CAA0B,UAAW,GAAG,SAAU85F,GAChD,OAAO,SAAsB3lI,EAAM+yC,EAAYl/C,GAC7C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,UAAW,GAAG,SAAU8xI,GAChD,OAAO,SAAsB3lI,EAAM+yC,EAAYl/C,GAC7C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAU8xI,GAC9C,OAAO,SAAoB3lI,EAAM+yC,EAAYl/C,GAC3C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAU8xI,GAC9C,OAAO,SAAoB3lI,EAAM+yC,EAAYl/C,GAC3C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,oBCJA,EAAQ,KAAR,CAA0B,OAAQ,GAAG,SAAU8xI,GAC7C,OAAO,SAAmB3lI,EAAM+yC,EAAYl/C,GAC1C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,SAAU,GAAG,SAAU8xI,GAC/C,OAAO,SAAqB3lI,EAAM+yC,EAAYl/C,GAC5C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,SAAU,GAAG,SAAU8xI,GAC/C,OAAO,SAAqB3lI,EAAM+yC,EAAYl/C,GAC5C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAU8xI,GAC9C,OAAO,SAAoB3lI,EAAM+yC,EAAYl/C,GAC3C,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,qBCJA,EAAQ,KAAR,CAA0B,QAAS,GAAG,SAAU8xI,GAC9C,OAAO,SAA2B3lI,EAAM+yC,EAAYl/C,GAClD,OAAO8xI,EAAKjvI,KAAMsJ,EAAM+yC,EAAYl/C,EACtC,CACF,IAAG,+BCHH,IAcI+xI,EAdAnnB,EAAS,EAAQ,OACjBonB,EAAO,EAAQ,MAAR,CAA4B,GACnClnB,EAAW,EAAQ,OACnBC,EAAO,EAAQ,OACf/kG,EAAS,EAAQ,MACjBisH,EAAO,EAAQ,OACf3rB,EAAW,EAAQ,OACnBgD,EAAW,EAAQ,OACnB4oB,EAAkB,EAAQ,OAC1BC,GAAWvnB,EAAOwnB,eAAiB,kBAAmBxnB,EACtDynB,EAAW,UACXnoB,EAAUa,EAAKb,QACfgI,EAAe7xH,OAAO6xH,aACtB1H,EAAsBynB,EAAKtnB,QAG3BjB,EAAU,SAAUrmH,GACtB,OAAO,WACL,OAAOA,EAAIR,KAAMC,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACzD,CACF,EAEImmH,EAAU,CAEZ/nH,IAAK,SAAa9C,GAChB,GAAI+lH,EAAS/lH,GAAM,CACjB,IAAI4L,EAAO+9G,EAAQ3pH,GACnB,OAAa,IAAT4L,EAAsBq+G,EAAoBlB,EAASzmH,KAAMwvI,IAAWhvI,IAAI9C,GACrE4L,EAAOA,EAAKtJ,KAAK8qB,SAAM1oB,CAChC,CACF,EAEAs1B,IAAK,SAAah6B,EAAKU,GACrB,OAAOgxI,EAAKtqC,IAAI2hB,EAASzmH,KAAMwvI,GAAW9xI,EAAKU,EACjD,GAIEqxI,EAAWtsB,EAAOC,QAAU,EAAQ,MAAR,CAAyBosB,EAAU3oB,EAAS0B,EAAS6mB,GAAM,GAAM,GAG7FC,GAAmBC,IAErBnsH,GADA+rH,EAAcE,EAAKxoB,eAAeC,EAAS2oB,IACxB1xI,UAAWyqH,GAC9BL,EAAKiB,MAAO,EACZgmB,EAAK,CAAC,SAAU,MAAO,MAAO,QAAQ,SAAUzxI,GAC9C,IAAIgrH,EAAQ+mB,EAAS3xI,UACjB6V,EAAS+0G,EAAMhrH,GACnBuqH,EAASS,EAAOhrH,GAAK,SAAUsnB,EAAGzf,GAEhC,GAAIk+G,EAASz+F,KAAOqqG,EAAarqG,GAAI,CAC9BhlB,KAAK+pB,KAAI/pB,KAAK+pB,GAAK,IAAImlH,GAC5B,IAAIrvI,EAASG,KAAK+pB,GAAGrsB,GAAKsnB,EAAGzf,GAC7B,MAAc,OAAP7H,EAAesC,KAAOH,CAE/B,CAAE,OAAO8T,EAAOvU,KAAKY,KAAMglB,EAAGzf,EAChC,GACF,mCCzDF,IAAI6pI,EAAO,EAAQ,OACf3oB,EAAW,EAAQ,OACnBipB,EAAW,UAGf,EAAQ,MAAR,CAAyBA,GAAU,SAAUlvI,GAC3C,OAAO,WAAqB,OAAOA,EAAIR,KAAMC,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EAAY,CACjG,GAAG,CAEDqD,IAAK,SAAarH,GAChB,OAAOgxI,EAAKtqC,IAAI2hB,EAASzmH,KAAM0vI,GAAWtxI,GAAO,EACnD,GACCgxI,GAAM,GAAO,iCCXhB,IAAIpnB,EAAU,EAAQ,OAClB2nB,EAAY,EAAQ,MAAR,EAA6B,GAE7C3nB,EAAQA,EAAQtkG,EAAG,QAAS,CAC1B3K,SAAU,SAAkBof,GAC1B,OAAOw3G,EAAU3vI,KAAMm4B,EAAIl4B,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,EACnE,IAGF,EAAQ,MAAR,CAAiC,6BCVjC,IAAI4lH,EAAU,EAAQ,OAClBmG,EAAW,EAAQ,MAAR,EAA8B,GAE7CnG,EAAQA,EAAQjsE,EAAG,SAAU,CAC3BpgB,QAAS,SAAiBinB,GACxB,OAAOurE,EAASvrE,EAClB,qBCNF,IAAIolE,EAAU,EAAQ,OAClBuK,EAAU,EAAQ,OAClBrO,EAAY,EAAQ,OACpB0N,EAAO,EAAQ,OACfqO,EAAiB,EAAQ,OAE7BjY,EAAQA,EAAQjsE,EAAG,SAAU,CAC3B6zF,0BAA2B,SAAmCxvI,GAO5D,IANA,IAKI1C,EAAKiD,EALLmjH,EAAII,EAAU9jH,GACdyvI,EAAUje,EAAK13G,EACfiW,EAAOoiG,EAAQzO,GACfjkH,EAAS,CAAC,EACV3C,EAAI,EAEDizB,EAAKhzB,OAASD,QAENkF,KADbzB,EAAOkvI,EAAQ/rB,EAAGpmH,EAAMyyB,EAAKjzB,QACL+iI,EAAepgI,EAAQnC,EAAKiD,GAEtD,OAAOd,CACT,kBCnBF,IAAImoH,EAAU,EAAQ,OAClB8nB,EAAU,EAAQ,MAAR,EAA8B,GAE5C9nB,EAAQA,EAAQjsE,EAAG,SAAU,CAC3BxqB,OAAQ,SAAgBqxB,GACtB,OAAOktF,EAAQltF,EACjB,iCCLF,IAAIolE,EAAU,EAAQ,OAClBqB,EAAO,EAAQ,OACftB,EAAS,EAAQ,OACjBzC,EAAqB,EAAQ,OAC7BmgB,EAAiB,EAAQ,MAE7Bzd,EAAQA,EAAQtkG,EAAIskG,EAAQ9sE,EAAG,UAAW,CAAE,QAAW,SAAU60F,GAC/D,IAAI90F,EAAIqqE,EAAmBtlH,KAAMqpH,EAAK3nH,SAAWqmH,EAAOrmH,SACpD0xH,EAAiC,mBAAb2c,EACxB,OAAO/vI,KAAK4B,KACVwxH,EAAa,SAAUnsH,GACrB,OAAOw+H,EAAexqF,EAAG80F,KAAanuI,MAAK,WAAc,OAAOqF,CAAG,GACrE,EAAI8oI,EACJ3c,EAAa,SAAU/zH,GACrB,OAAOomI,EAAexqF,EAAG80F,KAAanuI,MAAK,WAAc,MAAMvC,CAAG,GACpE,EAAI0wI,EAER,kCCjBA,IAAI/nB,EAAU,EAAQ,OAClBgoB,EAAO,EAAQ,OACfp5C,EAAY,EAAQ,OAGpBq5C,EAAa,mDAAmDvtH,KAAKk0E,GAEzEoxB,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAIg8F,EAAY,SAAU,CACpDC,OAAQ,SAAgB3yE,GACtB,OAAOyyE,EAAKhwI,KAAMu9D,EAAWt9D,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,GAAW,EAChF,kCCVF,IAAI4lH,EAAU,EAAQ,OAClBgoB,EAAO,EAAQ,OACfp5C,EAAY,EAAQ,OAGpBq5C,EAAa,mDAAmDvtH,KAAKk0E,GAEzEoxB,EAAQA,EAAQtkG,EAAIskG,EAAQ/zE,EAAIg8F,EAAY,SAAU,CACpD1pH,SAAU,SAAkBg3C,GAC1B,OAAOyyE,EAAKhwI,KAAMu9D,EAAWt9D,UAAU9C,OAAS,EAAI8C,UAAU,QAAKmC,GAAW,EAChF,qBCZF,EAAQ,MAAR,CAAyB,kCC6CzB,IA7CA,IAAI+4H,EAAa,EAAQ,OACrBhR,EAAU,EAAQ,OAClBlC,EAAW,EAAQ,OACnBF,EAAS,EAAQ,OACjBn7G,EAAO,EAAQ,OACfsgH,EAAY,EAAQ,OACpB5B,EAAM,EAAQ,OACdwB,EAAWxB,EAAI,YACf6kB,EAAgB7kB,EAAI,eACpB8kB,EAAcljB,EAAUnqG,MAExBstH,EAAe,CACjBC,aAAa,EACbC,qBAAqB,EACrBC,cAAc,EACdC,gBAAgB,EAChBC,aAAa,EACbC,eAAe,EACfC,cAAc,EACdC,sBAAsB,EACtBC,UAAU,EACVC,mBAAmB,EACnBC,gBAAgB,EAChBC,iBAAiB,EACjBC,mBAAmB,EACnBC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,UAAU,EACVC,kBAAkB,EAClBC,QAAQ,EACRC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,cAAc,EACdC,eAAe,EACfC,kBAAkB,EAClBC,kBAAkB,EAClBC,gBAAgB,EAChBC,kBAAkB,EAClBC,eAAe,EACfC,WAAW,GAGJC,EAAcloB,EAAQkmB,GAAenzI,EAAI,EAAGA,EAAIm1I,EAAYl1I,OAAQD,IAAK,CAChF,IAIIQ,EAJAopH,EAAOurB,EAAYn1I,GACnBo1I,EAAWjC,EAAavpB,GACxByrB,EAAaxqB,EAAOjB,GACpB4B,EAAQ6pB,GAAcA,EAAWz0I,UAErC,GAAI4qH,IACGA,EAAMoE,IAAWlgH,EAAK87G,EAAOoE,EAAUsjB,GACvC1nB,EAAMynB,IAAgBvjI,EAAK87G,EAAOynB,EAAerpB,GACtDoG,EAAUpG,GAAQspB,EACdkC,GAAU,IAAK50I,KAAOy9H,EAAiBzS,EAAMhrH,IAAMuqH,EAASS,EAAOhrH,EAAKy9H,EAAWz9H,IAAM,EAEjG,kBCzDA,IAAIsqH,EAAU,EAAQ,OAClBwqB,EAAQ,EAAQ,OACpBxqB,EAAQA,EAAQoB,EAAIpB,EAAQlC,EAAG,CAC7BmQ,aAAcuc,EAAM96G,IACpBy+F,eAAgBqc,EAAMx0D,yBCHxB,IAAI+pC,EAAS,EAAQ,OACjBC,EAAU,EAAQ,OAClBpxB,EAAY,EAAQ,OACpBp1F,EAAQ,GAAGA,MACXixI,EAAO,WAAW/vH,KAAKk0E,GACvBmB,EAAO,SAAUrgE,GACnB,OAAO,SAAU+tF,EAAIitB,GACnB,IAAIC,EAAY1yI,UAAU9C,OAAS,EAC/BigC,IAAOu1G,GAAYnxI,EAAMpC,KAAKa,UAAW,GAC7C,OAAOy3B,EAAIi7G,EAAY,YAEP,mBAANltB,EAAmBA,EAAK7zF,SAAS6zF,IAAKvlH,MAAMF,KAAMo9B,EAC5D,EAAIqoF,EAAIitB,EACV,CACF,EACA1qB,EAAQA,EAAQoB,EAAIpB,EAAQlC,EAAIkC,EAAQ/zE,EAAIw+F,EAAM,CAChD9qI,WAAYowF,EAAKgwB,EAAOpgH,YACxBirI,YAAa76C,EAAKgwB,EAAO6qB,gCClB3B,EAAQ,OACR,EAAQ,MACR,EAAQ,OACRzvB,EAAOC,QAAU,EAAjB,yFCAIyvB,QAA0B,GAA4B,KAE1DA,EAAwB3xI,KAAK,CAACiiH,EAAOr0G,GAAI,u2QAAw2Q,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,8DAA8D,MAAQ,GAAG,SAAW,muHAAmuH,eAAiB,CAAC,w2QAAw2Q,WAAa,MAE1mpB,kCCDAq0G,EAAOC,QAAU,SAAU0vB,GACzB,IAAI52H,EAAO,GA4EX,OAzEAA,EAAKsK,SAAW,WACd,OAAOxmB,KAAKwH,KAAI,SAAUoI,GACxB,IAAIwgD,EAAU,GACV2iF,OAA+B,IAAZnjI,EAAK,GAoB5B,OAnBIA,EAAK,KACPwgD,GAAW,cAAclgD,OAAON,EAAK,GAAI,QAEvCA,EAAK,KACPwgD,GAAW,UAAUlgD,OAAON,EAAK,GAAI,OAEnCmjI,IACF3iF,GAAW,SAASlgD,OAAON,EAAK,GAAGzS,OAAS,EAAI,IAAI+S,OAAON,EAAK,IAAM,GAAI,OAE5EwgD,GAAW0iF,EAAuBljI,GAC9BmjI,IACF3iF,GAAW,KAETxgD,EAAK,KACPwgD,GAAW,KAETxgD,EAAK,KACPwgD,GAAW,KAENA,CACT,IAAGl3C,KAAK,GACV,EAGAgD,EAAKhf,EAAI,SAAW81I,EAASC,EAAOC,EAAQC,EAAUC,GAC7B,iBAAZJ,IACTA,EAAU,CAAC,CAAC,KAAMA,OAAS5wI,KAE7B,IAAIixI,EAAyB,CAAC,EAC9B,GAAIH,EACF,IAAK,IAAInuH,EAAI,EAAGA,EAAI/kB,KAAK7C,OAAQ4nB,IAAK,CACpC,IAAIjW,EAAK9O,KAAK+kB,GAAG,GACP,MAANjW,IACFukI,EAAuBvkI,IAAM,EAEjC,CAEF,IAAK,IAAI4lF,EAAK,EAAGA,EAAKs+C,EAAQ71I,OAAQu3F,IAAM,CAC1C,IAAI9kF,EAAO,GAAGM,OAAO8iI,EAAQt+C,IACzBw+C,GAAUG,EAAuBzjI,EAAK,WAGrB,IAAVwjI,SACc,IAAZxjI,EAAK,KAGdA,EAAK,GAAK,SAASM,OAAON,EAAK,GAAGzS,OAAS,EAAI,IAAI+S,OAAON,EAAK,IAAM,GAAI,MAAMM,OAAON,EAAK,GAAI,MAF/FA,EAAK,GAAKwjI,GAMVH,IACGrjI,EAAK,IAGRA,EAAK,GAAK,UAAUM,OAAON,EAAK,GAAI,MAAMM,OAAON,EAAK,GAAI,KAC1DA,EAAK,GAAKqjI,GAHVrjI,EAAK,GAAKqjI,GAMVE,IACGvjI,EAAK,IAGRA,EAAK,GAAK,cAAcM,OAAON,EAAK,GAAI,OAAOM,OAAON,EAAK,GAAI,KAC/DA,EAAK,GAAKujI,GAHVvjI,EAAK,GAAK,GAAGM,OAAOijI,IAMxBj3H,EAAKhb,KAAK0O,GACZ,CACF,EACOsM,CACT,0BClFAinG,EAAOC,QAAU,SAAUxzG,GACzB,IAAIwgD,EAAUxgD,EAAK,GACf0jI,EAAa1jI,EAAK,GACtB,IAAK0jI,EACH,OAAOljF,EAET,GAAoB,mBAATmjF,KAAqB,CAC9B,IAAI9tH,EAAS8tH,KAAKC,SAASC,mBAAmB7lI,KAAKe,UAAU2kI,MACzDhqI,EAAO,+DAA+D4G,OAAOuV,GAC7EiuH,EAAgB,OAAOxjI,OAAO5G,EAAM,OACxC,MAAO,CAAC8mD,GAASlgD,OAAO,CAACwjI,IAAgBx6H,KAAK,KAChD,CACA,MAAO,CAACk3C,GAASl3C,KAAK,KACxB,gCCbA,IAAIy6H,EAAU,EAAQ,OAMlBC,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd33B,cAAc,EACdviB,aAAa,EACbm6C,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1BC,QAAQ,EACRh4B,WAAW,EACXr7G,MAAM,GAEJszI,EAAgB,CAClBlxI,MAAM,EACN/F,QAAQ,EACRW,WAAW,EACXu2I,QAAQ,EACRruB,QAAQ,EACR/lH,WAAW,EACXq0I,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTp4B,cAAc,EACdviB,aAAa,EACbsiB,WAAW,EACXr7G,MAAM,GAEJ2zI,EAAe,CAAC,EAIpB,SAASC,EAAW77E,GAElB,OAAI86E,EAAQgB,OAAO97E,GACV07E,EAIFE,EAAa57E,EAAoB,WAAM+6E,CAChD,CAXAa,EAAad,EAAQiB,YAhBK,CACxB,UAAY,EACZC,QAAQ,EACRz4B,cAAc,EACdviB,aAAa,EACbsiB,WAAW,GAYbs4B,EAAad,EAAQmB,MAAQP,EAY7B,IAAI92I,EAAiBD,OAAOC,eACxBs0H,EAAsBv0H,OAAOu0H,oBAC7BriC,EAAwBlyF,OAAOkyF,sBAC/B9uF,EAA2BpD,OAAOoD,yBAClCnC,EAAiBjB,OAAOiB,eACxBs2I,EAAkBv3I,OAAOM,UAsC7BqlH,EAAOC,QArCP,SAAS4xB,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,iBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqB32I,EAAey2I,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAIhlH,EAAO4hG,EAAoBmjB,GAE3BxlD,IACFv/D,EAAOA,EAAKjgB,OAAOw/E,EAAsBwlD,KAM3C,IAHA,IAAIG,EAAgBX,EAAWO,GAC3BK,EAAgBZ,EAAWQ,GAEtBh4I,EAAI,EAAGA,EAAIizB,EAAKhzB,SAAUD,EAAG,CACpC,IAAIQ,EAAMyyB,EAAKjzB,GAEf,KAAKk3I,EAAc12I,IAAUy3I,GAAaA,EAAUz3I,IAAW43I,GAAiBA,EAAc53I,IAAW23I,GAAiBA,EAAc33I,IAAO,CAC7I,IAAIN,EAAawD,EAAyBs0I,EAAiBx3I,GAE3D,IAEED,EAAew3I,EAAiBv3I,EAAKN,EACvC,CAAE,MAAOiC,GAAI,CACf,CACF,CACF,CAEA,OAAO41I,CACT,mBC1FA,IASIM,EAAS,aAGTC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAehvI,SAGfivI,EAA8B,iBAAV,EAAAr5I,GAAsB,EAAAA,GAAU,EAAAA,EAAOiB,SAAWA,QAAU,EAAAjB,EAGhFs5I,EAA0B,iBAARt2I,MAAoBA,MAAQA,KAAK/B,SAAWA,QAAU+B,KAGxEulD,EAAO8wF,GAAcC,GAAYjkH,SAAS,cAATA,GAUjCkkH,EAPct4I,OAAOM,UAOQ0oB,SAG7BuvH,EAAYpqH,KAAKtK,IACjB20H,EAAYrqH,KAAKhZ,IAkBjBd,EAAM,WACR,OAAOizC,EAAKlzC,KAAKC,KACnB,EA2MA,SAAS4xG,EAASrlH,GAChB,IAAI0C,SAAc1C,EAClB,QAASA,IAAkB,UAAR0C,GAA4B,YAARA,EACzC,CA2EA,SAASuiI,EAASjlI,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAhCF,SAAkBA,GAChB,MAAuB,iBAATA,GAtBhB,SAAsBA,GACpB,QAASA,GAAyB,iBAATA,CAC3B,CAqBK63I,CAAa73I,IAzTF,mBAyTY03I,EAAe12I,KAAKhB,EAChD,CA6BM0vI,CAAS1vI,GACX,OA3VM,IA6VR,GAAIqlH,EAASrlH,GAAQ,CACnB,IAAI83I,EAAgC,mBAAjB93I,EAAMe,QAAwBf,EAAMe,UAAYf,EACnEA,EAAQqlH,EAASyyB,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT93I,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQA,EAAMipB,QAAQkuH,EAAQ,IAC9B,IAAIY,EAAWV,EAAW/yH,KAAKtkB,GAC/B,OAAQ+3I,GAAYT,EAAUhzH,KAAKtkB,GAC/Bu3I,EAAav3I,EAAMoD,MAAM,GAAI20I,EAAW,EAAI,GAC3CX,EAAW9yH,KAAKtkB,GAxWb,KAwW6BA,CACvC,CAEA+kH,EAAOC,QAtPP,SAAkBgzB,EAAMC,EAAMr1I,GAC5B,IAAIs1I,EACAC,EACAC,EACA32I,EACA42I,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIt5I,UArIQ,uBA+IpB,SAASi6I,EAAWrE,GAClB,IAAIt1G,EAAOk5G,EACP9yH,EAAU+yH,EAKd,OAHAD,EAAWC,OAAWn0I,EACtBu0I,EAAiBjE,EACjB7yI,EAASu2I,EAAKl2I,MAAMsjB,EAAS4Z,EAE/B,CAmBA,SAAS45G,EAAatE,GACpB,IAAIuE,EAAoBvE,EAAOgE,EAM/B,YAAyBt0I,IAAjBs0I,GAA+BO,GAAqBZ,GACzDY,EAAoB,GAAOJ,GANJnE,EAAOiE,GAM8BH,CACjE,CAEA,SAASU,IACP,IAAIxE,EAAO7gI,IACX,GAAImlI,EAAatE,GACf,OAAOyE,EAAazE,GAGtB+D,EAAU9uI,WAAWuvI,EAzBvB,SAAuBxE,GACrB,IAEI7yI,EAASw2I,GAFW3D,EAAOgE,GAI/B,OAAOG,EAASb,EAAUn2I,EAAQ22I,GAHR9D,EAAOiE,IAGkC92I,CACrE,CAmBqCu3I,CAAc1E,GACnD,CAEA,SAASyE,EAAazE,GAKpB,OAJA+D,OAAUr0I,EAIN00I,GAAYR,EACPS,EAAWrE,IAEpB4D,EAAWC,OAAWn0I,EACfvC,EACT,CAcA,SAASw3I,IACP,IAAI3E,EAAO7gI,IACPylI,EAAaN,EAAatE,GAM9B,GAJA4D,EAAWr2I,UACXs2I,EAAWv2I,KACX02I,EAAehE,EAEX4E,EAAY,CACd,QAAgBl1I,IAAZq0I,EACF,OAvEN,SAAqB/D,GAMnB,OAJAiE,EAAiBjE,EAEjB+D,EAAU9uI,WAAWuvI,EAAcb,GAE5BO,EAAUG,EAAWrE,GAAQ7yI,CACtC,CAgEa03I,CAAYb,GAErB,GAAIG,EAGF,OADAJ,EAAU9uI,WAAWuvI,EAAcb,GAC5BU,EAAWL,EAEtB,CAIA,YAHgBt0I,IAAZq0I,IACFA,EAAU9uI,WAAWuvI,EAAcb,IAE9Bx2I,CACT,CAGA,OAxGAw2I,EAAOhT,EAASgT,IAAS,EACrB5yB,EAASziH,KACX41I,IAAY51I,EAAQ41I,QAEpBJ,GADAK,EAAS,YAAa71I,GACH+0I,EAAU1S,EAASriI,EAAQw1I,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAc91I,IAAYA,EAAQ81I,SAAWA,GAiG1DO,EAAUG,OAnCV,gBACkBp1I,IAAZq0I,GACFvzC,aAAauzC,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUr0I,CACjD,EA8BAi1I,EAAU7pD,MA5BV,WACE,YAAmBprF,IAAZq0I,EAAwB52I,EAASs3I,EAAatlI,IACvD,EA2BOwlI,CACT,yBC1PA,iBAQE,WAGA,IAAIj1I,EAUAq1I,EAAkB,sBAIlBC,EAAiB,4BAMjBC,EAAc,yBAgBdC,EAAwB,GACxBC,EAAoB,GACpBC,EAA0B,GAC1BC,EAAgB,IAChBC,EAAkB,IAiBlBC,EAAW,IACX91E,EAAmB,iBAEnB+1E,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAOL,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aAAcH,GACf,CAAC,OAjCkB,KAkCnB,CAAC,UAAWC,GACZ,CAAC,eAAgBC,GACjB,CAAC,QAASE,IAIRK,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmB9xH,OAAO4xH,EAAclrF,QACxCqrF,EAAqB/xH,OAAO6xH,EAAgBnrF,QAG5CsrF,EAAW,mBACXC,EAAa,kBACbC,GAAgB,mBAGhBC,GAAe,mDACfC,GAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkBvyH,OAAOsyH,GAAa5rF,QAGtC8rF,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7BC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVhG,GAAa,qBAGbC,GAAa,aAGbgG,GAAe,8BAGf/F,GAAY,cAGZgG,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAGpBC,GAAgB,kBAIhBC,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAGfC,GAAS,OACTC,GAAW,IAAMV,GAAgB,IACjCW,GAAU,IAAMJ,GAAe,IAC/BK,GAAU,IAAMX,GAAe,IAC/BY,GAAW,OACXC,GAAY,IAAMX,GAAiB,IACnCY,GAAU,IAAMX,GAAe,IAC/BY,GAAS,KAAOhB,GAAgBO,GAAeM,GAAWV,GAAiBC,GAAeC,GAAe,IACzGY,GAAS,2BAETC,GAAc,KAAOlB,GAAgB,IACrCmB,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMhB,GAAe,IAC/BiB,GAAQ,UAGRC,GAAc,MAAQR,GAAU,IAAMC,GAAS,IAC/CQ,GAAc,MAAQH,GAAU,IAAML,GAAS,IAC/CS,GAAkB,gCAClBC,GAAkB,gCAClBC,GAZa,MAAQf,GAAU,IAAMK,GAAS,IAYtB,IACxBW,GAAW,IAAMtB,GAAa,KAI9BuB,GAAQD,GAAWD,IAHP,MAAQL,GAAQ,MAAQ,CAACJ,GAAaC,GAAYC,IAAYhkI,KAAK,KAAO,IAAMwkI,GAAWD,GAAW,MAIlHG,GAAU,MAAQ,CAAChB,GAAWK,GAAYC,IAAYhkI,KAAK,KAAO,IAAMykI,GACxEE,GAAW,MAAQ,CAACb,GAAcN,GAAU,IAAKA,GAASO,GAAYC,GAAYV,IAAUtjI,KAAK,KAAO,IAGxG4kI,GAASv1H,OAAOg0H,GAAQ,KAMxBwB,GAAcx1H,OAAOm0H,GAAS,KAG9BsB,GAAYz1H,OAAOw0H,GAAS,MAAQA,GAAS,KAAOc,GAAWF,GAAO,KAGtEM,GAAgB11H,OAAO,CACzB40H,GAAU,IAAMN,GAAU,IAAMU,GAAkB,MAAQ,CAACd,GAASU,GAAS,KAAKjkI,KAAK,KAAO,IAC9FokI,GAAc,IAAME,GAAkB,MAAQ,CAACf,GAASU,GAAUE,GAAa,KAAKnkI,KAAK,KAAO,IAChGikI,GAAU,IAAME,GAAc,IAAME,GACpCJ,GAAU,IAAMK,GAtBD,mDADA,mDA0Bfb,GACAiB,IACA1kI,KAAK,KAAM,KAGTglI,GAAe31H,OAAO,IAAM60H,GAAQtB,GAAiBC,GAAeK,GAAa,KAGjF+B,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,CAAC,EACtBA,GAAe/E,GAAc+E,GAAe9E,GAC5C8E,GAAe7E,GAAW6E,GAAe5E,GACzC4E,GAAe3E,GAAY2E,GAAe1E,GAC1C0E,GAAezE,GAAmByE,GAAexE,GACjDwE,GAAevE,IAAa,EAC5BuE,GAAejG,GAAWiG,GAAehG,GACzCgG,GAAejF,GAAkBiF,GAAe/F,GAChD+F,GAAehF,GAAegF,GAAe9F,GAC7C8F,GAAe7F,GAAY6F,GAAe5F,GAC1C4F,GAAe1F,GAAU0F,GAAezF,GACxCyF,GAAexF,GAAawF,GAAetF,GAC3CsF,GAAerF,GAAUqF,GAAepF,GACxCoF,GAAelF,IAAc,EAG7B,IAAImF,GAAgB,CAAC,EACrBA,GAAclG,GAAWkG,GAAcjG,GACvCiG,GAAclF,GAAkBkF,GAAcjF,GAC9CiF,GAAchG,GAAWgG,GAAc/F,GACvC+F,GAAchF,GAAcgF,GAAc/E,GAC1C+E,GAAc9E,GAAW8E,GAAc7E,GACvC6E,GAAc5E,GAAY4E,GAAc3F,GACxC2F,GAAc1F,GAAa0F,GAAczF,GACzCyF,GAAcvF,GAAauF,GAActF,GACzCsF,GAAcrF,GAAaqF,GAAcpF,GACzCoF,GAAc3E,GAAY2E,GAAc1E,GACxC0E,GAAczE,GAAayE,GAAcxE,IAAa,EACtDwE,GAAc9F,GAAY8F,GAAc7F,GACxC6F,GAAcnF,IAAc,EAG5B,IA4EIoF,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiB7a,WACjB+R,GAAehvI,SAGfivI,GAA8B,iBAAV,EAAAr5I,GAAsB,EAAAA,GAAU,EAAAA,EAAOiB,SAAWA,QAAU,EAAAjB,EAGhFs5I,GAA0B,iBAARt2I,MAAoBA,MAAQA,KAAK/B,SAAWA,QAAU+B,KAGxEulD,GAAO8wF,IAAcC,IAAYjkH,SAAS,cAATA,GAGjC8sH,GAA4Ct7B,IAAYA,EAAQu7B,UAAYv7B,EAG5Ew7B,GAAaF,IAA4Cv7B,IAAWA,EAAOw7B,UAAYx7B,EAGvF07B,GAAgBD,IAAcA,GAAWx7B,UAAYs7B,GAGrDI,GAAcD,IAAiBjJ,GAAW1/C,QAG1C6oD,GAAY,WACd,IAEE,IAAIjtH,EAAQ8sH,IAAcA,GAAWI,SAAWJ,GAAWI,QAAQ,QAAQltH,MAE3E,OAAIA,GAKGgtH,IAAeA,GAAYG,SAAWH,GAAYG,QAAQ,OACnE,CAAE,MAAO5/I,GAAI,CACf,CAZe,GAeX6/I,GAAoBH,IAAYA,GAASI,cACzCC,GAAaL,IAAYA,GAASM,OAClCC,GAAYP,IAAYA,GAASQ,MACjCC,GAAeT,IAAYA,GAAS5xB,SACpCsyB,GAAYV,IAAYA,GAASW,MACjCC,GAAmBZ,IAAYA,GAASa,aAc5C,SAAS1/I,GAAMk2I,EAAM5yH,EAAS4Z,GAC5B,OAAQA,EAAKjgC,QACX,KAAK,EAAG,OAAOi5I,EAAKh3I,KAAKokB,GACzB,KAAK,EAAG,OAAO4yH,EAAKh3I,KAAKokB,EAAS4Z,EAAK,IACvC,KAAK,EAAG,OAAOg5G,EAAKh3I,KAAKokB,EAAS4Z,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOg5G,EAAKh3I,KAAKokB,EAAS4Z,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOg5G,EAAKl2I,MAAMsjB,EAAS4Z,EAC7B,CAYA,SAASyiH,GAAgB3gI,EAAO+8G,EAAQ6jB,EAAUj/C,GAIhD,IAHA,IAAIx0F,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,SAE9BkP,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GAClB4vH,EAAOp7B,EAAaziG,EAAO0hJ,EAAS1hJ,GAAQ8gB,EAC9C,CACA,OAAO2hF,CACT,CAWA,SAASk/C,GAAU7gI,EAAO4gI,GAIxB,IAHA,IAAIzzI,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,SAE9BkP,EAAQlP,IAC8B,IAAzC2iJ,EAAS5gI,EAAM7S,GAAQA,EAAO6S,KAIpC,OAAOA,CACT,CAWA,SAAS8gI,GAAe9gI,EAAO4gI,GAG7B,IAFA,IAAI3iJ,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OAEhCA,MAC0C,IAA3C2iJ,EAAS5gI,EAAM/hB,GAASA,EAAQ+hB,KAItC,OAAOA,CACT,CAYA,SAASi5G,GAAWj5G,EAAOu7G,GAIzB,IAHA,IAAIpuH,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,SAE9BkP,EAAQlP,GACf,IAAKs9H,EAAUv7G,EAAM7S,GAAQA,EAAO6S,GAClC,OAAO,EAGX,OAAO,CACT,CAWA,SAAS+4G,GAAY/4G,EAAOu7G,GAM1B,IALA,IAAIpuH,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACnC8iJ,EAAW,EACXpgJ,EAAS,KAEJwM,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdouH,EAAUr8H,EAAOiO,EAAO6S,KAC1Brf,EAAOogJ,KAAc7hJ,EAEzB,CACA,OAAOyB,CACT,CAWA,SAASu4H,GAAcl5G,EAAO9gB,GAE5B,SADsB,MAAT8gB,EAAgB,EAAIA,EAAM/hB,SACpB+iJ,GAAYhhI,EAAO9gB,EAAO,IAAM,CACrD,CAWA,SAAS+hJ,GAAkBjhI,EAAO9gB,EAAOgiJ,GAIvC,IAHA,IAAI/zI,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,SAE9BkP,EAAQlP,GACf,GAAIijJ,EAAWhiJ,EAAO8gB,EAAM7S,IAC1B,OAAO,EAGX,OAAO,CACT,CAWA,SAASg0I,GAASnhI,EAAO4gI,GAKvB,IAJA,IAAIzzI,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACnC0C,EAASkjB,MAAM5lB,KAEVkP,EAAQlP,GACf0C,EAAOwM,GAASyzI,EAAS5gI,EAAM7S,GAAQA,EAAO6S,GAEhD,OAAOrf,CACT,CAUA,SAASygJ,GAAUphI,EAAOqS,GAKxB,IAJA,IAAIllB,GAAS,EACTlP,EAASo0B,EAAOp0B,OAChBgqB,EAASjI,EAAM/hB,SAEVkP,EAAQlP,GACf+hB,EAAMiI,EAAS9a,GAASklB,EAAOllB,GAEjC,OAAO6S,CACT,CAcA,SAASw5G,GAAYx5G,EAAO4gI,EAAUj/C,EAAa0/C,GACjD,IAAIl0I,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OAKvC,IAHIojJ,GAAapjJ,IACf0jG,EAAc3hF,IAAQ7S,MAEfA,EAAQlP,GACf0jG,EAAci/C,EAASj/C,EAAa3hF,EAAM7S,GAAQA,EAAO6S,GAE3D,OAAO2hF,CACT,CAcA,SAAS83B,GAAiBz5G,EAAO4gI,EAAUj/C,EAAa0/C,GACtD,IAAIpjJ,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OAIvC,IAHIojJ,GAAapjJ,IACf0jG,EAAc3hF,IAAQ/hB,IAEjBA,KACL0jG,EAAci/C,EAASj/C,EAAa3hF,EAAM/hB,GAASA,EAAQ+hB,GAE7D,OAAO2hF,CACT,CAYA,SAASq3B,GAAUh5G,EAAOu7G,GAIxB,IAHA,IAAIpuH,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,SAE9BkP,EAAQlP,GACf,GAAIs9H,EAAUv7G,EAAM7S,GAAQA,EAAO6S,GACjC,OAAO,EAGX,OAAO,CACT,CASA,IAAIshI,GAAYC,GAAa,UAmC7B,SAASC,GAAYC,EAAYlmB,EAAWmmB,GAC1C,IAAI/gJ,EAOJ,OANA+gJ,EAASD,GAAY,SAASviJ,EAAOV,EAAKijJ,GACxC,GAAIlmB,EAAUr8H,EAAOV,EAAKijJ,GAExB,OADA9gJ,EAASnC,GACF,CAEX,IACOmC,CACT,CAaA,SAASghJ,GAAc3hI,EAAOu7G,EAAWpW,EAAWy8B,GAIlD,IAHA,IAAI3jJ,EAAS+hB,EAAM/hB,OACfkP,EAAQg4G,GAAay8B,EAAY,GAAK,GAElCA,EAAYz0I,MAAYA,EAAQlP,GACtC,GAAIs9H,EAAUv7G,EAAM7S,GAAQA,EAAO6S,GACjC,OAAO7S,EAGX,OAAQ,CACV,CAWA,SAAS6zI,GAAYhhI,EAAO9gB,EAAOimH,GACjC,OAAOjmH,GAAUA,EAidnB,SAAuB8gB,EAAO9gB,EAAOimH,GACnC,IAAIh4G,EAAQg4G,EAAY,EACpBlnH,EAAS+hB,EAAM/hB,OAEnB,OAASkP,EAAQlP,GACf,GAAI+hB,EAAM7S,KAAWjO,EACnB,OAAOiO,EAGX,OAAQ,CACV,CA1dM00I,CAAc7hI,EAAO9gB,EAAOimH,GAC5Bw8B,GAAc3hI,EAAO8hI,GAAW38B,EACtC,CAYA,SAAS48B,GAAgB/hI,EAAO9gB,EAAOimH,EAAW+7B,GAIhD,IAHA,IAAI/zI,EAAQg4G,EAAY,EACpBlnH,EAAS+hB,EAAM/hB,SAEVkP,EAAQlP,GACf,GAAIijJ,EAAWlhI,EAAM7S,GAAQjO,GAC3B,OAAOiO,EAGX,OAAQ,CACV,CASA,SAAS20I,GAAU5iJ,GACjB,OAAOA,GAAUA,CACnB,CAWA,SAAS8iJ,GAAShiI,EAAO4gI,GACvB,IAAI3iJ,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAOA,EAAUgkJ,GAAQjiI,EAAO4gI,GAAY3iJ,EAAU+6I,CACxD,CASA,SAASuI,GAAa/iJ,GACpB,OAAO,SAAS0C,GACd,OAAiB,MAAVA,EAAiBgC,EAAYhC,EAAO1C,EAC7C,CACF,CASA,SAAS0jJ,GAAehhJ,GACtB,OAAO,SAAS1C,GACd,OAAiB,MAAV0C,EAAiBgC,EAAYhC,EAAO1C,EAC7C,CACF,CAeA,SAAS2jJ,GAAWV,EAAYb,EAAUj/C,EAAa0/C,EAAWK,GAMhE,OALAA,EAASD,GAAY,SAASviJ,EAAOiO,EAAOs0I,GAC1C9/C,EAAc0/C,GACTA,GAAY,EAAOniJ,GACpB0hJ,EAASj/C,EAAaziG,EAAOiO,EAAOs0I,EAC1C,IACO9/C,CACT,CA+BA,SAASsgD,GAAQjiI,EAAO4gI,GAKtB,IAJA,IAAIjgJ,EACAwM,GAAS,EACTlP,EAAS+hB,EAAM/hB,SAEVkP,EAAQlP,GAAQ,CACvB,IAAIsc,EAAUqmI,EAAS5gI,EAAM7S,IACzBoN,IAAYrX,IACdvC,EAASA,IAAWuC,EAAYqX,EAAW5Z,EAAS4Z,EAExD,CACA,OAAO5Z,CACT,CAWA,SAASyhJ,GAAUh+H,EAAGw8H,GAIpB,IAHA,IAAIzzI,GAAS,EACTxM,EAASkjB,MAAMO,KAEVjX,EAAQiX,GACfzjB,EAAOwM,GAASyzI,EAASzzI,GAE3B,OAAOxM,CACT,CAwBA,SAAS0hJ,GAASh1B,GAChB,OAAOA,EACHA,EAAO/qH,MAAM,EAAGggJ,GAAgBj1B,GAAU,GAAGllG,QAAQ0zH,GAAa,IAClExuB,CACN,CASA,SAASk1B,GAAUrL,GACjB,OAAO,SAASh4I,GACd,OAAOg4I,EAAKh4I,EACd,CACF,CAYA,SAASsjJ,GAAWthJ,EAAQnD,GAC1B,OAAOojJ,GAASpjJ,GAAO,SAASS,GAC9B,OAAO0C,EAAO1C,EAChB,GACF,CAUA,SAASikJ,GAASrqI,EAAO5Z,GACvB,OAAO4Z,EAAMukB,IAAIn+B,EACnB,CAWA,SAASkkJ,GAAgBC,EAAYC,GAInC,IAHA,IAAIz1I,GAAS,EACTlP,EAAS0kJ,EAAW1kJ,SAEfkP,EAAQlP,GAAU+iJ,GAAY4B,EAAYD,EAAWx1I,GAAQ,IAAM,IAC5E,OAAOA,CACT,CAWA,SAAS01I,GAAcF,EAAYC,GAGjC,IAFA,IAAIz1I,EAAQw1I,EAAW1kJ,OAEhBkP,KAAW6zI,GAAY4B,EAAYD,EAAWx1I,GAAQ,IAAM,IACnE,OAAOA,CACT,CA8BA,IAAI21I,GAAeZ,GAjxBG,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,MAouBxBa,GAAiBb,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASc,GAAiBC,GACxB,MAAO,KAAO3D,GAAc2D,EAC9B,CAqBA,SAASC,GAAW71B,GAClB,OAAO2xB,GAAax7H,KAAK6pG,EAC3B,CAqCA,SAAS81B,GAAW76I,GAClB,IAAI6E,GAAS,EACTxM,EAASkjB,MAAMvb,EAAI2sB,MAKvB,OAHA3sB,EAAIlC,SAAQ,SAASlH,EAAOV,GAC1BmC,IAASwM,GAAS,CAAC3O,EAAKU,EAC1B,IACOyB,CACT,CAUA,SAASyiJ,GAAQlM,EAAMmM,GACrB,OAAO,SAASllH,GACd,OAAO+4G,EAAKmM,EAAUllH,GACxB,CACF,CAWA,SAASmlH,GAAetjI,EAAOgB,GAM7B,IALA,IAAI7T,GAAS,EACTlP,EAAS+hB,EAAM/hB,OACf8iJ,EAAW,EACXpgJ,EAAS,KAEJwM,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdjO,IAAU8hB,GAAe9hB,IAAUu5I,IACrCz4H,EAAM7S,GAASsrI,EACf93I,EAAOogJ,KAAc5zI,EAEzB,CACA,OAAOxM,CACT,CASA,SAAS4iJ,GAAW/qH,GAClB,IAAIrrB,GAAS,EACTxM,EAASkjB,MAAM2U,EAAIvD,MAKvB,OAHAuD,EAAIpyB,SAAQ,SAASlH,GACnByB,IAASwM,GAASjO,CACpB,IACOyB,CACT,CASA,SAAS6iJ,GAAWhrH,GAClB,IAAIrrB,GAAS,EACTxM,EAASkjB,MAAM2U,EAAIvD,MAKvB,OAHAuD,EAAIpyB,SAAQ,SAASlH,GACnByB,IAASwM,GAAS,CAACjO,EAAOA,EAC5B,IACOyB,CACT,CAmDA,SAAS8iJ,GAAWp2B,GAClB,OAAO61B,GAAW71B,GAiDpB,SAAqBA,GACnB,IAAI1sH,EAASm+I,GAAUhqB,UAAY,EACnC,KAAOgqB,GAAUt7H,KAAK6pG,MAClB1sH,EAEJ,OAAOA,CACT,CAtDM+iJ,CAAYr2B,GACZi0B,GAAUj0B,EAChB,CASA,SAASs2B,GAAct2B,GACrB,OAAO61B,GAAW71B,GAmDpB,SAAwBA,GACtB,OAAOA,EAAO7jG,MAAMs1H,KAAc,EACpC,CApDM8E,CAAev2B,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAO5zG,MAAM,GACtB,CA4kBMoqI,CAAax2B,EACnB,CAUA,SAASi1B,GAAgBj1B,GAGvB,IAFA,IAAIlgH,EAAQkgH,EAAOpvH,OAEZkP,KAAW2uI,GAAat4H,KAAK6pG,EAAOpyB,OAAO9tF,MAClD,OAAOA,CACT,CASA,IAAI22I,GAAmB5B,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MA4gCX,IAs3eIl9H,GAt3ee,SAAU++H,EAAazrH,GAIxC,IA6BM68F,EA7BFtxG,GAHJyU,EAAqB,MAAXA,EAAkBstB,GAAO5gC,GAAEg/H,SAASp+F,GAAKtnD,SAAUg6B,EAAStT,GAAEi/H,KAAKr+F,GAAMs5F,MAG/Dr7H,MAChBnR,GAAO4lB,EAAQ5lB,KACf3O,GAAQu0B,EAAQv0B,MAChB2uB,GAAW4F,EAAQ5F,SACnBjG,GAAO6L,EAAQ7L,KACfnuB,GAASg6B,EAAQh6B,OACjB+qB,GAASiP,EAAQjP,OACjB5B,GAAS6Q,EAAQ7Q,OACjB7pB,GAAY06B,EAAQ16B,UAGpBsmJ,GAAargI,EAAMjlB,UACnBulJ,GAAYzxH,GAAS9zB,UACrBwlJ,GAAc9lJ,GAAOM,UAGrBylJ,GAAa/rH,EAAQ,sBAGrBgsH,GAAeH,GAAU78H,SAGzBlmB,GAAiBgjJ,GAAYhjJ,eAG7BmjJ,GAAY,EAGZC,IACErvB,EAAM,SAASj9B,KAAKmsD,IAAcA,GAAWpzH,MAAQozH,GAAWpzH,KAAK6gG,UAAY,KACvE,iBAAmBqD,EAAO,GAQtCsvB,GAAuBL,GAAY98H,SAGnCo9H,GAAmBJ,GAAapkJ,KAAK5B,IAGrCqmJ,GAAU/+F,GAAK5gC,EAGf4/H,GAAav7H,GAAO,IACtBi7H,GAAapkJ,KAAKkB,IAAgB+mB,QAAQwzH,GAAc,QACvDxzH,QAAQ,yDAA0D,SAAW,KAI5E08H,GAASlF,GAAgBrnH,EAAQusH,OAAS3hJ,EAC1CuB,GAAS6zB,EAAQ7zB,OACjB0hB,GAAamS,EAAQnS,WACrB2+H,GAAcD,GAASA,GAAOC,YAAc5hJ,EAC5C6hJ,GAAe3B,GAAQ9kJ,GAAOiB,eAAgBjB,IAC9C0mJ,GAAe1mJ,GAAOU,OACtByxF,GAAuB2zD,GAAY3zD,qBACnCtuF,GAAS+hJ,GAAW/hJ,OACpB8iJ,GAAmBxgJ,GAASA,GAAOygJ,mBAAqBhiJ,EACxDiiJ,GAAc1gJ,GAASA,GAAO6gB,SAAWpiB,EACzCkiJ,GAAiB3gJ,GAASA,GAAOC,YAAcxB,EAE/C3E,GAAkB,WACpB,IACE,IAAI24I,EAAOmO,GAAU/mJ,GAAQ,kBAE7B,OADA44I,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACT,CAAE,MAAO/2I,GAAI,CACf,CANqB,GASjBmlJ,GAAkBhtH,EAAQ0rE,eAAiBp+C,GAAKo+C,cAAgB1rE,EAAQ0rE,aACxEuhD,GAAS7yI,IAAQA,GAAKC,MAAQizC,GAAKlzC,KAAKC,KAAOD,GAAKC,IACpD6yI,GAAgBltH,EAAQ7vB,aAAem9C,GAAKn9C,YAAc6vB,EAAQ7vB,WAGlEg9I,GAAah5H,GAAKmC,KAClB82H,GAAcj5H,GAAKC,MACnBi5H,GAAmBrnJ,GAAOkyF,sBAC1Bo1D,GAAiBf,GAASA,GAAOgB,SAAW3iJ,EAC5C4iJ,GAAiBxtH,EAAQyqC,SACzBgjF,GAAa7B,GAAWlqI,KACxBgsI,GAAa5C,GAAQ9kJ,GAAO2yB,KAAM3yB,IAClCu4I,GAAYpqH,GAAKtK,IACjB20H,GAAYrqH,GAAKhZ,IACjBwyI,GAAYvzI,GAAKC,IACjBuzI,GAAiB5tH,EAAQ7wB,SACzB0+I,GAAe15H,GAAK4zG,OACpB+lB,GAAgBlC,GAAWlpD,QAG3B/kD,GAAWovG,GAAU/sH,EAAS,YAC9B0B,GAAMqrH,GAAU/sH,EAAS,OACzB91B,GAAU6iJ,GAAU/sH,EAAS,WAC7B+qD,GAAMgiE,GAAU/sH,EAAS,OACzB+tH,GAAUhB,GAAU/sH,EAAS,WAC7BguH,GAAejB,GAAU/mJ,GAAQ,UAGjCioJ,GAAUF,IAAW,IAAIA,GAGzBG,GAAY,CAAC,EAGbC,GAAqBC,GAASzwG,IAC9B0wG,GAAgBD,GAAS1sH,IACzB4sH,GAAoBF,GAASlkJ,IAC7BqkJ,GAAgBH,GAASrjE,IACzByjE,GAAoBJ,GAASL,IAG7BU,GAActiJ,GAASA,GAAO7F,UAAYsE,EAC1C8jJ,GAAgBD,GAAcA,GAAY9mJ,QAAUiD,EACpD+jJ,GAAiBF,GAAcA,GAAYz/H,SAAWpkB,EAyH1D,SAASgkJ,GAAOhoJ,GACd,GAAI63I,GAAa73I,KAAWkzB,GAAQlzB,MAAYA,aAAiBioJ,IAAc,CAC7E,GAAIjoJ,aAAiBkoJ,GACnB,OAAOloJ,EAET,GAAIkC,GAAelB,KAAKhB,EAAO,eAC7B,OAAOmoJ,GAAanoJ,EAExB,CACA,OAAO,IAAIkoJ,GAAcloJ,EAC3B,CAUA,IAAIooJ,GAAc,WAChB,SAASpmJ,IAAU,CACnB,OAAO,SAASsoH,GACd,IAAKjF,GAASiF,GACZ,MAAO,CAAC,EAEV,GAAIw7B,GACF,OAAOA,GAAax7B,GAEtBtoH,EAAOtC,UAAY4qH,EACnB,IAAI7oH,EAAS,IAAIO,EAEjB,OADAA,EAAOtC,UAAYsE,EACZvC,CACT,CACF,CAdiB,GAqBjB,SAAS4mJ,KAET,CASA,SAASH,GAAcloJ,EAAOsoJ,GAC5B1mJ,KAAK2mJ,YAAcvoJ,EACnB4B,KAAK4mJ,YAAc,GACnB5mJ,KAAK6mJ,YAAcH,EACnB1mJ,KAAK8mJ,UAAY,EACjB9mJ,KAAK+mJ,WAAa3kJ,CACpB,CA+EA,SAASikJ,GAAYjoJ,GACnB4B,KAAK2mJ,YAAcvoJ,EACnB4B,KAAK4mJ,YAAc,GACnB5mJ,KAAKgnJ,QAAU,EACfhnJ,KAAKinJ,cAAe,EACpBjnJ,KAAKknJ,cAAgB,GACrBlnJ,KAAKmnJ,cAAgBhP,EACrBn4I,KAAKonJ,UAAY,EACnB,CA+GA,SAASC,GAAK1rH,GACZ,IAAItvB,GAAS,EACTlP,EAAoB,MAAXw+B,EAAkB,EAAIA,EAAQx+B,OAG3C,IADA6C,KAAKg+E,UACI3xE,EAAQlP,GAAQ,CACvB,IAAIwnC,EAAQhJ,EAAQtvB,GACpBrM,KAAK03B,IAAIiN,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAAS2iH,GAAU3rH,GACjB,IAAItvB,GAAS,EACTlP,EAAoB,MAAXw+B,EAAkB,EAAIA,EAAQx+B,OAG3C,IADA6C,KAAKg+E,UACI3xE,EAAQlP,GAAQ,CACvB,IAAIwnC,EAAQhJ,EAAQtvB,GACpBrM,KAAK03B,IAAIiN,EAAM,GAAIA,EAAM,GAC3B,CACF,CA4GA,SAAS4iH,GAAS5rH,GAChB,IAAItvB,GAAS,EACTlP,EAAoB,MAAXw+B,EAAkB,EAAIA,EAAQx+B,OAG3C,IADA6C,KAAKg+E,UACI3xE,EAAQlP,GAAQ,CACvB,IAAIwnC,EAAQhJ,EAAQtvB,GACpBrM,KAAK03B,IAAIiN,EAAM,GAAIA,EAAM,GAC3B,CACF,CA+FA,SAAS6iH,GAASj2H,GAChB,IAAIllB,GAAS,EACTlP,EAAmB,MAAVo0B,EAAiB,EAAIA,EAAOp0B,OAGzC,IADA6C,KAAKynJ,SAAW,IAAIF,KACXl7I,EAAQlP,GACf6C,KAAKyF,IAAI8rB,EAAOllB,GAEpB,CA2CA,SAASq7I,GAAM/rH,GACb,IAAIryB,EAAOtJ,KAAKynJ,SAAW,IAAIH,GAAU3rH,GACzC37B,KAAKm0B,KAAO7qB,EAAK6qB,IACnB,CAoGA,SAASwzH,GAAcvpJ,EAAOwpJ,GAC5B,IAAIC,EAAQv2H,GAAQlzB,GAChB0pJ,GAASD,GAASE,GAAY3pJ,GAC9B4pJ,GAAUH,IAAUC,GAAS/C,GAAS3mJ,GACtCuzB,GAAUk2H,IAAUC,IAAUE,GAAUpI,GAAaxhJ,GACrD6pJ,EAAcJ,GAASC,GAASE,GAAUr2H,EAC1C9xB,EAASooJ,EAAc3G,GAAUljJ,EAAMjB,OAAQwpB,IAAU,GACzDxpB,EAAS0C,EAAO1C,OAEpB,IAAK,IAAIO,KAAOU,GACTwpJ,IAAatnJ,GAAelB,KAAKhB,EAAOV,IACvCuqJ,IAEQ,UAAPvqJ,GAECsqJ,IAAkB,UAAPtqJ,GAA0B,UAAPA,IAE9Bi0B,IAAkB,UAAPj0B,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDwqJ,GAAQxqJ,EAAKP,KAElB0C,EAAOqB,KAAKxD,GAGhB,OAAOmC,CACT,CASA,SAASsoJ,GAAYjpI,GACnB,IAAI/hB,EAAS+hB,EAAM/hB,OACnB,OAAOA,EAAS+hB,EAAMkpI,GAAW,EAAGjrJ,EAAS,IAAMiF,CACrD,CAUA,SAASimJ,GAAgBnpI,EAAOoE,GAC9B,OAAOglI,GAAYC,GAAUrpI,GAAQspI,GAAUllI,EAAG,EAAGpE,EAAM/hB,QAC7D,CASA,SAASsrJ,GAAavpI,GACpB,OAAOopI,GAAYC,GAAUrpI,GAC/B,CAWA,SAASwpI,GAAiBtoJ,EAAQ1C,EAAKU,IAChCA,IAAUgE,IAAcumJ,GAAGvoJ,EAAO1C,GAAMU,IACxCA,IAAUgE,KAAe1E,KAAO0C,KACnCwoJ,GAAgBxoJ,EAAQ1C,EAAKU,EAEjC,CAYA,SAASyqJ,GAAYzoJ,EAAQ1C,EAAKU,GAChC,IAAI0qJ,EAAW1oJ,EAAO1C,GAChB4C,GAAelB,KAAKgB,EAAQ1C,IAAQirJ,GAAGG,EAAU1qJ,KAClDA,IAAUgE,GAAe1E,KAAO0C,IACnCwoJ,GAAgBxoJ,EAAQ1C,EAAKU,EAEjC,CAUA,SAAS2qJ,GAAa7pI,EAAOxhB,GAE3B,IADA,IAAIP,EAAS+hB,EAAM/hB,OACZA,KACL,GAAIwrJ,GAAGzpI,EAAM/hB,GAAQ,GAAIO,GACvB,OAAOP,EAGX,OAAQ,CACV,CAaA,SAAS6rJ,GAAerI,EAAY1kB,EAAQ6jB,EAAUj/C,GAIpD,OAHAooD,GAAStI,GAAY,SAASviJ,EAAOV,EAAKijJ,GACxC1kB,EAAOp7B,EAAaziG,EAAO0hJ,EAAS1hJ,GAAQuiJ,EAC9C,IACO9/C,CACT,CAWA,SAASqoD,GAAW9oJ,EAAQ6uD,GAC1B,OAAO7uD,GAAU+oJ,GAAWl6F,EAAQ9+B,GAAK8+B,GAAS7uD,EACpD,CAwBA,SAASwoJ,GAAgBxoJ,EAAQ1C,EAAKU,GACzB,aAAPV,GAAsBD,GACxBA,GAAe2C,EAAQ1C,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASU,EACT,UAAY,IAGdgC,EAAO1C,GAAOU,CAElB,CAUA,SAASgrJ,GAAOhpJ,EAAQipJ,GAMtB,IALA,IAAIh9I,GAAS,EACTlP,EAASksJ,EAAMlsJ,OACf0C,EAASkjB,EAAM5lB,GACf4sD,EAAiB,MAAV3pD,IAEFiM,EAAQlP,GACf0C,EAAOwM,GAAS09C,EAAO3nD,EAAY5B,GAAIJ,EAAQipJ,EAAMh9I,IAEvD,OAAOxM,CACT,CAWA,SAAS2oJ,GAAUxxB,EAAQsyB,EAAOC,GAShC,OARIvyB,GAAWA,IACTuyB,IAAUnnJ,IACZ40H,EAASA,GAAUuyB,EAAQvyB,EAASuyB,GAElCD,IAAUlnJ,IACZ40H,EAASA,GAAUsyB,EAAQtyB,EAASsyB,IAGjCtyB,CACT,CAkBA,SAASwyB,GAAUprJ,EAAOqrJ,EAASC,EAAYhsJ,EAAK0C,EAAQe,GAC1D,IAAItB,EACA8pJ,EArkFc,EAqkFLF,EACTG,EArkFc,EAqkFLH,EACTI,EArkFiB,EAqkFRJ,EAKb,GAHIC,IACF7pJ,EAASO,EAASspJ,EAAWtrJ,EAAOV,EAAK0C,EAAQe,GAASuoJ,EAAWtrJ,IAEnEyB,IAAWuC,EACb,OAAOvC,EAET,IAAK4jH,GAASrlH,GACZ,OAAOA,EAET,IAAIypJ,EAAQv2H,GAAQlzB,GACpB,GAAIypJ,GAEF,GADAhoJ,EA68GJ,SAAwBqf,GACtB,IAAI/hB,EAAS+hB,EAAM/hB,OACf0C,EAAS,IAAIqf,EAAM/gB,YAAYhB,GAG/BA,GAA6B,iBAAZ+hB,EAAM,IAAkB5e,GAAelB,KAAK8f,EAAO,WACtErf,EAAOwM,MAAQ6S,EAAM7S,MACrBxM,EAAOwgB,MAAQnB,EAAMmB,OAEvB,OAAOxgB,CACT,CAv9GaiqJ,CAAe1rJ,IACnBurJ,EACH,OAAOpB,GAAUnqJ,EAAOyB,OAErB,CACL,IAAIo8B,EAAM8tH,GAAO3rJ,GACb4rJ,EAAS/tH,GAAOy8G,GAAWz8G,GAAO08G,EAEtC,GAAIoM,GAAS3mJ,GACX,OAAO6rJ,GAAY7rJ,EAAOurJ,GAE5B,GAAI1tH,GAAO68G,GAAa78G,GAAOo8G,GAAY2R,IAAW5pJ,GAEpD,GADAP,EAAU+pJ,GAAUI,EAAU,CAAC,EAAIE,GAAgB9rJ,IAC9CurJ,EACH,OAAOC,EA+nEf,SAAuB36F,EAAQ7uD,GAC7B,OAAO+oJ,GAAWl6F,EAAQk7F,GAAal7F,GAAS7uD,EAClD,CAhoEYgqJ,CAAchsJ,EAnH1B,SAAsBgC,EAAQ6uD,GAC5B,OAAO7uD,GAAU+oJ,GAAWl6F,EAAQo7F,GAAOp7F,GAAS7uD,EACtD,CAiHiCkqJ,CAAazqJ,EAAQzB,IAknEtD,SAAqB6wD,EAAQ7uD,GAC3B,OAAO+oJ,GAAWl6F,EAAQq7D,GAAWr7D,GAAS7uD,EAChD,CAnnEYmqJ,CAAYnsJ,EAAO8qJ,GAAWrpJ,EAAQzB,QAEvC,CACL,IAAKmgJ,GAActiH,GACjB,OAAO77B,EAAShC,EAAQ,CAAC,EAE3ByB,EA49GN,SAAwBO,EAAQ67B,EAAK0tH,GACnC,IAAIa,EAAOpqJ,EAAOjC,YAClB,OAAQ89B,GACN,KAAKo9G,EACH,OAAOoR,GAAiBrqJ,GAE1B,KAAKm4I,EACL,KAAKC,EACH,OAAO,IAAIgS,GAAMpqJ,GAEnB,KAAKk5I,EACH,OA5nDN,SAAuBvkG,EAAU40G,GAC/B,IAAIziI,EAASyiI,EAASc,GAAiB11G,EAAS7tB,QAAU6tB,EAAS7tB,OACnE,OAAO,IAAI6tB,EAAS52C,YAAY+oB,EAAQ6tB,EAASsH,WAAYtH,EAASM,WACxE,CAynDaq1G,CAActqJ,EAAQupJ,GAE/B,KAAKpQ,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAO4Q,GAAgBvqJ,EAAQupJ,GAEjC,KAAK/Q,EACH,OAAO,IAAI4R,EAEb,KAAK3R,EACL,KAAKK,EACH,OAAO,IAAIsR,EAAKpqJ,GAElB,KAAK44I,EACH,OA/nDN,SAAqB9sB,GACnB,IAAIrsH,EAAS,IAAIqsH,EAAO/tH,YAAY+tH,EAAOj9D,OAAQusF,GAAQpkD,KAAK80B,IAEhE,OADArsH,EAAOm0H,UAAY9H,EAAO8H,UACnBn0H,CACT,CA2nDa+qJ,CAAYxqJ,GAErB,KAAK64I,EACH,OAAO,IAAIuR,EAEb,KAAKrR,EACH,OAxnDe5oH,EAwnDInwB,EAvnDhB8lJ,GAAgB1oJ,GAAO0oJ,GAAc9mJ,KAAKmxB,IAAW,CAAC,EAD/D,IAAqBA,CA0nDrB,CA9/Ges6H,CAAezsJ,EAAO69B,EAAK0tH,EACtC,CACF,CAEAxoJ,IAAUA,EAAQ,IAAIumJ,IACtB,IAAIoD,EAAU3pJ,EAAMX,IAAIpC,GACxB,GAAI0sJ,EACF,OAAOA,EAET3pJ,EAAMu2B,IAAIt5B,EAAOyB,GAEb6/I,GAAMthJ,GACRA,EAAMkH,SAAQ,SAASylJ,GACrBlrJ,EAAO4F,IAAI+jJ,GAAUuB,EAAUtB,EAASC,EAAYqB,EAAU3sJ,EAAO+C,GACvE,IACSo+I,GAAMnhJ,IACfA,EAAMkH,SAAQ,SAASylJ,EAAUrtJ,GAC/BmC,EAAO63B,IAAIh6B,EAAK8rJ,GAAUuB,EAAUtB,EAASC,EAAYhsJ,EAAKU,EAAO+C,GACvE,IAGF,IAIIlE,EAAQ4qJ,EAAQzlJ,GAJLynJ,EACVD,EAASoB,GAAeC,GACxBrB,EAASS,GAASl6H,IAEkB/xB,GASzC,OARA2hJ,GAAU9iJ,GAASmB,GAAO,SAAS2sJ,EAAUrtJ,GACvCT,IAEF8tJ,EAAW3sJ,EADXV,EAAMqtJ,IAIRlC,GAAYhpJ,EAAQnC,EAAK8rJ,GAAUuB,EAAUtB,EAASC,EAAYhsJ,EAAKU,EAAO+C,GAChF,IACOtB,CACT,CAwBA,SAASqrJ,GAAe9qJ,EAAQ6uD,EAAQhyD,GACtC,IAAIE,EAASF,EAAME,OACnB,GAAc,MAAViD,EACF,OAAQjD,EAGV,IADAiD,EAAS5C,GAAO4C,GACTjD,KAAU,CACf,IAAIO,EAAMT,EAAME,GACZs9H,EAAYxrE,EAAOvxD,GACnBU,EAAQgC,EAAO1C,GAEnB,GAAKU,IAAUgE,KAAe1E,KAAO0C,KAAaq6H,EAAUr8H,GAC1D,OAAO,CAEX,CACA,OAAO,CACT,CAYA,SAAS+sJ,GAAU/U,EAAMC,EAAMj5G,GAC7B,GAAmB,mBAARg5G,EACT,MAAM,IAAIt5I,GAAU26I,GAEtB,OAAO9vI,IAAW,WAAayuI,EAAKl2I,MAAMkC,EAAWg7B,EAAO,GAAGi5G,EACjE,CAaA,SAAS+U,GAAelsI,EAAOqS,EAAQuuH,EAAUM,GAC/C,IAAI/zI,GAAS,EACT0M,EAAWq/G,GACXizB,GAAW,EACXluJ,EAAS+hB,EAAM/hB,OACf0C,EAAS,GACTyrJ,EAAe/5H,EAAOp0B,OAE1B,IAAKA,EACH,OAAO0C,EAELigJ,IACFvuH,EAAS8uH,GAAS9uH,EAAQkwH,GAAU3B,KAElCM,GACFrnI,EAAWonI,GACXkL,GAAW,GAEJ95H,EAAOp0B,QAtvFG,MAuvFjB4b,EAAW4oI,GACX0J,GAAW,EACX95H,EAAS,IAAIi2H,GAASj2H,IAExBg6H,EACA,OAASl/I,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdm/I,EAAuB,MAAZ1L,EAAmB1hJ,EAAQ0hJ,EAAS1hJ,GAGnD,GADAA,EAASgiJ,GAAwB,IAAVhiJ,EAAeA,EAAQ,EAC1CitJ,GAAYG,GAAaA,EAAU,CAErC,IADA,IAAIC,EAAcH,EACXG,KACL,GAAIl6H,EAAOk6H,KAAiBD,EAC1B,SAASD,EAGb1rJ,EAAOqB,KAAK9C,EACd,MACU2a,EAASwY,EAAQi6H,EAAUpL,IACnCvgJ,EAAOqB,KAAK9C,EAEhB,CACA,OAAOyB,CACT,CAlkCAumJ,GAAOsF,iBAAmB,CAQxB,OAAUnR,EAQV,SAAYC,EAQZ,YAAeC,GAQf,SAAY,GAQZ,QAAW,CAQT,EAAK2L,KAKTA,GAAOtoJ,UAAY2oJ,GAAW3oJ,UAC9BsoJ,GAAOtoJ,UAAUK,YAAcioJ,GAE/BE,GAAcxoJ,UAAY0oJ,GAAWC,GAAW3oJ,WAChDwoJ,GAAcxoJ,UAAUK,YAAcmoJ,GAsHtCD,GAAYvoJ,UAAY0oJ,GAAWC,GAAW3oJ,WAC9CuoJ,GAAYvoJ,UAAUK,YAAckoJ,GAoGpCgB,GAAKvpJ,UAAUkgF,MAvEf,WACEh+E,KAAKynJ,SAAWjC,GAAeA,GAAa,MAAQ,CAAC,EACrDxlJ,KAAKm0B,KAAO,CACd,EAqEAkzH,GAAKvpJ,UAAkB,OAzDvB,SAAoBJ,GAClB,IAAImC,EAASG,KAAK67B,IAAIn+B,WAAesC,KAAKynJ,SAAS/pJ,GAEnD,OADAsC,KAAKm0B,MAAQt0B,EAAS,EAAI,EACnBA,CACT,EAsDAwnJ,GAAKvpJ,UAAU0C,IA3Cf,SAAiB9C,GACf,IAAI4L,EAAOtJ,KAAKynJ,SAChB,GAAIjC,GAAc,CAChB,IAAI3lJ,EAASyJ,EAAK5L,GAClB,OAAOmC,IAAW63I,EAAiBt1I,EAAYvC,CACjD,CACA,OAAOS,GAAelB,KAAKkK,EAAM5L,GAAO4L,EAAK5L,GAAO0E,CACtD,EAqCAilJ,GAAKvpJ,UAAU+9B,IA1Bf,SAAiBn+B,GACf,IAAI4L,EAAOtJ,KAAKynJ,SAChB,OAAOjC,GAAgBl8I,EAAK5L,KAAS0E,EAAa9B,GAAelB,KAAKkK,EAAM5L,EAC9E,EAwBA2pJ,GAAKvpJ,UAAU45B,IAZf,SAAiBh6B,EAAKU,GACpB,IAAIkL,EAAOtJ,KAAKynJ,SAGhB,OAFAznJ,KAAKm0B,MAAQn0B,KAAK67B,IAAIn+B,GAAO,EAAI,EACjC4L,EAAK5L,GAAQ8nJ,IAAgBpnJ,IAAUgE,EAAas1I,EAAiBt5I,EAC9D4B,IACT,EAwHAsnJ,GAAUxpJ,UAAUkgF,MApFpB,WACEh+E,KAAKynJ,SAAW,GAChBznJ,KAAKm0B,KAAO,CACd,EAkFAmzH,GAAUxpJ,UAAkB,OAvE5B,SAAyBJ,GACvB,IAAI4L,EAAOtJ,KAAKynJ,SACZp7I,EAAQ08I,GAAaz/I,EAAM5L,GAE/B,QAAI2O,EAAQ,KAIRA,GADY/C,EAAKnM,OAAS,EAE5BmM,EAAKqb,MAELtjB,GAAOjC,KAAKkK,EAAM+C,EAAO,KAEzBrM,KAAKm0B,MACA,EACT,EAyDAmzH,GAAUxpJ,UAAU0C,IA9CpB,SAAsB9C,GACpB,IAAI4L,EAAOtJ,KAAKynJ,SACZp7I,EAAQ08I,GAAaz/I,EAAM5L,GAE/B,OAAO2O,EAAQ,EAAIjK,EAAYkH,EAAK+C,GAAO,EAC7C,EA0CAi7I,GAAUxpJ,UAAU+9B,IA/BpB,SAAsBn+B,GACpB,OAAOqrJ,GAAa/oJ,KAAKynJ,SAAU/pJ,IAAQ,CAC7C,EA8BA4pJ,GAAUxpJ,UAAU45B,IAlBpB,SAAsBh6B,EAAKU,GACzB,IAAIkL,EAAOtJ,KAAKynJ,SACZp7I,EAAQ08I,GAAaz/I,EAAM5L,GAQ/B,OANI2O,EAAQ,KACRrM,KAAKm0B,KACP7qB,EAAKpI,KAAK,CAACxD,EAAKU,KAEhBkL,EAAK+C,GAAO,GAAKjO,EAEZ4B,IACT,EA0GAunJ,GAASzpJ,UAAUkgF,MAtEnB,WACEh+E,KAAKm0B,KAAO,EACZn0B,KAAKynJ,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAKnuH,IAAOouH,IACnB,OAAU,IAAID,GAElB,EAgEAE,GAASzpJ,UAAkB,OArD3B,SAAwBJ,GACtB,IAAImC,EAAS8rJ,GAAW3rJ,KAAMtC,GAAa,OAAEA,GAE7C,OADAsC,KAAKm0B,MAAQt0B,EAAS,EAAI,EACnBA,CACT,EAkDA0nJ,GAASzpJ,UAAU0C,IAvCnB,SAAqB9C,GACnB,OAAOiuJ,GAAW3rJ,KAAMtC,GAAK8C,IAAI9C,EACnC,EAsCA6pJ,GAASzpJ,UAAU+9B,IA3BnB,SAAqBn+B,GACnB,OAAOiuJ,GAAW3rJ,KAAMtC,GAAKm+B,IAAIn+B,EACnC,EA0BA6pJ,GAASzpJ,UAAU45B,IAdnB,SAAqBh6B,EAAKU,GACxB,IAAIkL,EAAOqiJ,GAAW3rJ,KAAMtC,GACxBy2B,EAAO7qB,EAAK6qB,KAIhB,OAFA7qB,EAAKouB,IAAIh6B,EAAKU,GACd4B,KAAKm0B,MAAQ7qB,EAAK6qB,MAAQA,EAAO,EAAI,EAC9Bn0B,IACT,EA0DAwnJ,GAAS1pJ,UAAU2H,IAAM+hJ,GAAS1pJ,UAAUoD,KAnB5C,SAAqB9C,GAEnB,OADA4B,KAAKynJ,SAAS/vH,IAAIt5B,EAAOs5I,GAClB13I,IACT,EAiBAwnJ,GAAS1pJ,UAAU+9B,IANnB,SAAqBz9B,GACnB,OAAO4B,KAAKynJ,SAAS5rH,IAAIz9B,EAC3B,EAsGAspJ,GAAM5pJ,UAAUkgF,MA3EhB,WACEh+E,KAAKynJ,SAAW,IAAIH,GACpBtnJ,KAAKm0B,KAAO,CACd,EAyEAuzH,GAAM5pJ,UAAkB,OA9DxB,SAAqBJ,GACnB,IAAI4L,EAAOtJ,KAAKynJ,SACZ5nJ,EAASyJ,EAAa,OAAE5L,GAG5B,OADAsC,KAAKm0B,KAAO7qB,EAAK6qB,KACVt0B,CACT,EAyDA6nJ,GAAM5pJ,UAAU0C,IA9ChB,SAAkB9C,GAChB,OAAOsC,KAAKynJ,SAASjnJ,IAAI9C,EAC3B,EA6CAgqJ,GAAM5pJ,UAAU+9B,IAlChB,SAAkBn+B,GAChB,OAAOsC,KAAKynJ,SAAS5rH,IAAIn+B,EAC3B,EAiCAgqJ,GAAM5pJ,UAAU45B,IArBhB,SAAkBh6B,EAAKU,GACrB,IAAIkL,EAAOtJ,KAAKynJ,SAChB,GAAIn+I,aAAgBg+I,GAAW,CAC7B,IAAIsE,EAAQtiJ,EAAKm+I,SACjB,IAAKvuH,IAAQ0yH,EAAMzuJ,OAAS0uJ,IAG1B,OAFAD,EAAM1qJ,KAAK,CAACxD,EAAKU,IACjB4B,KAAKm0B,OAAS7qB,EAAK6qB,KACZn0B,KAETsJ,EAAOtJ,KAAKynJ,SAAW,IAAIF,GAASqE,EACtC,CAGA,OAFAtiJ,EAAKouB,IAAIh6B,EAAKU,GACd4B,KAAKm0B,KAAO7qB,EAAK6qB,KACVn0B,IACT,EAqcA,IAAIipJ,GAAW6C,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUvL,EAAYlmB,GAC7B,IAAI56H,GAAS,EAKb,OAJAopJ,GAAStI,GAAY,SAASviJ,EAAOiO,EAAOs0I,GAE1C,OADA9gJ,IAAW46H,EAAUr8H,EAAOiO,EAAOs0I,EAErC,IACO9gJ,CACT,CAYA,SAASssJ,GAAajtI,EAAO4gI,EAAUM,GAIrC,IAHA,IAAI/zI,GAAS,EACTlP,EAAS+hB,EAAM/hB,SAEVkP,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdoN,EAAUqmI,EAAS1hJ,GAEvB,GAAe,MAAXqb,IAAoB+xI,IAAappJ,EAC5BqX,GAAYA,IAAYq0H,GAASr0H,GAClC2mI,EAAW3mI,EAAS+xI,IAE1B,IAAIA,EAAW/xI,EACX5Z,EAASzB,CAEjB,CACA,OAAOyB,CACT,CAsCA,SAASusJ,GAAWzL,EAAYlmB,GAC9B,IAAI56H,EAAS,GAMb,OALAopJ,GAAStI,GAAY,SAASviJ,EAAOiO,EAAOs0I,GACtClmB,EAAUr8H,EAAOiO,EAAOs0I,IAC1B9gJ,EAAOqB,KAAK9C,EAEhB,IACOyB,CACT,CAaA,SAASwsJ,GAAYntI,EAAO04B,EAAO6iF,EAAW6xB,EAAUzsJ,GACtD,IAAIwM,GAAS,EACTlP,EAAS+hB,EAAM/hB,OAKnB,IAHAs9H,IAAcA,EAAY8xB,IAC1B1sJ,IAAWA,EAAS,MAEXwM,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdurC,EAAQ,GAAK6iF,EAAUr8H,GACrBw5C,EAAQ,EAEVy0G,GAAYjuJ,EAAOw5C,EAAQ,EAAG6iF,EAAW6xB,EAAUzsJ,GAEnDygJ,GAAUzgJ,EAAQzB,GAEVkuJ,IACVzsJ,EAAOA,EAAO1C,QAAUiB,EAE5B,CACA,OAAOyB,CACT,CAaA,IAAI2sJ,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASV,GAAW3rJ,EAAQ0/I,GAC1B,OAAO1/I,GAAUosJ,GAAQpsJ,EAAQ0/I,EAAU3vH,GAC7C,CAUA,SAAS87H,GAAgB7rJ,EAAQ0/I,GAC/B,OAAO1/I,GAAUssJ,GAAatsJ,EAAQ0/I,EAAU3vH,GAClD,CAWA,SAASw8H,GAAcvsJ,EAAQnD,GAC7B,OAAOg7H,GAAYh7H,GAAO,SAASS,GACjC,OAAO01H,GAAWhzH,EAAO1C,GAC3B,GACF,CAUA,SAASkvJ,GAAQxsJ,EAAQ6b,GAMvB,IAHA,IAAI5P,EAAQ,EACRlP,GAHJ8e,EAAO4wI,GAAS5wI,EAAM7b,IAGJjD,OAED,MAAViD,GAAkBiM,EAAQlP,GAC/BiD,EAASA,EAAO0sJ,GAAM7wI,EAAK5P,OAE7B,OAAQA,GAASA,GAASlP,EAAUiD,EAASgC,CAC/C,CAaA,SAAS2qJ,GAAe3sJ,EAAQ4sJ,EAAUC,GACxC,IAAIptJ,EAASmtJ,EAAS5sJ,GACtB,OAAOkxB,GAAQlxB,GAAUP,EAASygJ,GAAUzgJ,EAAQotJ,EAAY7sJ,GAClE,CASA,SAAS8sJ,GAAW9uJ,GAClB,OAAa,MAATA,EACKA,IAAUgE,EAn7FJ,qBARL,gBA67FFkiJ,IAAkBA,MAAkB9mJ,GAAOY,GA23FrD,SAAmBA,GACjB,IAAI+uJ,EAAQ7sJ,GAAelB,KAAKhB,EAAOkmJ,IACnCroH,EAAM79B,EAAMkmJ,IAEhB,IACElmJ,EAAMkmJ,IAAkBliJ,EACxB,IAAIgrJ,GAAW,CACjB,CAAE,MAAO/tJ,GAAI,CAEb,IAAIQ,EAAS8jJ,GAAqBvkJ,KAAKhB,GACnCgvJ,IACED,EACF/uJ,EAAMkmJ,IAAkBroH,SAEjB79B,EAAMkmJ,KAGjB,OAAOzkJ,CACT,CA54FMwtJ,CAAUjvJ,GA+5GhB,SAAwBA,GACtB,OAAOulJ,GAAqBvkJ,KAAKhB,EACnC,CAh6GM03I,CAAe13I,EACrB,CAWA,SAASkvJ,GAAOlvJ,EAAO83I,GACrB,OAAO93I,EAAQ83I,CACjB,CAUA,SAASqX,GAAQntJ,EAAQ1C,GACvB,OAAiB,MAAV0C,GAAkBE,GAAelB,KAAKgB,EAAQ1C,EACvD,CAUA,SAAS8vJ,GAAUptJ,EAAQ1C,GACzB,OAAiB,MAAV0C,GAAkB1C,KAAOF,GAAO4C,EACzC,CAyBA,SAASqtJ,GAAiB5iI,EAAQi1H,EAAUM,GAS1C,IARA,IAAIrnI,EAAWqnI,EAAaD,GAAoB/nB,GAC5Cj7H,EAAS0tB,EAAO,GAAG1tB,OACnBuwJ,EAAY7iI,EAAO1tB,OACnBwwJ,EAAWD,EACXE,EAAS7qI,EAAM2qI,GACfnwF,EAAYmJ,IACZ7mE,EAAS,GAEN8tJ,KAAY,CACjB,IAAIzuI,EAAQ2L,EAAO8iI,GACfA,GAAY7N,IACd5gI,EAAQmhI,GAASnhI,EAAOuiI,GAAU3B,KAEpCviF,EAAYy4E,GAAU92H,EAAM/hB,OAAQogE,GACpCqwF,EAAOD,IAAavN,IAAeN,GAAa3iJ,GAAU,KAAO+hB,EAAM/hB,QAAU,KAC7E,IAAIqqJ,GAASmG,GAAYzuI,GACzB9c,CACN,CACA8c,EAAQ2L,EAAO,GAEf,IAAIxe,GAAS,EACTwhJ,EAAOD,EAAO,GAElBrC,EACA,OAASl/I,EAAQlP,GAAU0C,EAAO1C,OAASogE,GAAW,CACpD,IAAIn/D,EAAQ8gB,EAAM7S,GACdm/I,EAAW1L,EAAWA,EAAS1hJ,GAASA,EAG5C,GADAA,EAASgiJ,GAAwB,IAAVhiJ,EAAeA,EAAQ,IACxCyvJ,EACElM,GAASkM,EAAMrC,GACfzyI,EAASlZ,EAAQ2rJ,EAAUpL,IAC5B,CAEL,IADAuN,EAAWD,IACFC,GAAU,CACjB,IAAIr2I,EAAQs2I,EAAOD,GACnB,KAAMr2I,EACEqqI,GAASrqI,EAAOk0I,GAChBzyI,EAAS8R,EAAO8iI,GAAWnC,EAAUpL,IAE3C,SAASmL,CAEb,CACIsC,GACFA,EAAK3sJ,KAAKsqJ,GAEZ3rJ,EAAOqB,KAAK9C,EACd,CACF,CACA,OAAOyB,CACT,CA8BA,SAASiuJ,GAAW1tJ,EAAQ6b,EAAMmhB,GAGhC,IAAIg5G,EAAiB,OADrBh2I,EAASiiC,GAAOjiC,EADhB6b,EAAO4wI,GAAS5wI,EAAM7b,KAEMA,EAASA,EAAO0sJ,GAAMriI,GAAKxO,KACvD,OAAe,MAARm6H,EAAeh0I,EAAYlC,GAAMk2I,EAAMh2I,EAAQg9B,EACxD,CASA,SAAS2wH,GAAgB3vJ,GACvB,OAAO63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAUi6I,CACrD,CAsCA,SAAS2V,GAAY5vJ,EAAO83I,EAAOuT,EAASC,EAAYvoJ,GACtD,OAAI/C,IAAU83I,IAGD,MAAT93I,GAA0B,MAAT83I,IAAmBD,GAAa73I,KAAW63I,GAAaC,GACpE93I,GAAUA,GAAS83I,GAAUA,EAmBxC,SAAyB91I,EAAQ81I,EAAOuT,EAASC,EAAYuE,EAAW9sJ,GACtE,IAAI+sJ,EAAW58H,GAAQlxB,GACnB+tJ,EAAW78H,GAAQ4kH,GACnBkY,EAASF,EAAW5V,EAAWyR,GAAO3pJ,GACtCiuJ,EAASF,EAAW7V,EAAWyR,GAAO7T,GAKtCoY,GAHJF,EAASA,GAAU/V,EAAUS,EAAYsV,IAGhBtV,EACrByV,GAHJF,EAASA,GAAUhW,EAAUS,EAAYuV,IAGhBvV,EACrB0V,EAAYJ,GAAUC,EAE1B,GAAIG,GAAazJ,GAAS3kJ,GAAS,CACjC,IAAK2kJ,GAAS7O,GACZ,OAAO,EAETgY,GAAW,EACXI,GAAW,CACb,CACA,GAAIE,IAAcF,EAEhB,OADAntJ,IAAUA,EAAQ,IAAIumJ,IACdwG,GAAYtO,GAAax/I,GAC7BquJ,GAAYruJ,EAAQ81I,EAAOuT,EAASC,EAAYuE,EAAW9sJ,GA81EnE,SAAoBf,EAAQ81I,EAAOj6G,EAAKwtH,EAASC,EAAYuE,EAAW9sJ,GACtE,OAAQ86B,GACN,KAAKq9G,EACH,GAAKl5I,EAAOi1C,YAAc6gG,EAAM7gG,YAC3Bj1C,EAAOi8C,YAAc65F,EAAM75F,WAC9B,OAAO,EAETj8C,EAASA,EAAO8mB,OAChBgvH,EAAQA,EAAMhvH,OAEhB,KAAKmyH,EACH,QAAKj5I,EAAOi1C,YAAc6gG,EAAM7gG,aAC3B44G,EAAU,IAAI5oI,GAAWjlB,GAAS,IAAIilB,GAAW6wH,KAKxD,KAAKqC,EACL,KAAKC,EACL,KAAKK,EAGH,OAAO8P,IAAIvoJ,GAAS81I,GAEtB,KAAKuC,EACH,OAAOr4I,EAAO8C,MAAQgzI,EAAMhzI,MAAQ9C,EAAO8G,SAAWgvI,EAAMhvI,QAE9D,KAAK8xI,EACL,KAAKE,EAIH,OAAO94I,GAAW81I,EAAQ,GAE5B,KAAK0C,EACH,IAAI8V,EAAUrM,GAEhB,KAAKpJ,EACH,IAAI0V,EAxnLe,EAwnLHlF,EAGhB,GAFAiF,IAAYA,EAAUjM,IAElBriJ,EAAO+zB,MAAQ+hH,EAAM/hH,OAASw6H,EAChC,OAAO,EAGT,IAAI7D,EAAU3pJ,EAAMX,IAAIJ,GACxB,GAAI0qJ,EACF,OAAOA,GAAW5U,EAEpBuT,GAloLqB,EAqoLrBtoJ,EAAMu2B,IAAIt3B,EAAQ81I,GAClB,IAAIr2I,EAAS4uJ,GAAYC,EAAQtuJ,GAASsuJ,EAAQxY,GAAQuT,EAASC,EAAYuE,EAAW9sJ,GAE1F,OADAA,EAAc,OAAEf,GACTP,EAET,KAAKs5I,EACH,GAAI+M,GACF,OAAOA,GAAc9mJ,KAAKgB,IAAW8lJ,GAAc9mJ,KAAK82I,GAG9D,OAAO,CACT,CA55EQ0Y,CAAWxuJ,EAAQ81I,EAAOkY,EAAQ3E,EAASC,EAAYuE,EAAW9sJ,GAExE,KAvvGuB,EAuvGjBsoJ,GAAiC,CACrC,IAAIoF,EAAeP,GAAYhuJ,GAAelB,KAAKgB,EAAQ,eACvD0uJ,EAAeP,GAAYjuJ,GAAelB,KAAK82I,EAAO,eAE1D,GAAI2Y,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAezuJ,EAAOhC,QAAUgC,EAC/C4uJ,EAAeF,EAAe5Y,EAAM93I,QAAU83I,EAGlD,OADA/0I,IAAUA,EAAQ,IAAIumJ,IACfuG,EAAUc,EAAcC,EAAcvF,EAASC,EAAYvoJ,EACpE,CACF,CACA,IAAKqtJ,EACH,OAAO,EAGT,OADArtJ,IAAUA,EAAQ,IAAIumJ,IA05ExB,SAAsBtnJ,EAAQ81I,EAAOuT,EAASC,EAAYuE,EAAW9sJ,GACnE,IAAIwtJ,EAjqLmB,EAiqLPlF,EACZwF,EAAWhE,GAAW7qJ,GACtB8uJ,EAAYD,EAAS9xJ,OACrBgyJ,EAAWlE,GAAW/U,GACtBwX,EAAYyB,EAAShyJ,OAEzB,GAAI+xJ,GAAaxB,IAAciB,EAC7B,OAAO,EAET,IAAItiJ,EAAQ6iJ,EACZ,KAAO7iJ,KAAS,CACd,IAAI3O,EAAMuxJ,EAAS5iJ,GACnB,KAAMsiJ,EAAYjxJ,KAAOw4I,EAAQ51I,GAAelB,KAAK82I,EAAOx4I,IAC1D,OAAO,CAEX,CAEA,IAAI0xJ,EAAajuJ,EAAMX,IAAIJ,GACvBivJ,EAAaluJ,EAAMX,IAAI01I,GAC3B,GAAIkZ,GAAcC,EAChB,OAAOD,GAAclZ,GAASmZ,GAAcjvJ,EAE9C,IAAIP,GAAS,EACbsB,EAAMu2B,IAAIt3B,EAAQ81I,GAClB/0I,EAAMu2B,IAAIw+G,EAAO91I,GAEjB,IAAIkvJ,EAAWX,EACf,OAAStiJ,EAAQ6iJ,GAAW,CAE1B,IAAIpG,EAAW1oJ,EADf1C,EAAMuxJ,EAAS5iJ,IAEXkjJ,EAAWrZ,EAAMx4I,GAErB,GAAIgsJ,EACF,IAAI8F,EAAWb,EACXjF,EAAW6F,EAAUzG,EAAUprJ,EAAKw4I,EAAO91I,EAAQe,GACnDuoJ,EAAWZ,EAAUyG,EAAU7xJ,EAAK0C,EAAQ81I,EAAO/0I,GAGzD,KAAMquJ,IAAaptJ,EACV0mJ,IAAayG,GAAYtB,EAAUnF,EAAUyG,EAAU9F,EAASC,EAAYvoJ,GAC7EquJ,GACD,CACL3vJ,GAAS,EACT,KACF,CACAyvJ,IAAaA,EAAkB,eAAP5xJ,EAC1B,CACA,GAAImC,IAAWyvJ,EAAU,CACvB,IAAIG,EAAUrvJ,EAAOjC,YACjBuxJ,EAAUxZ,EAAM/3I,YAGhBsxJ,GAAWC,KACV,gBAAiBtvJ,MAAU,gBAAiB81I,IACzB,mBAAXuZ,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD7vJ,GAAS,EAEb,CAGA,OAFAsB,EAAc,OAAEf,GAChBe,EAAc,OAAE+0I,GACTr2I,CACT,CAx9ES8vJ,CAAavvJ,EAAQ81I,EAAOuT,EAASC,EAAYuE,EAAW9sJ,EACrE,CA5DSyuJ,CAAgBxxJ,EAAO83I,EAAOuT,EAASC,EAAYsE,GAAa7sJ,GACzE,CAkFA,SAAS0uJ,GAAYzvJ,EAAQ6uD,EAAQ6gG,EAAWpG,GAC9C,IAAIr9I,EAAQyjJ,EAAU3yJ,OAClBA,EAASkP,EACT0jJ,GAAgBrG,EAEpB,GAAc,MAAVtpJ,EACF,OAAQjD,EAGV,IADAiD,EAAS5C,GAAO4C,GACTiM,KAAS,CACd,IAAI/C,EAAOwmJ,EAAUzjJ,GACrB,GAAK0jJ,GAAgBzmJ,EAAK,GAClBA,EAAK,KAAOlJ,EAAOkJ,EAAK,MACtBA,EAAK,KAAMlJ,GAEnB,OAAO,CAEX,CACA,OAASiM,EAAQlP,GAAQ,CAEvB,IAAIO,GADJ4L,EAAOwmJ,EAAUzjJ,IACF,GACXy8I,EAAW1oJ,EAAO1C,GAClBsyJ,EAAW1mJ,EAAK,GAEpB,GAAIymJ,GAAgBzmJ,EAAK,IACvB,GAAIw/I,IAAa1mJ,KAAe1E,KAAO0C,GACrC,OAAO,MAEJ,CACL,IAAIe,EAAQ,IAAIumJ,GAChB,GAAIgC,EACF,IAAI7pJ,EAAS6pJ,EAAWZ,EAAUkH,EAAUtyJ,EAAK0C,EAAQ6uD,EAAQ9tD,GAEnE,KAAMtB,IAAWuC,EACT4rJ,GAAYgC,EAAUlH,EAAUmH,EAA+CvG,EAAYvoJ,GAC3FtB,GAEN,OAAO,CAEX,CACF,CACA,OAAO,CACT,CAUA,SAASqwJ,GAAa9xJ,GACpB,SAAKqlH,GAASrlH,KA05FEg4I,EA15FiBh4I,EA25FxBslJ,IAAeA,MAActN,MAx5FxBhjB,GAAWh1H,GAAS0lJ,GAAarI,IAChC/4H,KAAKkjI,GAASxnJ,IAs5F/B,IAAkBg4I,CAr5FlB,CA2CA,SAAS+Z,GAAa/xJ,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKgyJ,GAEW,iBAAThyJ,EACFkzB,GAAQlzB,GACXiyJ,GAAoBjyJ,EAAM,GAAIA,EAAM,IACpCkyJ,GAAYlyJ,GAEXiC,GAASjC,EAClB,CASA,SAASmyJ,GAASnwJ,GAChB,IAAKowJ,GAAYpwJ,GACf,OAAO8kJ,GAAW9kJ,GAEpB,IAAIP,EAAS,GACb,IAAK,IAAInC,KAAOF,GAAO4C,GACjBE,GAAelB,KAAKgB,EAAQ1C,IAAe,eAAPA,GACtCmC,EAAOqB,KAAKxD,GAGhB,OAAOmC,CACT,CASA,SAAS4wJ,GAAWrwJ,GAClB,IAAKqjH,GAASrjH,GACZ,OA09FJ,SAAsBA,GACpB,IAAIP,EAAS,GACb,GAAc,MAAVO,EACF,IAAK,IAAI1C,KAAOF,GAAO4C,GACrBP,EAAOqB,KAAKxD,GAGhB,OAAOmC,CACT,CAl+FW6wJ,CAAatwJ,GAEtB,IAAIuwJ,EAAUH,GAAYpwJ,GACtBP,EAAS,GAEb,IAAK,IAAInC,KAAO0C,GACD,eAAP1C,IAAyBizJ,GAAYrwJ,GAAelB,KAAKgB,EAAQ1C,KACrEmC,EAAOqB,KAAKxD,GAGhB,OAAOmC,CACT,CAWA,SAAS+wJ,GAAOxyJ,EAAO83I,GACrB,OAAO93I,EAAQ83I,CACjB,CAUA,SAAS2a,GAAQlQ,EAAYb,GAC3B,IAAIzzI,GAAS,EACTxM,EAASixJ,GAAYnQ,GAAc59H,EAAM49H,EAAWxjJ,QAAU,GAKlE,OAHA8rJ,GAAStI,GAAY,SAASviJ,EAAOV,EAAKijJ,GACxC9gJ,IAASwM,GAASyzI,EAAS1hJ,EAAOV,EAAKijJ,EACzC,IACO9gJ,CACT,CASA,SAASywJ,GAAYrhG,GACnB,IAAI6gG,EAAYiB,GAAa9hG,GAC7B,OAAwB,GAApB6gG,EAAU3yJ,QAAe2yJ,EAAU,GAAG,GACjCkB,GAAwBlB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAAS1vJ,GACd,OAAOA,IAAW6uD,GAAU4gG,GAAYzvJ,EAAQ6uD,EAAQ6gG,EAC1D,CACF,CAUA,SAASO,GAAoBp0I,EAAM+zI,GACjC,OAAIiB,GAAMh1I,IAASi1I,GAAmBlB,GAC7BgB,GAAwBlE,GAAM7wI,GAAO+zI,GAEvC,SAAS5vJ,GACd,IAAI0oJ,EAAWtoJ,GAAIJ,EAAQ6b,GAC3B,OAAQ6sI,IAAa1mJ,GAAa0mJ,IAAakH,EAC3CmB,GAAM/wJ,EAAQ6b,GACd+xI,GAAYgC,EAAUlH,EAAUmH,EACtC,CACF,CAaA,SAASmB,GAAUhxJ,EAAQ6uD,EAAQoiG,EAAU3H,EAAYvoJ,GACnDf,IAAW6uD,GAGfu9F,GAAQv9F,GAAQ,SAAS+gG,EAAUtyJ,GAEjC,GADAyD,IAAUA,EAAQ,IAAIumJ,IAClBjkC,GAASusC,IA+BjB,SAAuB5vJ,EAAQ6uD,EAAQvxD,EAAK2zJ,EAAUC,EAAW5H,EAAYvoJ,GAC3E,IAAI2nJ,EAAWyI,GAAQnxJ,EAAQ1C,GAC3BsyJ,EAAWuB,GAAQtiG,EAAQvxD,GAC3BotJ,EAAU3pJ,EAAMX,IAAIwvJ,GAExB,GAAIlF,EAEF,YADApC,GAAiBtoJ,EAAQ1C,EAAKotJ,GAGhC,IAAI0G,EAAW9H,EACXA,EAAWZ,EAAUkH,EAAWtyJ,EAAM,GAAK0C,EAAQ6uD,EAAQ9tD,GAC3DiB,EAEAipJ,EAAWmG,IAAapvJ,EAE5B,GAAIipJ,EAAU,CACZ,IAAIxD,EAAQv2H,GAAQ0+H,GAChBhI,GAAUH,GAAS9C,GAASiL,GAC5ByB,GAAW5J,IAAUG,GAAUpI,GAAaoQ,GAEhDwB,EAAWxB,EACPnI,GAASG,GAAUyJ,EACjBngI,GAAQw3H,GACV0I,EAAW1I,EAEJ4I,GAAkB5I,GACzB0I,EAAWjJ,GAAUO,GAEdd,GACPqD,GAAW,EACXmG,EAAWvH,GAAY+F,GAAU,IAE1ByB,GACPpG,GAAW,EACXmG,EAAW7G,GAAgBqF,GAAU,IAGrCwB,EAAW,GAGNG,GAAc3B,IAAajI,GAAYiI,IAC9CwB,EAAW1I,EACPf,GAAYe,GACd0I,EAAWI,GAAc9I,GAEjBrlC,GAASqlC,KAAa11B,GAAW01B,KACzC0I,EAAWtH,GAAgB8F,KAI7B3E,GAAW,CAEf,CACIA,IAEFlqJ,EAAMu2B,IAAIs4H,EAAUwB,GACpBF,EAAUE,EAAUxB,EAAUqB,EAAU3H,EAAYvoJ,GACpDA,EAAc,OAAE6uJ,IAElBtH,GAAiBtoJ,EAAQ1C,EAAK8zJ,EAChC,CA1FMK,CAAczxJ,EAAQ6uD,EAAQvxD,EAAK2zJ,EAAUD,GAAW1H,EAAYvoJ,OAEjE,CACH,IAAIqwJ,EAAW9H,EACXA,EAAW6H,GAAQnxJ,EAAQ1C,GAAMsyJ,EAAWtyJ,EAAM,GAAK0C,EAAQ6uD,EAAQ9tD,GACvEiB,EAEAovJ,IAAapvJ,IACfovJ,EAAWxB,GAEbtH,GAAiBtoJ,EAAQ1C,EAAK8zJ,EAChC,CACF,GAAGnH,GACL,CAuFA,SAASyH,GAAQ5yI,EAAOoE,GACtB,IAAInmB,EAAS+hB,EAAM/hB,OACnB,GAAKA,EAIL,OAAO+qJ,GADP5kI,GAAKA,EAAI,EAAInmB,EAAS,EACJA,GAAU+hB,EAAMoE,GAAKlhB,CACzC,CAWA,SAAS2vJ,GAAYpR,EAAYqR,EAAWn1I,GAExCm1I,EADEA,EAAU70J,OACAkjJ,GAAS2R,GAAW,SAASlS,GACvC,OAAIxuH,GAAQwuH,GACH,SAAS1hJ,GACd,OAAOwuJ,GAAQxuJ,EAA2B,IAApB0hJ,EAAS3iJ,OAAe2iJ,EAAS,GAAKA,EAC9D,EAEKA,CACT,IAEY,CAACsQ,IAGf,IAAI/jJ,GAAS,EACb2lJ,EAAY3R,GAAS2R,EAAWvQ,GAAUwQ,OAE1C,IAAIpyJ,EAASgxJ,GAAQlQ,GAAY,SAASviJ,EAAOV,EAAKijJ,GACpD,IAAIuR,EAAW7R,GAAS2R,GAAW,SAASlS,GAC1C,OAAOA,EAAS1hJ,EAClB,IACA,MAAO,CAAE,SAAY8zJ,EAAU,QAAW7lJ,EAAO,MAASjO,EAC5D,IAEA,OA5xFJ,SAAoB8gB,EAAOizI,GACzB,IAAIh1J,EAAS+hB,EAAM/hB,OAGnB,IADA+hB,EAAMmR,KAAK8hI,GACJh1J,KACL+hB,EAAM/hB,GAAU+hB,EAAM/hB,GAAQiB,MAEhC,OAAO8gB,CACT,CAoxFWkzI,CAAWvyJ,GAAQ,SAASO,EAAQ81I,GACzC,OA04BJ,SAAyB91I,EAAQ81I,EAAOr5H,GACtC,IAAIxQ,GAAS,EACTgmJ,EAAcjyJ,EAAO8xJ,SACrBI,EAAcpc,EAAMgc,SACpB/0J,EAASk1J,EAAYl1J,OACrBo1J,EAAe11I,EAAO1f,OAE1B,OAASkP,EAAQlP,GAAQ,CACvB,IAAI0C,EAAS2yJ,GAAiBH,EAAYhmJ,GAAQimJ,EAAYjmJ,IAC9D,GAAIxM,EACF,OAAIwM,GAASkmJ,EACJ1yJ,EAGFA,GAAmB,QADdgd,EAAOxQ,IACiB,EAAI,EAE5C,CAQA,OAAOjM,EAAOiM,MAAQ6pI,EAAM7pI,KAC9B,CAn6BWomJ,CAAgBryJ,EAAQ81I,EAAOr5H,EACxC,GACF,CA0BA,SAAS61I,GAAWtyJ,EAAQipJ,EAAO5uB,GAKjC,IAJA,IAAIpuH,GAAS,EACTlP,EAASksJ,EAAMlsJ,OACf0C,EAAS,CAAC,IAELwM,EAAQlP,GAAQ,CACvB,IAAI8e,EAAOotI,EAAMh9I,GACbjO,EAAQwuJ,GAAQxsJ,EAAQ6b,GAExBw+G,EAAUr8H,EAAO6d,IACnB02I,GAAQ9yJ,EAAQgtJ,GAAS5wI,EAAM7b,GAAShC,EAE5C,CACA,OAAOyB,CACT,CA0BA,SAAS+yJ,GAAY1zI,EAAOqS,EAAQuuH,EAAUM,GAC5C,IAAItwI,EAAUswI,EAAaa,GAAkBf,GACzC7zI,GAAS,EACTlP,EAASo0B,EAAOp0B,OAChB0wJ,EAAO3uI,EAQX,IANIA,IAAUqS,IACZA,EAASg3H,GAAUh3H,IAEjBuuH,IACF+N,EAAOxN,GAASnhI,EAAOuiI,GAAU3B,OAE1BzzI,EAAQlP,GAKf,IAJA,IAAIknH,EAAY,EACZjmH,EAAQmzB,EAAOllB,GACfm/I,EAAW1L,EAAWA,EAAS1hJ,GAASA,GAEpCimH,EAAYv0G,EAAQ+9I,EAAMrC,EAAUnnC,EAAW+7B,KAAgB,GACjEyN,IAAS3uI,GACX7d,GAAOjC,KAAKyuJ,EAAMxpC,EAAW,GAE/BhjH,GAAOjC,KAAK8f,EAAOmlG,EAAW,GAGlC,OAAOnlG,CACT,CAWA,SAAS2zI,GAAW3zI,EAAO4zI,GAIzB,IAHA,IAAI31J,EAAS+hB,EAAQ4zI,EAAQ31J,OAAS,EAClC62H,EAAY72H,EAAS,EAElBA,KAAU,CACf,IAAIkP,EAAQymJ,EAAQ31J,GACpB,GAAIA,GAAU62H,GAAa3nH,IAAUE,EAAU,CAC7C,IAAIA,EAAWF,EACX67I,GAAQ77I,GACVhL,GAAOjC,KAAK8f,EAAO7S,EAAO,GAE1B0mJ,GAAU7zI,EAAO7S,EAErB,CACF,CACA,OAAO6S,CACT,CAWA,SAASkpI,GAAWkB,EAAOC,GACzB,OAAOD,EAAQ1E,GAAYS,MAAkBkE,EAAQD,EAAQ,GAC/D,CAiCA,SAAS0J,GAAWzmC,EAAQjpG,GAC1B,IAAIzjB,EAAS,GACb,IAAK0sH,GAAUjpG,EAAI,GAAKA,EAAI6+C,EAC1B,OAAOtiE,EAIT,GACMyjB,EAAI,IACNzjB,GAAU0sH,IAEZjpG,EAAIshI,GAAYthI,EAAI,MAElBipG,GAAUA,SAELjpG,GAET,OAAOzjB,CACT,CAUA,SAASozJ,GAAS7c,EAAMntF,GACtB,OAAOiqG,GAAYC,GAAS/c,EAAMntF,EAAOmnG,IAAWha,EAAO,GAC7D,CASA,SAASgd,GAAWzS,GAClB,OAAOwH,GAAY52H,GAAOovH,GAC5B,CAUA,SAAS0S,GAAe1S,EAAYr9H,GAClC,IAAIpE,EAAQqS,GAAOovH,GACnB,OAAO2H,GAAYppI,EAAOspI,GAAUllI,EAAG,EAAGpE,EAAM/hB,QAClD,CAYA,SAASw1J,GAAQvyJ,EAAQ6b,EAAM7d,EAAOsrJ,GACpC,IAAKjmC,GAASrjH,GACZ,OAAOA,EAST,IALA,IAAIiM,GAAS,EACTlP,GAHJ8e,EAAO4wI,GAAS5wI,EAAM7b,IAGJjD,OACd62H,EAAY72H,EAAS,EACrBm2J,EAASlzJ,EAEI,MAAVkzJ,KAAoBjnJ,EAAQlP,GAAQ,CACzC,IAAIO,EAAMovJ,GAAM7wI,EAAK5P,IACjBmlJ,EAAWpzJ,EAEf,GAAY,cAARV,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAO0C,EAGT,GAAIiM,GAAS2nH,EAAW,CACtB,IAAI80B,EAAWwK,EAAO51J,IACtB8zJ,EAAW9H,EAAaA,EAAWZ,EAAUprJ,EAAK41J,GAAUlxJ,KAC3CA,IACfovJ,EAAW/tC,GAASqlC,GAChBA,EACCZ,GAAQjsI,EAAK5P,EAAQ,IAAM,GAAK,CAAC,EAE1C,CACAw8I,GAAYyK,EAAQ51J,EAAK8zJ,GACzB8B,EAASA,EAAO51J,EAClB,CACA,OAAO0C,CACT,CAUA,IAAImzJ,GAAe9N,GAAqB,SAASrP,EAAM9sI,GAErD,OADAm8I,GAAQ/tH,IAAI0+G,EAAM9sI,GACX8sI,CACT,EAH6Bga,GAazBoD,GAAmB/1J,GAA4B,SAAS24I,EAAM7pB,GAChE,OAAO9uH,GAAe24I,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASqd,GAASlnC,GAClB,UAAY,GAEhB,EAPwC6jC,GAgBxC,SAASsD,GAAY/S,GACnB,OAAO2H,GAAY/2H,GAAOovH,GAC5B,CAWA,SAASgT,GAAUz0I,EAAO+pC,EAAOC,GAC/B,IAAI78C,GAAS,EACTlP,EAAS+hB,EAAM/hB,OAEf8rD,EAAQ,IACVA,GAASA,EAAQ9rD,EAAS,EAAKA,EAAS8rD,IAE1CC,EAAMA,EAAM/rD,EAASA,EAAS+rD,GACpB,IACRA,GAAO/rD,GAETA,EAAS8rD,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAIppD,EAASkjB,EAAM5lB,KACVkP,EAAQlP,GACf0C,EAAOwM,GAAS6S,EAAM7S,EAAQ48C,GAEhC,OAAOppD,CACT,CAWA,SAAS+zJ,GAASjT,EAAYlmB,GAC5B,IAAI56H,EAMJ,OAJAopJ,GAAStI,GAAY,SAASviJ,EAAOiO,EAAOs0I,GAE1C,QADA9gJ,EAAS46H,EAAUr8H,EAAOiO,EAAOs0I,GAEnC,MACS9gJ,CACX,CAcA,SAASg0J,GAAgB30I,EAAO9gB,EAAO01J,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAAT90I,EAAgB60I,EAAM70I,EAAM/hB,OAEvC,GAAoB,iBAATiB,GAAqBA,GAAUA,GAAS41J,GAn/H3B7b,WAm/H0D,CAChF,KAAO4b,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvBxI,EAAWtsI,EAAM+0I,GAEJ,OAAbzI,IAAsB1d,GAAS0d,KAC9BsI,EAActI,GAAYptJ,EAAUotJ,EAAWptJ,GAClD21J,EAAME,EAAM,EAEZD,EAAOC,CAEX,CACA,OAAOD,CACT,CACA,OAAOE,GAAkBh1I,EAAO9gB,EAAOgyJ,GAAU0D,EACnD,CAeA,SAASI,GAAkBh1I,EAAO9gB,EAAO0hJ,EAAUgU,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAAT90I,EAAgB,EAAIA,EAAM/hB,OACrC,GAAa,IAAT62J,EACF,OAAO,EAST,IALA,IAAIG,GADJ/1J,EAAQ0hJ,EAAS1hJ,KACQA,EACrBg2J,EAAsB,OAAVh2J,EACZi2J,EAAcvmB,GAAS1vI,GACvBk2J,EAAiBl2J,IAAUgE,EAExB2xJ,EAAMC,GAAM,CACjB,IAAIC,EAAMrP,IAAamP,EAAMC,GAAQ,GACjCxI,EAAW1L,EAAS5gI,EAAM+0I,IAC1BM,EAAe/I,IAAappJ,EAC5BoyJ,EAAyB,OAAbhJ,EACZiJ,EAAiBjJ,GAAaA,EAC9BkJ,EAAc5mB,GAAS0d,GAE3B,GAAI2I,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAActI,GAAYptJ,EAAUotJ,EAAWptJ,GAEtDu2J,EACFZ,EAAME,EAAM,EAEZD,EAAOC,CAEX,CACA,OAAOje,GAAUge,EA1jIC7b,WA2jIpB,CAWA,SAASyc,GAAe11I,EAAO4gI,GAM7B,IALA,IAAIzzI,GAAS,EACTlP,EAAS+hB,EAAM/hB,OACf8iJ,EAAW,EACXpgJ,EAAS,KAEJwM,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdm/I,EAAW1L,EAAWA,EAAS1hJ,GAASA,EAE5C,IAAKiO,IAAUs8I,GAAG6C,EAAUqC,GAAO,CACjC,IAAIA,EAAOrC,EACX3rJ,EAAOogJ,KAAwB,IAAV7hJ,EAAc,EAAIA,CACzC,CACF,CACA,OAAOyB,CACT,CAUA,SAASg1J,GAAaz2J,GACpB,MAAoB,iBAATA,EACFA,EAEL0vI,GAAS1vI,GACJ85I,GAED95I,CACV,CAUA,SAAS02J,GAAa12J,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIkzB,GAAQlzB,GAEV,OAAOiiJ,GAASjiJ,EAAO02J,IAAgB,GAEzC,GAAIhnB,GAAS1vI,GACX,OAAO+nJ,GAAiBA,GAAe/mJ,KAAKhB,GAAS,GAEvD,IAAIyB,EAAUzB,EAAQ,GACtB,MAAkB,KAAVyB,GAAkB,EAAIzB,IAAU,IAAa,KAAOyB,CAC9D,CAWA,SAASk1J,GAAS71I,EAAO4gI,EAAUM,GACjC,IAAI/zI,GAAS,EACT0M,EAAWq/G,GACXj7H,EAAS+hB,EAAM/hB,OACfkuJ,GAAW,EACXxrJ,EAAS,GACTguJ,EAAOhuJ,EAEX,GAAIugJ,EACFiL,GAAW,EACXtyI,EAAWonI,QAER,GAAIhjJ,GAjtIU,IAitIkB,CACnC,IAAIu6B,EAAMooH,EAAW,KAAOkV,GAAU91I,GACtC,GAAIwY,EACF,OAAO+qH,GAAW/qH,GAEpB2zH,GAAW,EACXtyI,EAAW4oI,GACXkM,EAAO,IAAIrG,EACb,MAEEqG,EAAO/N,EAAW,GAAKjgJ,EAEzB0rJ,EACA,OAASl/I,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdm/I,EAAW1L,EAAWA,EAAS1hJ,GAASA,EAG5C,GADAA,EAASgiJ,GAAwB,IAAVhiJ,EAAeA,EAAQ,EAC1CitJ,GAAYG,GAAaA,EAAU,CAErC,IADA,IAAIyJ,EAAYpH,EAAK1wJ,OACd83J,KACL,GAAIpH,EAAKoH,KAAezJ,EACtB,SAASD,EAGTzL,GACF+N,EAAK3sJ,KAAKsqJ,GAEZ3rJ,EAAOqB,KAAK9C,EACd,MACU2a,EAAS80I,EAAMrC,EAAUpL,KAC7ByN,IAAShuJ,GACXguJ,EAAK3sJ,KAAKsqJ,GAEZ3rJ,EAAOqB,KAAK9C,GAEhB,CACA,OAAOyB,CACT,CAUA,SAASkzJ,GAAU3yJ,EAAQ6b,GAGzB,OAAiB,OADjB7b,EAASiiC,GAAOjiC,EADhB6b,EAAO4wI,GAAS5wI,EAAM7b,aAEUA,EAAO0sJ,GAAMriI,GAAKxO,IACpD,CAYA,SAASi5I,GAAW90J,EAAQ6b,EAAMk5I,EAASzL,GACzC,OAAOiJ,GAAQvyJ,EAAQ6b,EAAMk5I,EAAQvI,GAAQxsJ,EAAQ6b,IAAQytI,EAC/D,CAaA,SAAS0L,GAAUl2I,EAAOu7G,EAAW46B,EAAQvU,GAI3C,IAHA,IAAI3jJ,EAAS+hB,EAAM/hB,OACfkP,EAAQy0I,EAAY3jJ,GAAU,GAE1B2jJ,EAAYz0I,MAAYA,EAAQlP,IACtCs9H,EAAUv7G,EAAM7S,GAAQA,EAAO6S,KAEjC,OAAOm2I,EACH1B,GAAUz0I,EAAQ4hI,EAAY,EAAIz0I,EAASy0I,EAAYz0I,EAAQ,EAAIlP,GACnEw2J,GAAUz0I,EAAQ4hI,EAAYz0I,EAAQ,EAAI,EAAKy0I,EAAY3jJ,EAASkP,EAC1E,CAYA,SAASipJ,GAAiBl3J,EAAOm3J,GAC/B,IAAI11J,EAASzB,EAIb,OAHIyB,aAAkBwmJ,KACpBxmJ,EAASA,EAAOzB,SAEXs6H,GAAY68B,GAAS,SAAS11J,EAAQ6a,GAC3C,OAAOA,EAAO07H,KAAKl2I,MAAMwa,EAAO8I,QAAS88H,GAAU,CAACzgJ,GAAS6a,EAAO0iB,MACtE,GAAGv9B,EACL,CAYA,SAAS21J,GAAQ3qI,EAAQi1H,EAAUM,GACjC,IAAIjjJ,EAAS0tB,EAAO1tB,OACpB,GAAIA,EAAS,EACX,OAAOA,EAAS43J,GAASlqI,EAAO,IAAM,GAKxC,IAHA,IAAIxe,GAAS,EACTxM,EAASkjB,EAAM5lB,KAEVkP,EAAQlP,GAIf,IAHA,IAAI+hB,EAAQ2L,EAAOxe,GACfshJ,GAAY,IAEPA,EAAWxwJ,GACdwwJ,GAAYthJ,IACdxM,EAAOwM,GAAS++I,GAAevrJ,EAAOwM,IAAU6S,EAAO2L,EAAO8iI,GAAW7N,EAAUM,IAIzF,OAAO2U,GAAS1I,GAAYxsJ,EAAQ,GAAIigJ,EAAUM,EACpD,CAWA,SAASqV,GAAcx4J,EAAOs0B,EAAQmkI,GAMpC,IALA,IAAIrpJ,GAAS,EACTlP,EAASF,EAAME,OACfw4J,EAAapkI,EAAOp0B,OACpB0C,EAAS,CAAC,IAELwM,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQiO,EAAQspJ,EAAapkI,EAAOllB,GAASjK,EACjDszJ,EAAW71J,EAAQ5C,EAAMoP,GAAQjO,EACnC,CACA,OAAOyB,CACT,CASA,SAAS+1J,GAAoBx3J,GAC3B,OAAOszJ,GAAkBtzJ,GAASA,EAAQ,EAC5C,CASA,SAASy3J,GAAaz3J,GACpB,MAAuB,mBAATA,EAAsBA,EAAQgyJ,EAC9C,CAUA,SAASvD,GAASzuJ,EAAOgC,GACvB,OAAIkxB,GAAQlzB,GACHA,EAEF6yJ,GAAM7yJ,EAAOgC,GAAU,CAAChC,GAAS03J,GAAatvI,GAASpoB,GAChE,CAWA,IAAI23J,GAAW9C,GAWf,SAAS+C,GAAU92I,EAAO+pC,EAAOC,GAC/B,IAAI/rD,EAAS+hB,EAAM/hB,OAEnB,OADA+rD,EAAMA,IAAQ9mD,EAAYjF,EAAS+rD,GAC1BD,GAASC,GAAO/rD,EAAU+hB,EAAQy0I,GAAUz0I,EAAO+pC,EAAOC,EACrE,CAQA,IAAIg6C,GAAeshD,IAAmB,SAAS11I,GAC7C,OAAOg2C,GAAKo+C,aAAap0F,EAC3B,EAUA,SAASm7I,GAAY/iI,EAAQyiI,GAC3B,GAAIA,EACF,OAAOziI,EAAO1lB,QAEhB,IAAIrE,EAAS+pB,EAAO/pB,OAChB0C,EAASmkJ,GAAcA,GAAY7mJ,GAAU,IAAI+pB,EAAO/oB,YAAYhB,GAGxE,OADA+pB,EAAOub,KAAK5iC,GACLA,CACT,CASA,SAAS4qJ,GAAiBjvD,GACxB,IAAI37F,EAAS,IAAI27F,EAAYr9F,YAAYq9F,EAAYnmD,YAErD,OADA,IAAIhwB,GAAWxlB,GAAQ63B,IAAI,IAAIrS,GAAWm2E,IACnC37F,CACT,CA+CA,SAAS8qJ,GAAgBhgI,EAAYg/H,GACnC,IAAIziI,EAASyiI,EAASc,GAAiB9/H,EAAWzD,QAAUyD,EAAWzD,OACvE,OAAO,IAAIyD,EAAWxsB,YAAY+oB,EAAQyD,EAAW0xB,WAAY1xB,EAAWxtB,OAC9E,CAUA,SAASq1J,GAAiBp0J,EAAO83I,GAC/B,GAAI93I,IAAU83I,EAAO,CACnB,IAAI+f,EAAe73J,IAAUgE,EACzBgyJ,EAAsB,OAAVh2J,EACZ83J,EAAiB93J,GAAUA,EAC3Bi2J,EAAcvmB,GAAS1vI,GAEvBm2J,EAAere,IAAU9zI,EACzBoyJ,EAAsB,OAAVte,EACZue,EAAiBve,GAAUA,EAC3Bwe,EAAc5mB,GAASoI,GAE3B,IAAMse,IAAcE,IAAgBL,GAAej2J,EAAQ83I,GACtDme,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5BwB,GAAgBxB,IACjByB,EACH,OAAO,EAET,IAAM9B,IAAcC,IAAgBK,GAAet2J,EAAQ83I,GACtDwe,GAAeuB,GAAgBC,IAAmB9B,IAAcC,GAChEG,GAAayB,GAAgBC,IAC5B3B,GAAgB2B,IACjBzB,EACH,OAAQ,CAEZ,CACA,OAAO,CACT,CAsDA,SAAS0B,GAAY/4H,EAAMg5H,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAap5H,EAAKjgC,OAClBs5J,EAAgBJ,EAAQl5J,OACxBu5J,GAAa,EACbC,EAAaP,EAASj5J,OACtB6nC,EAAc+wG,GAAUygB,EAAaC,EAAe,GACpD52J,EAASkjB,EAAM4zI,EAAa3xH,GAC5B4xH,GAAeN,IAEVI,EAAYC,GACnB92J,EAAO62J,GAAaN,EAASM,GAE/B,OAASH,EAAYE,IACfG,GAAeL,EAAYC,KAC7B32J,EAAOw2J,EAAQE,IAAcn5H,EAAKm5H,IAGtC,KAAOvxH,KACLnlC,EAAO62J,KAAet5H,EAAKm5H,KAE7B,OAAO12J,CACT,CAaA,SAASg3J,GAAiBz5H,EAAMg5H,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAap5H,EAAKjgC,OAClB25J,GAAgB,EAChBL,EAAgBJ,EAAQl5J,OACxB45J,GAAc,EACdC,EAAcZ,EAASj5J,OACvB6nC,EAAc+wG,GAAUygB,EAAaC,EAAe,GACpD52J,EAASkjB,EAAMiiB,EAAcgyH,GAC7BJ,GAAeN,IAEVC,EAAYvxH,GACnBnlC,EAAO02J,GAAan5H,EAAKm5H,GAG3B,IADA,IAAIpvI,EAASovI,IACJQ,EAAaC,GACpBn3J,EAAOsnB,EAAS4vI,GAAcX,EAASW,GAEzC,OAASD,EAAeL,IAClBG,GAAeL,EAAYC,KAC7B32J,EAAOsnB,EAASkvI,EAAQS,IAAiB15H,EAAKm5H,MAGlD,OAAO12J,CACT,CAUA,SAAS0oJ,GAAUt5F,EAAQ/vC,GACzB,IAAI7S,GAAS,EACTlP,EAAS8xD,EAAO9xD,OAGpB,IADA+hB,IAAUA,EAAQ6D,EAAM5lB,MACfkP,EAAQlP,GACf+hB,EAAM7S,GAAS4iD,EAAO5iD,GAExB,OAAO6S,CACT,CAYA,SAASiqI,GAAWl6F,EAAQhyD,EAAOmD,EAAQspJ,GACzC,IAAIuN,GAAS72J,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAIiM,GAAS,EACTlP,EAASF,EAAME,SAEVkP,EAAQlP,GAAQ,CACvB,IAAIO,EAAMT,EAAMoP,GAEZmlJ,EAAW9H,EACXA,EAAWtpJ,EAAO1C,GAAMuxD,EAAOvxD,GAAMA,EAAK0C,EAAQ6uD,GAClD7sD,EAEAovJ,IAAapvJ,IACfovJ,EAAWviG,EAAOvxD,IAEhBu5J,EACFrO,GAAgBxoJ,EAAQ1C,EAAK8zJ,GAE7B3I,GAAYzoJ,EAAQ1C,EAAK8zJ,EAE7B,CACA,OAAOpxJ,CACT,CAkCA,SAAS82J,GAAiBj7B,EAAQk7B,GAChC,OAAO,SAASxW,EAAYb,GAC1B,IAAI1J,EAAO9kH,GAAQqvH,GAAcd,GAAkBmJ,GAC/CnoD,EAAcs2D,EAAcA,IAAgB,CAAC,EAEjD,OAAO/gB,EAAKuK,EAAY1kB,EAAQg2B,GAAYnS,EAAU,GAAIj/C,EAC5D,CACF,CASA,SAASu2D,GAAeC,GACtB,OAAOpE,IAAS,SAAS7yJ,EAAQk3J,GAC/B,IAAIjrJ,GAAS,EACTlP,EAASm6J,EAAQn6J,OACjBusJ,EAAavsJ,EAAS,EAAIm6J,EAAQn6J,EAAS,GAAKiF,EAChDm1J,EAAQp6J,EAAS,EAAIm6J,EAAQ,GAAKl1J,EAWtC,IATAsnJ,EAAc2N,EAASl6J,OAAS,GAA0B,mBAAdusJ,GACvCvsJ,IAAUusJ,GACXtnJ,EAEAm1J,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClD7N,EAAavsJ,EAAS,EAAIiF,EAAYsnJ,EACtCvsJ,EAAS,GAEXiD,EAAS5C,GAAO4C,KACPiM,EAAQlP,GAAQ,CACvB,IAAI8xD,EAASqoG,EAAQjrJ,GACjB4iD,GACFooG,EAASj3J,EAAQ6uD,EAAQ5iD,EAAOq9I,EAEpC,CACA,OAAOtpJ,CACT,GACF,CAUA,SAAS0rJ,GAAelL,EAAUE,GAChC,OAAO,SAASH,EAAYb,GAC1B,GAAkB,MAAda,EACF,OAAOA,EAET,IAAKmQ,GAAYnQ,GACf,OAAOC,EAASD,EAAYb,GAM9B,IAJA,IAAI3iJ,EAASwjJ,EAAWxjJ,OACpBkP,EAAQy0I,EAAY3jJ,GAAU,EAC9B6pH,EAAWxpH,GAAOmjJ,IAEdG,EAAYz0I,MAAYA,EAAQlP,KACa,IAA/C2iJ,EAAS94B,EAAS36G,GAAQA,EAAO26G,KAIvC,OAAO25B,CACT,CACF,CASA,SAAS8L,GAAc3L,GACrB,OAAO,SAAS1gJ,EAAQ0/I,EAAUkN,GAMhC,IALA,IAAI3gJ,GAAS,EACT26G,EAAWxpH,GAAO4C,GAClBnD,EAAQ+vJ,EAAS5sJ,GACjBjD,EAASF,EAAME,OAEZA,KAAU,CACf,IAAIO,EAAMT,EAAM6jJ,EAAY3jJ,IAAWkP,GACvC,IAA+C,IAA3CyzI,EAAS94B,EAAStpH,GAAMA,EAAKspH,GAC/B,KAEJ,CACA,OAAO5mH,CACT,CACF,CA8BA,SAASq3J,GAAgBrkI,GACvB,OAAO,SAASm5F,GAGd,IAAIs1B,EAAaO,GAFjB71B,EAAS/lG,GAAS+lG,IAGds2B,GAAct2B,GACdnqH,EAEA+/I,EAAMN,EACNA,EAAW,GACXt1B,EAAOpyB,OAAO,GAEd28C,EAAW+K,EACXmU,GAAUnU,EAAY,GAAG3oI,KAAK,IAC9BqzG,EAAO/qH,MAAM,GAEjB,OAAO2gJ,EAAI/uH,KAAgB0jH,CAC7B,CACF,CASA,SAAS4gB,GAAiB32J,GACxB,OAAO,SAASwrH,GACd,OAAOmM,GAAYjwG,GAAMkvI,GAAOprC,GAAQllG,QAAQy2H,GAAQ,KAAM/8I,EAAU,GAC1E,CACF,CAUA,SAAS62J,GAAWpN,GAClB,OAAO,WAIL,IAAIptH,EAAOn9B,UACX,OAAQm9B,EAAKjgC,QACX,KAAK,EAAG,OAAO,IAAIqtJ,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAKptH,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAIotH,EAAKptH,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAIotH,EAAKptH,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAIotH,EAAKptH,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAIotH,EAAKptH,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAIotH,EAAKptH,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAIotH,EAAKptH,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAIy6H,EAAcrR,GAAWgE,EAAK1sJ,WAC9B+B,EAAS2qJ,EAAKtqJ,MAAM23J,EAAaz6H,GAIrC,OAAOqmF,GAAS5jH,GAAUA,EAASg4J,CACrC,CACF,CA8CA,SAASC,GAAWC,GAClB,OAAO,SAASpX,EAAYlmB,EAAWpW,GACrC,IAAI2C,EAAWxpH,GAAOmjJ,GACtB,IAAKmQ,GAAYnQ,GAAa,CAC5B,IAAIb,EAAWmS,GAAYx3B,EAAW,GACtCkmB,EAAaxwH,GAAKwwH,GAClBlmB,EAAY,SAAS/8H,GAAO,OAAOoiJ,EAAS94B,EAAStpH,GAAMA,EAAKspH,EAAW,CAC7E,CACA,IAAI36G,EAAQ0rJ,EAAcpX,EAAYlmB,EAAWpW,GACjD,OAAOh4G,GAAS,EAAI26G,EAAS84B,EAAWa,EAAWt0I,GAASA,GAASjK,CACvE,CACF,CASA,SAAS41J,GAAWlX,GAClB,OAAOmX,IAAS,SAAS1yD,GACvB,IAAIpoG,EAASooG,EAAMpoG,OACfkP,EAAQlP,EACR+6J,EAAS5R,GAAcxoJ,UAAUq6J,KAKrC,IAHIrX,GACFv7C,EAAMrL,UAED7tF,KAAS,CACd,IAAI+pI,EAAO7wC,EAAMl5F,GACjB,GAAmB,mBAAR+pI,EACT,MAAM,IAAIt5I,GAAU26I,GAEtB,GAAIygB,IAAWrxC,GAAgC,WAArBuxC,GAAYhiB,GACpC,IAAIvvB,EAAU,IAAIy/B,GAAc,IAAI,EAExC,CAEA,IADAj6I,EAAQw6G,EAAUx6G,EAAQlP,IACjBkP,EAAQlP,GAAQ,CAGvB,IAAIk7J,EAAWD,GAFfhiB,EAAO7wC,EAAMl5F,IAGT/C,EAAmB,WAAZ+uJ,EAAwBC,GAAQliB,GAAQh0I,EAMjDykH,EAJEv9G,GAAQivJ,GAAWjvJ,EAAK,KACX,KAAXA,EAAK,KACJA,EAAK,GAAGnM,QAAqB,GAAXmM,EAAK,GAElBu9G,EAAQuxC,GAAY9uJ,EAAK,KAAKpJ,MAAM2mH,EAASv9G,EAAK,IAElC,GAAf8sI,EAAKj5I,QAAeo7J,GAAWniB,GACtCvvB,EAAQwxC,KACRxxC,EAAQsxC,KAAK/hB,EAErB,CACA,OAAO,WACL,IAAIh5G,EAAOn9B,UACP7B,EAAQg/B,EAAK,GAEjB,GAAIypF,GAA0B,GAAfzpF,EAAKjgC,QAAem0B,GAAQlzB,GACzC,OAAOyoH,EAAQ2xC,MAAMp6J,GAAOA,QAK9B,IAHA,IAAIiO,EAAQ,EACRxM,EAAS1C,EAASooG,EAAMl5F,GAAOnM,MAAMF,KAAMo9B,GAAQh/B,IAE9CiO,EAAQlP,GACf0C,EAAS0lG,EAAMl5F,GAAOjN,KAAKY,KAAMH,GAEnC,OAAOA,CACT,CACF,GACF,CAqBA,SAAS44J,GAAariB,EAAMqT,EAASjmI,EAAS4yI,EAAUC,EAASqC,EAAeC,EAAcC,EAAQC,EAAKvkB,GACzG,IAAIwkB,EAAQrP,EAAU1R,EAClBghB,EA5iKa,EA4iKJtP,EACTuP,EA5iKiB,EA4iKLvP,EACZ6M,EAAsB,GAAV7M,EACZwP,EAtiKa,IAsiKJxP,EACTe,EAAOwO,EAAY52J,EAAYw1J,GAAWxhB,GA6C9C,OA3CA,SAASvvB,IAKP,IAJA,IAAI1pH,EAAS8C,UAAU9C,OACnBigC,EAAOra,EAAM5lB,GACbkP,EAAQlP,EAELkP,KACL+wB,EAAK/wB,GAASpM,UAAUoM,GAE1B,GAAIiqJ,EACF,IAAIp2I,EAAcg5I,GAAUryC,GACxBsyC,EAvhIZ,SAAsBj6I,EAAOgB,GAI3B,IAHA,IAAI/iB,EAAS+hB,EAAM/hB,OACf0C,EAAS,EAEN1C,KACD+hB,EAAM/hB,KAAY+iB,KAClBrgB,EAGN,OAAOA,CACT,CA6gI2Bu5J,CAAah8H,EAAMld,GASxC,GAPIk2I,IACFh5H,EAAO+4H,GAAY/4H,EAAMg5H,EAAUC,EAASC,IAE1CoC,IACFt7H,EAAOy5H,GAAiBz5H,EAAMs7H,EAAeC,EAAcrC,IAE7Dn5J,GAAUg8J,EACN7C,GAAan5J,EAASm3I,EAAO,CAC/B,IAAI+kB,EAAa7W,GAAeplH,EAAMld,GACtC,OAAOo5I,GACLljB,EAAMqT,EAASgP,GAAc5xC,EAAQ3mG,YAAasD,EAClD4Z,EAAMi8H,EAAYT,EAAQC,EAAKvkB,EAAQn3I,EAE3C,CACA,IAAI06J,EAAckB,EAASv1I,EAAUxjB,KACjCylH,EAAKuzC,EAAYnB,EAAYzhB,GAAQA,EAczC,OAZAj5I,EAASigC,EAAKjgC,OACVy7J,EACFx7H,EAg4CN,SAAiBle,EAAO4zI,GACtB,IAAIyG,EAAYr6I,EAAM/hB,OAClBA,EAAS64I,GAAU8c,EAAQ31J,OAAQo8J,GACnCC,EAAWjR,GAAUrpI,GAEzB,KAAO/hB,KAAU,CACf,IAAIkP,EAAQymJ,EAAQ31J,GACpB+hB,EAAM/hB,GAAU+qJ,GAAQ77I,EAAOktJ,GAAaC,EAASntJ,GAASjK,CAChE,CACA,OAAO8c,CACT,CA14CarX,CAAQu1B,EAAMw7H,GACZK,GAAU97J,EAAS,GAC5BigC,EAAK88D,UAEH4+D,GAASD,EAAM17J,IACjBigC,EAAKjgC,OAAS07J,GAEZ74J,MAAQA,OAAS8kD,IAAQ9kD,gBAAgB6mH,IAC3CpB,EAAK+kC,GAAQoN,GAAWnyC,IAEnBA,EAAGvlH,MAAM23J,EAAaz6H,EAC/B,CAEF,CAUA,SAASq8H,GAAex9B,EAAQy9B,GAC9B,OAAO,SAASt5J,EAAQ0/I,GACtB,OAh/DJ,SAAsB1/I,EAAQ67H,EAAQ6jB,EAAUj/C,GAI9C,OAHAkrD,GAAW3rJ,GAAQ,SAAShC,EAAOV,EAAK0C,GACtC67H,EAAOp7B,EAAai/C,EAAS1hJ,GAAQV,EAAK0C,EAC5C,IACOygG,CACT,CA2+DW84D,CAAav5J,EAAQ67H,EAAQy9B,EAAW5Z,GAAW,CAAC,EAC7D,CACF,CAUA,SAAS8Z,GAAoBrmE,EAAUsmE,GACrC,OAAO,SAASz7J,EAAO83I,GACrB,IAAIr2I,EACJ,GAAIzB,IAAUgE,GAAa8zI,IAAU9zI,EACnC,OAAOy3J,EAKT,GAHIz7J,IAAUgE,IACZvC,EAASzB,GAEP83I,IAAU9zI,EAAW,CACvB,GAAIvC,IAAWuC,EACb,OAAO8zI,EAEW,iBAAT93I,GAAqC,iBAAT83I,GACrC93I,EAAQ02J,GAAa12J,GACrB83I,EAAQ4e,GAAa5e,KAErB93I,EAAQy2J,GAAaz2J,GACrB83I,EAAQ2e,GAAa3e,IAEvBr2I,EAAS0zF,EAASn1F,EAAO83I,EAC3B,CACA,OAAOr2I,CACT,CACF,CASA,SAASi6J,GAAWC,GAClB,OAAO9B,IAAS,SAASjG,GAEvB,OADAA,EAAY3R,GAAS2R,EAAWvQ,GAAUwQ,OACnCgB,IAAS,SAAS71H,GACvB,IAAI5Z,EAAUxjB,KACd,OAAO+5J,EAAU/H,GAAW,SAASlS,GACnC,OAAO5/I,GAAM4/I,EAAUt8H,EAAS4Z,EAClC,GACF,GACF,GACF,CAWA,SAAS48H,GAAc78J,EAAQgoB,GAG7B,IAAI80I,GAFJ90I,EAAQA,IAAU/iB,EAAY,IAAM0yJ,GAAa3vI,IAEzBhoB,OACxB,GAAI88J,EAAc,EAChB,OAAOA,EAAcjH,GAAW7tI,EAAOhoB,GAAUgoB,EAEnD,IAAItlB,EAASmzJ,GAAW7tI,EAAOw/H,GAAWxnJ,EAASwlJ,GAAWx9H,KAC9D,OAAOi9H,GAAWj9H,GACd6wI,GAAUnT,GAAchjJ,GAAS,EAAG1C,GAAQ+b,KAAK,IACjDrZ,EAAO2B,MAAM,EAAGrE,EACtB,CA4CA,SAAS+8J,GAAYpZ,GACnB,OAAO,SAAS73F,EAAOC,EAAKt2C,GAa1B,OAZIA,GAAuB,iBAARA,GAAoB4kJ,GAAevuG,EAAOC,EAAKt2C,KAChEs2C,EAAMt2C,EAAOxQ,GAGf6mD,EAAQkxG,GAASlxG,GACbC,IAAQ9mD,GACV8mD,EAAMD,EACNA,EAAQ,GAERC,EAAMixG,GAASjxG,GA57CrB,SAAmBD,EAAOC,EAAKt2C,EAAMkuI,GAKnC,IAJA,IAAIz0I,GAAS,EACTlP,EAAS44I,GAAU4O,IAAYz7F,EAAMD,IAAUr2C,GAAQ,IAAK,GAC5D/S,EAASkjB,EAAM5lB,GAEZA,KACL0C,EAAOihJ,EAAY3jJ,IAAWkP,GAAS48C,EACvCA,GAASr2C,EAEX,OAAO/S,CACT,CAq7CWu6J,CAAUnxG,EAAOC,EADxBt2C,EAAOA,IAASxQ,EAAa6mD,EAAQC,EAAM,GAAK,EAAKixG,GAASvnJ,GAC3BkuI,EACrC,CACF,CASA,SAASuZ,GAA0B9mE,GACjC,OAAO,SAASn1F,EAAO83I,GAKrB,MAJsB,iBAAT93I,GAAqC,iBAAT83I,IACvC93I,EAAQilI,GAASjlI,GACjB83I,EAAQ7S,GAAS6S,IAEZ3iD,EAASn1F,EAAO83I,EACzB,CACF,CAmBA,SAASojB,GAAcljB,EAAMqT,EAAS6Q,EAAUp6I,EAAasD,EAAS4yI,EAAUC,EAASuC,EAAQC,EAAKvkB,GACpG,IAAIimB,EArxKc,EAqxKJ9Q,EAMdA,GAAY8Q,EAAU1iB,EAAoBC,EA5xKlB,GA6xKxB2R,KAAa8Q,EAAUziB,EAA0BD,MAG/C4R,IAAW,GAEb,IAAI+Q,EAAU,CACZpkB,EAAMqT,EAASjmI,EAVC+2I,EAAUnE,EAAWh0J,EAFtBm4J,EAAUlE,EAAUj0J,EAGdm4J,EAAUn4J,EAAYg0J,EAFvBmE,EAAUn4J,EAAYi0J,EAYzBuC,EAAQC,EAAKvkB,GAG5Bz0I,EAASy6J,EAASp6J,MAAMkC,EAAWo4J,GAKvC,OAJIjC,GAAWniB,IACb15B,GAAQ78G,EAAQ26J,GAElB36J,EAAOqgB,YAAcA,EACdu6I,GAAgB56J,EAAQu2I,EAAMqT,EACvC,CASA,SAASiR,GAAYtnI,GACnB,IAAIgjH,EAAOzqH,GAAKyH,GAChB,OAAO,SAAS4jG,EAAQyN,GAGtB,GAFAzN,EAASqM,GAASrM,IAClByN,EAAyB,MAAbA,EAAoB,EAAIuR,GAAUxhB,GAAUiQ,GAAY,OACnDugB,GAAehuB,GAAS,CAGvC,IAAI2jC,GAAQn0I,GAASwwG,GAAU,KAAKr+G,MAAM,KAI1C,SADAgiJ,GAAQn0I,GAFI4vH,EAAKukB,EAAK,GAAK,MAAQA,EAAK,GAAKl2B,KAEnB,KAAK9rH,MAAM,MACvB,GAAK,MAAQgiJ,EAAK,GAAKl2B,GACvC,CACA,OAAO2R,EAAKpf,EACd,CACF,CASA,IAAIg+B,GAAczyE,IAAQ,EAAIkgE,GAAW,IAAIlgE,GAAI,CAAC,EAAE,KAAK,IAAO01D,EAAmB,SAAS1mH,GAC1F,OAAO,IAAIgxD,GAAIhxD,EACjB,EAF4EqpI,GAW5E,SAASC,GAAc7N,GACrB,OAAO,SAAS5sJ,GACd,IAAI67B,EAAM8tH,GAAO3pJ,GACjB,OAAI67B,GAAO28G,EACFyJ,GAAWjiJ,GAEhB67B,GAAOg9G,EACFyJ,GAAWtiJ,GAn6I1B,SAAqBA,EAAQnD,GAC3B,OAAOojJ,GAASpjJ,GAAO,SAASS,GAC9B,MAAO,CAACA,EAAK0C,EAAO1C,GACtB,GACF,CAi6Iao9J,CAAY16J,EAAQ4sJ,EAAS5sJ,GACtC,CACF,CA2BA,SAAS26J,GAAW3kB,EAAMqT,EAASjmI,EAAS4yI,EAAUC,EAASuC,EAAQC,EAAKvkB,GAC1E,IAAI0kB,EAl4KiB,EAk4KLvP,EAChB,IAAKuP,GAA4B,mBAAR5iB,EACvB,MAAM,IAAIt5I,GAAU26I,GAEtB,IAAIt6I,EAASi5J,EAAWA,EAASj5J,OAAS,EAS1C,GARKA,IACHssJ,IAAW,GACX2M,EAAWC,EAAUj0J,GAEvBy2J,EAAMA,IAAQz2J,EAAYy2J,EAAM9iB,GAAUvhB,GAAUqkC,GAAM,GAC1DvkB,EAAQA,IAAUlyI,EAAYkyI,EAAQ9f,GAAU8f,GAChDn3I,GAAUk5J,EAAUA,EAAQl5J,OAAS,EAEjCssJ,EAAU3R,EAAyB,CACrC,IAAI4gB,EAAgBtC,EAChBuC,EAAetC,EAEnBD,EAAWC,EAAUj0J,CACvB,CACA,IAAIkH,EAAO0vJ,EAAY52J,EAAYk2J,GAAQliB,GAEvCokB,EAAU,CACZpkB,EAAMqT,EAASjmI,EAAS4yI,EAAUC,EAASqC,EAAeC,EAC1DC,EAAQC,EAAKvkB,GAkBf,GAfIhrI,GA26BN,SAAmBA,EAAM2lD,GACvB,IAAIw6F,EAAUngJ,EAAK,GACf0xJ,EAAa/rG,EAAO,GACpBgsG,EAAaxR,EAAUuR,EACvB3P,EAAW4P,EAAa,IAExBC,EACAF,GAAcjjB,GA50MA,GA40MmB0R,GACjCuR,GAAcjjB,GAAmB0R,GAAWzR,GAAqB1uI,EAAK,GAAGnM,QAAU8xD,EAAO,IAC5E,KAAd+rG,GAAqD/rG,EAAO,GAAG9xD,QAAU8xD,EAAO,IA90MlE,GA80M0Ew6F,EAG5F,IAAM4B,IAAY6P,EAChB,OAAO5xJ,EAr1MQ,EAw1Mb0xJ,IACF1xJ,EAAK,GAAK2lD,EAAO,GAEjBgsG,GA31Me,EA21MDxR,EAA2B,EAz1MnB,GA41MxB,IAAIrrJ,EAAQ6wD,EAAO,GACnB,GAAI7wD,EAAO,CACT,IAAIg4J,EAAW9sJ,EAAK,GACpBA,EAAK,GAAK8sJ,EAAWD,GAAYC,EAAUh4J,EAAO6wD,EAAO,IAAM7wD,EAC/DkL,EAAK,GAAK8sJ,EAAW5T,GAAel5I,EAAK,GAAIquI,GAAe1oF,EAAO,EACrE,EAEA7wD,EAAQ6wD,EAAO,MAEbmnG,EAAW9sJ,EAAK,GAChBA,EAAK,GAAK8sJ,EAAWS,GAAiBT,EAAUh4J,EAAO6wD,EAAO,IAAM7wD,EACpEkL,EAAK,GAAK8sJ,EAAW5T,GAAel5I,EAAK,GAAIquI,GAAe1oF,EAAO,KAGrE7wD,EAAQ6wD,EAAO,MAEb3lD,EAAK,GAAKlL,GAGR48J,EAAajjB,IACfzuI,EAAK,GAAgB,MAAXA,EAAK,GAAa2lD,EAAO,GAAK+mF,GAAU1sI,EAAK,GAAI2lD,EAAO,KAGrD,MAAX3lD,EAAK,KACPA,EAAK,GAAK2lD,EAAO,IAGnB3lD,EAAK,GAAK2lD,EAAO,GACjB3lD,EAAK,GAAK2xJ,CAGZ,CA/9BIE,CAAUX,EAASlxJ,GAErB8sI,EAAOokB,EAAQ,GACf/Q,EAAU+Q,EAAQ,GAClBh3I,EAAUg3I,EAAQ,GAClBpE,EAAWoE,EAAQ,GACnBnE,EAAUmE,EAAQ,KAClBlmB,EAAQkmB,EAAQ,GAAKA,EAAQ,KAAOp4J,EAC/B42J,EAAY,EAAI5iB,EAAKj5I,OACtB44I,GAAUykB,EAAQ,GAAKr9J,EAAQ,KAEX,GAAVssJ,IACZA,IAAW,IAERA,GA56KY,GA46KDA,EAGd5pJ,EA56KgB,GA26KP4pJ,GAA8BA,GAAW7R,EApgBtD,SAAqBxB,EAAMqT,EAASnV,GAClC,IAAIkW,EAAOoN,GAAWxhB,GAwBtB,OAtBA,SAASvvB,IAMP,IALA,IAAI1pH,EAAS8C,UAAU9C,OACnBigC,EAAOra,EAAM5lB,GACbkP,EAAQlP,EACR+iB,EAAcg5I,GAAUryC,GAErBx6G,KACL+wB,EAAK/wB,GAASpM,UAAUoM,GAE1B,IAAIgqJ,EAAWl5J,EAAS,GAAKigC,EAAK,KAAOld,GAAekd,EAAKjgC,EAAS,KAAO+iB,EACzE,GACAsiI,GAAeplH,EAAMld,GAGzB,OADA/iB,GAAUk5J,EAAQl5J,QACLm3I,EACJglB,GACLljB,EAAMqT,EAASgP,GAAc5xC,EAAQ3mG,YAAa9d,EAClDg7B,EAAMi5H,EAASj0J,EAAWA,EAAWkyI,EAAQn3I,GAG1C+C,GADGF,MAAQA,OAAS8kD,IAAQ9kD,gBAAgB6mH,EAAW2jC,EAAOpU,EACpDp2I,KAAMo9B,EACzB,CAEF,CA2eag+H,CAAYhlB,EAAMqT,EAASnV,GAC1BmV,GAAW5R,GAAgC,IAAX4R,GAAqD4M,EAAQl5J,OAG9Fs7J,GAAav4J,MAAMkC,EAAWo4J,GA9O3C,SAAuBpkB,EAAMqT,EAASjmI,EAAS4yI,GAC7C,IAAI2C,EAtsKa,EAssKJtP,EACTe,EAAOoN,GAAWxhB,GAkBtB,OAhBA,SAASvvB,IAQP,IAPA,IAAI0vC,GAAa,EACbC,EAAav2J,UAAU9C,OACvBu5J,GAAa,EACbC,EAAaP,EAASj5J,OACtBigC,EAAOra,EAAM4zI,EAAaH,GAC1B/wC,EAAMzlH,MAAQA,OAAS8kD,IAAQ9kD,gBAAgB6mH,EAAW2jC,EAAOpU,IAE5DsgB,EAAYC,GACnBv5H,EAAKs5H,GAAaN,EAASM,GAE7B,KAAOF,KACLp5H,EAAKs5H,KAAez2J,YAAYs2J,GAElC,OAAOr2J,GAAMulH,EAAIszC,EAASv1I,EAAUxjB,KAAMo9B,EAC5C,CAEF,CAuNai+H,CAAcjlB,EAAMqT,EAASjmI,EAAS4yI,QAJ/C,IAAIv2J,EAhmBR,SAAoBu2I,EAAMqT,EAASjmI,GACjC,IAAIu1I,EA90Ja,EA80JJtP,EACTe,EAAOoN,GAAWxhB,GAMtB,OAJA,SAASvvB,IAEP,OADU7mH,MAAQA,OAAS8kD,IAAQ9kD,gBAAgB6mH,EAAW2jC,EAAOpU,GAC3Dl2I,MAAM64J,EAASv1I,EAAUxjB,KAAMC,UAC3C,CAEF,CAulBiBq7J,CAAWllB,EAAMqT,EAASjmI,GASzC,OAAOi3I,IADMnxJ,EAAOiqJ,GAAc72C,IACJ78G,EAAQ26J,GAAUpkB,EAAMqT,EACxD,CAcA,SAAS8R,GAAuBzS,EAAUkH,EAAUtyJ,EAAK0C,GACvD,OAAI0oJ,IAAa1mJ,GACZumJ,GAAGG,EAAUxF,GAAY5lJ,MAAU4C,GAAelB,KAAKgB,EAAQ1C,GAC3DsyJ,EAEFlH,CACT,CAgBA,SAAS0S,GAAoB1S,EAAUkH,EAAUtyJ,EAAK0C,EAAQ6uD,EAAQ9tD,GAOpE,OANIsiH,GAASqlC,IAAarlC,GAASusC,KAEjC7uJ,EAAMu2B,IAAIs4H,EAAUlH,GACpBsI,GAAUtI,EAAUkH,EAAU5tJ,EAAWo5J,GAAqBr6J,GAC9DA,EAAc,OAAE6uJ,IAEXlH,CACT,CAWA,SAAS2S,GAAgBr9J,GACvB,OAAOuzJ,GAAcvzJ,GAASgE,EAAYhE,CAC5C,CAeA,SAASqwJ,GAAYvvI,EAAOg3H,EAAOuT,EAASC,EAAYuE,EAAW9sJ,GACjE,IAAIwtJ,EApgLmB,EAogLPlF,EACZ8P,EAAYr6I,EAAM/hB,OAClBuwJ,EAAYxX,EAAM/4I,OAEtB,GAAIo8J,GAAa7L,KAAeiB,GAAajB,EAAY6L,GACvD,OAAO,EAGT,IAAImC,EAAav6J,EAAMX,IAAI0e,GACvBmwI,EAAaluJ,EAAMX,IAAI01I,GAC3B,GAAIwlB,GAAcrM,EAChB,OAAOqM,GAAcxlB,GAASmZ,GAAcnwI,EAE9C,IAAI7S,GAAS,EACTxM,GAAS,EACTguJ,EAlhLqB,EAkhLbpE,EAAoC,IAAIjC,GAAWplJ,EAM/D,IAJAjB,EAAMu2B,IAAIxY,EAAOg3H,GACjB/0I,EAAMu2B,IAAIw+G,EAAOh3H,KAGR7S,EAAQktJ,GAAW,CAC1B,IAAIoC,EAAWz8I,EAAM7S,GACjBkjJ,EAAWrZ,EAAM7pI,GAErB,GAAIq9I,EACF,IAAI8F,EAAWb,EACXjF,EAAW6F,EAAUoM,EAAUtvJ,EAAO6pI,EAAOh3H,EAAO/d,GACpDuoJ,EAAWiS,EAAUpM,EAAUljJ,EAAO6S,EAAOg3H,EAAO/0I,GAE1D,GAAIquJ,IAAaptJ,EAAW,CAC1B,GAAIotJ,EACF,SAEF3vJ,GAAS,EACT,KACF,CAEA,GAAIguJ,GACF,IAAK31B,GAAUge,GAAO,SAASqZ,EAAU5B,GACnC,IAAKhM,GAASkM,EAAMF,KACfgO,IAAapM,GAAYtB,EAAU0N,EAAUpM,EAAU9F,EAASC,EAAYvoJ,IAC/E,OAAO0sJ,EAAK3sJ,KAAKysJ,EAErB,IAAI,CACN9tJ,GAAS,EACT,KACF,OACK,GACD87J,IAAapM,IACXtB,EAAU0N,EAAUpM,EAAU9F,EAASC,EAAYvoJ,GACpD,CACLtB,GAAS,EACT,KACF,CACF,CAGA,OAFAsB,EAAc,OAAE+d,GAChB/d,EAAc,OAAE+0I,GACTr2I,CACT,CAyKA,SAASo4J,GAAS7hB,GAChB,OAAO8c,GAAYC,GAAS/c,EAAMh0I,EAAWgiF,IAAUgyD,EAAO,GAChE,CASA,SAAS6U,GAAW7qJ,GAClB,OAAO2sJ,GAAe3sJ,EAAQ+vB,GAAMm6F,GACtC,CAUA,SAAS0gC,GAAa5qJ,GACpB,OAAO2sJ,GAAe3sJ,EAAQiqJ,GAAQF,GACxC,CASA,IAAImO,GAAW7S,GAAiB,SAASrP,GACvC,OAAOqP,GAAQjlJ,IAAI41I,EACrB,EAFyBwkB,GAWzB,SAASxC,GAAYhiB,GAKnB,IAJA,IAAIv2I,EAAUu2I,EAAKlzI,KAAO,GACtBgc,EAAQwmI,GAAU7lJ,GAClB1C,EAASmD,GAAelB,KAAKsmJ,GAAW7lJ,GAAUqf,EAAM/hB,OAAS,EAE9DA,KAAU,CACf,IAAImM,EAAO4V,EAAM/hB,GACby+J,EAAYtyJ,EAAK8sI,KACrB,GAAiB,MAAbwlB,GAAqBA,GAAaxlB,EACpC,OAAO9sI,EAAKpG,IAEhB,CACA,OAAOrD,CACT,CASA,SAASq5J,GAAU9iB,GAEjB,OADa91I,GAAelB,KAAKgnJ,GAAQ,eAAiBA,GAAShQ,GACrDl2H,WAChB,CAaA,SAAS+xI,KACP,IAAIpyJ,EAASumJ,GAAOtG,UAAYA,GAEhC,OADAjgJ,EAASA,IAAWigJ,GAAWqQ,GAAetwJ,EACvCI,UAAU9C,OAAS0C,EAAOI,UAAU,GAAIA,UAAU,IAAMJ,CACjE,CAUA,SAAS8rJ,GAAWnkJ,EAAK9J,GACvB,IAgYiBU,EACb0C,EAjYAwI,EAAO9B,EAAIigJ,SACf,OAiYgB,WADZ3mJ,SADa1C,EA/XAV,KAiYmB,UAARoD,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV1C,EACU,OAAVA,GAlYDkL,EAAmB,iBAAP5L,EAAkB,SAAW,QACzC4L,EAAK9B,GACX,CASA,SAASupJ,GAAa3wJ,GAIpB,IAHA,IAAIP,EAASswB,GAAK/vB,GACdjD,EAAS0C,EAAO1C,OAEbA,KAAU,CACf,IAAIO,EAAMmC,EAAO1C,GACbiB,EAAQgC,EAAO1C,GAEnBmC,EAAO1C,GAAU,CAACO,EAAKU,EAAO8yJ,GAAmB9yJ,GACnD,CACA,OAAOyB,CACT,CAUA,SAAS0kJ,GAAUnkJ,EAAQ1C,GACzB,IAAIU,EAlxJR,SAAkBgC,EAAQ1C,GACxB,OAAiB,MAAV0C,EAAiBgC,EAAYhC,EAAO1C,EAC7C,CAgxJgBo1B,CAAS1yB,EAAQ1C,GAC7B,OAAOwyJ,GAAa9xJ,GAASA,EAAQgE,CACvC,CAoCA,IAAIkoH,GAAcu6B,GAA+B,SAASzkJ,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS5C,GAAO4C,GACT63H,GAAY4sB,GAAiBzkJ,IAAS,SAASmwB,GACpD,OAAOo/D,GAAqBvwF,KAAKgB,EAAQmwB,EAC3C,IACF,EARqCsrI,GAiBjC1R,GAAgBtF,GAA+B,SAASzkJ,GAE1D,IADA,IAAIP,EAAS,GACNO,GACLkgJ,GAAUzgJ,EAAQyqH,GAAWlqH,IAC7BA,EAAS6jJ,GAAa7jJ,GAExB,OAAOP,CACT,EAPuCg8J,GAgBnC9R,GAASmD,GA2Eb,SAAS4O,GAAQ17J,EAAQ6b,EAAM8/I,GAO7B,IAJA,IAAI1vJ,GAAS,EACTlP,GAHJ8e,EAAO4wI,GAAS5wI,EAAM7b,IAGJjD,OACd0C,GAAS,IAEJwM,EAAQlP,GAAQ,CACvB,IAAIO,EAAMovJ,GAAM7wI,EAAK5P,IACrB,KAAMxM,EAAmB,MAAVO,GAAkB27J,EAAQ37J,EAAQ1C,IAC/C,MAEF0C,EAASA,EAAO1C,EAClB,CACA,OAAImC,KAAYwM,GAASlP,EAChB0C,KAET1C,EAAmB,MAAViD,EAAiB,EAAIA,EAAOjD,SAClB6+J,GAAS7+J,IAAW+qJ,GAAQxqJ,EAAKP,KACjDm0B,GAAQlxB,IAAW2nJ,GAAY3nJ,GACpC,CA4BA,SAAS8pJ,GAAgB9pJ,GACvB,MAAqC,mBAAtBA,EAAOjC,aAA8BqyJ,GAAYpwJ,GAE5D,CAAC,EADDomJ,GAAWvC,GAAa7jJ,GAE9B,CA4EA,SAASmsJ,GAAcnuJ,GACrB,OAAOkzB,GAAQlzB,IAAU2pJ,GAAY3pJ,OAChC+lJ,IAAoB/lJ,GAASA,EAAM+lJ,IAC1C,CAUA,SAAS+D,GAAQ9pJ,EAAOjB,GACtB,IAAI2D,SAAc1C,EAGlB,SAFAjB,EAAmB,MAAVA,EAAiBglE,EAAmBhlE,KAGlC,UAAR2D,GACU,UAARA,GAAoB46I,GAASh5H,KAAKtkB,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQjB,CACjD,CAYA,SAASq6J,GAAep5J,EAAOiO,EAAOjM,GACpC,IAAKqjH,GAASrjH,GACZ,OAAO,EAET,IAAIU,SAAcuL,EAClB,SAAY,UAARvL,EACKgwJ,GAAY1wJ,IAAW8nJ,GAAQ77I,EAAOjM,EAAOjD,QACrC,UAAR2D,GAAoBuL,KAASjM,IAE7BuoJ,GAAGvoJ,EAAOiM,GAAQjO,EAG7B,CAUA,SAAS6yJ,GAAM7yJ,EAAOgC,GACpB,GAAIkxB,GAAQlzB,GACV,OAAO,EAET,IAAI0C,SAAc1C,EAClB,QAAY,UAAR0C,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT1C,IAAiB0vI,GAAS1vI,MAGvBu8I,GAAcj4H,KAAKtkB,KAAWs8I,GAAah4H,KAAKtkB,IAC1C,MAAVgC,GAAkBhC,KAASZ,GAAO4C,GACvC,CAwBA,SAASm4J,GAAWniB,GAClB,IAAIiiB,EAAWD,GAAYhiB,GACvBF,EAAQkQ,GAAOiS,GAEnB,GAAoB,mBAATniB,KAAyBmiB,KAAYhS,GAAYvoJ,WAC1D,OAAO,EAET,GAAIs4I,IAASF,EACX,OAAO,EAET,IAAI5sI,EAAOgvJ,GAAQpiB,GACnB,QAAS5sI,GAAQ8sI,IAAS9sI,EAAK,EACjC,EA9SK6rC,IAAY40G,GAAO,IAAI50G,GAAS,IAAI7oB,YAAY,MAAQgtH,GACxDpgH,IAAO6wH,GAAO,IAAI7wH,KAAQ0/G,GAC1Bl3I,IAAWqoJ,GAAOroJ,GAAQC,YAAco3I,GACxCx2D,IAAOwnE,GAAO,IAAIxnE,KAAQ02D,GAC1BsM,IAAWwE,GAAO,IAAIxE,KAAYnM,KACrC2Q,GAAS,SAAS3rJ,GAChB,IAAIyB,EAASqtJ,GAAW9uJ,GACpBosJ,EAAO3qJ,GAAUi5I,EAAY16I,EAAMD,YAAciE,EACjD65J,EAAazR,EAAO5E,GAAS4E,GAAQ,GAEzC,GAAIyR,EACF,OAAQA,GACN,KAAKtW,GAAoB,OAAOrM,EAChC,KAAKuM,GAAe,OAAOjN,EAC3B,KAAKkN,GAAmB,OAAO/M,EAC/B,KAAKgN,GAAe,OAAO9M,EAC3B,KAAK+M,GAAmB,OAAO5M,EAGnC,OAAOv5I,CACT,GA8SF,IAAIq8J,GAAa3Y,GAAanwB,GAAa+oC,GAS3C,SAAS3L,GAAYpyJ,GACnB,IAAIosJ,EAAOpsJ,GAASA,EAAMD,YAG1B,OAAOC,KAFqB,mBAARosJ,GAAsBA,EAAK1sJ,WAAcwlJ,GAG/D,CAUA,SAAS4N,GAAmB9yJ,GAC1B,OAAOA,GAAUA,IAAUqlH,GAASrlH,EACtC,CAWA,SAAS4yJ,GAAwBtzJ,EAAKsyJ,GACpC,OAAO,SAAS5vJ,GACd,OAAc,MAAVA,IAGGA,EAAO1C,KAASsyJ,IACpBA,IAAa5tJ,GAAc1E,KAAOF,GAAO4C,IAC9C,CACF,CAoIA,SAAS+yJ,GAAS/c,EAAMntF,EAAOs5F,GAE7B,OADAt5F,EAAQ8sF,GAAU9sF,IAAU7mD,EAAag0I,EAAKj5I,OAAS,EAAK8rD,EAAO,GAC5D,WAML,IALA,IAAI7rB,EAAOn9B,UACPoM,GAAS,EACTlP,EAAS44I,GAAU34G,EAAKjgC,OAAS8rD,EAAO,GACxC/pC,EAAQ6D,EAAM5lB,KAETkP,EAAQlP,GACf+hB,EAAM7S,GAAS+wB,EAAK6rB,EAAQ58C,GAE9BA,GAAS,EAET,IADA,IAAI+vJ,EAAYr5I,EAAMkmC,EAAQ,KACrB58C,EAAQ48C,GACfmzG,EAAU/vJ,GAAS+wB,EAAK/wB,GAG1B,OADA+vJ,EAAUnzG,GAASs5F,EAAUrjI,GACtBhf,GAAMk2I,EAAMp2I,KAAMo8J,EAC3B,CACF,CAUA,SAAS/5H,GAAOjiC,EAAQ6b,GACtB,OAAOA,EAAK9e,OAAS,EAAIiD,EAASwsJ,GAAQxsJ,EAAQuzJ,GAAU13I,EAAM,GAAI,GACxE,CAgCA,SAASs1I,GAAQnxJ,EAAQ1C,GACvB,IAAY,gBAARA,GAAgD,mBAAhB0C,EAAO1C,KAIhC,aAAPA,EAIJ,OAAO0C,EAAO1C,EAChB,CAgBA,IAAIg/G,GAAU2/C,GAAS9I,IAUnB5rJ,GAAa+8I,IAAiB,SAAStO,EAAMC,GAC/C,OAAOvxF,GAAKn9C,WAAWyuI,EAAMC,EAC/B,EAUI6c,GAAcmJ,GAAS7I,IAY3B,SAASiH,GAAgB5zC,EAASy1C,EAAW7S,GAC3C,IAAIx6F,EAAUqtG,EAAY,GAC1B,OAAOpJ,GAAYrsC,EA1brB,SAA2B53D,EAAQ75B,GACjC,IAAIj4B,EAASi4B,EAAQj4B,OACrB,IAAKA,EACH,OAAO8xD,EAET,IAAI+kE,EAAY72H,EAAS,EAGzB,OAFAi4B,EAAQ4+F,IAAc72H,EAAS,EAAI,KAAO,IAAMi4B,EAAQ4+F,GACxD5+F,EAAUA,EAAQlc,KAAK/b,EAAS,EAAI,KAAO,KACpC8xD,EAAO5nC,QAAQ4zH,GAAe,uBAAyB7lH,EAAU,SAC1E,CAib8BmnI,CAAkBttG,EAqHhD,SAA2B75B,EAASq0H,GAOlC,OANA1J,GAAU3H,GAAW,SAASuiB,GAC5B,IAAIv8J,EAAQ,KAAOu8J,EAAK,GACnBlR,EAAUkR,EAAK,KAAQviC,GAAchjG,EAASh3B,IACjDg3B,EAAQl0B,KAAK9C,EAEjB,IACOg3B,EAAQ/E,MACjB,CA7HwDmsI,CAtjBxD,SAAwBvtG,GACtB,IAAIvmC,EAAQumC,EAAOvmC,MAAMwyH,IACzB,OAAOxyH,EAAQA,EAAM,GAAG/P,MAAMwiI,IAAkB,EAClD,CAmjB0EshB,CAAextG,GAASw6F,IAClG,CAWA,SAAS4S,GAASjmB,GAChB,IAAI7+C,EAAQ,EACRmlE,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQxX,KACR1d,EApiNK,IAoiNmBk1B,EAAQD,GAGpC,GADAA,EAAaC,EACTl1B,EAAY,GACd,KAAMlwC,GAziNE,IA0iNN,OAAOt3F,UAAU,QAGnBs3F,EAAQ,EAEV,OAAO6+C,EAAKl2I,MAAMkC,EAAWnC,UAC/B,CACF,CAUA,SAASqoJ,GAAYppI,EAAOiV,GAC1B,IAAI9nB,GAAS,EACTlP,EAAS+hB,EAAM/hB,OACf62H,EAAY72H,EAAS,EAGzB,IADAg3B,EAAOA,IAAS/xB,EAAYjF,EAASg3B,IAC5B9nB,EAAQ8nB,GAAM,CACrB,IAAIyoI,EAAOxU,GAAW/7I,EAAO2nH,GACzB51H,EAAQ8gB,EAAM09I,GAElB19I,EAAM09I,GAAQ19I,EAAM7S,GACpB6S,EAAM7S,GAASjO,CACjB,CAEA,OADA8gB,EAAM/hB,OAASg3B,EACRjV,CACT,CASA,IAAI42I,GAvTJ,SAAuB1f,GACrB,IAAIv2I,EAASg9J,GAAQzmB,GAAM,SAAS14I,GAIlC,OAh0MiB,MA6zMb4Z,EAAM6c,MACR7c,EAAM0mE,QAEDtgF,CACT,IAEI4Z,EAAQzX,EAAOyX,MACnB,OAAOzX,CACT,CA6SmBi9J,EAAc,SAASvwC,GACxC,IAAI1sH,EAAS,GAOb,OAN6B,KAAzB0sH,EAAOjnG,WAAW,IACpBzlB,EAAOqB,KAAK,IAEdqrH,EAAOllG,QAAQuzH,IAAY,SAASlyH,EAAOsuG,EAAQ+lC,EAAOC,GACxDn9J,EAAOqB,KAAK67J,EAAQC,EAAU31I,QAAQi0H,GAAc,MAAStkB,GAAUtuG,EACzE,IACO7oB,CACT,IASA,SAASitJ,GAAM1uJ,GACb,GAAoB,iBAATA,GAAqB0vI,GAAS1vI,GACvC,OAAOA,EAET,IAAIyB,EAAUzB,EAAQ,GACtB,MAAkB,KAAVyB,GAAkB,EAAIzB,IAAU,IAAa,KAAOyB,CAC9D,CASA,SAAS+lJ,GAASxP,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOoN,GAAapkJ,KAAKg3I,EAC3B,CAAE,MAAO/2I,GAAI,CACb,IACE,OAAQ+2I,EAAO,EACjB,CAAE,MAAO/2I,GAAI,CACf,CACA,MAAO,EACT,CA2BA,SAASknJ,GAAa1/B,GACpB,GAAIA,aAAmBw/B,GACrB,OAAOx/B,EAAQpwF,QAEjB,IAAI52B,EAAS,IAAIymJ,GAAcz/B,EAAQ8/B,YAAa9/B,EAAQggC,WAI5D,OAHAhnJ,EAAO+mJ,YAAc2B,GAAU1hC,EAAQ+/B,aACvC/mJ,EAAOinJ,UAAajgC,EAAQigC,UAC5BjnJ,EAAOknJ,WAAalgC,EAAQkgC,WACrBlnJ,CACT,CAqIA,IAAIo9J,GAAahK,IAAS,SAAS/zI,EAAOqS,GACxC,OAAOmgI,GAAkBxyI,GACrBksI,GAAelsI,EAAOmtI,GAAY96H,EAAQ,EAAGmgI,IAAmB,IAChE,EACN,IA4BIwL,GAAejK,IAAS,SAAS/zI,EAAOqS,GAC1C,IAAIuuH,EAAWr1H,GAAK8G,GAIpB,OAHImgI,GAAkB5R,KACpBA,EAAW19I,GAENsvJ,GAAkBxyI,GACrBksI,GAAelsI,EAAOmtI,GAAY96H,EAAQ,EAAGmgI,IAAmB,GAAOO,GAAYnS,EAAU,IAC7F,EACN,IAyBIqd,GAAiBlK,IAAS,SAAS/zI,EAAOqS,GAC5C,IAAI6uH,EAAa31H,GAAK8G,GAItB,OAHImgI,GAAkBtR,KACpBA,EAAah+I,GAERsvJ,GAAkBxyI,GACrBksI,GAAelsI,EAAOmtI,GAAY96H,EAAQ,EAAGmgI,IAAmB,GAAOtvJ,EAAWg+I,GAClF,EACN,IAqOA,SAASnmI,GAAUiF,EAAOu7G,EAAWpW,GACnC,IAAIlnH,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkP,EAAqB,MAAbg4G,EAAoB,EAAImQ,GAAUnQ,GAI9C,OAHIh4G,EAAQ,IACVA,EAAQ0pI,GAAU54I,EAASkP,EAAO,IAE7Bw0I,GAAc3hI,EAAO+yI,GAAYx3B,EAAW,GAAIpuH,EACzD,CAqCA,SAAS+wJ,GAAcl+I,EAAOu7G,EAAWpW,GACvC,IAAIlnH,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkP,EAAQlP,EAAS,EAOrB,OANIknH,IAAcjiH,IAChBiK,EAAQmoH,GAAUnQ,GAClBh4G,EAAQg4G,EAAY,EAChB0xB,GAAU54I,EAASkP,EAAO,GAC1B2pI,GAAU3pI,EAAOlP,EAAS,IAEzB0jJ,GAAc3hI,EAAO+yI,GAAYx3B,EAAW,GAAIpuH,GAAO,EAChE,CAgBA,SAAS+3E,GAAQllE,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM/hB,QACvBkvJ,GAAYntI,EAAO,GAAK,EAC1C,CA+FA,SAASiyB,GAAKjyB,GACZ,OAAQA,GAASA,EAAM/hB,OAAU+hB,EAAM,GAAK9c,CAC9C,CAyEA,IAAIi7J,GAAepK,IAAS,SAASpoI,GACnC,IAAImF,EAASqwH,GAASx1H,EAAQ+qI,IAC9B,OAAQ5lI,EAAO7yB,QAAU6yB,EAAO,KAAOnF,EAAO,GAC1C4iI,GAAiBz9H,GACjB,EACN,IAyBIstI,GAAiBrK,IAAS,SAASpoI,GACrC,IAAIi1H,EAAWr1H,GAAKI,GAChBmF,EAASqwH,GAASx1H,EAAQ+qI,IAO9B,OALI9V,IAAar1H,GAAKuF,GACpB8vH,EAAW19I,EAEX4tB,EAAOrL,MAEDqL,EAAO7yB,QAAU6yB,EAAO,KAAOnF,EAAO,GAC1C4iI,GAAiBz9H,EAAQiiI,GAAYnS,EAAU,IAC/C,EACN,IAuBIyd,GAAmBtK,IAAS,SAASpoI,GACvC,IAAIu1H,EAAa31H,GAAKI,GAClBmF,EAASqwH,GAASx1H,EAAQ+qI,IAM9B,OAJAxV,EAAkC,mBAAdA,EAA2BA,EAAah+I,IAE1D4tB,EAAOrL,MAEDqL,EAAO7yB,QAAU6yB,EAAO,KAAOnF,EAAO,GAC1C4iI,GAAiBz9H,EAAQ5tB,EAAWg+I,GACpC,EACN,IAmCA,SAAS31H,GAAKvL,GACZ,IAAI/hB,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAOA,EAAS+hB,EAAM/hB,EAAS,GAAKiF,CACtC,CAsFA,IAAIo7J,GAAOvK,GAASwK,IAsBpB,SAASA,GAAQv+I,EAAOqS,GACtB,OAAQrS,GAASA,EAAM/hB,QAAUo0B,GAAUA,EAAOp0B,OAC9Cy1J,GAAY1zI,EAAOqS,GACnBrS,CACN,CAoFA,IAAIw+I,GAASzF,IAAS,SAAS/4I,EAAO4zI,GACpC,IAAI31J,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACnC0C,EAASupJ,GAAOlqI,EAAO4zI,GAM3B,OAJAD,GAAW3zI,EAAOmhI,GAASyS,GAAS,SAASzmJ,GAC3C,OAAO67I,GAAQ77I,EAAOlP,IAAWkP,EAAQA,CAC3C,IAAGgkB,KAAKmiI,KAED3yJ,CACT,IA0EA,SAASq6F,GAAQh7E,GACf,OAAgB,MAATA,EAAgBA,EAAQomI,GAAclmJ,KAAK8f,EACpD,CAiaA,IAAIy+I,GAAQ1K,IAAS,SAASpoI,GAC5B,OAAOkqI,GAAS1I,GAAYxhI,EAAQ,EAAG6mI,IAAmB,GAC5D,IAyBIkM,GAAU3K,IAAS,SAASpoI,GAC9B,IAAIi1H,EAAWr1H,GAAKI,GAIpB,OAHI6mI,GAAkB5R,KACpBA,EAAW19I,GAEN2yJ,GAAS1I,GAAYxhI,EAAQ,EAAG6mI,IAAmB,GAAOO,GAAYnS,EAAU,GACzF,IAuBI+d,GAAY5K,IAAS,SAASpoI,GAChC,IAAIu1H,EAAa31H,GAAKI,GAEtB,OADAu1H,EAAkC,mBAAdA,EAA2BA,EAAah+I,EACrD2yJ,GAAS1I,GAAYxhI,EAAQ,EAAG6mI,IAAmB,GAAOtvJ,EAAWg+I,EAC9E,IA+FA,SAAS0d,GAAM5+I,GACb,IAAMA,IAASA,EAAM/hB,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA+hB,EAAQ+4G,GAAY/4G,GAAO,SAAS9F,GAClC,GAAIs4I,GAAkBt4I,GAEpB,OADAjc,EAAS44I,GAAU38H,EAAMjc,OAAQA,IAC1B,CAEX,IACOmkJ,GAAUnkJ,GAAQ,SAASkP,GAChC,OAAOg0I,GAASnhI,EAAOuhI,GAAap0I,GACtC,GACF,CAuBA,SAAS0xJ,GAAU7+I,EAAO4gI,GACxB,IAAM5gI,IAASA,EAAM/hB,OACnB,MAAO,GAET,IAAI0C,EAASi+J,GAAM5+I,GACnB,OAAgB,MAAZ4gI,EACKjgJ,EAEFwgJ,GAASxgJ,GAAQ,SAASuZ,GAC/B,OAAOlZ,GAAM4/I,EAAU19I,EAAWgX,EACpC,GACF,CAsBA,IAAI4kJ,GAAU/K,IAAS,SAAS/zI,EAAOqS,GACrC,OAAOmgI,GAAkBxyI,GACrBksI,GAAelsI,EAAOqS,GACtB,EACN,IAoBI0sI,GAAMhL,IAAS,SAASpoI,GAC1B,OAAO2qI,GAAQv9B,GAAYptG,EAAQ6mI,IACrC,IAyBIwM,GAAQjL,IAAS,SAASpoI,GAC5B,IAAIi1H,EAAWr1H,GAAKI,GAIpB,OAHI6mI,GAAkB5R,KACpBA,EAAW19I,GAENozJ,GAAQv9B,GAAYptG,EAAQ6mI,IAAoBO,GAAYnS,EAAU,GAC/E,IAuBIqe,GAAUlL,IAAS,SAASpoI,GAC9B,IAAIu1H,EAAa31H,GAAKI,GAEtB,OADAu1H,EAAkC,mBAAdA,EAA2BA,EAAah+I,EACrDozJ,GAAQv9B,GAAYptG,EAAQ6mI,IAAoBtvJ,EAAWg+I,EACpE,IAkBIge,GAAMnL,GAAS6K,IA6DnB,IAAIO,GAAUpL,IAAS,SAASpoI,GAC9B,IAAI1tB,EAAS0tB,EAAO1tB,OAChB2iJ,EAAW3iJ,EAAS,EAAI0tB,EAAO1tB,EAAS,GAAKiF,EAGjD,OADA09I,EAA8B,mBAAZA,GAA0Bj1H,EAAOlG,MAAOm7H,GAAY19I,EAC/D27J,GAAUlzI,EAAQi1H,EAC3B,IAiCA,SAAS3Z,GAAM/nI,GACb,IAAIyB,EAASumJ,GAAOhoJ,GAEpB,OADAyB,EAAOgnJ,WAAY,EACZhnJ,CACT,CAqDA,SAASs4J,GAAK/5J,EAAOkgK,GACnB,OAAOA,EAAYlgK,EACrB,CAkBA,IAAImgK,GAAYtG,IAAS,SAAS5O,GAChC,IAAIlsJ,EAASksJ,EAAMlsJ,OACf8rD,EAAQ9rD,EAASksJ,EAAM,GAAK,EAC5BjrJ,EAAQ4B,KAAK2mJ,YACb2X,EAAc,SAASl+J,GAAU,OAAOgpJ,GAAOhpJ,EAAQipJ,EAAQ,EAEnE,QAAIlsJ,EAAS,GAAK6C,KAAK4mJ,YAAYzpJ,SAC7BiB,aAAiBioJ,IAAiB6B,GAAQj/F,KAGhD7qD,EAAQA,EAAMoD,MAAMynD,GAAQA,GAAS9rD,EAAS,EAAI,KAC5CypJ,YAAY1lJ,KAAK,CACrB,KAAQi3J,GACR,KAAQ,CAACmG,GACT,QAAWl8J,IAEN,IAAIkkJ,GAAcloJ,EAAO4B,KAAK6mJ,WAAWsR,MAAK,SAASj5I,GAI5D,OAHI/hB,IAAW+hB,EAAM/hB,QACnB+hB,EAAMhe,KAAKkB,GAEN8c,CACT,KAbSlf,KAAKm4J,KAAKmG,EAcrB,IAiPA,IAAIE,GAAUtH,IAAiB,SAASr3J,EAAQzB,EAAOV,GACjD4C,GAAelB,KAAKS,EAAQnC,KAC5BmC,EAAOnC,GAETkrJ,GAAgB/oJ,EAAQnC,EAAK,EAEjC,IAqIA,IAAI4S,GAAOwnJ,GAAW79I,IAqBlBwkJ,GAAW3G,GAAWsF,IA2G1B,SAAS93J,GAAQq7I,EAAYb,GAE3B,OADWxuH,GAAQqvH,GAAcZ,GAAYkJ,IACjCtI,EAAYsR,GAAYnS,EAAU,GAChD,CAsBA,SAAS4e,GAAa/d,EAAYb,GAEhC,OADWxuH,GAAQqvH,GAAcX,GAAiBgM,IACtCrL,EAAYsR,GAAYnS,EAAU,GAChD,CAyBA,IAAI35C,GAAU+wD,IAAiB,SAASr3J,EAAQzB,EAAOV,GACjD4C,GAAelB,KAAKS,EAAQnC,GAC9BmC,EAAOnC,GAAKwD,KAAK9C,GAEjBwqJ,GAAgB/oJ,EAAQnC,EAAK,CAACU,GAElC,IAoEA,IAAIugK,GAAY1L,IAAS,SAAStS,EAAY1kI,EAAMmhB,GAClD,IAAI/wB,GAAS,EACT29I,EAAwB,mBAAR/tI,EAChBpc,EAASixJ,GAAYnQ,GAAc59H,EAAM49H,EAAWxjJ,QAAU,GAKlE,OAHA8rJ,GAAStI,GAAY,SAASviJ,GAC5ByB,IAASwM,GAAS29I,EAAS9pJ,GAAM+b,EAAM7d,EAAOg/B,GAAQ0wH,GAAW1vJ,EAAO6d,EAAMmhB,EAChF,IACOv9B,CACT,IA8BI++J,GAAQ1H,IAAiB,SAASr3J,EAAQzB,EAAOV,GACnDkrJ,GAAgB/oJ,EAAQnC,EAAKU,EAC/B,IA4CA,SAASoJ,GAAIm5I,EAAYb,GAEvB,OADWxuH,GAAQqvH,GAAcN,GAAWwQ,IAChClQ,EAAYsR,GAAYnS,EAAU,GAChD,CAiFA,IAAI+e,GAAY3H,IAAiB,SAASr3J,EAAQzB,EAAOV,GACvDmC,EAAOnC,EAAM,EAAI,GAAGwD,KAAK9C,EAC3B,IAAG,WAAa,MAAO,CAAC,GAAI,GAAK,IAmSjC,IAAI0gK,GAAS7L,IAAS,SAAStS,EAAYqR,GACzC,GAAkB,MAAdrR,EACF,MAAO,GAET,IAAIxjJ,EAAS60J,EAAU70J,OAMvB,OALIA,EAAS,GAAKq6J,GAAe7W,EAAYqR,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACH70J,EAAS,GAAKq6J,GAAexF,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAYpR,EAAY0L,GAAY2F,EAAW,GAAI,GAC5D,IAoBIngJ,GAAM4yI,IAAU,WAClB,OAAO3/F,GAAKlzC,KAAKC,KACnB,EAyDA,SAASgnJ,GAAIziB,EAAM9yH,EAAGi0I,GAGpB,OAFAj0I,EAAIi0I,EAAQn1J,EAAYkhB,EACxBA,EAAK8yH,GAAa,MAAL9yH,EAAa8yH,EAAKj5I,OAASmmB,EACjCy3I,GAAW3kB,EAAM2B,EAAe31I,EAAWA,EAAWA,EAAWA,EAAWkhB,EACrF,CAmBA,SAASy7I,GAAOz7I,EAAG8yH,GACjB,IAAIv2I,EACJ,GAAmB,mBAARu2I,EACT,MAAM,IAAIt5I,GAAU26I,GAGtB,OADAn0H,EAAIkxG,GAAUlxG,GACP,WAOL,QANMA,EAAI,IACRzjB,EAASu2I,EAAKl2I,MAAMF,KAAMC,YAExBqjB,GAAK,IACP8yH,EAAOh0I,GAEFvC,CACT,CACF,CAqCA,IAAInB,GAAOu0J,IAAS,SAAS7c,EAAM5yH,EAAS4yI,GAC1C,IAAI3M,EAv4Ta,EAw4TjB,GAAI2M,EAASj5J,OAAQ,CACnB,IAAIk5J,EAAU7T,GAAe4T,EAAU8C,GAAUx6J,KACjD+qJ,GAAW5R,CACb,CACA,OAAOkjB,GAAW3kB,EAAMqT,EAASjmI,EAAS4yI,EAAUC,EACtD,IA+CI2I,GAAU/L,IAAS,SAAS7yJ,EAAQ1C,EAAK04J,GAC3C,IAAI3M,EAAUwV,EACd,GAAI7I,EAASj5J,OAAQ,CACnB,IAAIk5J,EAAU7T,GAAe4T,EAAU8C,GAAU8F,KACjDvV,GAAW5R,CACb,CACA,OAAOkjB,GAAWr9J,EAAK+rJ,EAASrpJ,EAAQg2J,EAAUC,EACpD,IAqJA,SAASr1I,GAASo1H,EAAMC,EAAMr1I,GAC5B,IAAIs1I,EACAC,EACAC,EACA32I,EACA42I,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIt5I,GAAU26I,GAUtB,SAASV,EAAWrE,GAClB,IAAIt1G,EAAOk5G,EACP9yH,EAAU+yH,EAKd,OAHAD,EAAWC,EAAWn0I,EACtBu0I,EAAiBjE,EACjB7yI,EAASu2I,EAAKl2I,MAAMsjB,EAAS4Z,EAE/B,CAqBA,SAAS45G,EAAatE,GACpB,IAAIuE,EAAoBvE,EAAOgE,EAM/B,OAAQA,IAAiBt0I,GAAc60I,GAAqBZ,GACzDY,EAAoB,GAAOJ,GANJnE,EAAOiE,GAM8BH,CACjE,CAEA,SAASU,IACP,IAAIxE,EAAO7gI,KACX,GAAImlI,EAAatE,GACf,OAAOyE,EAAazE,GAGtB+D,EAAU9uI,GAAWuvI,EA3BvB,SAAuBxE,GACrB,IAEIwsB,EAAc7oB,GAFM3D,EAAOgE,GAI/B,OAAOG,EACHb,GAAUkpB,EAAa1oB,GAJD9D,EAAOiE,IAK7BuoB,CACN,CAmBqC9nB,CAAc1E,GACnD,CAEA,SAASyE,EAAazE,GAKpB,OAJA+D,EAAUr0I,EAIN00I,GAAYR,EACPS,EAAWrE,IAEpB4D,EAAWC,EAAWn0I,EACfvC,EACT,CAcA,SAASw3I,IACP,IAAI3E,EAAO7gI,KACPylI,EAAaN,EAAatE,GAM9B,GAJA4D,EAAWr2I,UACXs2I,EAAWv2I,KACX02I,EAAehE,EAEX4E,EAAY,CACd,GAAIb,IAAYr0I,EACd,OAzEN,SAAqBswI,GAMnB,OAJAiE,EAAiBjE,EAEjB+D,EAAU9uI,GAAWuvI,EAAcb,GAE5BO,EAAUG,EAAWrE,GAAQ7yI,CACtC,CAkEa03I,CAAYb,GAErB,GAAIG,EAIF,OAFA3zC,GAAauzC,GACbA,EAAU9uI,GAAWuvI,EAAcb,GAC5BU,EAAWL,EAEtB,CAIA,OAHID,IAAYr0I,IACdq0I,EAAU9uI,GAAWuvI,EAAcb,IAE9Bx2I,CACT,CAGA,OA3GAw2I,EAAOhT,GAASgT,IAAS,EACrB5yB,GAASziH,KACX41I,IAAY51I,EAAQ41I,QAEpBJ,GADAK,EAAS,YAAa71I,GACH+0I,GAAU1S,GAASriI,EAAQw1I,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAc91I,IAAYA,EAAQ81I,SAAWA,GAoG1DO,EAAUG,OApCV,WACMf,IAAYr0I,GACd8gG,GAAauzC,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,EAAUr0I,CACjD,EA+BAi1I,EAAU7pD,MA7BV,WACE,OAAOipD,IAAYr0I,EAAYvC,EAASs3I,EAAatlI,KACvD,EA4BOwlI,CACT,CAoBA,IAAI1hB,GAAQs9B,IAAS,SAAS7c,EAAMh5G,GAClC,OAAO+tH,GAAU/U,EAAM,EAAGh5G,EAC5B,IAqBI+c,GAAQ84G,IAAS,SAAS7c,EAAMC,EAAMj5G,GACxC,OAAO+tH,GAAU/U,EAAM/S,GAASgT,IAAS,EAAGj5G,EAC9C,IAoEA,SAASy/H,GAAQzmB,EAAM+oB,GACrB,GAAmB,mBAAR/oB,GAAmC,MAAZ+oB,GAAuC,mBAAZA,EAC3D,MAAM,IAAIriK,GAAU26I,GAEtB,IAAI2nB,EAAW,WACb,IAAIhiI,EAAOn9B,UACPvC,EAAMyhK,EAAWA,EAASj/J,MAAMF,KAAMo9B,GAAQA,EAAK,GACnD9lB,EAAQ8nJ,EAAS9nJ,MAErB,GAAIA,EAAMukB,IAAIn+B,GACZ,OAAO4Z,EAAM9W,IAAI9C,GAEnB,IAAImC,EAASu2I,EAAKl2I,MAAMF,KAAMo9B,GAE9B,OADAgiI,EAAS9nJ,MAAQA,EAAMogB,IAAIh6B,EAAKmC,IAAWyX,EACpCzX,CACT,EAEA,OADAu/J,EAAS9nJ,MAAQ,IAAKulJ,GAAQjqI,OAAS20H,IAChC6X,CACT,CAyBA,SAASC,GAAO5kC,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAI39H,GAAU26I,GAEtB,OAAO,WACL,IAAIr6G,EAAOn9B,UACX,OAAQm9B,EAAKjgC,QACX,KAAK,EAAG,OAAQs9H,EAAUr7H,KAAKY,MAC/B,KAAK,EAAG,OAAQy6H,EAAUr7H,KAAKY,KAAMo9B,EAAK,IAC1C,KAAK,EAAG,OAAQq9F,EAAUr7H,KAAKY,KAAMo9B,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQq9F,EAAUr7H,KAAKY,KAAMo9B,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQq9F,EAAUv6H,MAAMF,KAAMo9B,EAChC,CACF,CApCAy/H,GAAQjqI,MAAQ20H,GA2FhB,IAAI+X,GAAWvJ,IAAS,SAAS3f,EAAMmpB,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAWpiK,QAAem0B,GAAQiuI,EAAW,IACvDlf,GAASkf,EAAW,GAAI9d,GAAUwQ,OAClC5R,GAASgM,GAAYkT,EAAY,GAAI9d,GAAUwQ,QAEtB90J,OAC7B,OAAO81J,IAAS,SAAS71H,GAIvB,IAHA,IAAI/wB,GAAS,EACTlP,EAAS64I,GAAU54G,EAAKjgC,OAAQqiK,KAE3BnzJ,EAAQlP,GACfigC,EAAK/wB,GAASkzJ,EAAWlzJ,GAAOjN,KAAKY,KAAMo9B,EAAK/wB,IAElD,OAAOnM,GAAMk2I,EAAMp2I,KAAMo9B,EAC3B,GACF,IAmCIqiI,GAAUxM,IAAS,SAAS7c,EAAMggB,GACpC,IAAIC,EAAU7T,GAAe4T,EAAU8C,GAAUuG,KACjD,OAAO1E,GAAW3kB,EAAMyB,EAAmBz1I,EAAWg0J,EAAUC,EAClE,IAkCIqJ,GAAezM,IAAS,SAAS7c,EAAMggB,GACzC,IAAIC,EAAU7T,GAAe4T,EAAU8C,GAAUwG,KACjD,OAAO3E,GAAW3kB,EAAM0B,EAAyB11I,EAAWg0J,EAAUC,EACxE,IAwBIsJ,GAAQ1H,IAAS,SAAS7hB,EAAM0c,GAClC,OAAOiI,GAAW3kB,EAAM4B,EAAiB51I,EAAWA,EAAWA,EAAW0wJ,EAC5E,IAgaA,SAASnK,GAAGvqJ,EAAO83I,GACjB,OAAO93I,IAAU83I,GAAU93I,GAAUA,GAAS83I,GAAUA,CAC1D,CAyBA,IAAI0pB,GAAKvF,GAA0B/M,IAyB/BuS,GAAMxF,IAA0B,SAASj8J,EAAO83I,GAClD,OAAO93I,GAAS83I,CAClB,IAoBI6R,GAAcgG,GAAgB,WAAa,OAAO9tJ,SAAW,CAA/B,IAAsC8tJ,GAAkB,SAAS3vJ,GACjG,OAAO63I,GAAa73I,IAAUkC,GAAelB,KAAKhB,EAAO,YACtDuxF,GAAqBvwF,KAAKhB,EAAO,SACtC,EAyBIkzB,GAAUvO,EAAMuO,QAmBhB6tH,GAAgBD,GAAoBuC,GAAUvC,IA75PlD,SAA2B9gJ,GACzB,OAAO63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAUi7I,CACrD,EAs7PA,SAASyX,GAAY1yJ,GACnB,OAAgB,MAATA,GAAiB49J,GAAS59J,EAAMjB,UAAYi2H,GAAWh1H,EAChE,CA2BA,SAASszJ,GAAkBtzJ,GACzB,OAAO63I,GAAa73I,IAAU0yJ,GAAY1yJ,EAC5C,CAyCA,IAAI2mJ,GAAWD,IAAkBqX,GAmB7B9c,GAASD,GAAaqC,GAAUrC,IAxgQpC,SAAoBhhJ,GAClB,OAAO63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAUo6I,CACrD,EA8qQA,SAASsnB,GAAQ1hK,GACf,IAAK63I,GAAa73I,GAChB,OAAO,EAET,IAAI69B,EAAMixH,GAAW9uJ,GACrB,OAAO69B,GAAOw8G,GA9yWF,yBA8yWcx8G,GACC,iBAAjB79B,EAAM8I,SAA4C,iBAAd9I,EAAM8E,OAAqByuJ,GAAcvzJ,EACzF,CAiDA,SAASg1H,GAAWh1H,GAClB,IAAKqlH,GAASrlH,GACZ,OAAO,EAIT,IAAI69B,EAAMixH,GAAW9uJ,GACrB,OAAO69B,GAAOy8G,GAAWz8G,GAAO08G,GA32WrB,0BA22W+B18G,GA/1W/B,kBA+1WkDA,CAC/D,CA4BA,SAASy4B,GAAUt2D,GACjB,MAAuB,iBAATA,GAAqBA,GAASo2H,GAAUp2H,EACxD,CA4BA,SAAS49J,GAAS59J,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS+jE,CAC7C,CA2BA,SAASshD,GAASrlH,GAChB,IAAI0C,SAAc1C,EAClB,OAAgB,MAATA,IAA0B,UAAR0C,GAA4B,YAARA,EAC/C,CA0BA,SAASm1I,GAAa73I,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,CAmBA,IAAImhJ,GAAQD,GAAYmC,GAAUnC,IA5xQlC,SAAmBlhJ,GACjB,OAAO63I,GAAa73I,IAAU2rJ,GAAO3rJ,IAAUw6I,CACjD,EA4+QA,SAASmnB,GAAS3hK,GAChB,MAAuB,iBAATA,GACX63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAUy6I,CACjD,CA8BA,SAAS8Y,GAAcvzJ,GACrB,IAAK63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAU06I,EAC/C,OAAO,EAET,IAAIpwB,EAAQu7B,GAAa7lJ,GACzB,GAAc,OAAVsqH,EACF,OAAO,EAET,IAAI8hC,EAAOlqJ,GAAelB,KAAKspH,EAAO,gBAAkBA,EAAMvqH,YAC9D,MAAsB,mBAARqsJ,GAAsBA,aAAgBA,GAClDhH,GAAapkJ,KAAKorJ,IAAS5G,EAC/B,CAmBA,IAAIz2B,GAAWqyB,GAAeiC,GAAUjC,IA59QxC,SAAsBphJ,GACpB,OAAO63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAU46I,CACrD,EA4gRA,IAAI0G,GAAQD,GAAYgC,GAAUhC,IAngRlC,SAAmBrhJ,GACjB,OAAO63I,GAAa73I,IAAU2rJ,GAAO3rJ,IAAU66I,CACjD,EAohRA,SAAS+mB,GAAS5hK,GAChB,MAAuB,iBAATA,IACVkzB,GAAQlzB,IAAU63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAU86I,CACpE,CAmBA,SAASpL,GAAS1vI,GAChB,MAAuB,iBAATA,GACX63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAU+6I,CACjD,CAmBA,IAAIyG,GAAeD,GAAmB8B,GAAU9B,IAvjRhD,SAA0BvhJ,GACxB,OAAO63I,GAAa73I,IAClB49J,GAAS59J,EAAMjB,WAAamhJ,GAAe4O,GAAW9uJ,GAC1D,EA4oRA,IAAImzH,GAAK8oC,GAA0BzJ,IAyB/BqP,GAAM5F,IAA0B,SAASj8J,EAAO83I,GAClD,OAAO93I,GAAS83I,CAClB,IAyBA,SAASgqB,GAAQ9hK,GACf,IAAKA,EACH,MAAO,GAET,GAAI0yJ,GAAY1yJ,GACd,OAAO4hK,GAAS5hK,GAASykJ,GAAczkJ,GAASmqJ,GAAUnqJ,GAE5D,GAAIimJ,IAAejmJ,EAAMimJ,IACvB,OAv8VN,SAAyB7/H,GAIvB,IAHA,IAAIlb,EACAzJ,EAAS,KAEJyJ,EAAOkb,EAASlY,QAAQyX,MAC/BlkB,EAAOqB,KAAKoI,EAAKlL,OAEnB,OAAOyB,CACT,CA+7VasgK,CAAgB/hK,EAAMimJ,OAE/B,IAAIpoH,EAAM8tH,GAAO3rJ,GAGjB,OAFW69B,GAAO28G,EAASyJ,GAAcpmH,GAAOg9G,EAASwJ,GAAalxH,IAE1DnzB,EACd,CAyBA,SAAS+7J,GAAS/7J,GAChB,OAAKA,GAGLA,EAAQilI,GAASjlI,MACH65I,GAAY75I,KAAU,IAxkYtB,uBAykYAA,EAAQ,GAAK,EAAI,GAGxBA,GAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQjC,CA4BA,SAASo2H,GAAUp2H,GACjB,IAAIyB,EAASs6J,GAAS/7J,GAClB02E,EAAYj1E,EAAS,EAEzB,OAAOA,GAAWA,EAAUi1E,EAAYj1E,EAASi1E,EAAYj1E,EAAU,CACzE,CA6BA,SAAS+jH,GAASxlH,GAChB,OAAOA,EAAQoqJ,GAAUh0B,GAAUp2H,GAAQ,EAAG+5I,GAAoB,CACpE,CAyBA,SAAS9U,GAASjlI,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI0vI,GAAS1vI,GACX,OAAO85I,EAET,GAAIz0B,GAASrlH,GAAQ,CACnB,IAAI83I,EAAgC,mBAAjB93I,EAAMe,QAAwBf,EAAMe,UAAYf,EACnEA,EAAQqlH,GAASyyB,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT93I,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQmjJ,GAASnjJ,GACjB,IAAI+3I,EAAWV,GAAW/yH,KAAKtkB,GAC/B,OAAQ+3I,GAAYT,GAAUhzH,KAAKtkB,GAC/Bu3I,GAAav3I,EAAMoD,MAAM,GAAI20I,EAAW,EAAI,GAC3CX,GAAW9yH,KAAKtkB,GAAS85I,GAAO95I,CACvC,CA0BA,SAASwzJ,GAAcxzJ,GACrB,OAAO+qJ,GAAW/qJ,EAAOisJ,GAAOjsJ,GAClC,CAqDA,SAASooB,GAASpoB,GAChB,OAAgB,MAATA,EAAgB,GAAK02J,GAAa12J,EAC3C,CAoCA,IAAI+kB,GAASi0I,IAAe,SAASh3J,EAAQ6uD,GAC3C,GAAIuhG,GAAYvhG,IAAW6hG,GAAY7hG,GACrCk6F,GAAWl6F,EAAQ9+B,GAAK8+B,GAAS7uD,QAGnC,IAAK,IAAI1C,KAAOuxD,EACV3uD,GAAelB,KAAK6vD,EAAQvxD,IAC9BmrJ,GAAYzoJ,EAAQ1C,EAAKuxD,EAAOvxD,GAGtC,IAiCI0iK,GAAWhJ,IAAe,SAASh3J,EAAQ6uD,GAC7Ck6F,GAAWl6F,EAAQo7F,GAAOp7F,GAAS7uD,EACrC,IA+BIigK,GAAejJ,IAAe,SAASh3J,EAAQ6uD,EAAQoiG,EAAU3H,GACnEP,GAAWl6F,EAAQo7F,GAAOp7F,GAAS7uD,EAAQspJ,EAC7C,IA8BI4W,GAAalJ,IAAe,SAASh3J,EAAQ6uD,EAAQoiG,EAAU3H,GACjEP,GAAWl6F,EAAQ9+B,GAAK8+B,GAAS7uD,EAAQspJ,EAC3C,IAmBInmC,GAAK00C,GAAS7O,IA8DlB,IAAIlG,GAAW+P,IAAS,SAAS7yJ,EAAQk3J,GACvCl3J,EAAS5C,GAAO4C,GAEhB,IAAIiM,GAAS,EACTlP,EAASm6J,EAAQn6J,OACjBo6J,EAAQp6J,EAAS,EAAIm6J,EAAQ,GAAKl1J,EAMtC,IAJIm1J,GAASC,GAAeF,EAAQ,GAAIA,EAAQ,GAAIC,KAClDp6J,EAAS,KAGFkP,EAAQlP,GAMf,IALA,IAAI8xD,EAASqoG,EAAQjrJ,GACjBpP,EAAQotJ,GAAOp7F,GACfsxG,GAAc,EACdC,EAAcvjK,EAAME,SAEfojK,EAAaC,GAAa,CACjC,IAAI9iK,EAAMT,EAAMsjK,GACZniK,EAAQgC,EAAO1C,IAEfU,IAAUgE,GACTumJ,GAAGvqJ,EAAOklJ,GAAY5lJ,MAAU4C,GAAelB,KAAKgB,EAAQ1C,MAC/D0C,EAAO1C,GAAOuxD,EAAOvxD,GAEzB,CAGF,OAAO0C,CACT,IAqBIqgK,GAAexN,IAAS,SAAS71H,GAEnC,OADAA,EAAKl8B,KAAKkB,EAAWo5J,IACdt7J,GAAMwgK,GAAWt+J,EAAWg7B,EACrC,IA+RA,SAAS58B,GAAIJ,EAAQ6b,EAAM49I,GACzB,IAAIh6J,EAAmB,MAAVO,EAAiBgC,EAAYwqJ,GAAQxsJ,EAAQ6b,GAC1D,OAAOpc,IAAWuC,EAAYy3J,EAAeh6J,CAC/C,CA2DA,SAASsxJ,GAAM/wJ,EAAQ6b,GACrB,OAAiB,MAAV7b,GAAkB07J,GAAQ17J,EAAQ6b,EAAMuxI,GACjD,CAoBA,IAAImT,GAASlH,IAAe,SAAS55J,EAAQzB,EAAOV,GACrC,MAATU,GACyB,mBAAlBA,EAAMooB,WACfpoB,EAAQulJ,GAAqBvkJ,KAAKhB,IAGpCyB,EAAOzB,GAASV,CAClB,GAAG+1J,GAASrD,KA4BRwQ,GAAWnH,IAAe,SAAS55J,EAAQzB,EAAOV,GACvC,MAATU,GACyB,mBAAlBA,EAAMooB,WACfpoB,EAAQulJ,GAAqBvkJ,KAAKhB,IAGhCkC,GAAelB,KAAKS,EAAQzB,GAC9ByB,EAAOzB,GAAO8C,KAAKxD,GAEnBmC,EAAOzB,GAAS,CAACV,EAErB,GAAGu0J,IAoBCx5D,GAASw6D,GAASnF,IA8BtB,SAAS39H,GAAK/vB,GACZ,OAAO0wJ,GAAY1wJ,GAAUunJ,GAAcvnJ,GAAUmwJ,GAASnwJ,EAChE,CAyBA,SAASiqJ,GAAOjqJ,GACd,OAAO0wJ,GAAY1wJ,GAAUunJ,GAAcvnJ,GAAQ,GAAQqwJ,GAAWrwJ,EACxE,CAsGA,IAAIu9E,GAAQy5E,IAAe,SAASh3J,EAAQ6uD,EAAQoiG,GAClDD,GAAUhxJ,EAAQ6uD,EAAQoiG,EAC5B,IAiCIqP,GAAYtJ,IAAe,SAASh3J,EAAQ6uD,EAAQoiG,EAAU3H,GAChE0H,GAAUhxJ,EAAQ6uD,EAAQoiG,EAAU3H,EACtC,IAsBImX,GAAO5I,IAAS,SAAS73J,EAAQipJ,GACnC,IAAIxpJ,EAAS,CAAC,EACd,GAAc,MAAVO,EACF,OAAOP,EAET,IAAI8pJ,GAAS,EACbN,EAAQhJ,GAASgJ,GAAO,SAASptI,GAG/B,OAFAA,EAAO4wI,GAAS5wI,EAAM7b,GACtBupJ,IAAWA,EAAS1tI,EAAK9e,OAAS,GAC3B8e,CACT,IACAktI,GAAW/oJ,EAAQ4qJ,GAAa5qJ,GAASP,GACrC8pJ,IACF9pJ,EAAS2pJ,GAAU3pJ,EAAQihK,EAAwDrF,KAGrF,IADA,IAAIt+J,EAASksJ,EAAMlsJ,OACZA,KACL41J,GAAUlzJ,EAAQwpJ,EAAMlsJ,IAE1B,OAAO0C,CACT,IA2CA,IAAIsjJ,GAAO8U,IAAS,SAAS73J,EAAQipJ,GACnC,OAAiB,MAAVjpJ,EAAiB,CAAC,EAnmT3B,SAAkBA,EAAQipJ,GACxB,OAAOqJ,GAAWtyJ,EAAQipJ,GAAO,SAASjrJ,EAAO6d,GAC/C,OAAOk1I,GAAM/wJ,EAAQ6b,EACvB,GACF,CA+lT+B8kJ,CAAS3gK,EAAQipJ,EAChD,IAoBA,SAAS2X,GAAO5gK,EAAQq6H,GACtB,GAAc,MAAVr6H,EACF,MAAO,CAAC,EAEV,IAAInD,EAAQojJ,GAAS2K,GAAa5qJ,IAAS,SAAS6gK,GAClD,MAAO,CAACA,EACV,IAEA,OADAxmC,EAAYw3B,GAAYx3B,GACjBi4B,GAAWtyJ,EAAQnD,GAAO,SAASmB,EAAO6d,GAC/C,OAAOw+G,EAAUr8H,EAAO6d,EAAK,GAC/B,GACF,CA0IA,IAAIilJ,GAAUrG,GAAc1qI,IA0BxBgxI,GAAYtG,GAAcxQ,IA4K9B,SAAS94H,GAAOnxB,GACd,OAAiB,MAAVA,EAAiB,GAAKshJ,GAAWthJ,EAAQ+vB,GAAK/vB,GACvD,CAiNA,IAAIghK,GAAY1J,IAAiB,SAAS73J,EAAQkpB,EAAM1c,GAEtD,OADA0c,EAAOA,EAAKuyE,cACLz7F,GAAUwM,EAAQg1J,GAAWt4I,GAAQA,EAC9C,IAiBA,SAASs4I,GAAW90C,GAClB,OAAO+0C,GAAW96I,GAAS+lG,GAAQjxB,cACrC,CAoBA,SAASq8D,GAAOprC,GAEd,OADAA,EAAS/lG,GAAS+lG,KACDA,EAAOllG,QAAQs0H,GAASqG,IAAc36H,QAAQ02H,GAAa,GAC9E,CAqHA,IAAIwjB,GAAY7J,IAAiB,SAAS73J,EAAQkpB,EAAM1c,GACtD,OAAOxM,GAAUwM,EAAQ,IAAM,IAAM0c,EAAKuyE,aAC5C,IAsBIkmE,GAAY9J,IAAiB,SAAS73J,EAAQkpB,EAAM1c,GACtD,OAAOxM,GAAUwM,EAAQ,IAAM,IAAM0c,EAAKuyE,aAC5C,IAmBImmE,GAAahK,GAAgB,eA0NjC,IAAIiK,GAAYhK,IAAiB,SAAS73J,EAAQkpB,EAAM1c,GACtD,OAAOxM,GAAUwM,EAAQ,IAAM,IAAM0c,EAAKuyE,aAC5C,IA+DA,IAAIqmE,GAAYjK,IAAiB,SAAS73J,EAAQkpB,EAAM1c,GACtD,OAAOxM,GAAUwM,EAAQ,IAAM,IAAMi1J,GAAWv4I,EAClD,IAqiBA,IAAI64I,GAAYlK,IAAiB,SAAS73J,EAAQkpB,EAAM1c,GACtD,OAAOxM,GAAUwM,EAAQ,IAAM,IAAM0c,EAAKhZ,aAC5C,IAmBIuxJ,GAAa7J,GAAgB,eAqBjC,SAAShvI,GAAM8jG,EAAQs1C,EAAStK,GAI9B,OAHAhrC,EAAS/lG,GAAS+lG,IAClBs1C,EAAUtK,EAAQn1J,EAAYy/J,KAEdz/J,EArybpB,SAAwBmqH,GACtB,OAAO4xB,GAAiBz7H,KAAK6pG,EAC/B,CAoybau1C,CAAev1C,GA1jb5B,SAAsBA,GACpB,OAAOA,EAAO7jG,MAAMu1H,KAAkB,EACxC,CAwjbsC8jB,CAAax1C,GAzrcnD,SAAoBA,GAClB,OAAOA,EAAO7jG,MAAM0yH,KAAgB,EACtC,CAurc6D4mB,CAAWz1C,GAE7DA,EAAO7jG,MAAMm5I,IAAY,EAClC,CA0BA,IAAII,GAAUhP,IAAS,SAAS7c,EAAMh5G,GACpC,IACE,OAAOl9B,GAAMk2I,EAAMh0I,EAAWg7B,EAChC,CAAE,MAAO/9B,GACP,OAAOygK,GAAQzgK,GAAKA,EAAI,IAAI4D,GAAM5D,EACpC,CACF,IA4BI6iK,GAAUjK,IAAS,SAAS73J,EAAQ+hK,GAKtC,OAJApiB,GAAUoiB,GAAa,SAASzkK,GAC9BA,EAAMovJ,GAAMpvJ,GACZkrJ,GAAgBxoJ,EAAQ1C,EAAKgB,GAAK0B,EAAO1C,GAAM0C,GACjD,IACOA,CACT,IAoGA,SAASqzJ,GAASr1J,GAChB,OAAO,WACL,OAAOA,CACT,CACF,CAgDA,IAAIgkK,GAAOpK,KAuBPqK,GAAYrK,IAAW,GAkB3B,SAAS5H,GAAShyJ,GAChB,OAAOA,CACT,CA4CA,SAAS0hJ,GAAS1J,GAChB,OAAO+Z,GAA4B,mBAAR/Z,EAAqBA,EAAOoT,GAAUpT,EAjte/C,GAktepB,CAsGA,IAAIziI,GAASs/I,IAAS,SAASh3I,EAAMmhB,GACnC,OAAO,SAASh9B,GACd,OAAO0tJ,GAAW1tJ,EAAQ6b,EAAMmhB,EAClC,CACF,IAyBIklI,GAAWrP,IAAS,SAAS7yJ,EAAQg9B,GACvC,OAAO,SAASnhB,GACd,OAAO6xI,GAAW1tJ,EAAQ6b,EAAMmhB,EAClC,CACF,IAsCA,SAASmlI,GAAMniK,EAAQ6uD,EAAQjuD,GAC7B,IAAI/D,EAAQkzB,GAAK8+B,GACbkzG,EAAcxV,GAAc19F,EAAQhyD,GAEzB,MAAX+D,GACEyiH,GAASx0D,KAAYkzG,EAAYhlK,SAAWF,EAAME,UACtD6D,EAAUiuD,EACVA,EAAS7uD,EACTA,EAASJ,KACTmiK,EAAcxV,GAAc19F,EAAQ9+B,GAAK8+B,KAE3C,IAAIk3E,IAAU1iB,GAASziH,IAAY,UAAWA,IAAcA,EAAQmlI,OAChE6jB,EAAS52B,GAAWhzH,GAqBxB,OAnBA2/I,GAAUoiB,GAAa,SAAS/uI,GAC9B,IAAIgjH,EAAOnnF,EAAO77B,GAClBhzB,EAAOgzB,GAAcgjH,EACjB4T,IACF5pJ,EAAOtC,UAAUs1B,GAAc,WAC7B,IAAIszH,EAAW1mJ,KAAK6mJ,UACpB,GAAI1gB,GAASugB,EAAU,CACrB,IAAI7mJ,EAASO,EAAOJ,KAAK2mJ,aAKzB,OAJc9mJ,EAAO+mJ,YAAc2B,GAAUvoJ,KAAK4mJ,cAE1C1lJ,KAAK,CAAE,KAAQk1I,EAAM,KAAQn2I,UAAW,QAAWG,IAC3DP,EAAOgnJ,UAAYH,EACZ7mJ,CACT,CACA,OAAOu2I,EAAKl2I,MAAME,EAAQkgJ,GAAU,CAACtgJ,KAAK5B,SAAU6B,WACtD,EAEJ,IAEOG,CACT,CAkCA,SAASw6J,KAET,CA+CA,IAAI4H,GAAO1I,GAAWzZ,IA8BlBoiB,GAAY3I,GAAW3hC,IAiCvBuqC,GAAW5I,GAAW5hC,IAwB1B,SAAS73H,GAAS4b,GAChB,OAAOg1I,GAAMh1I,GAAQwkI,GAAaqM,GAAM7wI,IAh3X1C,SAA0BA,GACxB,OAAO,SAAS7b,GACd,OAAOwsJ,GAAQxsJ,EAAQ6b,EACzB,CACF,CA42XmD0mJ,CAAiB1mJ,EACpE,CAsEA,IAAIuoB,GAAQ01H,KAsCR0I,GAAa1I,IAAY,GAoB7B,SAAS2B,KACP,MAAO,EACT,CAeA,SAASM,KACP,OAAO,CACT,CA8JA,IAAI12J,GAAMm0J,IAAoB,SAASiJ,EAAQC,GAC7C,OAAOD,EAASC,CAClB,GAAG,GAuBCh1I,GAAO4sI,GAAY,QAiBnBv2B,GAASy1B,IAAoB,SAASmJ,EAAUC,GAClD,OAAOD,EAAWC,CACpB,GAAG,GAuBCp3I,GAAQ8uI,GAAY,SAwKxB,IAgaMzrG,GAhaFi1E,GAAW01B,IAAoB,SAAStnI,EAAY2wI,GACtD,OAAO3wI,EAAa2wI,CACtB,GAAG,GAuBC7oH,GAAQsgH,GAAY,SAiBpBwI,GAAWtJ,IAAoB,SAASuJ,EAASC,GACnD,OAAOD,EAAUC,CACnB,GAAG,GAgmBH,OA1iBAhd,GAAOid,MAp6MP,SAAe//I,EAAG8yH,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIt5I,GAAU26I,GAGtB,OADAn0H,EAAIkxG,GAAUlxG,GACP,WACL,KAAMA,EAAI,EACR,OAAO8yH,EAAKl2I,MAAMF,KAAMC,UAE5B,CACF,EA25MAmmJ,GAAOyS,IAAMA,GACbzS,GAAOjjI,OAASA,GAChBijI,GAAOga,SAAWA,GAClBha,GAAOia,aAAeA,GACtBja,GAAOka,WAAaA,GACpBla,GAAO7iC,GAAKA,GACZ6iC,GAAO2Y,OAASA,GAChB3Y,GAAO1nJ,KAAOA,GACd0nJ,GAAO8b,QAAUA,GACjB9b,GAAO4Y,QAAUA,GACjB5Y,GAAOkd,UAl8KP,WACE,IAAKrjK,UAAU9C,OACb,MAAO,GAET,IAAIiB,EAAQ6B,UAAU,GACtB,OAAOqxB,GAAQlzB,GAASA,EAAQ,CAACA,EACnC,EA67KAgoJ,GAAOjgB,MAAQA,GACfigB,GAAO/gH,MApgTP,SAAenmB,EAAOiV,EAAMojI,GAExBpjI,GADGojI,EAAQC,GAAet4I,EAAOiV,EAAMojI,GAASpjI,IAAS/xB,GAClD,EAEA2zI,GAAUvhB,GAAUrgG,GAAO,GAEpC,IAAIh3B,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,IAAKA,GAAUg3B,EAAO,EACpB,MAAO,GAMT,IAJA,IAAI9nB,EAAQ,EACR4zI,EAAW,EACXpgJ,EAASkjB,EAAM4hI,GAAWxnJ,EAASg3B,IAEhC9nB,EAAQlP,GACb0C,EAAOogJ,KAAc0T,GAAUz0I,EAAO7S,EAAQA,GAAS8nB,GAEzD,OAAOt0B,CACT,EAm/SAumJ,GAAOmd,QAl+SP,SAAiBrkJ,GAMf,IALA,IAAI7S,GAAS,EACTlP,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACnC8iJ,EAAW,EACXpgJ,EAAS,KAEJwM,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdjO,IACFyB,EAAOogJ,KAAc7hJ,EAEzB,CACA,OAAOyB,CACT,EAs9SAumJ,GAAOl2I,OA97SP,WACE,IAAI/S,EAAS8C,UAAU9C,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAIigC,EAAOra,EAAM5lB,EAAS,GACtB+hB,EAAQjf,UAAU,GAClBoM,EAAQlP,EAELkP,KACL+wB,EAAK/wB,EAAQ,GAAKpM,UAAUoM,GAE9B,OAAOi0I,GAAUhvH,GAAQpS,GAASqpI,GAAUrpI,GAAS,CAACA,GAAQmtI,GAAYjvH,EAAM,GAClF,EAk7SAgpH,GAAOod,KA3tCP,SAAc5X,GACZ,IAAIzuJ,EAAkB,MAATyuJ,EAAgB,EAAIA,EAAMzuJ,OACnCu8J,EAAazH,KASjB,OAPArG,EAASzuJ,EAAckjJ,GAASuL,GAAO,SAAS+O,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAI79J,GAAU26I,GAEtB,MAAO,CAACiiB,EAAWiB,EAAK,IAAKA,EAAK,GACpC,IALkB,GAOX1H,IAAS,SAAS71H,GAEvB,IADA,IAAI/wB,GAAS,IACJA,EAAQlP,GAAQ,CACvB,IAAIw9J,EAAO/O,EAAMv/I,GACjB,GAAInM,GAAMy6J,EAAK,GAAI36J,KAAMo9B,GACvB,OAAOl9B,GAAMy6J,EAAK,GAAI36J,KAAMo9B,EAEhC,CACF,GACF,EAwsCAgpH,GAAOqd,SA9qCP,SAAkBx0G,GAChB,OAz5YF,SAAsBA,GACpB,IAAIhyD,EAAQkzB,GAAK8+B,GACjB,OAAO,SAAS7uD,GACd,OAAO8qJ,GAAe9qJ,EAAQ6uD,EAAQhyD,EACxC,CACF,CAo5YSymK,CAAala,GAAUv6F,EA/ieZ,GAgjepB,EA6qCAm3F,GAAOqN,SAAWA,GAClBrN,GAAOoY,QAAUA,GACjBpY,GAAOloJ,OAtuHP,SAAgBJ,EAAW6lK,GACzB,IAAI9jK,EAAS2mJ,GAAW1oJ,GACxB,OAAqB,MAAd6lK,EAAqB9jK,EAASqpJ,GAAWrpJ,EAAQ8jK,EAC1D,EAouHAvd,GAAOwd,MAzuMP,SAASA,EAAMxtB,EAAM9B,EAAOijB,GAE1B,IAAI13J,EAASk7J,GAAW3kB,EA7+TN,EA6+T6Bh0I,EAAWA,EAAWA,EAAWA,EAAWA,EAD3FkyI,EAAQijB,EAAQn1J,EAAYkyI,GAG5B,OADAz0I,EAAOqgB,YAAc0jJ,EAAM1jJ,YACpBrgB,CACT,EAquMAumJ,GAAOyd,WA7rMP,SAASA,EAAWztB,EAAM9B,EAAOijB,GAE/B,IAAI13J,EAASk7J,GAAW3kB,EAAMwB,EAAuBx1I,EAAWA,EAAWA,EAAWA,EAAWA,EADjGkyI,EAAQijB,EAAQn1J,EAAYkyI,GAG5B,OADAz0I,EAAOqgB,YAAc2jJ,EAAW3jJ,YACzBrgB,CACT,EAyrMAumJ,GAAOplI,SAAWA,GAClBolI,GAAOlD,SAAWA,GAClBkD,GAAOqa,aAAeA,GACtBra,GAAOzwB,MAAQA,GACfywB,GAAOjsG,MAAQA,GACfisG,GAAO6W,WAAaA,GACpB7W,GAAO8W,aAAeA,GACtB9W,GAAO+W,eAAiBA,GACxB/W,GAAO0d,KAt0SP,SAAc5kJ,EAAOoE,EAAGi0I,GACtB,IAAIp6J,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAKA,EAIEw2J,GAAUz0I,GADjBoE,EAAKi0I,GAASj0I,IAAMlhB,EAAa,EAAIoyH,GAAUlxG,IACnB,EAAI,EAAIA,EAAGnmB,GAH9B,EAIX,EAg0SAipJ,GAAO2d,UArySP,SAAmB7kJ,EAAOoE,EAAGi0I,GAC3B,IAAIp6J,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAKA,EAKEw2J,GAAUz0I,EAAO,GADxBoE,EAAInmB,GADJmmB,EAAKi0I,GAASj0I,IAAMlhB,EAAa,EAAIoyH,GAAUlxG,KAEhB,EAAI,EAAIA,GAJ9B,EAKX,EA8xSA8iI,GAAO4d,eAzvSP,SAAwB9kJ,EAAOu7G,GAC7B,OAAQv7G,GAASA,EAAM/hB,OACnBi4J,GAAUl2I,EAAO+yI,GAAYx3B,EAAW,IAAI,GAAM,GAClD,EACN,EAsvSA2rB,GAAO6d,UAjtSP,SAAmB/kJ,EAAOu7G,GACxB,OAAQv7G,GAASA,EAAM/hB,OACnBi4J,GAAUl2I,EAAO+yI,GAAYx3B,EAAW,IAAI,GAC5C,EACN,EA8sSA2rB,GAAOz7E,KA/qSP,SAAczrD,EAAO9gB,EAAO6qD,EAAOC,GACjC,IAAI/rD,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAKA,GAGD8rD,GAAyB,iBAATA,GAAqBuuG,GAAet4I,EAAO9gB,EAAO6qD,KACpEA,EAAQ,EACRC,EAAM/rD,GAzvIV,SAAkB+hB,EAAO9gB,EAAO6qD,EAAOC,GACrC,IAAI/rD,EAAS+hB,EAAM/hB,OAWnB,KATA8rD,EAAQurE,GAAUvrE,IACN,IACVA,GAASA,EAAQ9rD,EAAS,EAAKA,EAAS8rD,IAE1CC,EAAOA,IAAQ9mD,GAAa8mD,EAAM/rD,EAAUA,EAASq3H,GAAUtrE,IACrD,IACRA,GAAO/rD,GAET+rD,EAAMD,EAAQC,EAAM,EAAI06D,GAAS16D,GAC1BD,EAAQC,GACbhqC,EAAM+pC,KAAW7qD,EAEnB,OAAO8gB,CACT,CA2uISglJ,CAAShlJ,EAAO9gB,EAAO6qD,EAAOC,IAN5B,EAOX,EAsqSAk9F,GAAOp/I,OA3vOP,SAAgB25I,EAAYlmB,GAE1B,OADWnpG,GAAQqvH,GAAc1oB,GAAcm0B,IACnCzL,EAAYsR,GAAYx3B,EAAW,GACjD,EAyvOA2rB,GAAO+d,QAvqOP,SAAiBxjB,EAAYb,GAC3B,OAAOuM,GAAY7kJ,GAAIm5I,EAAYb,GAAW,EAChD,EAsqOAsG,GAAOge,YAhpOP,SAAqBzjB,EAAYb,GAC/B,OAAOuM,GAAY7kJ,GAAIm5I,EAAYb,GAAW7H,EAChD,EA+oOAmO,GAAOie,aAxnOP,SAAsB1jB,EAAYb,EAAUloG,GAE1C,OADAA,EAAQA,IAAUx1C,EAAY,EAAIoyH,GAAU58E,GACrCy0G,GAAY7kJ,GAAIm5I,EAAYb,GAAWloG,EAChD,EAsnOAwuG,GAAOhiE,QAAUA,GACjBgiE,GAAOp/C,YAviSP,SAAqB9nF,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAM/hB,QACvBkvJ,GAAYntI,EAAO+4H,GAAY,EACjD,EAqiSAmO,GAAOke,aA/gSP,SAAsBplJ,EAAO04B,GAE3B,OADsB,MAAT14B,EAAgB,EAAIA,EAAM/hB,QAKhCkvJ,GAAYntI,EADnB04B,EAAQA,IAAUx1C,EAAY,EAAIoyH,GAAU58E,IAFnC,EAIX,EAygSAwuG,GAAOme,KAz9LP,SAAcnuB,GACZ,OAAO2kB,GAAW3kB,EA5wUD,IA6wUnB,EAw9LAgQ,GAAOgc,KAAOA,GACdhc,GAAOic,UAAYA,GACnBjc,GAAOoe,UA3/RP,SAAmB5Y,GAKjB,IAJA,IAAIv/I,GAAS,EACTlP,EAAkB,MAATyuJ,EAAgB,EAAIA,EAAMzuJ,OACnC0C,EAAS,CAAC,IAELwM,EAAQlP,GAAQ,CACvB,IAAIw9J,EAAO/O,EAAMv/I,GACjBxM,EAAO86J,EAAK,IAAMA,EAAK,EACzB,CACA,OAAO96J,CACT,EAk/RAumJ,GAAOqe,UA38GP,SAAmBrkK,GACjB,OAAiB,MAAVA,EAAiB,GAAKusJ,GAAcvsJ,EAAQ+vB,GAAK/vB,GAC1D,EA08GAgmJ,GAAOse,YAj7GP,SAAqBtkK,GACnB,OAAiB,MAAVA,EAAiB,GAAKusJ,GAAcvsJ,EAAQiqJ,GAAOjqJ,GAC5D,EAg7GAgmJ,GAAOjgD,QAAUA,GACjBigD,GAAOue,QA56RP,SAAiBzlJ,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM/hB,QACvBw2J,GAAUz0I,EAAO,GAAI,GAAK,EAC5C,EA06RAknI,GAAOiX,aAAeA,GACtBjX,GAAOkX,eAAiBA,GACxBlX,GAAOmX,iBAAmBA,GAC1BnX,GAAOua,OAASA,GAChBva,GAAOwa,SAAWA,GAClBxa,GAAOuY,UAAYA,GACnBvY,GAAOtG,SAAWA,GAClBsG,GAAOwY,MAAQA,GACfxY,GAAOj2H,KAAOA,GACdi2H,GAAOiE,OAASA,GAChBjE,GAAO5+I,IAAMA,GACb4+I,GAAOwe,QA1rGP,SAAiBxkK,EAAQ0/I,GACvB,IAAIjgJ,EAAS,CAAC,EAMd,OALAigJ,EAAWmS,GAAYnS,EAAU,GAEjCiM,GAAW3rJ,GAAQ,SAAShC,EAAOV,EAAK0C,GACtCwoJ,GAAgB/oJ,EAAQigJ,EAAS1hJ,EAAOV,EAAK0C,GAAShC,EACxD,IACOyB,CACT,EAmrGAumJ,GAAOye,UArpGP,SAAmBzkK,EAAQ0/I,GACzB,IAAIjgJ,EAAS,CAAC,EAMd,OALAigJ,EAAWmS,GAAYnS,EAAU,GAEjCiM,GAAW3rJ,GAAQ,SAAShC,EAAOV,EAAK0C,GACtCwoJ,GAAgB/oJ,EAAQnC,EAAKoiJ,EAAS1hJ,EAAOV,EAAK0C,GACpD,IACOP,CACT,EA8oGAumJ,GAAO0e,QAphCP,SAAiB71G,GACf,OAAOqhG,GAAY9G,GAAUv6F,EAxveX,GAyvepB,EAmhCAm3F,GAAO2e,gBAh/BP,SAAyB9oJ,EAAM+zI,GAC7B,OAAOK,GAAoBp0I,EAAMutI,GAAUwG,EA7xezB,GA8xepB,EA++BA5J,GAAOyW,QAAUA,GACjBzW,GAAOzoE,MAAQA,GACfyoE,GAAOsa,UAAYA,GACnBta,GAAOzyI,OAASA,GAChByyI,GAAOkc,SAAWA,GAClBlc,GAAOmc,MAAQA,GACfnc,GAAOiZ,OAASA,GAChBjZ,GAAO4e,OAzzBP,SAAgB1hJ,GAEd,OADAA,EAAIkxG,GAAUlxG,GACP2vI,IAAS,SAAS71H,GACvB,OAAO00H,GAAQ10H,EAAM9Z,EACvB,GACF,EAqzBA8iI,GAAOya,KAAOA,GACdza,GAAO6e,OAnhGP,SAAgB7kK,EAAQq6H,GACtB,OAAOumC,GAAO5gK,EAAQi/J,GAAOpN,GAAYx3B,IAC3C,EAkhGA2rB,GAAOvkJ,KA73LP,SAAcu0I,GACZ,OAAO2oB,GAAO,EAAG3oB,EACnB,EA43LAgQ,GAAO9gD,QAr4NP,SAAiBq7C,EAAYqR,EAAWn1I,EAAQ06I,GAC9C,OAAkB,MAAd5W,EACK,IAEJrvH,GAAQ0gI,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnC1gI,GADLzU,EAAS06I,EAAQn1J,EAAYya,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3Bk1I,GAAYpR,EAAYqR,EAAWn1I,GAC5C,EA03NAupI,GAAOoc,KAAOA,GACdpc,GAAOkZ,SAAWA,GAClBlZ,GAAOqc,UAAYA,GACnBrc,GAAOsc,SAAWA,GAClBtc,GAAOqZ,QAAUA,GACjBrZ,GAAOsZ,aAAeA,GACtBtZ,GAAOyY,UAAYA,GACnBzY,GAAOjD,KAAOA,GACdiD,GAAO4a,OAASA,GAChB5a,GAAO/lJ,SAAWA,GAClB+lJ,GAAO8e,WA/rBP,SAAoB9kK,GAClB,OAAO,SAAS6b,GACd,OAAiB,MAAV7b,EAAiBgC,EAAYwqJ,GAAQxsJ,EAAQ6b,EACtD,CACF,EA4rBAmqI,GAAOoX,KAAOA,GACdpX,GAAOqX,QAAUA,GACjBrX,GAAO+e,UApsRP,SAAmBjmJ,EAAOqS,EAAQuuH,GAChC,OAAQ5gI,GAASA,EAAM/hB,QAAUo0B,GAAUA,EAAOp0B,OAC9Cy1J,GAAY1zI,EAAOqS,EAAQ0gI,GAAYnS,EAAU,IACjD5gI,CACN,EAisRAknI,GAAOgf,YAxqRP,SAAqBlmJ,EAAOqS,EAAQ6uH,GAClC,OAAQlhI,GAASA,EAAM/hB,QAAUo0B,GAAUA,EAAOp0B,OAC9Cy1J,GAAY1zI,EAAOqS,EAAQnvB,EAAWg+I,GACtClhI,CACN,EAqqRAknI,GAAOsX,OAASA,GAChBtX,GAAO5hH,MAAQA,GACf4hH,GAAOwc,WAAaA,GACpBxc,GAAOuZ,MAAQA,GACfvZ,GAAOxiI,OAxvNP,SAAgB+8H,EAAYlmB,GAE1B,OADWnpG,GAAQqvH,GAAc1oB,GAAcm0B,IACnCzL,EAAY0e,GAAOpN,GAAYx3B,EAAW,IACxD,EAsvNA2rB,GAAO51I,OAzmRP,SAAgB0O,EAAOu7G,GACrB,IAAI56H,EAAS,GACb,IAAMqf,IAASA,EAAM/hB,OACnB,OAAO0C,EAET,IAAIwM,GAAS,EACTymJ,EAAU,GACV31J,EAAS+hB,EAAM/hB,OAGnB,IADAs9H,EAAYw3B,GAAYx3B,EAAW,KAC1BpuH,EAAQlP,GAAQ,CACvB,IAAIiB,EAAQ8gB,EAAM7S,GACdouH,EAAUr8H,EAAOiO,EAAO6S,KAC1Brf,EAAOqB,KAAK9C,GACZ00J,EAAQ5xJ,KAAKmL,GAEjB,CAEA,OADAwmJ,GAAW3zI,EAAO4zI,GACXjzJ,CACT,EAulRAumJ,GAAOlgD,KAluLP,SAAckwC,EAAMntF,GAClB,GAAmB,mBAARmtF,EACT,MAAM,IAAIt5I,GAAU26I,GAGtB,OAAOwb,GAAS7c,EADhBntF,EAAQA,IAAU7mD,EAAY6mD,EAAQurE,GAAUvrE,GAElD,EA6tLAm9F,GAAOlsD,QAAUA,GACjBksD,GAAOif,WAhtNP,SAAoB1kB,EAAYr9H,EAAGi0I,GAOjC,OALEj0I,GADGi0I,EAAQC,GAAe7W,EAAYr9H,EAAGi0I,GAASj0I,IAAMlhB,GACpD,EAEAoyH,GAAUlxG,IAELgO,GAAQqvH,GAAc0H,GAAkBgL,IACvC1S,EAAYr9H,EAC1B,EAysNA8iI,GAAO1uH,IAv6FP,SAAat3B,EAAQ6b,EAAM7d,GACzB,OAAiB,MAAVgC,EAAiBA,EAASuyJ,GAAQvyJ,EAAQ6b,EAAM7d,EACzD,EAs6FAgoJ,GAAOkf,QA54FP,SAAiBllK,EAAQ6b,EAAM7d,EAAOsrJ,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAatnJ,EAC3C,MAAVhC,EAAiBA,EAASuyJ,GAAQvyJ,EAAQ6b,EAAM7d,EAAOsrJ,EAChE,EA04FAtD,GAAOmf,QA1rNP,SAAiB5kB,GAEf,OADWrvH,GAAQqvH,GAAc8H,GAAeiL,IACpC/S,EACd,EAwrNAyF,GAAO5kJ,MAhjRP,SAAe0d,EAAO+pC,EAAOC,GAC3B,IAAI/rD,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAKA,GAGD+rD,GAAqB,iBAAPA,GAAmBsuG,GAAet4I,EAAO+pC,EAAOC,IAChED,EAAQ,EACRC,EAAM/rD,IAGN8rD,EAAiB,MAATA,EAAgB,EAAIurE,GAAUvrE,GACtCC,EAAMA,IAAQ9mD,EAAYjF,EAASq3H,GAAUtrE,IAExCyqG,GAAUz0I,EAAO+pC,EAAOC,IAVtB,EAWX,EAmiRAk9F,GAAO0Y,OAASA,GAChB1Y,GAAO54G,WAx3QP,SAAoBtuB,GAClB,OAAQA,GAASA,EAAM/hB,OACnBy3J,GAAe11I,GACf,EACN,EAq3QAknI,GAAOof,aAn2QP,SAAsBtmJ,EAAO4gI,GAC3B,OAAQ5gI,GAASA,EAAM/hB,OACnBy3J,GAAe11I,EAAO+yI,GAAYnS,EAAU,IAC5C,EACN,EAg2QAsG,GAAOztI,MA5hEP,SAAe4zG,EAAQoO,EAAW1tE,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBuqG,GAAejrC,EAAQoO,EAAW1tE,KACzE0tE,EAAY1tE,EAAQ7qD,IAEtB6qD,EAAQA,IAAU7qD,EAAY+1I,EAAmBlrF,IAAU,IAI3Ds/D,EAAS/lG,GAAS+lG,MAEQ,iBAAboO,GACO,MAAbA,IAAsBxN,GAASwN,OAEpCA,EAAYm6B,GAAan6B,KACPynB,GAAW71B,GACpBypC,GAAUnT,GAAct2B,GAAS,EAAGt/D,GAGxCs/D,EAAO5zG,MAAMgiH,EAAW1tE,GAZtB,EAaX,EA0gEAm5F,GAAOqf,OAnsLP,SAAgBrvB,EAAMntF,GACpB,GAAmB,mBAARmtF,EACT,MAAM,IAAIt5I,GAAU26I,GAGtB,OADAxuF,EAAiB,MAATA,EAAgB,EAAI8sF,GAAUvhB,GAAUvrE,GAAQ,GACjDgqG,IAAS,SAAS71H,GACvB,IAAIle,EAAQke,EAAK6rB,GACbmzG,EAAYpG,GAAU54H,EAAM,EAAG6rB,GAKnC,OAHI/pC,GACFohI,GAAU8b,EAAWl9I,GAEhBhf,GAAMk2I,EAAMp2I,KAAMo8J,EAC3B,GACF,EAsrLAhW,GAAOsf,KAl1QP,SAAcxmJ,GACZ,IAAI/hB,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAOA,EAASw2J,GAAUz0I,EAAO,EAAG/hB,GAAU,EAChD,EAg1QAipJ,GAAOuf,KArzQP,SAAczmJ,EAAOoE,EAAGi0I,GACtB,OAAMr4I,GAASA,EAAM/hB,OAIdw2J,GAAUz0I,EAAO,GADxBoE,EAAKi0I,GAASj0I,IAAMlhB,EAAa,EAAIoyH,GAAUlxG,IAChB,EAAI,EAAIA,GAH9B,EAIX,EAgzQA8iI,GAAO/gD,UArxQP,SAAmBnmF,EAAOoE,EAAGi0I,GAC3B,IAAIp6J,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,OAAKA,EAKEw2J,GAAUz0I,GADjBoE,EAAInmB,GADJmmB,EAAKi0I,GAASj0I,IAAMlhB,EAAa,EAAIoyH,GAAUlxG,KAEnB,EAAI,EAAIA,EAAGnmB,GAJ9B,EAKX,EA8wQAipJ,GAAOwf,eAzuQP,SAAwB1mJ,EAAOu7G,GAC7B,OAAQv7G,GAASA,EAAM/hB,OACnBi4J,GAAUl2I,EAAO+yI,GAAYx3B,EAAW,IAAI,GAAO,GACnD,EACN,EAsuQA2rB,GAAOyf,UAjsQP,SAAmB3mJ,EAAOu7G,GACxB,OAAQv7G,GAASA,EAAM/hB,OACnBi4J,GAAUl2I,EAAO+yI,GAAYx3B,EAAW,IACxC,EACN,EA8rQA2rB,GAAO0f,IApuPP,SAAa1nK,EAAOkgK,GAElB,OADAA,EAAYlgK,GACLA,CACT,EAkuPAgoJ,GAAO2f,SA9oLP,SAAkB3vB,EAAMC,EAAMr1I,GAC5B,IAAI41I,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIt5I,GAAU26I,GAMtB,OAJIh0B,GAASziH,KACX41I,EAAU,YAAa51I,IAAYA,EAAQ41I,QAAUA,EACrDE,EAAW,aAAc91I,IAAYA,EAAQ81I,SAAWA,GAEnD91H,GAASo1H,EAAMC,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,GAEhB,EA+nLAsP,GAAO+R,KAAOA,GACd/R,GAAO8Z,QAAUA,GACjB9Z,GAAO8a,QAAUA,GACjB9a,GAAO+a,UAAYA,GACnB/a,GAAO4f,OArfP,SAAgB5nK,GACd,OAAIkzB,GAAQlzB,GACHiiJ,GAASjiJ,EAAO0uJ,IAElBhf,GAAS1vI,GAAS,CAACA,GAASmqJ,GAAUuN,GAAatvI,GAASpoB,IACrE,EAifAgoJ,GAAOwL,cAAgBA,GACvBxL,GAAO7D,UA10FP,SAAmBniJ,EAAQ0/I,EAAUj/C,GACnC,IAAIgnD,EAAQv2H,GAAQlxB,GAChB6lK,EAAYpe,GAAS9C,GAAS3kJ,IAAWw/I,GAAax/I,GAG1D,GADA0/I,EAAWmS,GAAYnS,EAAU,GACd,MAAfj/C,EAAqB,CACvB,IAAI2pD,EAAOpqJ,GAAUA,EAAOjC,YAE1B0iG,EADEolE,EACYpe,EAAQ,IAAI2C,EAAO,GAE1B/mC,GAASrjH,IACFgzH,GAAWo3B,GAAQhE,GAAWvC,GAAa7jJ,IAG3C,CAAC,CAEnB,CAIA,OAHC6lK,EAAYlmB,GAAYgM,IAAY3rJ,GAAQ,SAAShC,EAAOiO,EAAOjM,GAClE,OAAO0/I,EAASj/C,EAAaziG,EAAOiO,EAAOjM,EAC7C,IACOygG,CACT,EAszFAulD,GAAO8f,MArnLP,SAAe9vB,GACb,OAAOyiB,GAAIziB,EAAM,EACnB,EAonLAgQ,GAAOuX,MAAQA,GACfvX,GAAOwX,QAAUA,GACjBxX,GAAOyX,UAAYA,GACnBzX,GAAO/4G,KAzmQP,SAAcnuB,GACZ,OAAQA,GAASA,EAAM/hB,OAAU43J,GAAS71I,GAAS,EACrD,EAwmQAknI,GAAO+f,OA/kQP,SAAgBjnJ,EAAO4gI,GACrB,OAAQ5gI,GAASA,EAAM/hB,OAAU43J,GAAS71I,EAAO+yI,GAAYnS,EAAU,IAAM,EAC/E,EA8kQAsG,GAAOggB,SAxjQP,SAAkBlnJ,EAAOkhI,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAah+I,EACpD8c,GAASA,EAAM/hB,OAAU43J,GAAS71I,EAAO9c,EAAWg+I,GAAc,EAC5E,EAsjQAgG,GAAOigB,MAhyFP,SAAejmK,EAAQ6b,GACrB,OAAiB,MAAV7b,GAAwB2yJ,GAAU3yJ,EAAQ6b,EACnD,EA+xFAmqI,GAAO0X,MAAQA,GACf1X,GAAO2X,UAAYA,GACnB3X,GAAOr+I,OApwFP,SAAgB3H,EAAQ6b,EAAMk5I,GAC5B,OAAiB,MAAV/0J,EAAiBA,EAAS80J,GAAW90J,EAAQ6b,EAAM45I,GAAaV,GACzE,EAmwFA/O,GAAOkgB,WAzuFP,SAAoBlmK,EAAQ6b,EAAMk5I,EAASzL,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAatnJ,EAC3C,MAAVhC,EAAiBA,EAAS80J,GAAW90J,EAAQ6b,EAAM45I,GAAaV,GAAUzL,EACnF,EAuuFAtD,GAAO70H,OAASA,GAChB60H,GAAOmgB,SAhrFP,SAAkBnmK,GAChB,OAAiB,MAAVA,EAAiB,GAAKshJ,GAAWthJ,EAAQiqJ,GAAOjqJ,GACzD,EA+qFAgmJ,GAAO4X,QAAUA,GACjB5X,GAAO39H,MAAQA,GACf29H,GAAOruD,KA3mLP,SAAc35F,EAAOyoH,GACnB,OAAO44C,GAAQ5J,GAAahvC,GAAUzoH,EACxC,EA0mLAgoJ,GAAO6X,IAAMA,GACb7X,GAAO8X,MAAQA,GACf9X,GAAO+X,QAAUA,GACjB/X,GAAOgY,IAAMA,GACbhY,GAAOogB,UAj3PP,SAAmBvpK,EAAOs0B,GACxB,OAAOkkI,GAAcx4J,GAAS,GAAIs0B,GAAU,GAAIs3H,GAClD,EAg3PAzC,GAAOqgB,cA/1PP,SAAuBxpK,EAAOs0B,GAC5B,OAAOkkI,GAAcx4J,GAAS,GAAIs0B,GAAU,GAAIohI,GAClD,EA81PAvM,GAAOiY,QAAUA,GAGjBjY,GAAOzqH,QAAUulI,GACjB9a,GAAOsgB,UAAYvF,GACnB/a,GAAOugB,OAASvG,GAChBha,GAAOwgB,WAAavG,GAGpBkC,GAAMnc,GAAQA,IAKdA,GAAO3gJ,IAAMA,GACb2gJ,GAAO6b,QAAUA,GACjB7b,GAAOgb,UAAYA,GACnBhb,GAAOib,WAAaA,GACpBjb,GAAOt4H,KAAOA,GACds4H,GAAOygB,MAprFP,SAAe7vC,EAAQsyB,EAAOC,GAa5B,OAZIA,IAAUnnJ,IACZmnJ,EAAQD,EACRA,EAAQlnJ,GAENmnJ,IAAUnnJ,IAEZmnJ,GADAA,EAAQlmB,GAASkmB,KACCA,EAAQA,EAAQ,GAEhCD,IAAUlnJ,IAEZknJ,GADAA,EAAQjmB,GAASimB,KACCA,EAAQA,EAAQ,GAE7Bd,GAAUnlB,GAASrM,GAASsyB,EAAOC,EAC5C,EAuqFAnD,GAAO3vH,MA7jLP,SAAer4B,GACb,OAAOorJ,GAAUprJ,EArzVI,EAszVvB,EA4jLAgoJ,GAAO0gB,UApgLP,SAAmB1oK,GACjB,OAAOorJ,GAAUprJ,EAAO0iK,EAC1B,EAmgLA1a,GAAO2gB,cAr+KP,SAAuB3oK,EAAOsrJ,GAE5B,OAAOF,GAAUprJ,EAAO0iK,EADxBpX,EAAkC,mBAAdA,EAA2BA,EAAatnJ,EAE9D,EAm+KAgkJ,GAAO4gB,UA7hLP,SAAmB5oK,EAAOsrJ,GAExB,OAAOF,GAAUprJ,EAz1VI,EAw1VrBsrJ,EAAkC,mBAAdA,EAA2BA,EAAatnJ,EAE9D,EA2hLAgkJ,GAAO6gB,WA18KP,SAAoB7mK,EAAQ6uD,GAC1B,OAAiB,MAAVA,GAAkBi8F,GAAe9qJ,EAAQ6uD,EAAQ9+B,GAAK8+B,GAC/D,EAy8KAm3F,GAAOuR,OAASA,GAChBvR,GAAO8gB,UA1xCP,SAAmB9oK,EAAOy7J,GACxB,OAAiB,MAATz7J,GAAiBA,GAAUA,EAASy7J,EAAez7J,CAC7D,EAyxCAgoJ,GAAOjiB,OAASA,GAChBiiB,GAAO7qD,SAz9EP,SAAkBgxB,EAAQvvH,EAAQstB,GAChCiiG,EAAS/lG,GAAS+lG,GAClBvvH,EAAS83J,GAAa93J,GAEtB,IAAIG,EAASovH,EAAOpvH,OAKhB+rD,EAJJ5+B,EAAWA,IAAaloB,EACpBjF,EACAqrJ,GAAUh0B,GAAUlqG,GAAW,EAAGntB,GAItC,OADAmtB,GAAYttB,EAAOG,SACA,GAAKovH,EAAO/qH,MAAM8oB,EAAU4+B,IAAQlsD,CACzD,EA88EAopJ,GAAOuC,GAAKA,GACZvC,GAAO+gB,OAj7EP,SAAgB56C,GAEd,OADAA,EAAS/lG,GAAS+lG,KACA+tB,EAAmB53H,KAAK6pG,GACtCA,EAAOllG,QAAQ+yH,EAAiB6H,IAChC11B,CACN,EA66EA65B,GAAOghB,aA55EP,SAAsB76C,GAEpB,OADAA,EAAS/lG,GAAS+lG,KACAuuB,GAAgBp4H,KAAK6pG,GACnCA,EAAOllG,QAAQwzH,GAAc,QAC7BtuB,CACN,EAw5EA65B,GAAOjkD,MA57OP,SAAew+C,EAAYlmB,EAAW88B,GACpC,IAAInhB,EAAO9kH,GAAQqvH,GAAcxoB,GAAa+zB,GAI9C,OAHIqL,GAASC,GAAe7W,EAAYlmB,EAAW88B,KACjD98B,EAAYr4H,GAEPg0I,EAAKuK,EAAYsR,GAAYx3B,EAAW,GACjD,EAu7OA2rB,GAAO91I,KAAOA,GACd81I,GAAOnsI,UAAYA,GACnBmsI,GAAOihB,QArxHP,SAAiBjnK,EAAQq6H,GACvB,OAAOimB,GAAYtgJ,EAAQ6xJ,GAAYx3B,EAAW,GAAIsxB,GACxD,EAoxHA3F,GAAOqY,SAAWA,GAClBrY,GAAOgX,cAAgBA,GACvBhX,GAAOkhB,YAjvHP,SAAqBlnK,EAAQq6H,GAC3B,OAAOimB,GAAYtgJ,EAAQ6xJ,GAAYx3B,EAAW,GAAIwxB,GACxD,EAgvHA7F,GAAOx6H,MAAQA,GACfw6H,GAAO9gJ,QAAUA,GACjB8gJ,GAAOsY,aAAeA,GACtBtY,GAAOmhB,MArtHP,SAAennK,EAAQ0/I,GACrB,OAAiB,MAAV1/I,EACHA,EACAosJ,GAAQpsJ,EAAQ6xJ,GAAYnS,EAAU,GAAIuK,GAChD,EAktHAjE,GAAOohB,WAtrHP,SAAoBpnK,EAAQ0/I,GAC1B,OAAiB,MAAV1/I,EACHA,EACAssJ,GAAatsJ,EAAQ6xJ,GAAYnS,EAAU,GAAIuK,GACrD,EAmrHAjE,GAAOqhB,OArpHP,SAAgBrnK,EAAQ0/I,GACtB,OAAO1/I,GAAU2rJ,GAAW3rJ,EAAQ6xJ,GAAYnS,EAAU,GAC5D,EAopHAsG,GAAOshB,YAxnHP,SAAqBtnK,EAAQ0/I,GAC3B,OAAO1/I,GAAU6rJ,GAAgB7rJ,EAAQ6xJ,GAAYnS,EAAU,GACjE,EAunHAsG,GAAO5lJ,IAAMA,GACb4lJ,GAAOwZ,GAAKA,GACZxZ,GAAOyZ,IAAMA,GACbzZ,GAAOvqH,IAzgHP,SAAaz7B,EAAQ6b,GACnB,OAAiB,MAAV7b,GAAkB07J,GAAQ17J,EAAQ6b,EAAMsxI,GACjD,EAwgHAnH,GAAO+K,MAAQA,GACf/K,GAAOj1G,KAAOA,GACdi1G,GAAOgK,SAAWA,GAClBhK,GAAOrtI,SA5pOP,SAAkB4nI,EAAYviJ,EAAOimH,EAAWkzC,GAC9C5W,EAAamQ,GAAYnQ,GAAcA,EAAapvH,GAAOovH,GAC3Dt8B,EAAaA,IAAckzC,EAAS/iC,GAAUnQ,GAAa,EAE3D,IAAIlnH,EAASwjJ,EAAWxjJ,OAIxB,OAHIknH,EAAY,IACdA,EAAY0xB,GAAU54I,EAASknH,EAAW,IAErC27C,GAASrf,GACXt8B,GAAalnH,GAAUwjJ,EAAW7wI,QAAQ1R,EAAOimH,IAAc,IAC7DlnH,GAAU+iJ,GAAYS,EAAYviJ,EAAOimH,IAAc,CAChE,EAkpOA+hC,GAAOt2I,QA9lSP,SAAiBoP,EAAO9gB,EAAOimH,GAC7B,IAAIlnH,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkP,EAAqB,MAAbg4G,EAAoB,EAAImQ,GAAUnQ,GAI9C,OAHIh4G,EAAQ,IACVA,EAAQ0pI,GAAU54I,EAASkP,EAAO,IAE7B6zI,GAAYhhI,EAAO9gB,EAAOiO,EACnC,EAqlSA+5I,GAAOuhB,QAlqFP,SAAiB3wC,EAAQ/tE,EAAOC,GAS9B,OARAD,EAAQkxG,GAASlxG,GACbC,IAAQ9mD,GACV8mD,EAAMD,EACNA,EAAQ,GAERC,EAAMixG,GAASjxG,GArsVnB,SAAqB8tE,EAAQ/tE,EAAOC,GAClC,OAAO8tE,GAAUgf,GAAU/sF,EAAOC,IAAQ8tE,EAAS+e,GAAU9sF,EAAOC,EACtE,CAssVS0+G,CADP5wC,EAASqM,GAASrM,GACS/tE,EAAOC,EACpC,EAypFAk9F,GAAO3tD,OAASA,GAChB2tD,GAAO2B,YAAcA,GACrB3B,GAAO90H,QAAUA,GACjB80H,GAAOjH,cAAgBA,GACvBiH,GAAO0K,YAAcA,GACrB1K,GAAOsL,kBAAoBA,GAC3BtL,GAAOyhB,UAtwKP,SAAmBzpK,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB63I,GAAa73I,IAAU8uJ,GAAW9uJ,IAAUm6I,CACjD,EAowKA6N,GAAOrB,SAAWA,GAClBqB,GAAO/G,OAASA,GAChB+G,GAAO0hB,UA7sKP,SAAmB1pK,GACjB,OAAO63I,GAAa73I,IAA6B,IAAnBA,EAAMugJ,WAAmBgT,GAAcvzJ,EACvE,EA4sKAgoJ,GAAO2hB,QAzqKP,SAAiB3pK,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI0yJ,GAAY1yJ,KACXkzB,GAAQlzB,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMiD,QAC1D0jJ,GAAS3mJ,IAAUwhJ,GAAaxhJ,IAAU2pJ,GAAY3pJ,IAC1D,OAAQA,EAAMjB,OAEhB,IAAI8+B,EAAM8tH,GAAO3rJ,GACjB,GAAI69B,GAAO28G,GAAU38G,GAAOg9G,EAC1B,OAAQ76I,EAAM+1B,KAEhB,GAAIq8H,GAAYpyJ,GACd,OAAQmyJ,GAASnyJ,GAAOjB,OAE1B,IAAK,IAAIO,KAAOU,EACd,GAAIkC,GAAelB,KAAKhB,EAAOV,GAC7B,OAAO,EAGX,OAAO,CACT,EAopKA0oJ,GAAO4hB,QAtnKP,SAAiB5pK,EAAO83I,GACtB,OAAO8X,GAAY5vJ,EAAO83I,EAC5B,EAqnKAkQ,GAAO6hB,YAnlKP,SAAqB7pK,EAAO83I,EAAOwT,GAEjC,IAAI7pJ,GADJ6pJ,EAAkC,mBAAdA,EAA2BA,EAAatnJ,GAClCsnJ,EAAWtrJ,EAAO83I,GAAS9zI,EACrD,OAAOvC,IAAWuC,EAAY4rJ,GAAY5vJ,EAAO83I,EAAO9zI,EAAWsnJ,KAAgB7pJ,CACrF,EAglKAumJ,GAAO0Z,QAAUA,GACjB1Z,GAAOnkF,SA1hKP,SAAkB7jE,GAChB,MAAuB,iBAATA,GAAqB4mJ,GAAe5mJ,EACpD,EAyhKAgoJ,GAAOhzB,WAAaA,GACpBgzB,GAAO1xF,UAAYA,GACnB0xF,GAAO4V,SAAWA,GAClB5V,GAAO7G,MAAQA,GACf6G,GAAO8hB,QA11JP,SAAiB9nK,EAAQ6uD,GACvB,OAAO7uD,IAAW6uD,GAAU4gG,GAAYzvJ,EAAQ6uD,EAAQ8hG,GAAa9hG,GACvE,EAy1JAm3F,GAAO+hB,YAvzJP,SAAqB/nK,EAAQ6uD,EAAQy6F,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAatnJ,EACrDytJ,GAAYzvJ,EAAQ6uD,EAAQ8hG,GAAa9hG,GAASy6F,EAC3D,EAqzJAtD,GAAO1/I,MAvxJP,SAAetI,GAIb,OAAO2hK,GAAS3hK,IAAUA,IAAUA,CACtC,EAmxJAgoJ,GAAOgiB,SAvvJP,SAAkBhqK,GAChB,GAAI89J,GAAW99J,GACb,MAAM,IAAI6E,GAtsXM,mEAwsXlB,OAAOitJ,GAAa9xJ,EACtB,EAmvJAgoJ,GAAOiiB,MAxsJP,SAAejqK,GACb,OAAgB,MAATA,CACT,EAusJAgoJ,GAAOkiB,OAjuJP,SAAgBlqK,GACd,OAAiB,OAAVA,CACT,EAguJAgoJ,GAAO2Z,SAAWA,GAClB3Z,GAAO3iC,SAAWA,GAClB2iC,GAAOnQ,aAAeA,GACtBmQ,GAAOuL,cAAgBA,GACvBvL,GAAOj5B,SAAWA,GAClBi5B,GAAO1iB,cArlJP,SAAuBtlI,GACrB,OAAOs2D,GAAUt2D,IAAUA,IAAS,kBAAqBA,GAAS+jE,CACpE,EAolJAikF,GAAO1G,MAAQA,GACf0G,GAAO4Z,SAAWA,GAClB5Z,GAAOtY,SAAWA,GAClBsY,GAAOxG,aAAeA,GACtBwG,GAAOmiB,YAn/IP,SAAqBnqK,GACnB,OAAOA,IAAUgE,CACnB,EAk/IAgkJ,GAAOoiB,UA/9IP,SAAmBpqK,GACjB,OAAO63I,GAAa73I,IAAU2rJ,GAAO3rJ,IAAUg7I,CACjD,EA89IAgN,GAAOqiB,UA38IP,SAAmBrqK,GACjB,OAAO63I,GAAa73I,IAn6XP,oBAm6XiB8uJ,GAAW9uJ,EAC3C,EA08IAgoJ,GAAOltI,KAz/RP,SAAcgG,EAAOy7G,GACnB,OAAgB,MAATz7G,EAAgB,GAAK+lI,GAAW7lJ,KAAK8f,EAAOy7G,EACrD,EAw/RAyrB,GAAOmb,UAAYA,GACnBnb,GAAO37H,KAAOA,GACd27H,GAAO3tB,YAh9RP,SAAqBv5G,EAAO9gB,EAAOimH,GACjC,IAAIlnH,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIkP,EAAQlP,EAKZ,OAJIknH,IAAcjiH,IAEhBiK,GADAA,EAAQmoH,GAAUnQ,IACF,EAAI0xB,GAAU54I,EAASkP,EAAO,GAAK2pI,GAAU3pI,EAAOlP,EAAS,IAExEiB,GAAUA,EArvMrB,SAA2B8gB,EAAO9gB,EAAOimH,GAEvC,IADA,IAAIh4G,EAAQg4G,EAAY,EACjBh4G,KACL,GAAI6S,EAAM7S,KAAWjO,EACnB,OAAOiO,EAGX,OAAOA,CACT,CA8uMQq8J,CAAkBxpJ,EAAO9gB,EAAOiO,GAChCw0I,GAAc3hI,EAAO8hI,GAAW30I,GAAO,EAC7C,EAo8RA+5I,GAAOob,UAAYA,GACnBpb,GAAOqb,WAAaA,GACpBrb,GAAO70B,GAAKA,GACZ60B,GAAO6Z,IAAMA,GACb7Z,GAAO/kI,IAhfP,SAAanC,GACX,OAAQA,GAASA,EAAM/hB,OACnBgvJ,GAAajtI,EAAOkxI,GAAU9C,IAC9BlrJ,CACN,EA6eAgkJ,GAAOuiB,MApdP,SAAezpJ,EAAO4gI,GACpB,OAAQ5gI,GAASA,EAAM/hB,OACnBgvJ,GAAajtI,EAAO+yI,GAAYnS,EAAU,GAAIwN,IAC9ClrJ,CACN,EAidAgkJ,GAAOwiB,KAjcP,SAAc1pJ,GACZ,OAAOgiI,GAAShiI,EAAOkxI,GACzB,EAgcAhK,GAAOyiB,OAvaP,SAAgB3pJ,EAAO4gI,GACrB,OAAOoB,GAAShiI,EAAO+yI,GAAYnS,EAAU,GAC/C,EAsaAsG,GAAOzzI,IAlZP,SAAauM,GACX,OAAQA,GAASA,EAAM/hB,OACnBgvJ,GAAajtI,EAAOkxI,GAAUQ,IAC9BxuJ,CACN,EA+YAgkJ,GAAO0iB,MAtXP,SAAe5pJ,EAAO4gI,GACpB,OAAQ5gI,GAASA,EAAM/hB,OACnBgvJ,GAAajtI,EAAO+yI,GAAYnS,EAAU,GAAI8Q,IAC9CxuJ,CACN,EAmXAgkJ,GAAOyV,UAAYA,GACnBzV,GAAO+V,UAAYA,GACnB/V,GAAO2iB,WAztBP,WACE,MAAO,CAAC,CACV,EAwtBA3iB,GAAO4iB,WAzsBP,WACE,MAAO,EACT,EAwsBA5iB,GAAO6iB,SAzrBP,WACE,OAAO,CACT,EAwrBA7iB,GAAOliB,SAAWA,GAClBkiB,GAAO8iB,IA77RP,SAAahqJ,EAAOoE,GAClB,OAAQpE,GAASA,EAAM/hB,OAAU20J,GAAQ5yI,EAAOs1G,GAAUlxG,IAAMlhB,CAClE,EA47RAgkJ,GAAO+iB,WAliCP,WAIE,OAHIrkH,GAAK5gC,IAAMlkB,OACb8kD,GAAK5gC,EAAI2/H,IAEJ7jJ,IACT,EA8hCAomJ,GAAOwU,KAAOA,GACdxU,GAAOv0I,IAAMA,GACbu0I,GAAOroG,IAj5EP,SAAawuE,EAAQpvH,EAAQgoB,GAC3BonG,EAAS/lG,GAAS+lG,GAGlB,IAAI68C,GAFJjsK,EAASq3H,GAAUr3H,IAEMwlJ,GAAWp2B,GAAU,EAC9C,IAAKpvH,GAAUisK,GAAajsK,EAC1B,OAAOovH,EAET,IAAI0nC,GAAO92J,EAASisK,GAAa,EACjC,OACEpP,GAAcpV,GAAYqP,GAAM9uI,GAChConG,EACAytC,GAAcrV,GAAWsP,GAAM9uI,EAEnC,EAo4EAihI,GAAOlW,OA32EP,SAAgB3jB,EAAQpvH,EAAQgoB,GAC9BonG,EAAS/lG,GAAS+lG,GAGlB,IAAI68C,GAFJjsK,EAASq3H,GAAUr3H,IAEMwlJ,GAAWp2B,GAAU,EAC9C,OAAQpvH,GAAUisK,EAAYjsK,EACzBovH,EAASytC,GAAc78J,EAASisK,EAAWjkJ,GAC5ConG,CACN,EAo2EA65B,GAAO7/H,SA30EP,SAAkBgmG,EAAQpvH,EAAQgoB,GAChConG,EAAS/lG,GAAS+lG,GAGlB,IAAI68C,GAFJjsK,EAASq3H,GAAUr3H,IAEMwlJ,GAAWp2B,GAAU,EAC9C,OAAQpvH,GAAUisK,EAAYjsK,EACzB68J,GAAc78J,EAASisK,EAAWjkJ,GAASonG,EAC5CA,CACN,EAo0EA65B,GAAOz/I,SA1yEP,SAAkB4lH,EAAQqG,EAAO2kC,GAM/B,OALIA,GAAkB,MAAT3kC,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJwyB,GAAe5+H,GAAS+lG,GAAQllG,QAAQ0zH,GAAa,IAAKnoB,GAAS,EAC5E,EAoyEAwzB,GAAO7mB,OA1rFP,SAAgB+pB,EAAOC,EAAO8f,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB7R,GAAelO,EAAOC,EAAO8f,KAC3E9f,EAAQ8f,EAAWjnK,GAEjBinK,IAAajnK,IACK,kBAATmnJ,GACT8f,EAAW9f,EACXA,EAAQnnJ,GAEe,kBAATknJ,IACd+f,EAAW/f,EACXA,EAAQlnJ,IAGRknJ,IAAUlnJ,GAAamnJ,IAAUnnJ,GACnCknJ,EAAQ,EACRC,EAAQ,IAGRD,EAAQ6Q,GAAS7Q,GACbC,IAAUnnJ,GACZmnJ,EAAQD,EACRA,EAAQ,GAERC,EAAQ4Q,GAAS5Q,IAGjBD,EAAQC,EAAO,CACjB,IAAIx9H,EAAOu9H,EACXA,EAAQC,EACRA,EAAQx9H,CACV,CACA,GAAIs9I,GAAY/f,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAIqT,EAAOvX,KACX,OAAOrP,GAAUsT,EAASsT,GAAQrT,EAAQD,EAAQ7K,GAAe,QAAUme,EAAO,IAAIz/J,OAAS,KAAOosJ,EACxG,CACA,OAAOnB,GAAWkB,EAAOC,EAC3B,EAspFAnD,GAAO7sI,OA5+NP,SAAgBonI,EAAYb,EAAUj/C,GACpC,IAAIu1C,EAAO9kH,GAAQqvH,GAAcjoB,GAAc2oB,GAC3Cd,EAAYtgJ,UAAU9C,OAAS,EAEnC,OAAOi5I,EAAKuK,EAAYsR,GAAYnS,EAAU,GAAIj/C,EAAa0/C,EAAW0I,GAC5E,EAw+NA7C,GAAOxtB,YAh9NP,SAAqB+nB,EAAYb,EAAUj/C,GACzC,IAAIu1C,EAAO9kH,GAAQqvH,GAAchoB,GAAmB0oB,GAChDd,EAAYtgJ,UAAU9C,OAAS,EAEnC,OAAOi5I,EAAKuK,EAAYsR,GAAYnS,EAAU,GAAIj/C,EAAa0/C,EAAWyL,GAC5E,EA48NA5F,GAAOvxB,OA/wEP,SAAgBtI,EAAQjpG,EAAGi0I,GAMzB,OAJEj0I,GADGi0I,EAAQC,GAAejrC,EAAQjpG,EAAGi0I,GAASj0I,IAAMlhB,GAChD,EAEAoyH,GAAUlxG,GAET0vI,GAAWxsI,GAAS+lG,GAASjpG,EACtC,EAywEA8iI,GAAO/+H,QApvEP,WACE,IAAI+V,EAAOn9B,UACPssH,EAAS/lG,GAAS4W,EAAK,IAE3B,OAAOA,EAAKjgC,OAAS,EAAIovH,EAASA,EAAOllG,QAAQ+V,EAAK,GAAIA,EAAK,GACjE,EAgvEAgpH,GAAOvmJ,OAtoGP,SAAgBO,EAAQ6b,EAAM49I,GAG5B,IAAIxtJ,GAAS,EACTlP,GAHJ8e,EAAO4wI,GAAS5wI,EAAM7b,IAGJjD,OAOlB,IAJKA,IACHA,EAAS,EACTiD,EAASgC,KAEFiK,EAAQlP,GAAQ,CACvB,IAAIiB,EAAkB,MAAVgC,EAAiBgC,EAAYhC,EAAO0sJ,GAAM7wI,EAAK5P,KACvDjO,IAAUgE,IACZiK,EAAQlP,EACRiB,EAAQy7J,GAEVz5J,EAASgzH,GAAWh1H,GAASA,EAAMgB,KAAKgB,GAAUhC,CACpD,CACA,OAAOgC,CACT,EAmnGAgmJ,GAAOhsG,MAAQA,GACfgsG,GAAOnD,aAAeA,EACtBmD,GAAOkjB,OA15NP,SAAgB3oB,GAEd,OADWrvH,GAAQqvH,GAAcwH,GAAciL,IACnCzS,EACd,EAw5NAyF,GAAOjyH,KA/0NP,SAAcwsH,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAImQ,GAAYnQ,GACd,OAAOqf,GAASrf,GAAcgC,GAAWhC,GAAcA,EAAWxjJ,OAEpE,IAAI8+B,EAAM8tH,GAAOpJ,GACjB,OAAI1kH,GAAO28G,GAAU38G,GAAOg9G,EACnB0H,EAAWxsH,KAEbo8H,GAAS5P,GAAYxjJ,MAC9B,EAo0NAipJ,GAAOsb,UAAYA,GACnBtb,GAAOh+F,KA/xNP,SAAcu4F,EAAYlmB,EAAW88B,GACnC,IAAInhB,EAAO9kH,GAAQqvH,GAAczoB,GAAY07B,GAI7C,OAHI2D,GAASC,GAAe7W,EAAYlmB,EAAW88B,KACjD98B,EAAYr4H,GAEPg0I,EAAKuK,EAAYsR,GAAYx3B,EAAW,GACjD,EA0xNA2rB,GAAOmjB,YAhsRP,SAAqBrqJ,EAAO9gB,GAC1B,OAAOy1J,GAAgB30I,EAAO9gB,EAChC,EA+rRAgoJ,GAAOojB,cApqRP,SAAuBtqJ,EAAO9gB,EAAO0hJ,GACnC,OAAOoU,GAAkBh1I,EAAO9gB,EAAO6zJ,GAAYnS,EAAU,GAC/D,EAmqRAsG,GAAOqjB,cAjpRP,SAAuBvqJ,EAAO9gB,GAC5B,IAAIjB,EAAkB,MAAT+hB,EAAgB,EAAIA,EAAM/hB,OACvC,GAAIA,EAAQ,CACV,IAAIkP,EAAQwnJ,GAAgB30I,EAAO9gB,GACnC,GAAIiO,EAAQlP,GAAUwrJ,GAAGzpI,EAAM7S,GAAQjO,GACrC,OAAOiO,CAEX,CACA,OAAQ,CACV,EAyoRA+5I,GAAOsjB,gBArnRP,SAAyBxqJ,EAAO9gB,GAC9B,OAAOy1J,GAAgB30I,EAAO9gB,GAAO,EACvC,EAonRAgoJ,GAAOujB,kBAzlRP,SAA2BzqJ,EAAO9gB,EAAO0hJ,GACvC,OAAOoU,GAAkBh1I,EAAO9gB,EAAO6zJ,GAAYnS,EAAU,IAAI,EACnE,EAwlRAsG,GAAOwjB,kBAtkRP,SAA2B1qJ,EAAO9gB,GAEhC,GADsB,MAAT8gB,EAAgB,EAAIA,EAAM/hB,OAC3B,CACV,IAAIkP,EAAQwnJ,GAAgB30I,EAAO9gB,GAAO,GAAQ,EAClD,GAAIuqJ,GAAGzpI,EAAM7S,GAAQjO,GACnB,OAAOiO,CAEX,CACA,OAAQ,CACV,EA8jRA+5I,GAAOub,UAAYA,GACnBvb,GAAO77C,WA3oEP,SAAoBgiB,EAAQvvH,EAAQstB,GAOlC,OANAiiG,EAAS/lG,GAAS+lG,GAClBjiG,EAAuB,MAAZA,EACP,EACAk+H,GAAUh0B,GAAUlqG,GAAW,EAAGiiG,EAAOpvH,QAE7CH,EAAS83J,GAAa93J,GACfuvH,EAAO/qH,MAAM8oB,EAAUA,EAAWttB,EAAOG,SAAWH,CAC7D,EAooEAopJ,GAAO8c,SAAWA,GAClB9c,GAAOj9G,IAzUP,SAAajqB,GACX,OAAQA,GAASA,EAAM/hB,OACnBgkJ,GAAQjiI,EAAOkxI,IACf,CACN,EAsUAhK,GAAOyjB,MA7SP,SAAe3qJ,EAAO4gI,GACpB,OAAQ5gI,GAASA,EAAM/hB,OACnBgkJ,GAAQjiI,EAAO+yI,GAAYnS,EAAU,IACrC,CACN,EA0SAsG,GAAO0jB,SA7hEP,SAAkBv9C,EAAQvrH,EAASu2J,GAIjC,IAAIwS,EAAW3jB,GAAOsF,iBAElB6L,GAASC,GAAejrC,EAAQvrH,EAASu2J,KAC3Cv2J,EAAUoB,GAEZmqH,EAAS/lG,GAAS+lG,GAClBvrH,EAAUq/J,GAAa,CAAC,EAAGr/J,EAAS+oK,EAAUxO,IAE9C,IAIIyO,EACAC,EALAC,EAAU7J,GAAa,CAAC,EAAGr/J,EAAQkpK,QAASH,EAASG,QAAS3O,IAC9D4O,EAAch6I,GAAK+5I,GACnBE,EAAgB1oB,GAAWwoB,EAASC,GAIpC99J,EAAQ,EACRg+J,EAAcrpK,EAAQqpK,aAAezuB,GACrC3sF,EAAS,WAGTq7G,EAAe/hJ,IAChBvnB,EAAQmmK,QAAUvrB,IAAW3sF,OAAS,IACvCo7G,EAAYp7G,OAAS,KACpBo7G,IAAgB5vB,GAAgBc,GAAeK,IAAW3sF,OAAS,KACnEjuD,EAAQupK,UAAY3uB,IAAW3sF,OAAS,KACzC,KAMEu7G,EAAY,kBACblqK,GAAelB,KAAK4B,EAAS,cACzBA,EAAQwpK,UAAY,IAAInjJ,QAAQ,MAAO,KACvC,6BAA+Bg3H,GAAmB,KACnD,KAEN9xB,EAAOllG,QAAQijJ,GAAc,SAAS5hJ,EAAO+hJ,EAAaC,EAAkBC,EAAiBC,EAAezjJ,GAsB1G,OArBAujJ,IAAqBA,EAAmBC,GAGxC17G,GAAUs9D,EAAO/qH,MAAM6K,EAAO8a,GAAQE,QAAQw0H,GAAmBqG,IAG7DuoB,IACFT,GAAa,EACb/6G,GAAU,YAAcw7G,EAAc,UAEpCG,IACFX,GAAe,EACfh7G,GAAU,OAAS27G,EAAgB,eAEjCF,IACFz7G,GAAU,iBAAmBy7G,EAAmB,+BAElDr+J,EAAQ8a,EAASuB,EAAMvrB,OAIhBurB,CACT,IAEAumC,GAAU,OAIV,IAAI47G,EAAWvqK,GAAelB,KAAK4B,EAAS,aAAeA,EAAQ6pK,SACnE,GAAKA,GAKA,GAAIxvB,GAA2B34H,KAAKmoJ,GACvC,MAAM,IAAI5nK,GA3idmB,2DAsid7BgsD,EAAS,iBAAmBA,EAAS,QASvCA,GAAUg7G,EAAeh7G,EAAO5nC,QAAQ2yH,EAAsB,IAAM/qF,GACjE5nC,QAAQ4yH,EAAqB,MAC7B5yH,QAAQ6yH,EAAuB,OAGlCjrF,EAAS,aAAe47G,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCb,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJh7G,EACA,gBAEF,IAAIpvD,EAASoiK,IAAQ,WACnB,OAAOrwI,GAASu4I,EAAaK,EAAY,UAAYv7G,GAClD/uD,MAAMkC,EAAWgoK,EACtB,IAKA,GADAvqK,EAAOovD,OAASA,EACZ6wG,GAAQjgK,GACV,MAAMA,EAER,OAAOA,CACT,EA26DAumJ,GAAO0kB,MApsBP,SAAexnJ,EAAGw8H,GAEhB,IADAx8H,EAAIkxG,GAAUlxG,IACN,GAAKA,EAAI6+C,EACf,MAAO,GAET,IAAI91D,EAAQ8rI,EACRh7I,EAAS64I,GAAU1yH,EAAG60H,GAE1B2H,EAAWmS,GAAYnS,GACvBx8H,GAAK60H,EAGL,IADA,IAAIt4I,EAASyhJ,GAAUnkJ,EAAQ2iJ,KACtBzzI,EAAQiX,GACfw8H,EAASzzI,GAEX,OAAOxM,CACT,EAqrBAumJ,GAAO+T,SAAWA,GAClB/T,GAAO5xB,UAAYA,GACnB4xB,GAAOxiC,SAAWA,GAClBwiC,GAAO2kB,QAx5DP,SAAiB3sK,GACf,OAAOooB,GAASpoB,GAAOk9F,aACzB,EAu5DA8qD,GAAO/iB,SAAWA,GAClB+iB,GAAO4kB,cApuIP,SAAuB5sK,GACrB,OAAOA,EACHoqJ,GAAUh0B,GAAUp2H,IAAQ,iBAAmB+jE,GACpC,IAAV/jE,EAAcA,EAAQ,CAC7B,EAiuIAgoJ,GAAO5/H,SAAWA,GAClB4/H,GAAO6kB,QAn4DP,SAAiB7sK,GACf,OAAOooB,GAASpoB,GAAO2R,aACzB,EAk4DAq2I,GAAOrvI,KA12DP,SAAcw1G,EAAQpnG,EAAOoyI,GAE3B,IADAhrC,EAAS/lG,GAAS+lG,MACHgrC,GAASpyI,IAAU/iB,GAChC,OAAOm/I,GAASh1B,GAElB,IAAKA,KAAYpnG,EAAQ2vI,GAAa3vI,IACpC,OAAOonG,EAET,IAAIs1B,EAAagB,GAAct2B,GAC3Bu1B,EAAae,GAAc19H,GAI/B,OAAO6wI,GAAUnU,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAET5oI,KAAK,GAChD,EA61DAktI,GAAO8kB,QAx0DP,SAAiB3+C,EAAQpnG,EAAOoyI,GAE9B,IADAhrC,EAAS/lG,GAAS+lG,MACHgrC,GAASpyI,IAAU/iB,GAChC,OAAOmqH,EAAO/qH,MAAM,EAAGggJ,GAAgBj1B,GAAU,GAEnD,IAAKA,KAAYpnG,EAAQ2vI,GAAa3vI,IACpC,OAAOonG,EAET,IAAIs1B,EAAagB,GAAct2B,GAG/B,OAAOypC,GAAUnU,EAAY,EAFnBE,GAAcF,EAAYgB,GAAc19H,IAAU,GAEvBjM,KAAK,GAC5C,EA6zDAktI,GAAO+kB,UAxyDP,SAAmB5+C,EAAQpnG,EAAOoyI,GAEhC,IADAhrC,EAAS/lG,GAAS+lG,MACHgrC,GAASpyI,IAAU/iB,GAChC,OAAOmqH,EAAOllG,QAAQ0zH,GAAa,IAErC,IAAKxuB,KAAYpnG,EAAQ2vI,GAAa3vI,IACpC,OAAOonG,EAET,IAAIs1B,EAAagB,GAAct2B,GAG/B,OAAOypC,GAAUnU,EAFLD,GAAgBC,EAAYgB,GAAc19H,KAElBjM,KAAK,GAC3C,EA6xDAktI,GAAOglB,SAtvDP,SAAkB7+C,EAAQvrH,GACxB,IAAI7D,EAnvdmB,GAovdnBkuK,EAnvdqB,MAqvdzB,GAAI5nD,GAASziH,GAAU,CACrB,IAAI25H,EAAY,cAAe35H,EAAUA,EAAQ25H,UAAYA,EAC7Dx9H,EAAS,WAAY6D,EAAUwzH,GAAUxzH,EAAQ7D,QAAUA,EAC3DkuK,EAAW,aAAcrqK,EAAU8zJ,GAAa9zJ,EAAQqqK,UAAYA,CACtE,CAGA,IAAIjC,GAFJ78C,EAAS/lG,GAAS+lG,IAEKpvH,OACvB,GAAIilJ,GAAW71B,GAAS,CACtB,IAAIs1B,EAAagB,GAAct2B,GAC/B68C,EAAYvnB,EAAW1kJ,MACzB,CACA,GAAIA,GAAUisK,EACZ,OAAO78C,EAET,IAAIrjE,EAAM/rD,EAASwlJ,GAAW0oB,GAC9B,GAAIniH,EAAM,EACR,OAAOmiH,EAET,IAAIxrK,EAASgiJ,EACTmU,GAAUnU,EAAY,EAAG34F,GAAKhwC,KAAK,IACnCqzG,EAAO/qH,MAAM,EAAG0nD,GAEpB,GAAIyxE,IAAcv4H,EAChB,OAAOvC,EAASwrK,EAKlB,GAHIxpB,IACF34F,GAAQrpD,EAAO1C,OAAS+rD,GAEtBikE,GAASwN,IACX,GAAIpO,EAAO/qH,MAAM0nD,GAAKzwC,OAAOkiH,GAAY,CACvC,IAAIjyG,EACA6B,EAAY1qB,EAMhB,IAJK86H,EAAU5S,SACb4S,EAAYpyG,GAAOoyG,EAAU1rE,OAAQzoC,GAASg1H,GAAQpkD,KAAKujC,IAAc,MAE3EA,EAAU3G,UAAY,EACdtrG,EAAQiyG,EAAUvjC,KAAK7sE,IAC7B,IAAI+gJ,EAAS5iJ,EAAMrc,MAErBxM,EAASA,EAAO2B,MAAM,EAAG8pK,IAAWlpK,EAAY8mD,EAAMoiH,EACxD,OACK,GAAI/+C,EAAOz8G,QAAQglJ,GAAan6B,GAAYzxE,IAAQA,EAAK,CAC9D,IAAI78C,EAAQxM,EAAO44H,YAAYkC,GAC3BtuH,GAAS,IACXxM,EAASA,EAAO2B,MAAM,EAAG6K,GAE7B,CACA,OAAOxM,EAASwrK,CAClB,EAisDAjlB,GAAO5S,SA5qDP,SAAkBjnB,GAEhB,OADAA,EAAS/lG,GAAS+lG,KACA8tB,EAAiB33H,KAAK6pG,GACpCA,EAAOllG,QAAQ8yH,EAAe6I,IAC9Bz2B,CACN,EAwqDA65B,GAAOmlB,SAvpBP,SAAkB1rI,GAChB,IAAI/wB,IAAO20I,GACX,OAAOj9H,GAASqZ,GAAU/wB,CAC5B,EAqpBAs3I,GAAOwb,UAAYA,GACnBxb,GAAOkb,WAAaA,GAGpBlb,GAAOjX,KAAO7pI,GACd8gJ,GAAOolB,UAAY9M,GACnBtY,GAAOh5H,MAAQ+jB,GAEfoxH,GAAMnc,IACAn3F,GAAS,CAAC,EACd88F,GAAW3F,IAAQ,SAAShQ,EAAMhjH,GAC3B9yB,GAAelB,KAAKgnJ,GAAOtoJ,UAAWs1B,KACzC67B,GAAO77B,GAAcgjH,EAEzB,IACOnnF,IACH,CAAE,OAAS,IAWjBm3F,GAAOqlB,QA/ihBK,UAkjhBZ1rB,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAAS3sH,GACxFgzH,GAAOhzH,GAAYlT,YAAckmI,EACnC,IAGArG,GAAU,CAAC,OAAQ,SAAS,SAAS3sH,EAAY/mB,GAC/Cg6I,GAAYvoJ,UAAUs1B,GAAc,SAAS9P,GAC3CA,EAAIA,IAAMlhB,EAAY,EAAI2zI,GAAUvhB,GAAUlxG,GAAI,GAElD,IAAIzjB,EAAUG,KAAKinJ,eAAiB56I,EAChC,IAAIg6I,GAAYrmJ,MAChBA,KAAKy2B,QAUT,OARI52B,EAAOonJ,aACTpnJ,EAAOsnJ,cAAgBnR,GAAU1yH,EAAGzjB,EAAOsnJ,eAE3CtnJ,EAAOunJ,UAAUlmJ,KAAK,CACpB,KAAQ80I,GAAU1yH,EAAG60H,GACrB,KAAQ/kH,GAAcvzB,EAAOmnJ,QAAU,EAAI,QAAU,MAGlDnnJ,CACT,EAEAwmJ,GAAYvoJ,UAAUs1B,EAAa,SAAW,SAAS9P,GACrD,OAAOtjB,KAAKk6F,UAAU9mE,GAAY9P,GAAG42E,SACvC,CACF,IAGA6lD,GAAU,CAAC,SAAU,MAAO,cAAc,SAAS3sH,EAAY/mB,GAC7D,IAAIvL,EAAOuL,EAAQ,EACfq/J,EAjihBe,GAiihBJ5qK,GA/hhBG,GA+hhByBA,EAE3CulJ,GAAYvoJ,UAAUs1B,GAAc,SAAS0sH,GAC3C,IAAIjgJ,EAASG,KAAKy2B,QAMlB,OALA52B,EAAOqnJ,cAAchmJ,KAAK,CACxB,SAAY+wJ,GAAYnS,EAAU,GAClC,KAAQh/I,IAEVjB,EAAOonJ,aAAepnJ,EAAOonJ,cAAgBykB,EACtC7rK,CACT,CACF,IAGAkgJ,GAAU,CAAC,OAAQ,SAAS,SAAS3sH,EAAY/mB,GAC/C,IAAIs/J,EAAW,QAAUt/J,EAAQ,QAAU,IAE3Cg6I,GAAYvoJ,UAAUs1B,GAAc,WAClC,OAAOpzB,KAAK2rK,GAAU,GAAGvtK,QAAQ,EACnC,CACF,IAGA2hJ,GAAU,CAAC,UAAW,SAAS,SAAS3sH,EAAY/mB,GAClD,IAAIu/J,EAAW,QAAUv/J,EAAQ,GAAK,SAEtCg6I,GAAYvoJ,UAAUs1B,GAAc,WAClC,OAAOpzB,KAAKinJ,aAAe,IAAIZ,GAAYrmJ,MAAQA,KAAK4rK,GAAU,EACpE,CACF,IAEAvlB,GAAYvoJ,UAAUylK,QAAU,WAC9B,OAAOvjK,KAAKgH,OAAOopJ,GACrB,EAEA/J,GAAYvoJ,UAAUwS,KAAO,SAASmqH,GACpC,OAAOz6H,KAAKgH,OAAOyzH,GAAWtpF,MAChC,EAEAk1G,GAAYvoJ,UAAU2gK,SAAW,SAAShkC,GACxC,OAAOz6H,KAAKk6F,UAAU5pF,KAAKmqH,EAC7B,EAEA4rB,GAAYvoJ,UAAU6gK,UAAY1L,IAAS,SAASh3I,EAAMmhB,GACxD,MAAmB,mBAARnhB,EACF,IAAIoqI,GAAYrmJ,MAElBA,KAAKwH,KAAI,SAASpJ,GACvB,OAAO0vJ,GAAW1vJ,EAAO6d,EAAMmhB,EACjC,GACF,IAEAipH,GAAYvoJ,UAAU8lB,OAAS,SAAS62G,GACtC,OAAOz6H,KAAKgH,OAAOq4J,GAAOpN,GAAYx3B,IACxC,EAEA4rB,GAAYvoJ,UAAU0D,MAAQ,SAASynD,EAAOC,GAC5CD,EAAQurE,GAAUvrE,GAElB,IAAIppD,EAASG,KACb,OAAIH,EAAOonJ,eAAiBh+F,EAAQ,GAAKC,EAAM,GACtC,IAAIm9F,GAAYxmJ,IAErBopD,EAAQ,EACVppD,EAASA,EAAOwlG,WAAWp8C,GAClBA,IACTppD,EAASA,EAAOikK,KAAK76G,IAEnBC,IAAQ9mD,IAEVvC,GADAqpD,EAAMsrE,GAAUtrE,IACD,EAAIrpD,EAAOkkK,WAAW76G,GAAOrpD,EAAO8lK,KAAKz8G,EAAMD,IAEzDppD,EACT,EAEAwmJ,GAAYvoJ,UAAU8nK,eAAiB,SAASnrC,GAC9C,OAAOz6H,KAAKk6F,UAAU2rE,UAAUprC,GAAWvgC,SAC7C,EAEAmsD,GAAYvoJ,UAAUoiK,QAAU,WAC9B,OAAOlgK,KAAK2lK,KAAKxtB,EACnB,EAGA4T,GAAW1F,GAAYvoJ,WAAW,SAASs4I,EAAMhjH,GAC/C,IAAIy4I,EAAgB,qCAAqCnpJ,KAAK0Q,GAC1D04I,EAAU,kBAAkBppJ,KAAK0Q,GACjC24I,EAAa3lB,GAAO0lB,EAAW,QAAwB,QAAd14I,EAAuB,QAAU,IAAOA,GACjF44I,EAAeF,GAAW,QAAQppJ,KAAK0Q,GAEtC24I,IAGL3lB,GAAOtoJ,UAAUs1B,GAAc,WAC7B,IAAIh1B,EAAQ4B,KAAK2mJ,YACbvpH,EAAO0uI,EAAU,CAAC,GAAK7rK,UACvBgsK,EAAS7tK,aAAiBioJ,GAC1BvG,EAAW1iH,EAAK,GAChB8uI,EAAUD,GAAU36I,GAAQlzB,GAE5BkgK,EAAc,SAASlgK,GACzB,IAAIyB,EAASksK,EAAW7rK,MAAMkmJ,GAAQ9F,GAAU,CAACliJ,GAAQg/B,IACzD,OAAQ0uI,GAAWplB,EAAY7mJ,EAAO,GAAKA,CAC7C,EAEIqsK,GAAWL,GAAoC,mBAAZ/rB,GAA6C,GAAnBA,EAAS3iJ,SAExE8uK,EAASC,GAAU,GAErB,IAAIxlB,EAAW1mJ,KAAK6mJ,UAChBslB,IAAansK,KAAK4mJ,YAAYzpJ,OAC9BivK,EAAcJ,IAAiBtlB,EAC/B2lB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5B9tK,EAAQiuK,EAAWjuK,EAAQ,IAAIioJ,GAAYrmJ,MAC3C,IAAIH,EAASu2I,EAAKl2I,MAAM9B,EAAOg/B,GAE/B,OADAv9B,EAAO+mJ,YAAY1lJ,KAAK,CAAE,KAAQi3J,GAAM,KAAQ,CAACmG,GAAc,QAAWl8J,IACnE,IAAIkkJ,GAAczmJ,EAAQ6mJ,EACnC,CACA,OAAI0lB,GAAeC,EACVj2B,EAAKl2I,MAAMF,KAAMo9B,IAE1Bv9B,EAASG,KAAKm4J,KAAKmG,GACZ8N,EAAeN,EAAUjsK,EAAOzB,QAAQ,GAAKyB,EAAOzB,QAAWyB,EACxE,EACF,IAGAkgJ,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAAS3sH,GACxE,IAAIgjH,EAAOgN,GAAWhwH,GAClBk5I,EAAY,0BAA0B5pJ,KAAK0Q,GAAc,MAAQ,OACjE44I,EAAe,kBAAkBtpJ,KAAK0Q,GAE1CgzH,GAAOtoJ,UAAUs1B,GAAc,WAC7B,IAAIgK,EAAOn9B,UACX,GAAI+rK,IAAiBhsK,KAAK6mJ,UAAW,CACnC,IAAIzoJ,EAAQ4B,KAAK5B,QACjB,OAAOg4I,EAAKl2I,MAAMoxB,GAAQlzB,GAASA,EAAQ,GAAIg/B,EACjD,CACA,OAAOp9B,KAAKssK,IAAW,SAASluK,GAC9B,OAAOg4I,EAAKl2I,MAAMoxB,GAAQlzB,GAASA,EAAQ,GAAIg/B,EACjD,GACF,CACF,IAGA2uH,GAAW1F,GAAYvoJ,WAAW,SAASs4I,EAAMhjH,GAC/C,IAAI24I,EAAa3lB,GAAOhzH,GACxB,GAAI24I,EAAY,CACd,IAAIruK,EAAMquK,EAAW7oK,KAAO,GACvB5C,GAAelB,KAAKsmJ,GAAWhoJ,KAClCgoJ,GAAUhoJ,GAAO,IAEnBgoJ,GAAUhoJ,GAAKwD,KAAK,CAAE,KAAQkyB,EAAY,KAAQ24I,GACpD,CACF,IAEArmB,GAAU+S,GAAar2J,EAlthBA,GAkthB+Bc,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQd,IAIVikJ,GAAYvoJ,UAAU24B,MAh9dtB,WACE,IAAI52B,EAAS,IAAIwmJ,GAAYrmJ,KAAK2mJ,aAOlC,OANA9mJ,EAAO+mJ,YAAc2B,GAAUvoJ,KAAK4mJ,aACpC/mJ,EAAOmnJ,QAAUhnJ,KAAKgnJ,QACtBnnJ,EAAOonJ,aAAejnJ,KAAKinJ,aAC3BpnJ,EAAOqnJ,cAAgBqB,GAAUvoJ,KAAKknJ,eACtCrnJ,EAAOsnJ,cAAgBnnJ,KAAKmnJ,cAC5BtnJ,EAAOunJ,UAAYmB,GAAUvoJ,KAAKonJ,WAC3BvnJ,CACT,EAw8dAwmJ,GAAYvoJ,UAAUo8F,QA97dtB,WACE,GAAIl6F,KAAKinJ,aAAc,CACrB,IAAIpnJ,EAAS,IAAIwmJ,GAAYrmJ,MAC7BH,EAAOmnJ,SAAW,EAClBnnJ,EAAOonJ,cAAe,CACxB,MACEpnJ,EAASG,KAAKy2B,SACPuwH,UAAY,EAErB,OAAOnnJ,CACT,EAq7dAwmJ,GAAYvoJ,UAAUM,MA36dtB,WACE,IAAI8gB,EAAQlf,KAAK2mJ,YAAYvoJ,QACzBmuK,EAAMvsK,KAAKgnJ,QACXa,EAAQv2H,GAAQpS,GAChBkmG,EAAUmnD,EAAM,EAChBhT,EAAY1R,EAAQ3oI,EAAM/hB,OAAS,EACnC+gI,EA8pIN,SAAiBj1E,EAAOC,EAAKq2G,GAC3B,IAAIlzJ,GAAS,EACTlP,EAASoiK,EAAWpiK,OAExB,OAASkP,EAAQlP,GAAQ,CACvB,IAAImM,EAAOi2J,EAAWlzJ,GAClB8nB,EAAO7qB,EAAK6qB,KAEhB,OAAQ7qB,EAAKxI,MACX,IAAK,OAAamoD,GAAS90B,EAAM,MACjC,IAAK,YAAa+0B,GAAO/0B,EAAM,MAC/B,IAAK,OAAa+0B,EAAM8sF,GAAU9sF,EAAKD,EAAQ90B,GAAO,MACtD,IAAK,YAAa80B,EAAQ8sF,GAAU9sF,EAAOC,EAAM/0B,GAErD,CACA,MAAO,CAAE,MAAS80B,EAAO,IAAOC,EAClC,CA9qIasjH,CAAQ,EAAGjT,EAAWv5J,KAAKonJ,WAClCn+F,EAAQi1E,EAAKj1E,MACbC,EAAMg1E,EAAKh1E,IACX/rD,EAAS+rD,EAAMD,EACf58C,EAAQ+4G,EAAUl8D,EAAOD,EAAQ,EACjC+oG,EAAYhyJ,KAAKknJ,cACjBulB,EAAaza,EAAU70J,OACvB8iJ,EAAW,EACXysB,EAAY12B,GAAU74I,EAAQ6C,KAAKmnJ,eAEvC,IAAKU,IAAWziC,GAAWm0C,GAAap8J,GAAUuvK,GAAavvK,EAC7D,OAAOm4J,GAAiBp2I,EAAOlf,KAAK4mJ,aAEtC,IAAI/mJ,EAAS,GAEb0rJ,EACA,KAAOpuJ,KAAY8iJ,EAAWysB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbvuK,EAAQ8gB,EAHZ7S,GAASkgK,KAKAI,EAAYF,GAAY,CAC/B,IAAInjK,EAAO0oJ,EAAU2a,GACjB7sB,EAAWx2I,EAAKw2I,SAChBh/I,EAAOwI,EAAKxI,KACZ0qJ,EAAW1L,EAAS1hJ,GAExB,GA7zDY,GA6zDR0C,EACF1C,EAAQotJ,OACH,IAAKA,EAAU,CACpB,GAj0Da,GAi0DT1qJ,EACF,SAASyqJ,EAET,MAAMA,CAEV,CACF,CACA1rJ,EAAOogJ,KAAc7hJ,CACvB,CACA,OAAOyB,CACT,EA+3dAumJ,GAAOtoJ,UAAUylH,GAAKg7C,GACtBnY,GAAOtoJ,UAAUqoI,MA1iQjB,WACE,OAAOA,GAAMnmI,KACf,EAyiQAomJ,GAAOtoJ,UAAU8uK,OA7gQjB,WACE,OAAO,IAAItmB,GAActmJ,KAAK5B,QAAS4B,KAAK6mJ,UAC9C,EA4gQAT,GAAOtoJ,UAAUwO,KAp/PjB,WACMtM,KAAK+mJ,aAAe3kJ,IACtBpC,KAAK+mJ,WAAamZ,GAAQlgK,KAAK5B,UAEjC,IAAI2lB,EAAO/jB,KAAK8mJ,WAAa9mJ,KAAK+mJ,WAAW5pJ,OAG7C,MAAO,CAAE,KAAQ4mB,EAAM,MAFXA,EAAO3hB,EAAYpC,KAAK+mJ,WAAW/mJ,KAAK8mJ,aAGtD,EA6+PAV,GAAOtoJ,UAAU06J,MA77PjB,SAAsBp6J,GAIpB,IAHA,IAAIyB,EACAwiC,EAASriC,KAENqiC,aAAkBokH,IAAY,CACnC,IAAIhwH,EAAQ8vH,GAAalkH,GACzB5L,EAAMqwH,UAAY,EAClBrwH,EAAMswH,WAAa3kJ,EACfvC,EACF0M,EAASo6I,YAAclwH,EAEvB52B,EAAS42B,EAEX,IAAIlqB,EAAWkqB,EACf4L,EAASA,EAAOskH,WAClB,CAEA,OADAp6I,EAASo6I,YAAcvoJ,EAChByB,CACT,EA46PAumJ,GAAOtoJ,UAAUo8F,QAt5PjB,WACE,IAAI97F,EAAQ4B,KAAK2mJ,YACjB,GAAIvoJ,aAAiBioJ,GAAa,CAChC,IAAIwmB,EAAUzuK,EAUd,OATI4B,KAAK4mJ,YAAYzpJ,SACnB0vK,EAAU,IAAIxmB,GAAYrmJ,QAE5B6sK,EAAUA,EAAQ3yE,WACV0sD,YAAY1lJ,KAAK,CACvB,KAAQi3J,GACR,KAAQ,CAACj+D,IACT,QAAW93F,IAEN,IAAIkkJ,GAAcumB,EAAS7sK,KAAK6mJ,UACzC,CACA,OAAO7mJ,KAAKm4J,KAAKj+D,GACnB,EAu4PAksD,GAAOtoJ,UAAU4iI,OAAS0lB,GAAOtoJ,UAAUqB,QAAUinJ,GAAOtoJ,UAAUM,MAv3PtE,WACE,OAAOk3J,GAAiBt1J,KAAK2mJ,YAAa3mJ,KAAK4mJ,YACjD,EAw3PAR,GAAOtoJ,UAAUsvB,MAAQg5H,GAAOtoJ,UAAUqzC,KAEtCkzG,KACF+B,GAAOtoJ,UAAUumJ,IAj+PnB,WACE,OAAOrkJ,IACT,GAi+POomJ,EACR,CAKOnD,GAQNn+F,GAAK5gC,EAAIA,IAIT,aACE,OAAOA,EACR,mCAaL,EAAE9kB,KAAKY,8BChzhBP,IAAI0vF,EAAwBlyF,OAAOkyF,sBAC/BpvF,EAAiB9C,OAAOM,UAAUwC,eAClCwsK,EAAmBtvK,OAAOM,UAAU6xF,qBAsDxCwzB,EAAOC,QA5CP,WACC,IACC,IAAK5lH,OAAO2lB,OACX,OAAO,EAMR,IAAI4pJ,EAAQ,IAAIpmJ,OAAO,OAEvB,GADAomJ,EAAM,GAAK,KACkC,MAAzCvvK,OAAOu0H,oBAAoBg7C,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,CAAC,EACJ9vK,EAAI,EAAGA,EAAI,GAAIA,IACvB8vK,EAAM,IAAMrmJ,OAAOC,aAAa1pB,IAAMA,EAKvC,GAAwB,eAHXM,OAAOu0H,oBAAoBi7C,GAAOxlK,KAAI,SAAU8b,GAC5D,OAAO0pJ,EAAM1pJ,EACd,IACWpK,KAAK,IACf,OAAO,EAIR,IAAI+zJ,EAAQ,CAAC,EAIb,MAHA,uBAAuBt0J,MAAM,IAAIrT,SAAQ,SAAU4nK,GAClDD,EAAMC,GAAUA,CACjB,IAEE,yBADE1vK,OAAO2yB,KAAK3yB,OAAO2lB,OAAO,CAAC,EAAG8pJ,IAAQ/zJ,KAAK,GAMhD,CAAE,MAAO9V,GAER,OAAO,CACR,CACD,CAEiB+pK,GAAoB3vK,OAAO2lB,OAAS,SAAUnmB,EAAQiyD,GAKtE,IAJA,IAAIr1B,EAEA2wF,EADAxxE,EAtDL,SAAkBz/B,GACjB,GAAIA,QACH,MAAM,IAAIxc,UAAU,yDAGrB,OAAOU,OAAO8b,EACf,CAgDUoqG,CAAS1mH,GAGTqmB,EAAI,EAAGA,EAAIpjB,UAAU9C,OAAQkmB,IAAK,CAG1C,IAAK,IAAI3lB,KAFTk8B,EAAOp8B,OAAOyC,UAAUojB,IAGnB/iB,EAAelB,KAAKw6B,EAAMl8B,KAC7Bq7C,EAAGr7C,GAAOk8B,EAAKl8B,IAIjB,GAAIgyF,EAAuB,CAC1B66B,EAAU76B,EAAsB91D,GAChC,IAAK,IAAI18B,EAAI,EAAGA,EAAIqtH,EAAQptH,OAAQD,IAC/B4vK,EAAiB1tK,KAAKw6B,EAAM2wF,EAAQrtH,MACvC67C,EAAGwxE,EAAQrtH,IAAM08B,EAAK2wF,EAAQrtH,IAGjC,CACD,CAEA,OAAO67C,CACR,gCCtFA,IAMIq0H,EAAO,CAAC,GAEZjqJ,EARgB,iBAQTiqJ,EANS,EAAQ,OACR,EAAQ,OACR,EAAQ,QAMxBjqD,EAAOC,QAAUgqD,gCCVjB,IAAIC,EAAe,EAAQ,OACvBC,EAAe,EAAQ,OACvBC,EAAe,EAAQ,OACvBv/I,EAAe,EAAQ,OACvBw/I,EAAe,EAAQ,OAEvBhnJ,EAAWhpB,OAAOM,UAAU0oB,SA8GhC,SAASinJ,EAAQzsK,GACf,KAAMhB,gBAAgBytK,GAAU,OAAO,IAAIA,EAAQzsK,GAEnDhB,KAAKgB,QAAUssK,EAAMnqJ,OAAO,CAC1B+gC,OAtGwB,EAuGxBvwC,OAnGc,EAoGd+5J,UAAW,MACXC,WAAY,GACZC,SAAU,EACVC,SAzGwB,EA0GxB90H,GAAI,IACH/3C,GAAW,CAAC,GAEf,IAAImgB,EAAMnhB,KAAKgB,QAEXmgB,EAAIsrH,KAAQtrH,EAAIwsJ,WAAa,EAC/BxsJ,EAAIwsJ,YAAcxsJ,EAAIwsJ,WAGfxsJ,EAAI2sJ,MAAS3sJ,EAAIwsJ,WAAa,GAAOxsJ,EAAIwsJ,WAAa,KAC7DxsJ,EAAIwsJ,YAAc,IAGpB3tK,KAAKoD,IAAS,EACdpD,KAAKguB,IAAS,GACdhuB,KAAK+tK,OAAS,EACd/tK,KAAKguK,OAAS,GAEdhuK,KAAKiuK,KAAO,IAAIT,EAChBxtK,KAAKiuK,KAAKC,UAAY,EAEtB,IAAI55J,EAAS+4J,EAAac,aACxBnuK,KAAKiuK,KACL9sJ,EAAI+iC,MACJ/iC,EAAIxN,OACJwN,EAAIwsJ,WACJxsJ,EAAIysJ,SACJzsJ,EAAI0sJ,UAGN,GA9IoB,IA8IhBv5J,EACF,MAAM,IAAIrR,MAAM+qB,EAAI1Z,IAOtB,GAJI6M,EAAIqd,QACN6uI,EAAae,iBAAiBpuK,KAAKiuK,KAAM9sJ,EAAIqd,QAG3Crd,EAAIktJ,WAAY,CAClB,IAAI3yI,EAaJ,GATEA,EAF4B,iBAAnBva,EAAIktJ,WAENd,EAAQe,WAAWntJ,EAAIktJ,YACa,yBAAlC7nJ,EAASpnB,KAAK+hB,EAAIktJ,YACpB,IAAIhpJ,WAAWlE,EAAIktJ,YAEnBltJ,EAAIktJ,WA/JK,KAkKlB/5J,EAAS+4J,EAAakB,qBAAqBvuK,KAAKiuK,KAAMvyI,IAGpD,MAAM,IAAIz4B,MAAM+qB,EAAI1Z,IAGtBtU,KAAKwuK,WAAY,CACnB,CACF,CAuKA,SAASC,EAAQpuJ,EAAOrf,GACtB,IAAI0tK,EAAW,IAAIjB,EAAQzsK,GAK3B,GAHA0tK,EAASxtK,KAAKmf,GAAO,GAGjBquJ,EAAStrK,IAAO,MAAMsrK,EAAS1gJ,KAAOA,EAAI0gJ,EAAStrK,KAEvD,OAAOsrK,EAAS7uK,MAClB,CAjJA4tK,EAAQ3vK,UAAUoD,KAAO,SAAUoI,EAAM6S,GACvC,IAEI7H,EAAQq6J,EAFRV,EAAOjuK,KAAKiuK,KACZP,EAAY1tK,KAAKgB,QAAQ0sK,UAG7B,GAAI1tK,KAAK+tK,MAAS,OAAO,EAEzBY,EAASxyJ,MAAWA,EAAQA,GAAkB,IAATA,EAlNjB,EADA,EAsNA,iBAAT7S,EAET2kK,EAAK5tJ,MAAQktJ,EAAQe,WAAWhlK,GACC,yBAAxBkd,EAASpnB,KAAKkK,GACvB2kK,EAAK5tJ,MAAQ,IAAIgF,WAAW/b,GAE5B2kK,EAAK5tJ,MAAQ/W,EAGf2kK,EAAKW,QAAU,EACfX,EAAKY,SAAWZ,EAAK5tJ,MAAMljB,OAE3B,EAAG,CAQD,GAPuB,IAAnB8wK,EAAKC,YACPD,EAAKz2E,OAAS,IAAI81E,EAAMwB,KAAKpB,GAC7BO,EAAKc,SAAW,EAChBd,EAAKC,UAAYR,GAlOD,KAoOlBp5J,EAAS+4J,EAAaoB,QAAQR,EAAMU,KArOlB,IAuOar6J,EAG7B,OAFAtU,KAAKgvK,MAAM16J,GACXtU,KAAK+tK,OAAQ,GACN,EAEc,IAAnBE,EAAKC,YAAsC,IAAlBD,EAAKY,UA9OhB,IA8OmCF,GA1OnC,IA0OyDA,KACjD,WAApB3uK,KAAKgB,QAAQ+3C,GACf/4C,KAAKivK,OAAO1B,EAAQ2B,cAAc5B,EAAM6B,UAAUlB,EAAKz2E,OAAQy2E,EAAKc,YAEpE/uK,KAAKivK,OAAO3B,EAAM6B,UAAUlB,EAAKz2E,OAAQy2E,EAAKc,WAGpD,QAAUd,EAAKY,SAAW,GAAwB,IAAnBZ,EAAKC,YAlPhB,IAkPoC55J,GAGxD,OAxPoB,IAwPhBq6J,GACFr6J,EAAS+4J,EAAa+B,WAAWpvK,KAAKiuK,MACtCjuK,KAAKgvK,MAAM16J,GACXtU,KAAK+tK,OAAQ,EAzPK,IA0PXz5J,GAxPW,IA4PhBq6J,IACF3uK,KAAKgvK,MA/Pa,GAgQlBf,EAAKC,UAAY,GACV,EAIX,EAYAT,EAAQ3vK,UAAUmxK,OAAS,SAAU5pI,GACnCrlC,KAAKguK,OAAO9sK,KAAKmkC,EACnB,EAaAooI,EAAQ3vK,UAAUkxK,MAAQ,SAAU16J,GAhSd,IAkShBA,IACsB,WAApBtU,KAAKgB,QAAQ+3C,GACf/4C,KAAKH,OAASG,KAAKguK,OAAO90J,KAAK,IAE/BlZ,KAAKH,OAASytK,EAAM+B,cAAcrvK,KAAKguK,SAG3ChuK,KAAKguK,OAAS,GACdhuK,KAAKoD,IAAMkR,EACXtU,KAAKguB,IAAMhuB,KAAKiuK,KAAKjgJ,GACvB,EA+EAo1F,EAAQqqD,QAAUA,EAClBrqD,EAAQqrD,QAAUA,EAClBrrD,EAAQksD,WAxBR,SAAoBjvJ,EAAOrf,GAGzB,OAFAA,EAAUA,GAAW,CAAC,GACdyrI,KAAM,EACPgiC,EAAQpuJ,EAAOrf,EACxB,EAqBAoiH,EAAQ0qD,KAVR,SAAcztJ,EAAOrf,GAGnB,OAFAA,EAAUA,GAAW,CAAC,GACd8sK,MAAO,EACRW,EAAQpuJ,EAAOrf,EACxB,gCCtYA,IAAIuuK,EAAe,EAAQ,OACvBjC,EAAe,EAAQ,OACvBC,EAAe,EAAQ,OACvB1xH,EAAe,EAAQ,OACvB7tB,EAAe,EAAQ,OACvBw/I,EAAe,EAAQ,OACvBgC,EAAe,EAAQ,OAEvBhpJ,EAAWhpB,OAAOM,UAAU0oB,SAiFhC,SAASipJ,EAAQzuK,GACf,KAAMhB,gBAAgByvK,GAAU,OAAO,IAAIA,EAAQzuK,GAEnDhB,KAAKgB,QAAUssK,EAAMnqJ,OAAO,CAC1BuqJ,UAAW,MACXC,WAAY,EACZ50H,GAAI,IACH/3C,GAAW,CAAC,GAEf,IAAImgB,EAAMnhB,KAAKgB,QAIXmgB,EAAIsrH,KAAQtrH,EAAIwsJ,YAAc,GAAOxsJ,EAAIwsJ,WAAa,KACxDxsJ,EAAIwsJ,YAAcxsJ,EAAIwsJ,WACC,IAAnBxsJ,EAAIwsJ,aAAoBxsJ,EAAIwsJ,YAAc,OAI3CxsJ,EAAIwsJ,YAAc,GAAOxsJ,EAAIwsJ,WAAa,KACzC3sK,GAAWA,EAAQ2sK,aACvBxsJ,EAAIwsJ,YAAc,IAKfxsJ,EAAIwsJ,WAAa,IAAQxsJ,EAAIwsJ,WAAa,KAGvB,GAAjBxsJ,EAAIwsJ,aACPxsJ,EAAIwsJ,YAAc,KAItB3tK,KAAKoD,IAAS,EACdpD,KAAKguB,IAAS,GACdhuB,KAAK+tK,OAAS,EACd/tK,KAAKguK,OAAS,GAEdhuK,KAAKiuK,KAAS,IAAIT,EAClBxtK,KAAKiuK,KAAKC,UAAY,EAEtB,IAAI55J,EAAUi7J,EAAaG,aACzB1vK,KAAKiuK,KACL9sJ,EAAIwsJ,YAGN,GAAIr5J,IAAWunC,EAAE8zH,KACf,MAAM,IAAI1sK,MAAM+qB,EAAI1Z,IAQtB,GALAtU,KAAKw+B,OAAS,IAAIgxI,EAElBD,EAAaK,iBAAiB5vK,KAAKiuK,KAAMjuK,KAAKw+B,QAG1Crd,EAAIktJ,aAEwB,iBAAnBltJ,EAAIktJ,WACbltJ,EAAIktJ,WAAad,EAAQe,WAAWntJ,EAAIktJ,YACG,yBAAlC7nJ,EAASpnB,KAAK+hB,EAAIktJ,cAC3BltJ,EAAIktJ,WAAa,IAAIhpJ,WAAWlE,EAAIktJ,aAElCltJ,EAAIsrH,MACNn4H,EAASi7J,EAAaM,qBAAqB7vK,KAAKiuK,KAAM9sJ,EAAIktJ,eAC3CxyH,EAAE8zH,MACf,MAAM,IAAI1sK,MAAM+qB,EAAI1Z,GAI5B,CA4NA,SAASw7J,EAAQzvJ,EAAOrf,GACtB,IAAI+uK,EAAW,IAAIN,EAAQzuK,GAK3B,GAHA+uK,EAAS7uK,KAAKmf,GAAO,GAGjB0vJ,EAAS3sK,IAAO,MAAM2sK,EAAS/hJ,KAAOA,EAAI+hJ,EAAS3sK,KAEvD,OAAO2sK,EAASlwK,MAClB,CAvMA4vK,EAAQ3xK,UAAUoD,KAAO,SAAUoI,EAAM6S,GACvC,IAGI7H,EAAQq6J,EACRqB,EAAetK,EAAMuK,EAJrBhC,EAAOjuK,KAAKiuK,KACZP,EAAY1tK,KAAKgB,QAAQ0sK,UACzBW,EAAaruK,KAAKgB,QAAQqtK,WAM1B6B,GAAgB,EAEpB,GAAIlwK,KAAK+tK,MAAS,OAAO,EACzBY,EAASxyJ,MAAWA,EAAQA,GAAkB,IAATA,EAAiB0/B,EAAEs0H,SAAWt0H,EAAEu0H,WAGjD,iBAAT9mK,EAET2kK,EAAK5tJ,MAAQktJ,EAAQ8C,cAAc/mK,GACF,yBAAxBkd,EAASpnB,KAAKkK,GACvB2kK,EAAK5tJ,MAAQ,IAAIgF,WAAW/b,GAE5B2kK,EAAK5tJ,MAAQ/W,EAGf2kK,EAAKW,QAAU,EACfX,EAAKY,SAAWZ,EAAK5tJ,MAAMljB,OAE3B,EAAG,CAkBD,GAjBuB,IAAnB8wK,EAAKC,YACPD,EAAKz2E,OAAS,IAAI81E,EAAMwB,KAAKpB,GAC7BO,EAAKc,SAAW,EAChBd,EAAKC,UAAYR,IAGnBp5J,EAASi7J,EAAaO,QAAQ7B,EAAMpyH,EAAEu0H,eAEvBv0H,EAAEy0H,aAAejC,IAC9B/5J,EAASi7J,EAAaM,qBAAqB7vK,KAAKiuK,KAAMI,IAGpD/5J,IAAWunC,EAAE00H,cAAiC,IAAlBL,IAC9B57J,EAASunC,EAAE8zH,KACXO,GAAgB,GAGd57J,IAAWunC,EAAE20H,cAAgBl8J,IAAWunC,EAAE8zH,KAG5C,OAFA3vK,KAAKgvK,MAAM16J,GACXtU,KAAK+tK,OAAQ,GACN,EAGLE,EAAKc,WACgB,IAAnBd,EAAKC,WAAmB55J,IAAWunC,EAAE20H,eAAmC,IAAlBvC,EAAKY,UAAmBF,IAAU9yH,EAAEs0H,UAAYxB,IAAU9yH,EAAE40H,gBAE5F,WAApBzwK,KAAKgB,QAAQ+3C,IAEfi3H,EAAgBzC,EAAQmD,WAAWzC,EAAKz2E,OAAQy2E,EAAKc,UAErDrJ,EAAOuI,EAAKc,SAAWiB,EACvBC,EAAU1C,EAAQoD,WAAW1C,EAAKz2E,OAAQw4E,GAG1C/B,EAAKc,SAAWrJ,EAChBuI,EAAKC,UAAYR,EAAYhI,EACzBA,GAAQ4H,EAAMsD,SAAS3C,EAAKz2E,OAAQy2E,EAAKz2E,OAAQw4E,EAAetK,EAAM,GAE1E1lK,KAAKivK,OAAOgB,IAGZjwK,KAAKivK,OAAO3B,EAAM6B,UAAUlB,EAAKz2E,OAAQy2E,EAAKc,aAY9B,IAAlBd,EAAKY,UAAqC,IAAnBZ,EAAKC,YAC9BgC,GAAgB,EAGpB,QAAUjC,EAAKY,SAAW,GAAwB,IAAnBZ,EAAKC,YAAoB55J,IAAWunC,EAAE20H,cAOrE,OALIl8J,IAAWunC,EAAE20H,eACf7B,EAAQ9yH,EAAEs0H,UAIRxB,IAAU9yH,EAAEs0H,UACd77J,EAASi7J,EAAasB,WAAW7wK,KAAKiuK,MACtCjuK,KAAKgvK,MAAM16J,GACXtU,KAAK+tK,OAAQ,EACNz5J,IAAWunC,EAAE8zH,MAIlBhB,IAAU9yH,EAAE40H,eACdzwK,KAAKgvK,MAAMnzH,EAAE8zH,MACb1B,EAAKC,UAAY,GACV,EAIX,EAYAuB,EAAQ3xK,UAAUmxK,OAAS,SAAU5pI,GACnCrlC,KAAKguK,OAAO9sK,KAAKmkC,EACnB,EAaAoqI,EAAQ3xK,UAAUkxK,MAAQ,SAAU16J,GAE9BA,IAAWunC,EAAE8zH,OACS,WAApB3vK,KAAKgB,QAAQ+3C,GAGf/4C,KAAKH,OAASG,KAAKguK,OAAO90J,KAAK,IAE/BlZ,KAAKH,OAASytK,EAAM+B,cAAcrvK,KAAKguK,SAG3ChuK,KAAKguK,OAAS,GACdhuK,KAAKoD,IAAMkR,EACXtU,KAAKguB,IAAMhuB,KAAKiuK,KAAKjgJ,GACvB,EA+EAo1F,EAAQqsD,QAAUA,EAClBrsD,EAAQ0sD,QAAUA,EAClB1sD,EAAQpoE,WAnBR,SAAoB36B,EAAOrf,GAGzB,OAFAA,EAAUA,GAAW,CAAC,GACdyrI,KAAM,EACPqjC,EAAQzvJ,EAAOrf,EACxB,EAgBAoiH,EAAQ0tD,OAAUhB,8BCnalB,IAAIiB,EAAmC,oBAAf1rJ,YACgB,oBAAhBqN,aACe,oBAAf44B,WAExB,SAAS0lH,EAAKpgJ,EAAKlzB,GACjB,OAAOF,OAAOM,UAAUwC,eAAelB,KAAKwxB,EAAKlzB,EACnD,CAEA0lH,EAAQjgG,OAAS,SAAUyN,GAEzB,IADA,IAAI0mI,EAAUv0I,MAAMjlB,UAAU0D,MAAMpC,KAAKa,UAAW,GAC7Cq3J,EAAQn6J,QAAQ,CACrB,IAAI8xD,EAASqoG,EAAQlyD,QACrB,GAAKn2C,EAAL,CAEA,GAAsB,iBAAXA,EACT,MAAM,IAAInyD,UAAUmyD,EAAS,sBAG/B,IAAK,IAAIrwD,KAAKqwD,EACR+hH,EAAK/hH,EAAQrwD,KACfgyB,EAAIhyB,GAAKqwD,EAAOrwD,GARK,CAW3B,CAEA,OAAOgyB,CACT,EAIAwyF,EAAQ+rD,UAAY,SAAU1qH,EAAKtwB,GACjC,OAAIswB,EAAItnD,SAAWg3B,EAAeswB,EAC9BA,EAAIiF,SAAmBjF,EAAIiF,SAAS,EAAGv1B,IAC3CswB,EAAItnD,OAASg3B,EACNswB,EACT,EAGA,IAAIwsH,EAAU,CACZL,SAAU,SAAUruI,EAAM/iB,EAAK0xJ,EAAUnrJ,EAAKorJ,GAC5C,GAAI3xJ,EAAIkqC,UAAYnnB,EAAKmnB,SACvBnnB,EAAK7K,IAAIlY,EAAIkqC,SAASwnH,EAAUA,EAAWnrJ,GAAMorJ,QAInD,IAAK,IAAIj0K,EAAI,EAAGA,EAAI6oB,EAAK7oB,IACvBqlC,EAAK4uI,EAAYj0K,GAAKsiB,EAAI0xJ,EAAWh0K,EAEzC,EAEAmyK,cAAe,SAAUrB,GACvB,IAAI9wK,EAAGkE,EAAG2kB,EAAKyE,EAAK6a,EAAOxlC,EAI3B,IADAkmB,EAAM,EACD7oB,EAAI,EAAGkE,EAAI4sK,EAAO7wK,OAAQD,EAAIkE,EAAGlE,IACpC6oB,GAAOioJ,EAAO9wK,GAAGC,OAMnB,IAFA0C,EAAS,IAAIwlB,WAAWU,GACxByE,EAAM,EACDttB,EAAI,EAAGkE,EAAI4sK,EAAO7wK,OAAQD,EAAIkE,EAAGlE,IACpCmoC,EAAQ2oI,EAAO9wK,GACf2C,EAAO63B,IAAI2N,EAAO7a,GAClBA,GAAO6a,EAAMloC,OAGf,OAAO0C,CACT,GAGEuxK,EAAY,CACdR,SAAU,SAAUruI,EAAM/iB,EAAK0xJ,EAAUnrJ,EAAKorJ,GAC5C,IAAK,IAAIj0K,EAAI,EAAGA,EAAI6oB,EAAK7oB,IACvBqlC,EAAK4uI,EAAYj0K,GAAKsiB,EAAI0xJ,EAAWh0K,EAEzC,EAEAmyK,cAAe,SAAUrB,GACvB,MAAO,GAAG99J,OAAOhQ,MAAM,GAAI8tK,EAC7B,GAMF5qD,EAAQiuD,SAAW,SAAUp+H,GACvBA,GACFmwE,EAAQ0rD,KAAQzpJ,WAChB+9F,EAAQkuD,MAAQ5+I,YAChB0wF,EAAQmuD,MAAQjmH,WAChB83D,EAAQjgG,OAAOigG,EAAS6tD,KAExB7tD,EAAQ0rD,KAAQ/rJ,MAChBqgG,EAAQkuD,MAAQvuJ,MAChBqgG,EAAQmuD,MAAQxuJ,MAChBqgG,EAAQjgG,OAAOigG,EAASguD,GAE5B,EAEAhuD,EAAQiuD,SAASN,iCCpGjB,IAAIzD,EAAQ,EAAQ,OAQhBkE,GAAe,EACfC,GAAmB,EAEvB,IAAM9qJ,OAAOC,aAAa1mB,MAAM,KAAM,CAAE,GAAM,CAAE,MAAO+iB,GAAMuuJ,GAAe,CAAO,CACnF,IAAM7qJ,OAAOC,aAAa1mB,MAAM,KAAM,IAAImlB,WAAW,GAAK,CAAE,MAAOpC,GAAMwuJ,GAAmB,CAAO,CAOnG,IADA,IAAIC,EAAW,IAAIpE,EAAMwB,KAAK,KACrB91J,EAAI,EAAGA,EAAI,IAAKA,IACvB04J,EAAS14J,GAAMA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAI,EA4D5F,SAASk2J,EAAczqH,EAAK1+B,GAI1B,GAAIA,EAAM,QACH0+B,EAAIiF,UAAY+nH,IAAuBhtH,EAAIiF,UAAY8nH,GAC1D,OAAO7qJ,OAAOC,aAAa1mB,MAAM,KAAMotK,EAAM6B,UAAU1qH,EAAK1+B,IAKhE,IADA,IAAIlmB,EAAS,GACJ3C,EAAI,EAAGA,EAAI6oB,EAAK7oB,IACvB2C,GAAU8mB,OAAOC,aAAa69B,EAAIvnD,IAEpC,OAAO2C,CACT,CAzEA6xK,EAAS,KAAOA,EAAS,KAAO,EAIhCtuD,EAAQkrD,WAAa,SAAUrnJ,GAC7B,IAAIw9B,EAAK5I,EAAGg6B,EAAI87F,EAAOz0K,EAAG00K,EAAU3qJ,EAAI9pB,OAAQ00K,EAAU,EAG1D,IAAKF,EAAQ,EAAGA,EAAQC,EAASD,IAEV,QAAZ,OADT91H,EAAI50B,EAAI3B,WAAWqsJ,MACaA,EAAQ,EAAIC,GAEpB,QAAZ,OADV/7F,EAAK5uD,EAAI3B,WAAWqsJ,EAAQ,OAE1B91H,EAAI,OAAYA,EAAI,OAAW,KAAOg6B,EAAK,OAC3C87F,KAGJE,GAAWh2H,EAAI,IAAO,EAAIA,EAAI,KAAQ,EAAIA,EAAI,MAAU,EAAI,EAO9D,IAHA4I,EAAM,IAAI6oH,EAAMwB,KAAK+C,GAGhB30K,EAAI,EAAGy0K,EAAQ,EAAGz0K,EAAI20K,EAASF,IAEb,QAAZ,OADT91H,EAAI50B,EAAI3B,WAAWqsJ,MACaA,EAAQ,EAAIC,GAEpB,QAAZ,OADV/7F,EAAK5uD,EAAI3B,WAAWqsJ,EAAQ,OAE1B91H,EAAI,OAAYA,EAAI,OAAW,KAAOg6B,EAAK,OAC3C87F,KAGA91H,EAAI,IAEN4I,EAAIvnD,KAAO2+C,EACFA,EAAI,MAEb4I,EAAIvnD,KAAO,IAAQ2+C,IAAM,EACzB4I,EAAIvnD,KAAO,IAAY,GAAJ2+C,GACVA,EAAI,OAEb4I,EAAIvnD,KAAO,IAAQ2+C,IAAM,GACzB4I,EAAIvnD,KAAO,IAAQ2+C,IAAM,EAAI,GAC7B4I,EAAIvnD,KAAO,IAAY,GAAJ2+C,IAGnB4I,EAAIvnD,KAAO,IAAQ2+C,IAAM,GACzB4I,EAAIvnD,KAAO,IAAQ2+C,IAAM,GAAK,GAC9B4I,EAAIvnD,KAAO,IAAQ2+C,IAAM,EAAI,GAC7B4I,EAAIvnD,KAAO,IAAY,GAAJ2+C,GAIvB,OAAO4I,CACT,EAsBA2+D,EAAQ8rD,cAAgB,SAAUzqH,GAChC,OAAOyqH,EAAczqH,EAAKA,EAAItnD,OAChC,EAIAimH,EAAQitD,cAAgB,SAAUppJ,GAEhC,IADA,IAAIw9B,EAAM,IAAI6oH,EAAMwB,KAAK7nJ,EAAI9pB,QACpBD,EAAI,EAAG6oB,EAAM0+B,EAAItnD,OAAQD,EAAI6oB,EAAK7oB,IACzCunD,EAAIvnD,GAAK+pB,EAAI3B,WAAWpoB,GAE1B,OAAOunD,CACT,EAIA2+D,EAAQutD,WAAa,SAAUlsH,EAAKpjC,GAClC,IAAInkB,EAAG64C,EAAK8F,EAAGi2H,EACX/rJ,EAAM1E,GAAOojC,EAAItnD,OAKjB40K,EAAW,IAAIhvJ,MAAY,EAANgD,GAEzB,IAAKgwB,EAAM,EAAG74C,EAAI,EAAGA,EAAI6oB,GAGvB,IAFA81B,EAAI4I,EAAIvnD,MAEA,IAAQ60K,EAASh8H,KAAS8F,OAIlC,IAFAi2H,EAAQJ,EAAS71H,IAEL,EAAKk2H,EAASh8H,KAAS,MAAQ74C,GAAK40K,EAAQ,MAAxD,CAKA,IAFAj2H,GAAe,IAAVi2H,EAAc,GAAiB,IAAVA,EAAc,GAAO,EAExCA,EAAQ,GAAK50K,EAAI6oB,GACtB81B,EAAKA,GAAK,EAAiB,GAAX4I,EAAIvnD,KACpB40K,IAIEA,EAAQ,EAAKC,EAASh8H,KAAS,MAE/B8F,EAAI,MACNk2H,EAASh8H,KAAS8F,GAElBA,GAAK,MACLk2H,EAASh8H,KAAS,MAAW8F,GAAK,GAAM,KACxCk2H,EAASh8H,KAAS,MAAc,KAAJ8F,EAlBuC,CAsBvE,OAAOqzH,EAAc6C,EAAUh8H,EACjC,EASAqtE,EAAQstD,WAAa,SAAUjsH,EAAKpjC,GAClC,IAAImJ,EAOJ,KALAnJ,EAAMA,GAAOojC,EAAItnD,QACPsnD,EAAItnD,SAAUkkB,EAAMojC,EAAItnD,QAGlCqtB,EAAMnJ,EAAM,EACLmJ,GAAO,GAA2B,MAAV,IAAXi6B,EAAIj6B,KAAyBA,IAIjD,OAAIA,EAAM,GAIE,IAARA,EAJkBnJ,EAMdmJ,EAAMknJ,EAASjtH,EAAIj6B,IAAQnJ,EAAOmJ,EAAMnJ,CAClD,0BCxIA8hG,EAAOC,QAzBP,SAAiB4uD,EAAOvtH,EAAK1+B,EAAKyE,GAKhC,IAJA,IAAIynJ,EAAc,MAARD,EACNE,EAAOF,IAAU,GAAM,MACvB1uJ,EAAI,EAEO,IAARyC,GAAW,CAKhBA,GADAzC,EAAIyC,EAAM,IAAO,IAAOA,EAGxB,GAEEmsJ,EAAMA,GADND,EAAMA,EAAKxtH,EAAIj6B,KAAS,GACR,UACPlH,GAEX2uJ,GAAM,MACNC,GAAM,KACR,CAEA,OAAQD,EAAMC,GAAM,EACtB,0BC1BA/uD,EAAOC,QAAU,CAGfgtD,WAAoB,EACpB+B,gBAAoB,EACpB1B,aAAoB,EACpB2B,aAAoB,EACpBjC,SAAoB,EACpBkC,QAAoB,EACpBC,QAAoB,EAKpB3C,KAAoB,EACpBa,aAAoB,EACpBF,YAAoB,EACpBiC,SAAoB,EACpBC,gBAAoB,EACpBC,cAAoB,EAEpBlC,aAAoB,EAIpBmC,iBAA0B,EAC1BC,aAA0B,EAC1BC,mBAA0B,EAC1BC,uBAA0B,EAG1BC,WAA0B,EAC1BC,eAA0B,EAC1BC,MAA0B,EAC1BC,QAA0B,EAC1BC,mBAA0B,EAG1BC,SAA0B,EAC1BC,OAA0B,EAE1BC,UAA0B,EAG1BC,WAA0B,2BCxB5B,IAAIC,EAfJ,WAGE,IAFA,IAAI13H,EAAG0I,EAAQ,GAENjhC,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5Bu4B,EAAIv4B,EACJ,IAAK,IAAIyB,EAAI,EAAGA,EAAI,EAAGA,IACrB82B,EAAU,EAAJA,EAAU,WAAcA,IAAM,EAAOA,IAAM,EAEnD0I,EAAMjhC,GAAKu4B,CACb,CAEA,OAAO0I,CACT,CAGeyyD,GAiBfmM,EAAOC,QAdP,SAAevjE,EAAK4E,EAAK1+B,EAAKyE,GAC5B,IAAIpH,EAAImwJ,EACJrqH,EAAM1+B,EAAMzE,EAEhB85B,IAAQ,EAER,IAAK,IAAI3iD,EAAIstB,EAAKttB,EAAIgsD,EAAKhsD,IACzB2iD,EAAOA,IAAQ,EAAKz8B,EAAmB,KAAhBy8B,EAAM4E,EAAIvnD,KAGnC,OAAQ2iD,CACV,gCClCA,IAkgCI2zH,EAlgCAlG,EAAU,EAAQ,OAClBmG,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAClBC,EAAU,EAAQ,OAClB3lJ,EAAU,EAAQ,OAuBlBwkJ,GAAmB,EAwDnBoB,EAAY,IACZC,EAAgB,IAQhBC,EAAa,IACbC,EAAa,IACbC,EAAe,IASnB,SAAS5wK,EAAI6qK,EAAMgG,GAEjB,OADAhG,EAAKjgJ,IAAMA,EAAIimJ,GACRA,CACT,CAEA,SAASC,EAAKh6J,GACZ,OAAQ,GAAO,IAAM,EAAM,EAAI,EAAI,EACrC,CAEA,SAASi6J,EAAK1vH,GAA6B,IAAtB,IAAI1+B,EAAM0+B,EAAItnD,SAAiB4oB,GAAO,GAAK0+B,EAAI1+B,GAAO,CAAK,CAShF,SAASquJ,EAAcnG,GACrB,IAAI5qJ,EAAI4qJ,EAAKtgK,MAGToY,EAAM1C,EAAEgxJ,QACRtuJ,EAAMkoJ,EAAKC,YACbnoJ,EAAMkoJ,EAAKC,WAED,IAARnoJ,IAEJunJ,EAAMsD,SAAS3C,EAAKz2E,OAAQn0E,EAAEixJ,YAAajxJ,EAAEkxJ,YAAaxuJ,EAAKkoJ,EAAKc,UACpEd,EAAKc,UAAYhpJ,EACjB1C,EAAEkxJ,aAAexuJ,EACjBkoJ,EAAKuG,WAAazuJ,EAClBkoJ,EAAKC,WAAanoJ,EAClB1C,EAAEgxJ,SAAWtuJ,EACK,IAAd1C,EAAEgxJ,UACJhxJ,EAAEkxJ,YAAc,GAEpB,CAGA,SAASE,EAAiBpxJ,EAAGoH,GAC3BgpJ,EAAMiB,gBAAgBrxJ,EAAIA,EAAEsxJ,aAAe,EAAItxJ,EAAEsxJ,aAAe,EAAItxJ,EAAEuxJ,SAAWvxJ,EAAEsxJ,YAAalqJ,GAChGpH,EAAEsxJ,YAActxJ,EAAEuxJ,SAClBR,EAAc/wJ,EAAE4qJ,KAClB,CAGA,SAAS4G,EAASxxJ,EAAG9d,GACnB8d,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAa9uK,CAC/B,CAQA,SAASuvK,EAAYzxJ,EAAG9d,GAGtB8d,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAc9uK,IAAM,EAAK,IACzC8d,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAiB,IAAJ9uK,CAC/B,CA4CA,SAASwvK,EAAc1xJ,EAAG2xJ,GACxB,IAEItsJ,EACA3C,EAHAkvJ,EAAe5xJ,EAAE6xJ,iBACjBC,EAAO9xJ,EAAEuxJ,SAGTQ,EAAW/xJ,EAAEgyJ,YACbC,EAAajyJ,EAAEiyJ,WACfroH,EAAS5pC,EAAEuxJ,SAAYvxJ,EAAEkyJ,OAAS1B,EAClCxwJ,EAAEuxJ,UAAYvxJ,EAAEkyJ,OAAS1B,GAAiB,EAE1C2B,EAAOnyJ,EAAExP,OAET4hK,EAAQpyJ,EAAEqyJ,OACVnoI,EAAQlqB,EAAEkqB,KAMVooI,EAAStyJ,EAAEuxJ,SAAWhB,EACtBgC,EAAaJ,EAAKL,EAAOC,EAAW,GACpCS,EAAaL,EAAKL,EAAOC,GAQzB/xJ,EAAEgyJ,aAAehyJ,EAAEyyJ,aACrBb,IAAiB,GAKfK,EAAajyJ,EAAE0yJ,YAAaT,EAAajyJ,EAAE0yJ,WAI/C,GAaE,GAAIP,GAXJ9sJ,EAAQssJ,GAWSI,KAAkBS,GAC/BL,EAAK9sJ,EAAQ0sJ,EAAW,KAAOQ,GAC/BJ,EAAK9sJ,KAA0B8sJ,EAAKL,IACpCK,IAAO9sJ,KAAwB8sJ,EAAKL,EAAO,GAH/C,CAaAA,GAAQ,EACRzsJ,IAMA,UAES8sJ,IAAOL,KAAUK,IAAO9sJ,IAAU8sJ,IAAOL,KAAUK,IAAO9sJ,IAC1D8sJ,IAAOL,KAAUK,IAAO9sJ,IAAU8sJ,IAAOL,KAAUK,IAAO9sJ,IAC1D8sJ,IAAOL,KAAUK,IAAO9sJ,IAAU8sJ,IAAOL,KAAUK,IAAO9sJ,IAC1D8sJ,IAAOL,KAAUK,IAAO9sJ,IAAU8sJ,IAAOL,KAAUK,IAAO9sJ,IAC1DysJ,EAAOQ,GAOhB,GAHA5vJ,EAAM6tJ,GAAa+B,EAASR,GAC5BA,EAAOQ,EAAS/B,EAEZ7tJ,EAAMqvJ,EAAU,CAGlB,GAFA/xJ,EAAE2yJ,YAAchB,EAChBI,EAAWrvJ,EACPA,GAAOuvJ,EACT,MAEFM,EAAaJ,EAAKL,EAAOC,EAAW,GACpCS,EAAaL,EAAKL,EAAOC,EAC3B,CApCA,SAqCQJ,EAAYznI,EAAKynI,EAAYS,IAAUxoH,GAA4B,KAAjBgoH,GAE5D,OAAIG,GAAY/xJ,EAAE0yJ,UACTX,EAEF/xJ,EAAE0yJ,SACX,CAaA,SAASE,EAAY5yJ,GACnB,IACIzkB,EAAG0kB,EAAG63B,EAAG+6H,EAAMjvJ,EArJHgnJ,EAAMxpH,EAAKwE,EAAO90B,EAC9BpO,EAmJAowJ,EAAU9yJ,EAAEkyJ,OAKhB,EAAG,CAqBD,GApBAW,EAAO7yJ,EAAE+yJ,YAAc/yJ,EAAE0yJ,UAAY1yJ,EAAEuxJ,SAoBnCvxJ,EAAEuxJ,UAAYuB,GAAWA,EAAUtC,GAAgB,CAErDvG,EAAMsD,SAASvtJ,EAAExP,OAAQwP,EAAExP,OAAQsiK,EAASA,EAAS,GACrD9yJ,EAAE2yJ,aAAeG,EACjB9yJ,EAAEuxJ,UAAYuB,EAEd9yJ,EAAEsxJ,aAAewB,EAUjBv3K,EADA0kB,EAAID,EAAEgzJ,UAEN,GACEl7H,EAAI93B,EAAE8tB,OAAOvyC,GACbykB,EAAE8tB,KAAKvyC,GAAMu8C,GAAKg7H,EAAUh7H,EAAIg7H,EAAU,UACjC7yJ,GAGX1kB,EADA0kB,EAAI6yJ,EAEJ,GACEh7H,EAAI93B,EAAEkqB,OAAO3uC,GACbykB,EAAEkqB,KAAK3uC,GAAMu8C,GAAKg7H,EAAUh7H,EAAIg7H,EAAU,UAIjC7yJ,GAEX4yJ,GAAQC,CACV,CACA,GAAwB,IAApB9yJ,EAAE4qJ,KAAKY,SACT,MAmBF,GApOcZ,EAgOD5qJ,EAAE4qJ,KAhOKxpH,EAgOCphC,EAAExP,OAhOEo1C,EAgOM5lC,EAAEuxJ,SAAWvxJ,EAAE0yJ,UAhOd5hJ,EAgOyB+hJ,EA/NvDnwJ,YAAMkoJ,EAAKY,UAEL16I,IAAQpO,EAAMoO,GA6NtB7Q,EA5NU,IAARyC,EAAoB,GAExBkoJ,EAAKY,UAAY9oJ,EAGjBunJ,EAAMsD,SAASnsH,EAAKwpH,EAAK5tJ,MAAO4tJ,EAAKW,QAAS7oJ,EAAKkjC,GAC3B,IAApBglH,EAAKtgK,MAAMoqF,KACbk2E,EAAK+D,MAAQ0B,EAAQzF,EAAK+D,MAAOvtH,EAAK1+B,EAAKkjC,GAGhB,IAApBglH,EAAKtgK,MAAMoqF,OAClBk2E,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAOvtH,EAAK1+B,EAAKkjC,IAG3CglH,EAAKW,SAAW7oJ,EAChBkoJ,EAAKqI,UAAYvwJ,EAEVA,GA4ML1C,EAAE0yJ,WAAazyJ,EAGXD,EAAE0yJ,UAAY1yJ,EAAEoU,QAjUR,EA0UV,IARAxQ,EAAM5D,EAAEuxJ,SAAWvxJ,EAAEoU,OACrBpU,EAAEkzJ,MAAQlzJ,EAAExP,OAAOoT,GAGnB5D,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOoT,EAAM,IAAM5D,EAAEozJ,UAIvDpzJ,EAAEoU,SAEPpU,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOoT,EA5UxC,EA4U0D,IAAM5D,EAAEozJ,UAE1EpzJ,EAAEkqB,KAAKtmB,EAAM5D,EAAEqyJ,QAAUryJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAClClzJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAAStvJ,EAClBA,IACA5D,EAAEoU,WACEpU,EAAE0yJ,UAAY1yJ,EAAEoU,OAlVZ,MA2Vd,OAASpU,EAAE0yJ,UAAYlC,GAAqC,IAApBxwJ,EAAE4qJ,KAAKY,SAsCjD,CA6GA,SAAS6H,EAAarzJ,EAAGmqE,GAIvB,IAHA,IAAImpF,EACAC,IAEK,CAMP,GAAIvzJ,EAAE0yJ,UAAYlC,EAAe,CAE/B,GADAoC,EAAY5yJ,GACRA,EAAE0yJ,UAAYlC,GAjkBF,IAikBmBrmF,EACjC,OA7egB,EA+elB,GAAoB,IAAhBnqE,EAAE0yJ,UACJ,KAEJ,CAyBA,GApBAY,EAAY,EACRtzJ,EAAE0yJ,WAtgBM,IAwgBV1yJ,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOwP,EAAEuxJ,SAxgBxC,EAwgB+D,IAAMvxJ,EAAEozJ,UACjFE,EAAYtzJ,EAAEkqB,KAAKlqB,EAAEuxJ,SAAWvxJ,EAAEqyJ,QAAUryJ,EAAE8tB,KAAK9tB,EAAEkzJ,OACrDlzJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAASlzJ,EAAEuxJ,UAOJ,IAAd+B,GAA4BtzJ,EAAEuxJ,SAAW+B,GAAetzJ,EAAEkyJ,OAAS1B,IAKrExwJ,EAAEwzJ,aAAe9B,EAAc1xJ,EAAGszJ,IAGhCtzJ,EAAEwzJ,cAzhBM,EAqiBV,GAPAD,EAASnD,EAAMqD,UAAUzzJ,EAAGA,EAAEuxJ,SAAWvxJ,EAAE2yJ,YAAa3yJ,EAAEwzJ,aA9hBhD,GAgiBVxzJ,EAAE0yJ,WAAa1yJ,EAAEwzJ,aAKbxzJ,EAAEwzJ,cAAgBxzJ,EAAE0zJ,gBAAuC1zJ,EAAE0yJ,WAriBvD,EAqiB+E,CACvF1yJ,EAAEwzJ,eACF,GACExzJ,EAAEuxJ,WAEFvxJ,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOwP,EAAEuxJ,SA1iB5C,EA0iBmE,IAAMvxJ,EAAEozJ,UACjFE,EAAYtzJ,EAAEkqB,KAAKlqB,EAAEuxJ,SAAWvxJ,EAAEqyJ,QAAUryJ,EAAE8tB,KAAK9tB,EAAEkzJ,OACrDlzJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAASlzJ,EAAEuxJ,eAKQ,KAAnBvxJ,EAAEwzJ,cACbxzJ,EAAEuxJ,UACJ,MAEEvxJ,EAAEuxJ,UAAYvxJ,EAAEwzJ,aAChBxzJ,EAAEwzJ,aAAe,EACjBxzJ,EAAEkzJ,MAAQlzJ,EAAExP,OAAOwP,EAAEuxJ,UAErBvxJ,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOwP,EAAEuxJ,SAAW,IAAMvxJ,EAAEozJ,eAavEG,EAASnD,EAAMqD,UAAUzzJ,EAAG,EAAGA,EAAExP,OAAOwP,EAAEuxJ,WAE1CvxJ,EAAE0yJ,YACF1yJ,EAAEuxJ,WAEJ,GAAIgC,IAEFnC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WACT,OAjkBgB,CAqkBtB,CAEA,OADA7qJ,EAAEoU,OAAWpU,EAAEuxJ,SAAW,EAAmBvxJ,EAAEuxJ,SAAWoC,EAvpBtC,IAwpBhBxpF,GAEFinF,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,UAxkBS,EACA,GA6kBlB7qJ,EAAE4zJ,WAEJxC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WAnlBS,EACA,CAwlBxB,CAOA,SAASgJ,EAAa7zJ,EAAGmqE,GAOvB,IANA,IAAImpF,EACAC,EAEAO,IAGK,CAMP,GAAI9zJ,EAAE0yJ,UAAYlC,EAAe,CAE/B,GADAoC,EAAY5yJ,GACRA,EAAE0yJ,UAAYlC,GApsBF,IAosBmBrmF,EACjC,OAhnBgB,EAknBlB,GAAoB,IAAhBnqE,EAAE0yJ,UAAmB,KAC3B,CAyCA,GApCAY,EAAY,EACRtzJ,EAAE0yJ,WAvoBM,IAyoBV1yJ,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOwP,EAAEuxJ,SAzoBxC,EAyoB+D,IAAMvxJ,EAAEozJ,UACjFE,EAAYtzJ,EAAEkqB,KAAKlqB,EAAEuxJ,SAAWvxJ,EAAEqyJ,QAAUryJ,EAAE8tB,KAAK9tB,EAAEkzJ,OACrDlzJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAASlzJ,EAAEuxJ,UAMtBvxJ,EAAEgyJ,YAAchyJ,EAAEwzJ,aAClBxzJ,EAAE+zJ,WAAa/zJ,EAAE2yJ,YACjB3yJ,EAAEwzJ,aAAeG,EAEC,IAAdL,GAA0BtzJ,EAAEgyJ,YAAchyJ,EAAE0zJ,gBAC5C1zJ,EAAEuxJ,SAAW+B,GAActzJ,EAAEkyJ,OAAS1B,IAKxCxwJ,EAAEwzJ,aAAe9B,EAAc1xJ,EAAGszJ,GAG9BtzJ,EAAEwzJ,cAAgB,IAvsBA,IAwsBlBxzJ,EAAEwqJ,UA/pBI,IA+pBwBxqJ,EAAEwzJ,cAA8BxzJ,EAAEuxJ,SAAWvxJ,EAAE2yJ,YAAc,QAK7F3yJ,EAAEwzJ,aAAeG,IAMjB3zJ,EAAEgyJ,aA1qBM,GA0qBsBhyJ,EAAEwzJ,cAAgBxzJ,EAAEgyJ,YAAa,CACjE8B,EAAa9zJ,EAAEuxJ,SAAWvxJ,EAAE0yJ,UA3qBlB,EAkrBVa,EAASnD,EAAMqD,UAAUzzJ,EAAGA,EAAEuxJ,SAAW,EAAIvxJ,EAAE+zJ,WAAY/zJ,EAAEgyJ,YAlrBnD,GAwrBVhyJ,EAAE0yJ,WAAa1yJ,EAAEgyJ,YAAc,EAC/BhyJ,EAAEgyJ,aAAe,EACjB,KACQhyJ,EAAEuxJ,UAAYuC,IAElB9zJ,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOwP,EAAEuxJ,SA7rB5C,EA6rBmE,IAAMvxJ,EAAEozJ,UACjFE,EAAYtzJ,EAAEkqB,KAAKlqB,EAAEuxJ,SAAWvxJ,EAAEqyJ,QAAUryJ,EAAE8tB,KAAK9tB,EAAEkzJ,OACrDlzJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAASlzJ,EAAEuxJ,gBAGK,KAAlBvxJ,EAAEgyJ,aAKb,GAJAhyJ,EAAEg0J,gBAAkB,EACpBh0J,EAAEwzJ,aAAeG,EACjB3zJ,EAAEuxJ,WAEEgC,IAEFnC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WACT,OA7rBc,CAksBpB,MAAO,GAAI7qJ,EAAEg0J,iBAgBX,IATAT,EAASnD,EAAMqD,UAAUzzJ,EAAG,EAAGA,EAAExP,OAAOwP,EAAEuxJ,SAAW,MAInDH,EAAiBpxJ,GAAG,GAGtBA,EAAEuxJ,WACFvxJ,EAAE0yJ,YACuB,IAArB1yJ,EAAE4qJ,KAAKC,UACT,OAntBgB,OAytBlB7qJ,EAAEg0J,gBAAkB,EACpBh0J,EAAEuxJ,WACFvxJ,EAAE0yJ,WAEN,CAUA,OARI1yJ,EAAEg0J,kBAGJT,EAASnD,EAAMqD,UAAUzzJ,EAAG,EAAGA,EAAExP,OAAOwP,EAAEuxJ,SAAW,IAErDvxJ,EAAEg0J,gBAAkB,GAEtBh0J,EAAEoU,OAASpU,EAAEuxJ,SAAWoC,EAAgB3zJ,EAAEuxJ,SAAWoC,EAvzBjC,IAwzBhBxpF,GAEFinF,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,UAxuBS,EACA,GA6uBlB7qJ,EAAE4zJ,WAEJxC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WAnvBS,EACA,CAyvBxB,CAgKA,SAASoJ,EAAOC,EAAaC,EAAUC,EAAaC,EAAWthC,GAC7Dp2I,KAAKu3K,YAAcA,EACnBv3K,KAAKw3K,SAAWA,EAChBx3K,KAAKy3K,YAAcA,EACnBz3K,KAAK03K,UAAYA,EACjB13K,KAAKo2I,KAAOA,CACd,CA8CA,SAASuhC,IACP33K,KAAKiuK,KAAO,KACZjuK,KAAKsU,OAAS,EACdtU,KAAKs0K,YAAc,KACnBt0K,KAAK43K,iBAAmB,EACxB53K,KAAKu0K,YAAc,EACnBv0K,KAAKq0K,QAAU,EACfr0K,KAAK+3F,KAAO,EACZ/3F,KAAK63K,OAAS,KACd73K,KAAK83K,QAAU,EACf93K,KAAK2T,OAjgCW,EAkgChB3T,KAAK+3K,YAAc,EAEnB/3K,KAAKu1K,OAAS,EACdv1K,KAAKg4K,OAAS,EACdh4K,KAAK01K,OAAS,EAEd11K,KAAK6T,OAAS,KAQd7T,KAAKo2K,YAAc,EAKnBp2K,KAAKutC,KAAO,KAMZvtC,KAAKmxC,KAAO,KAEZnxC,KAAKu2K,MAAQ,EACbv2K,KAAKq2K,UAAY,EACjBr2K,KAAKi4K,UAAY,EACjBj4K,KAAKy2K,UAAY,EAEjBz2K,KAAKw2K,WAAa,EAOlBx2K,KAAK20K,YAAc,EAKnB30K,KAAK62K,aAAe,EACpB72K,KAAKo3K,WAAa,EAClBp3K,KAAKq3K,gBAAkB,EACvBr3K,KAAK40K,SAAW,EAChB50K,KAAKg2K,YAAc,EACnBh2K,KAAK+1K,UAAY,EAEjB/1K,KAAKq1K,YAAc,EAKnBr1K,KAAKk1K,iBAAmB,EAMxBl1K,KAAK+2K,eAAiB,EAYtB/2K,KAAKkkD,MAAQ,EACblkD,KAAK6tK,SAAW,EAEhB7tK,KAAK81K,WAAa,EAGlB91K,KAAKs1K,WAAa,EAYlBt1K,KAAKk4K,UAAa,IAAI5K,EAAMgE,MAAM6G,MAClCn4K,KAAKo4K,UAAa,IAAI9K,EAAMgE,MAAM,KAClCtxK,KAAKq4K,QAAa,IAAI/K,EAAMgE,MAAM,IAClC6C,EAAKn0K,KAAKk4K,WACV/D,EAAKn0K,KAAKo4K,WACVjE,EAAKn0K,KAAKq4K,SAEVr4K,KAAKs4K,OAAW,KAChBt4K,KAAKu4K,OAAW,KAChBv4K,KAAKw4K,QAAW,KAGhBx4K,KAAKy4K,SAAW,IAAInL,EAAMgE,MAAMoH,IAIhC14K,KAAK24K,KAAO,IAAIrL,EAAMgE,MAAM,KAC5B6C,EAAKn0K,KAAK24K,MAEV34K,KAAK44K,SAAW,EAChB54K,KAAK64K,SAAW,EAKhB74K,KAAK43C,MAAQ,IAAI01H,EAAMgE,MAAM,KAC7B6C,EAAKn0K,KAAK43C,OAIV53C,KAAK84K,MAAQ,EAEb94K,KAAK+4K,YAAc,EAoBnB/4K,KAAKi3K,SAAW,EAEhBj3K,KAAKg5K,MAAQ,EAMbh5K,KAAKi5K,QAAU,EACfj5K,KAAKk5K,WAAa,EAClBl5K,KAAK8kK,QAAU,EACf9kK,KAAKy3B,OAAS,EAGdz3B,KAAKm5K,OAAS,EAIdn5K,KAAKo5K,SAAW,CAalB,CAGA,SAASC,EAAiBpL,GACxB,IAAI5qJ,EAEJ,OAAK4qJ,GAASA,EAAKtgK,OAInBsgK,EAAKqI,SAAWrI,EAAKuG,UAAY,EACjCvG,EAAKqL,UAhsCqB,GAksC1Bj2J,EAAI4qJ,EAAKtgK,OACP0mK,QAAU,EACZhxJ,EAAEkxJ,YAAc,EAEZlxJ,EAAE00E,KAAO,IACX10E,EAAE00E,MAAQ10E,EAAE00E,MAGd10E,EAAE/O,OAAU+O,EAAE00E,KArqCC,GAqqCmBg8E,EAClC9F,EAAK+D,MAAoB,IAAX3uJ,EAAE00E,KACd,EAEA,EACF10E,EAAE00J,WAvvCkB,EAwvCpBtE,EAAM8F,SAASl2J,GA5uCK,GAwtCXjgB,EAAI6qK,EAAMuE,EAsBrB,CAGA,SAASgH,EAAavL,GACpB,IAlPe5qJ,EAkPXgsD,EAAMgqG,EAAiBpL,GAI3B,OAtvCoB,IAmvChB5+F,KAnPWhsD,EAoPL4qJ,EAAKtgK,OAnPbyoK,YAAc,EAAI/yJ,EAAEkyJ,OAGtBpB,EAAK9wJ,EAAE8tB,MAIP9tB,EAAE0zJ,eAAiBvD,EAAoBnwJ,EAAE6gC,OAAOszH,SAChDn0J,EAAEyyJ,WAAatC,EAAoBnwJ,EAAE6gC,OAAOqzH,YAC5Cl0J,EAAEiyJ,WAAa9B,EAAoBnwJ,EAAE6gC,OAAOuzH,YAC5Cp0J,EAAE6xJ,iBAAmB1B,EAAoBnwJ,EAAE6gC,OAAOwzH,UAElDr0J,EAAEuxJ,SAAW,EACbvxJ,EAAEsxJ,YAAc,EAChBtxJ,EAAE0yJ,UAAY,EACd1yJ,EAAEoU,OAAS,EACXpU,EAAEwzJ,aAAexzJ,EAAEgyJ,YAAc2B,EACjC3zJ,EAAEg0J,gBAAkB,EACpBh0J,EAAEkzJ,MAAQ,GAmOHlnG,CACT,CAWA,SAAS8+F,EAAaF,EAAM/pH,EAAOvwC,EAAQg6J,EAAYC,EAAUC,GAC/D,IAAKI,EACH,OAAOuE,EAET,IAAIz6E,EAAO,EAiBX,IAxwC0B,IAyvCtB7zC,IACFA,EAAQ,GAGNypH,EAAa,GACf51E,EAAO,EACP41E,GAAcA,GAGPA,EAAa,KACpB51E,EAAO,EACP41E,GAAc,IAIZC,EAAW,GAAKA,EAlvCF,GALF,IAuvCgCj6J,GAC9Cg6J,EAAa,GAAKA,EAAa,IAAMzpH,EAAQ,GAAKA,EAAQ,GAC1D2pH,EAAW,GAAKA,EApwCQ,EAqwCxB,OAAOzqK,EAAI6qK,EAAMuE,GAIA,IAAf7E,IACFA,EAAa,GAIf,IAAItqJ,EAAI,IAAIs0J,EA0CZ,OAxCA1J,EAAKtgK,MAAQ0V,EACbA,EAAE4qJ,KAAOA,EAET5qJ,EAAE00E,KAAOA,EACT10E,EAAEw0J,OAAS,KACXx0J,EAAE20J,OAASrK,EACXtqJ,EAAEkyJ,OAAS,GAAKlyJ,EAAE20J,OAClB30J,EAAEqyJ,OAASryJ,EAAEkyJ,OAAS,EAEtBlyJ,EAAE40J,UAAYrK,EAAW,EACzBvqJ,EAAEgzJ,UAAY,GAAKhzJ,EAAE40J,UACrB50J,EAAEozJ,UAAYpzJ,EAAEgzJ,UAAY,EAC5BhzJ,EAAEmzJ,eAAiBnzJ,EAAE40J,UAtvCP,EAsvC+B,GAtvC/B,GAwvCd50J,EAAExP,OAAS,IAAIy5J,EAAMwB,KAAgB,EAAXzrJ,EAAEkyJ,QAC5BlyJ,EAAE8tB,KAAO,IAAIm8H,EAAMgE,MAAMjuJ,EAAEgzJ,WAC3BhzJ,EAAEkqB,KAAO,IAAI+/H,EAAMgE,MAAMjuJ,EAAEkyJ,QAK3BlyJ,EAAE01J,YAAc,GAAMnL,EAAW,EAEjCvqJ,EAAEu0J,iBAAmC,EAAhBv0J,EAAE01J,YAIvB11J,EAAEixJ,YAAc,IAAIhH,EAAMwB,KAAKzrJ,EAAEu0J,kBAIjCv0J,EAAE21J,MAAQ,EAAI31J,EAAE01J,YAGhB11J,EAAEy1J,MAAQ,EAAUz1J,EAAE01J,YAEtB11J,EAAE6gC,MAAQA,EACV7gC,EAAEwqJ,SAAWA,EACbxqJ,EAAE1P,OAASA,EAEJ6lK,EAAavL,EACtB,CAjWAuF,EAAsB,CAEpB,IAAI8D,EAAO,EAAG,EAAG,EAAG,GAxiBtB,SAAwBj0J,EAAGmqE,GAIzB,IAAIisF,EAAiB,MAOrB,IALIA,EAAiBp2J,EAAEu0J,iBAAmB,IACxC6B,EAAiBp2J,EAAEu0J,iBAAmB,KAI/B,CAEP,GAAIv0J,EAAE0yJ,WAAa,EAAG,CAUpB,GADAE,EAAY5yJ,GACQ,IAAhBA,EAAE0yJ,WA1eU,IA0eSvoF,EACvB,OAtZgB,EAyZlB,GAAoB,IAAhBnqE,EAAE0yJ,UACJ,KAGJ,CAIA1yJ,EAAEuxJ,UAAYvxJ,EAAE0yJ,UAChB1yJ,EAAE0yJ,UAAY,EAGd,IAAI2D,EAAYr2J,EAAEsxJ,YAAc8E,EAEhC,IAAmB,IAAfp2J,EAAEuxJ,UAAkBvxJ,EAAEuxJ,UAAY8E,KAEpCr2J,EAAE0yJ,UAAY1yJ,EAAEuxJ,SAAW8E,EAC3Br2J,EAAEuxJ,SAAW8E,EAEbjF,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WACT,OA9agB,EAubpB,GAAI7qJ,EAAEuxJ,SAAWvxJ,EAAEsxJ,aAAgBtxJ,EAAEkyJ,OAAS1B,IAE5CY,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WACT,OA3bgB,CA+btB,CAIA,OAFA7qJ,EAAEoU,OAAS,EAlhBS,IAohBhB+1D,GAEFinF,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,UApcS,EACA,IA0clB7qJ,EAAEuxJ,SAAWvxJ,EAAEsxJ,cAEjBF,EAAiBpxJ,GAAG,GAChBA,EAAE4qJ,KAAKC,WAhdS,EAudxB,IAgdE,IAAIoJ,EAAO,EAAG,EAAG,EAAG,EAAGZ,GACvB,IAAIY,EAAO,EAAG,EAAG,GAAI,EAAGZ,GACxB,IAAIY,EAAO,EAAG,EAAG,GAAI,GAAIZ,GAEzB,IAAIY,EAAO,EAAG,EAAG,GAAI,GAAIJ,GACzB,IAAII,EAAO,EAAG,GAAI,GAAI,GAAIJ,GAC1B,IAAII,EAAO,EAAG,GAAI,IAAK,IAAKJ,GAC5B,IAAII,EAAO,EAAG,GAAI,IAAK,IAAKJ,GAC5B,IAAII,EAAO,GAAI,IAAK,IAAK,KAAMJ,GAC/B,IAAII,EAAO,GAAI,IAAK,IAAK,KAAMJ,IA2xBjC9zD,EAAQu2D,YApcR,SAAqB1L,EAAM/pH,GACzB,OAAOiqH,EAAaF,EAAM/pH,EAjzCV,EAOF,GAEI,EAnBQ,EA4zC5B,EAmcAk/D,EAAQ+qD,aAAeA,EACvB/qD,EAAQo2D,aAAeA,EACvBp2D,EAAQi2D,iBAAmBA,EAC3Bj2D,EAAQgrD,iBA9hBR,SAA0BH,EAAM98H,GAC9B,OAAK88H,GAASA,EAAKtgK,MACK,IAApBsgK,EAAKtgK,MAAMoqF,KAAqBy6E,GACpCvE,EAAKtgK,MAAMkqK,OAAS1mI,EA7vCA,GA2vCeqhI,CAIrC,EA0hBApvD,EAAQqrD,QApcR,SAAiBR,EAAMzgF,GACrB,IAAIosF,EAAWv2J,EACXw2J,EAAKvgK,EAET,IAAK20J,IAASA,EAAKtgK,OACjB6/E,EAj2CkB,GAi2CCA,EAAQ,EAC3B,OAAOygF,EAAO7qK,EAAI6qK,EAAMuE,GAAkBA,EAK5C,GAFAnvJ,EAAI4qJ,EAAKtgK,OAEJsgK,EAAKz2E,SACJy2E,EAAK5tJ,OAA2B,IAAlB4tJ,EAAKY,UACpBxrJ,EAAE/O,SAAW0/J,GA12CE,IA02CcxmF,EAChC,OAAOpqF,EAAI6qK,EAA0B,IAAnBA,EAAKC,WA51CL,EA41CsCsE,GAQ1D,GALAnvJ,EAAE4qJ,KAAOA,EACT2L,EAAYv2J,EAAE00J,WACd10J,EAAE00J,WAAavqF,EAvyCA,KA0yCXnqE,EAAE/O,OAEJ,GAAe,IAAX+O,EAAE00E,KACJk2E,EAAK+D,MAAQ,EACb6C,EAASxxJ,EAAG,IACZwxJ,EAASxxJ,EAAG,KACZwxJ,EAASxxJ,EAAG,GACPA,EAAEw0J,QAaLhD,EAASxxJ,GAAIA,EAAEw0J,OAAOlrK,KAAO,EAAI,IACpB0W,EAAEw0J,OAAOiC,KAAO,EAAI,IACnBz2J,EAAEw0J,OAAOkC,MAAY,EAAJ,IACjB12J,EAAEw0J,OAAO30K,KAAW,EAAJ,IAChBmgB,EAAEw0J,OAAOmC,QAAc,GAAJ,IAEjCnF,EAASxxJ,EAAmB,IAAhBA,EAAEw0J,OAAOnlC,MACrBmiC,EAASxxJ,EAAIA,EAAEw0J,OAAOnlC,MAAQ,EAAK,KACnCmiC,EAASxxJ,EAAIA,EAAEw0J,OAAOnlC,MAAQ,GAAM,KACpCmiC,EAASxxJ,EAAIA,EAAEw0J,OAAOnlC,MAAQ,GAAM,KACpCmiC,EAASxxJ,EAAe,IAAZA,EAAE6gC,MAAc,EACf7gC,EAAEwqJ,UAv3CK,GAu3CyBxqJ,EAAE6gC,MAAQ,EAC1C,EAAI,GACjB2wH,EAASxxJ,EAAiB,IAAdA,EAAEw0J,OAAO7hF,IACjB3yE,EAAEw0J,OAAOkC,OAAS12J,EAAEw0J,OAAOkC,MAAM58K,SACnC03K,EAASxxJ,EAA2B,IAAxBA,EAAEw0J,OAAOkC,MAAM58K,QAC3B03K,EAASxxJ,EAAIA,EAAEw0J,OAAOkC,MAAM58K,QAAU,EAAK,MAEzCkmB,EAAEw0J,OAAOiC,OACX7L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAS,IAE3DhxJ,EAAEy0J,QAAU,EACZz0J,EAAE/O,OAn1CQ,KAizCVugK,EAASxxJ,EAAG,GACZwxJ,EAASxxJ,EAAG,GACZwxJ,EAASxxJ,EAAG,GACZwxJ,EAASxxJ,EAAG,GACZwxJ,EAASxxJ,EAAG,GACZwxJ,EAASxxJ,EAAe,IAAZA,EAAE6gC,MAAc,EACf7gC,EAAEwqJ,UAt2CK,GAs2CyBxqJ,EAAE6gC,MAAQ,EAC1C,EAAI,GACjB2wH,EAASxxJ,EA7yCH,GA8yCNA,EAAE/O,OAASy/J,OA6Bf,CACE,IAAIv1I,EA13CQ,GA03CiBnb,EAAE20J,OAAS,GAAM,IAAO,EAYrDx5I,IATInb,EAAEwqJ,UA14CgB,GA04CcxqJ,EAAE6gC,MAAQ,EAC9B,EACL7gC,EAAE6gC,MAAQ,EACL,EACO,IAAZ7gC,EAAE6gC,MACG,EAEA,IAEU,EACP,IAAf7gC,EAAEuxJ,WAAkBp2I,GAx2CZ,IAy2CZA,GAAU,GAAMA,EAAS,GAEzBnb,EAAE/O,OAASy/J,EACXe,EAAYzxJ,EAAGmb,GAGI,IAAfnb,EAAEuxJ,WACJE,EAAYzxJ,EAAG4qJ,EAAK+D,QAAU,IAC9B8C,EAAYzxJ,EAAgB,MAAb4qJ,EAAK+D,QAEtB/D,EAAK+D,MAAQ,CACf,CAIF,GAr3CgB,KAq3CZ3uJ,EAAE/O,OACJ,GAAI+O,EAAEw0J,OAAOkC,MAAqB,CAGhC,IAFAF,EAAMx2J,EAAEgxJ,QAEDhxJ,EAAEy0J,SAAmC,MAAxBz0J,EAAEw0J,OAAOkC,MAAM58K,UAC7BkmB,EAAEgxJ,UAAYhxJ,EAAEu0J,mBACdv0J,EAAEw0J,OAAOiC,MAAQz2J,EAAEgxJ,QAAUwF,IAC/B5L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAUwF,EAAKA,IAEjEzF,EAAcnG,GACd4L,EAAMx2J,EAAEgxJ,QACJhxJ,EAAEgxJ,UAAYhxJ,EAAEu0J,oBAItB/C,EAASxxJ,EAA+B,IAA5BA,EAAEw0J,OAAOkC,MAAM12J,EAAEy0J,UAC7Bz0J,EAAEy0J,UAEAz0J,EAAEw0J,OAAOiC,MAAQz2J,EAAEgxJ,QAAUwF,IAC/B5L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAUwF,EAAKA,IAE7Dx2J,EAAEy0J,UAAYz0J,EAAEw0J,OAAOkC,MAAM58K,SAC/BkmB,EAAEy0J,QAAU,EACZz0J,EAAE/O,OA34CO,GA64Cb,MAEE+O,EAAE/O,OA/4CS,GAk5Cf,GAl5Ce,KAk5CX+O,EAAE/O,OACJ,GAAI+O,EAAEw0J,OAAO30K,KAAoB,CAC/B22K,EAAMx2J,EAAEgxJ,QAGR,EAAG,CACD,GAAIhxJ,EAAEgxJ,UAAYhxJ,EAAEu0J,mBACdv0J,EAAEw0J,OAAOiC,MAAQz2J,EAAEgxJ,QAAUwF,IAC/B5L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAUwF,EAAKA,IAEjEzF,EAAcnG,GACd4L,EAAMx2J,EAAEgxJ,QACJhxJ,EAAEgxJ,UAAYhxJ,EAAEu0J,kBAAkB,CACpCt+J,EAAM,EACN,KACF,CAIAA,EADE+J,EAAEy0J,QAAUz0J,EAAEw0J,OAAO30K,KAAK/F,OACkB,IAAxCkmB,EAAEw0J,OAAO30K,KAAKoiB,WAAWjC,EAAEy0J,WAE3B,EAERjD,EAASxxJ,EAAG/J,EACd,OAAiB,IAARA,GAEL+J,EAAEw0J,OAAOiC,MAAQz2J,EAAEgxJ,QAAUwF,IAC/B5L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAUwF,EAAKA,IAErD,IAARvgK,IACF+J,EAAEy0J,QAAU,EACZz0J,EAAE/O,OAh7CU,GAk7ChB,MAEE+O,EAAE/O,OAp7CY,GAu7ClB,GAv7CkB,KAu7Cd+O,EAAE/O,OACJ,GAAI+O,EAAEw0J,OAAOmC,QAAuB,CAClCH,EAAMx2J,EAAEgxJ,QAGR,EAAG,CACD,GAAIhxJ,EAAEgxJ,UAAYhxJ,EAAEu0J,mBACdv0J,EAAEw0J,OAAOiC,MAAQz2J,EAAEgxJ,QAAUwF,IAC/B5L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAUwF,EAAKA,IAEjEzF,EAAcnG,GACd4L,EAAMx2J,EAAEgxJ,QACJhxJ,EAAEgxJ,UAAYhxJ,EAAEu0J,kBAAkB,CACpCt+J,EAAM,EACN,KACF,CAIAA,EADE+J,EAAEy0J,QAAUz0J,EAAEw0J,OAAOmC,QAAQ78K,OACkB,IAA3CkmB,EAAEw0J,OAAOmC,QAAQ10J,WAAWjC,EAAEy0J,WAE9B,EAERjD,EAASxxJ,EAAG/J,EACd,OAAiB,IAARA,GAEL+J,EAAEw0J,OAAOiC,MAAQz2J,EAAEgxJ,QAAUwF,IAC/B5L,EAAK+D,MAAQ2B,EAAM1F,EAAK+D,MAAO3uJ,EAAEixJ,YAAajxJ,EAAEgxJ,QAAUwF,EAAKA,IAErD,IAARvgK,IACF+J,EAAE/O,OAASw/J,EAEf,MAEEzwJ,EAAE/O,OAASw/J,EAsBf,GAnBIzwJ,EAAE/O,SAAWw/J,IACXzwJ,EAAEw0J,OAAOiC,MACPz2J,EAAEgxJ,QAAU,EAAIhxJ,EAAEu0J,kBACpBxD,EAAcnG,GAEZ5qJ,EAAEgxJ,QAAU,GAAKhxJ,EAAEu0J,mBACrB/C,EAASxxJ,EAAgB,IAAb4qJ,EAAK+D,OACjB6C,EAASxxJ,EAAI4qJ,EAAK+D,OAAS,EAAK,KAChC/D,EAAK+D,MAAQ,EACb3uJ,EAAE/O,OAASy/J,IAIb1wJ,EAAE/O,OAASy/J,GAMG,IAAd1wJ,EAAEgxJ,SAEJ,GADAD,EAAcnG,GACS,IAAnBA,EAAKC,UAQP,OADA7qJ,EAAE00J,YAAc,EA5jDA,OAokDb,GAAsB,IAAlB9J,EAAKY,UAAkBqF,EAAK1mF,IAAU0mF,EAAK0F,IA5kDlC,IA6kDlBpsF,EACA,OAAOpqF,EAAI6qK,GA/jDO,GAmkDpB,GAAI5qJ,EAAE/O,SAAW0/J,GAAkC,IAAlB/F,EAAKY,SACpC,OAAOzrK,EAAI6qK,GApkDO,GAykDpB,GAAsB,IAAlBA,EAAKY,UAAkC,IAAhBxrJ,EAAE0yJ,WA5lDT,IA6lDjBvoF,GAAwBnqE,EAAE/O,SAAW0/J,EAAe,CACrD,IAAIiG,EA/jDoB,IA+jDV52J,EAAEwqJ,SAxqBpB,SAAsBxqJ,EAAGmqE,GAGvB,IAFA,IAAIopF,IAEK,CAEP,GAAoB,IAAhBvzJ,EAAE0yJ,YACJE,EAAY5yJ,GACQ,IAAhBA,EAAE0yJ,WAAiB,CACrB,GA97Bc,IA87BVvoF,EACF,OA12Bc,EA42BhB,KACF,CAUF,GANAnqE,EAAEwzJ,aAAe,EAGjBD,EAASnD,EAAMqD,UAAUzzJ,EAAG,EAAGA,EAAExP,OAAOwP,EAAEuxJ,WAC1CvxJ,EAAE0yJ,YACF1yJ,EAAEuxJ,WACEgC,IAEFnC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WACT,OA33BgB,CA+3BtB,CAEA,OADA7qJ,EAAEoU,OAAS,EAj9BS,IAk9BhB+1D,GAEFinF,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,UAl4BS,EACA,GAu4BlB7qJ,EAAE4zJ,WAEJxC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WA74BS,EACA,CAk5BxB,CAsnBmDgM,CAAa72J,EAAGmqE,GA9jDvC,IA+jDrBnqE,EAAEwqJ,SAxwBT,SAAqBxqJ,EAAGmqE,GAOtB,IANA,IAAIopF,EACArpI,EACA4nI,EAAMQ,EAENH,EAAOnyJ,EAAExP,SAEJ,CAKP,GAAIwP,EAAE0yJ,WAAanC,EAAW,CAE5B,GADAqC,EAAY5yJ,GACRA,EAAE0yJ,WAAanC,GAr2BH,IAq2BgBpmF,EAC9B,OAjxBgB,EAmxBlB,GAAoB,IAAhBnqE,EAAE0yJ,UAAmB,KAC3B,CAIA,GADA1yJ,EAAEwzJ,aAAe,EACbxzJ,EAAE0yJ,WAtyBM,GAsyBoB1yJ,EAAEuxJ,SAAW,IAE3CrnI,EAAOioI,EADPL,EAAO9xJ,EAAEuxJ,SAAW,MAEPY,IAAOL,IAAS5nI,IAASioI,IAAOL,IAAS5nI,IAASioI,IAAOL,GAAO,CAC3EQ,EAAStyJ,EAAEuxJ,SAAWhB,EACtB,UAESrmI,IAASioI,IAAOL,IAAS5nI,IAASioI,IAAOL,IACzC5nI,IAASioI,IAAOL,IAAS5nI,IAASioI,IAAOL,IACzC5nI,IAASioI,IAAOL,IAAS5nI,IAASioI,IAAOL,IACzC5nI,IAASioI,IAAOL,IAAS5nI,IAASioI,IAAOL,IACzCA,EAAOQ,GAChBtyJ,EAAEwzJ,aAAejD,GAAa+B,EAASR,GACnC9xJ,EAAEwzJ,aAAexzJ,EAAE0yJ,YACrB1yJ,EAAEwzJ,aAAexzJ,EAAE0yJ,UAEvB,CAuBF,GAlBI1yJ,EAAEwzJ,cA3zBM,GA+zBVD,EAASnD,EAAMqD,UAAUzzJ,EAAG,EAAGA,EAAEwzJ,aA/zBvB,GAi0BVxzJ,EAAE0yJ,WAAa1yJ,EAAEwzJ,aACjBxzJ,EAAEuxJ,UAAYvxJ,EAAEwzJ,aAChBxzJ,EAAEwzJ,aAAe,IAKjBD,EAASnD,EAAMqD,UAAUzzJ,EAAG,EAAGA,EAAExP,OAAOwP,EAAEuxJ,WAE1CvxJ,EAAE0yJ,YACF1yJ,EAAEuxJ,YAEAgC,IAEFnC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WACT,OAn0BgB,CAu0BtB,CAEA,OADA7qJ,EAAEoU,OAAS,EAz5BS,IA05BhB+1D,GAEFinF,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,UA10BS,EACA,GA+0BlB7qJ,EAAE4zJ,WAEJxC,EAAiBpxJ,GAAG,GACK,IAArBA,EAAE4qJ,KAAKC,WAr1BS,EACA,CA01BxB,CA+qB8BiM,CAAY92J,EAAGmqE,GACrCgmF,EAAoBnwJ,EAAE6gC,OAAOkyF,KAAK/yH,EAAGmqE,GAKzC,GA9gDoB,IA2gDhBysF,GA1gDgB,IA0gDgBA,IAClC52J,EAAE/O,OAAS0/J,GA9gDO,IAghDhBiG,GA9gDgB,IA8gDWA,EAK7B,OAJuB,IAAnBhM,EAAKC,YACP7qJ,EAAE00J,YAAc,GA3lDF,EAumDlB,GA7hDoB,IA6hDhBkC,IAlnDc,IAmnDZzsF,EACFimF,EAAM2G,UAAU/2J,GAhnDF,IAknDPmqE,IAEPimF,EAAM4G,iBAAiBh3J,EAAG,EAAG,GAAG,GAtnDlB,IA0nDVmqE,IAEF2mF,EAAK9wJ,EAAE8tB,MAEa,IAAhB9tB,EAAE0yJ,YACJ1yJ,EAAEuxJ,SAAW,EACbvxJ,EAAEsxJ,YAAc,EAChBtxJ,EAAEoU,OAAS,KAIjB28I,EAAcnG,GACS,IAAnBA,EAAKC,WAEP,OADA7qJ,EAAE00J,YAAc,EA9nDF,CAkoDpB,CAIA,OA9oDoB,IA8oDhBvqF,EAtoDgB,EAuoDhBnqE,EAAE00E,MAAQ,EAtoDM,GAyoDL,IAAX10E,EAAE00E,MACJ88E,EAASxxJ,EAAgB,IAAb4qJ,EAAK+D,OACjB6C,EAASxxJ,EAAI4qJ,EAAK+D,OAAS,EAAK,KAChC6C,EAASxxJ,EAAI4qJ,EAAK+D,OAAS,GAAM,KACjC6C,EAASxxJ,EAAI4qJ,EAAK+D,OAAS,GAAM,KACjC6C,EAASxxJ,EAAmB,IAAhB4qJ,EAAKqI,UACjBzB,EAASxxJ,EAAI4qJ,EAAKqI,UAAY,EAAK,KACnCzB,EAASxxJ,EAAI4qJ,EAAKqI,UAAY,GAAM,KACpCzB,EAASxxJ,EAAI4qJ,EAAKqI,UAAY,GAAM,OAIpCxB,EAAYzxJ,EAAG4qJ,EAAK+D,QAAU,IAC9B8C,EAAYzxJ,EAAgB,MAAb4qJ,EAAK+D,QAGtBoC,EAAcnG,GAIV5qJ,EAAE00E,KAAO,IAAK10E,EAAE00E,MAAQ10E,EAAE00E,MAET,IAAd10E,EAAEgxJ,QAhqDW,EACA,EAgqDtB,EAyHAjxD,EAAQgsD,WAvHR,SAAoBnB,GAClB,IAAI35J,EAEJ,OAAK25J,GAAsBA,EAAKtgK,MArmDjB,MAymDf2G,EAAS25J,EAAKtgK,MAAM2G,SAxmDJ,KA0mDdA,GAzmDa,KA0mDbA,GAzmDgB,KA0mDhBA,GACAA,IAAWw/J,GACXx/J,IAAWy/J,GACXz/J,IAAW0/J,EAEJ5wK,EAAI6qK,EAAMuE,IAGnBvE,EAAKtgK,MAAQ,KAEN2G,IAAWy/J,EAAa3wK,EAAI6qK,GAnrDf,GALA,GAuqDXuE,CAkBX,EAkGApvD,EAAQmrD,qBA3FR,SAA8BN,EAAMI,GAClC,IAEIhrJ,EACA4D,EAAK3D,EACLy0E,EACAuiF,EACAhuK,EACA+T,EACAk6J,EARAC,EAAanM,EAAWlxK,OAU5B,IAAK8wK,IAAsBA,EAAKtgK,MAC9B,OAAO6kK,EAMT,GAAa,KAFbz6E,GADA10E,EAAI4qJ,EAAKtgK,OACAoqF,OAEmB,IAATA,GAjpDJ,KAipDkB10E,EAAE/O,QAA0B+O,EAAE0yJ,UAC7D,OAAOvD,EAmCT,IA/Ba,IAATz6E,IAEFk2E,EAAK+D,MAAQ0B,EAAQzF,EAAK+D,MAAO3D,EAAYmM,EAAY,IAG3Dn3J,EAAE00E,KAAO,EAGLyiF,GAAcn3J,EAAEkyJ,SACL,IAATx9E,IAEFo8E,EAAK9wJ,EAAE8tB,MACP9tB,EAAEuxJ,SAAW,EACbvxJ,EAAEsxJ,YAAc,EAChBtxJ,EAAEoU,OAAS,GAIb8iJ,EAAU,IAAIjN,EAAMwB,KAAKzrJ,EAAEkyJ,QAC3BjI,EAAMsD,SAAS2J,EAASlM,EAAYmM,EAAan3J,EAAEkyJ,OAAQlyJ,EAAEkyJ,OAAQ,GACrElH,EAAakM,EACbC,EAAan3J,EAAEkyJ,QAGjB+E,EAAQrM,EAAKY,SACbviK,EAAO2hK,EAAKW,QACZvuJ,EAAQ4tJ,EAAK5tJ,MACb4tJ,EAAKY,SAAW2L,EAChBvM,EAAKW,QAAU,EACfX,EAAK5tJ,MAAQguJ,EACb4H,EAAY5yJ,GACLA,EAAE0yJ,WA3rDK,GA2rDmB,CAC/B9uJ,EAAM5D,EAAEuxJ,SACRtxJ,EAAID,EAAE0yJ,UAAY,EAClB,GAEE1yJ,EAAEkzJ,OAAUlzJ,EAAEkzJ,OAASlzJ,EAAEmzJ,WAAcnzJ,EAAExP,OAAOoT,EAhsDtC,EAgsDwD,IAAM5D,EAAEozJ,UAE1EpzJ,EAAEkqB,KAAKtmB,EAAM5D,EAAEqyJ,QAAUryJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAElClzJ,EAAE8tB,KAAK9tB,EAAEkzJ,OAAStvJ,EAClBA,YACS3D,GACXD,EAAEuxJ,SAAW3tJ,EACb5D,EAAE0yJ,UAAYiB,EACdf,EAAY5yJ,EACd,CAWA,OAVAA,EAAEuxJ,UAAYvxJ,EAAE0yJ,UAChB1yJ,EAAEsxJ,YAActxJ,EAAEuxJ,SAClBvxJ,EAAEoU,OAASpU,EAAE0yJ,UACb1yJ,EAAE0yJ,UAAY,EACd1yJ,EAAEwzJ,aAAexzJ,EAAEgyJ,YAAc2B,EACjC3zJ,EAAEg0J,gBAAkB,EACpBpJ,EAAKW,QAAUtiK,EACf2hK,EAAK5tJ,MAAQA,EACb4tJ,EAAKY,SAAWyL,EAChBj3J,EAAE00E,KAAOA,EA/wDW,CAixDtB,EAWAqrB,EAAQq3D,YAAc,6DC/wDtBt3D,EAAOC,QApCP,WAEEpjH,KAAK2M,KAAa,EAElB3M,KAAK0yI,KAAa,EAElB1yI,KAAK06K,OAAa,EAElB16K,KAAKg2F,GAAa,EAElBh2F,KAAK+5K,MAAa,KAElB/5K,KAAK26K,UAAa,EAWlB36K,KAAKkD,KAAa,GAIlBlD,KAAKg6K,QAAa,GAIlBh6K,KAAK85K,KAAa,EAElB95K,KAAK+jB,MAAa,CACpB,0BCKAo/F,EAAOC,QAAU,SAAsB6qD,EAAMhlH,GAC3C,IAAIt7C,EACAitK,EACAnwJ,EACAowJ,EACAhB,EACA3wH,EAEA4xH,EAEAC,EACAC,EACAC,EAEAC,EACAC,EACA7tH,EACA8tH,EACAC,EACAC,EACAC,EACAC,EACA92J,EAEAqB,EACAigC,EACApsB,EACA6hJ,EAGAp7J,EAAOm3E,EAGX7pF,EAAQsgK,EAAKtgK,MAEbitK,EAAM3M,EAAKW,QACXvuJ,EAAQ4tJ,EAAK5tJ,MACboK,EAAOmwJ,GAAO3M,EAAKY,SAAW,GAC9BgM,EAAO5M,EAAKc,SACZv3E,EAASy2E,EAAKz2E,OACdqiF,EAAMgB,GAAQ5xH,EAAQglH,EAAKC,WAC3BhlH,EAAM2xH,GAAQ5M,EAAKC,UAAY,KAE/B4M,EAAOntK,EAAMmtK,KAEbC,EAAQptK,EAAMotK,MACdC,EAAQrtK,EAAMqtK,MACdC,EAAQttK,EAAMstK,MACdC,EAAWvtK,EAAMkG,OACjBsnK,EAAOxtK,EAAMwtK,KACb7tH,EAAO3/C,EAAM2/C,KACb8tH,EAAQztK,EAAM+tK,QACdL,EAAQ1tK,EAAMguK,SACdL,GAAS,GAAK3tK,EAAMiuK,SAAW,EAC/BL,GAAS,GAAK5tK,EAAMkuK,UAAY,EAMhChsH,EACA,EAAG,CACGvC,EAAO,KACT6tH,GAAQ96J,EAAMu6J,MAAUttH,EACxBA,GAAQ,EACR6tH,GAAQ96J,EAAMu6J,MAAUttH,EACxBA,GAAQ,GAGVkuH,EAAOJ,EAAMD,EAAOG,GAEpBQ,EACA,OAAS,CAKP,GAHAX,KADAz2J,EAAK82J,IAAS,GAEdluH,GAAQ5oC,EAEG,KADXA,EAAM82J,IAAS,GAAM,KAKnBhkF,EAAOqjF,KAAiB,MAAPW,MAEd,MAAS,GAAL92J,GAwKJ,IAAU,GAALA,EAIL,IAAS,GAALA,EAAS,CAEhB/W,EAAMwO,KAtSH,GAuSH,MAAM0zC,CACR,CAEEo+G,EAAKjgJ,IAAM,8BACXrgB,EAAMwO,KA5SJ,GA6SF,MAAM0zC,CACR,CAZE2rH,EAAOJ,GAAc,MAAPI,IAA8BL,GAAS,GAAKz2J,GAAM,IAChE,SAASo3J,CAWX,CA/JE,IArBA/1J,EAAa,MAAPy1J,GACN92J,GAAM,MAEA4oC,EAAO5oC,IACTy2J,GAAQ96J,EAAMu6J,MAAUttH,EACxBA,GAAQ,GAEVvnC,GAAOo1J,GAAS,GAAKz2J,GAAM,EAC3By2J,KAAUz2J,EACV4oC,GAAQ5oC,GAGN4oC,EAAO,KACT6tH,GAAQ96J,EAAMu6J,MAAUttH,EACxBA,GAAQ,EACR6tH,GAAQ96J,EAAMu6J,MAAUttH,EACxBA,GAAQ,GAEVkuH,EAAOH,EAAMF,EAAOI,KAGX,CAMP,GAJAJ,KADAz2J,EAAK82J,IAAS,GAEdluH,GAAQ5oC,EAGC,IAFTA,EAAM82J,IAAS,GAAM,KAErB,CAaE,GAZAx1H,EAAc,MAAPw1H,EAEHluH,GADJ5oC,GAAM,MAEJy2J,GAAQ96J,EAAMu6J,MAAUttH,GACxBA,GAAQ,GACG5oC,IACTy2J,GAAQ96J,EAAMu6J,MAAUttH,EACxBA,GAAQ,KAGZtH,GAAQm1H,GAAS,GAAKz2J,GAAM,GAEjBo2J,EAAM,CACf7M,EAAKjgJ,IAAM,gCACXrgB,EAAMwO,KApKV,GAqKI,MAAM0zC,CACR,CAMA,GAJAsrH,KAAUz2J,EACV4oC,GAAQ5oC,EAGJshC,GADJthC,EAAKm2J,EAAOhB,GACG,CAEb,IADAn1J,EAAKshC,EAAOthC,GACHs2J,GACHrtK,EAAMouK,KAAM,CACd9N,EAAKjgJ,IAAM,gCACXrgB,EAAMwO,KAjLd,GAkLQ,MAAM0zC,CACR,CA0BF,GAFAj2B,EAAO,EACP6hJ,EAAcP,EACA,IAAVD,GAEF,GADArhJ,GAAQmhJ,EAAQr2J,EACZA,EAAKqB,EAAK,CACZA,GAAOrB,EACP,GACE8yE,EAAOqjF,KAAUK,EAASthJ,aACjBlV,GACXkV,EAAOihJ,EAAO70H,EACdy1H,EAAcjkF,CAChB,OAEG,GAAIyjF,EAAQv2J,GAGf,GAFAkV,GAAQmhJ,EAAQE,EAAQv2J,GACxBA,GAAMu2J,GACGl1J,EAAK,CACZA,GAAOrB,EACP,GACE8yE,EAAOqjF,KAAUK,EAASthJ,aACjBlV,GAEX,GADAkV,EAAO,EACHqhJ,EAAQl1J,EAAK,CAEfA,GADArB,EAAKu2J,EAEL,GACEzjF,EAAOqjF,KAAUK,EAASthJ,aACjBlV,GACXkV,EAAOihJ,EAAO70H,EACdy1H,EAAcjkF,CAChB,CACF,OAIA,GADA59D,GAAQqhJ,EAAQv2J,EACZA,EAAKqB,EAAK,CACZA,GAAOrB,EACP,GACE8yE,EAAOqjF,KAAUK,EAASthJ,aACjBlV,GACXkV,EAAOihJ,EAAO70H,EACdy1H,EAAcjkF,CAChB,CAEF,KAAOzxE,EAAM,GACXyxE,EAAOqjF,KAAUY,EAAY7hJ,KAC7B49D,EAAOqjF,KAAUY,EAAY7hJ,KAC7B49D,EAAOqjF,KAAUY,EAAY7hJ,KAC7B7T,GAAO,EAELA,IACFyxE,EAAOqjF,KAAUY,EAAY7hJ,KACzB7T,EAAM,IACRyxE,EAAOqjF,KAAUY,EAAY7hJ,MAGnC,KACK,CACHA,EAAOihJ,EAAO70H,EACd,GACEwxC,EAAOqjF,KAAUrjF,EAAO59D,KACxB49D,EAAOqjF,KAAUrjF,EAAO59D,KACxB49D,EAAOqjF,KAAUrjF,EAAO59D,KACxB7T,GAAO,QACAA,EAAM,GACXA,IACFyxE,EAAOqjF,KAAUrjF,EAAO59D,KACpB7T,EAAM,IACRyxE,EAAOqjF,KAAUrjF,EAAO59D,MAG9B,CAYF,KAFA,CARK,GAAU,GAALlV,EAIL,CACHupJ,EAAKjgJ,IAAM,wBACXrgB,EAAMwO,KA1RR,GA2RE,MAAM0zC,CACR,CAPE2rH,EAAOH,GAAc,MAAPG,IAA8BL,GAAS,GAAKz2J,GAAM,GAUpE,CAeF,CAEA,KACF,CACF,OAASk2J,EAAMnwJ,GAAQowJ,EAAO3xH,GAI9B0xH,GADA70J,EAAMunC,GAAQ,EAGd6tH,IAAS,IADT7tH,GAAQvnC,GAAO,IACO,EAGtBkoJ,EAAKW,QAAUgM,EACf3M,EAAKc,SAAW8L,EAChB5M,EAAKY,SAAY+L,EAAMnwJ,EAAYA,EAAOmwJ,EAAZ,EAAmB,GAAKA,EAAMnwJ,GAC5DwjJ,EAAKC,UAAa2M,EAAO3xH,EAAaA,EAAM2xH,EAAb,IAAqB,KAAOA,EAAO3xH,GAClEv7C,EAAMwtK,KAAOA,EACbxtK,EAAM2/C,KAAOA,CAEf,gCCnUA,IAAIggH,EAAgB,EAAQ,OACxBoG,EAAgB,EAAQ,OACxBC,EAAgB,EAAQ,OACxBqI,EAAgB,EAAQ,OACxBC,EAAgB,EAAQ,OA2BxBzJ,GAAmB,EAyBZhuD,EAAO,GAkBX03D,EAAM,GAiBb,SAASC,EAAQnjK,GACf,OAAWA,IAAM,GAAM,MACbA,IAAM,EAAK,SACP,MAAJA,IAAe,KACX,IAAJA,IAAa,GACzB,CAGA,SAASojK,IACPp8K,KAAKmc,KAAO,EACZnc,KAAKyqB,MAAO,EACZzqB,KAAK+3F,KAAO,EACZ/3F,KAAKq8K,UAAW,EAChBr8K,KAAKqwC,MAAQ,EACbrwC,KAAK86K,KAAO,EACZ96K,KAAKqtD,MAAQ,EACbrtD,KAAKkpC,MAAQ,EAEblpC,KAAKmxC,KAAO,KAGZnxC,KAAKs8K,MAAQ,EACbt8K,KAAK+6K,MAAQ,EACb/6K,KAAKg7K,MAAQ,EACbh7K,KAAKi7K,MAAQ,EACbj7K,KAAK6T,OAAS,KAGd7T,KAAKm7K,KAAO,EACZn7K,KAAKstD,KAAO,EAGZttD,KAAK7C,OAAS,EACd6C,KAAKmnB,OAAS,EAGdnnB,KAAK+5K,MAAQ,EAGb/5K,KAAK07K,QAAU,KACf17K,KAAK27K,SAAW,KAChB37K,KAAK47K,QAAU,EACf57K,KAAK67K,SAAW,EAGhB77K,KAAKu8K,MAAQ,EACbv8K,KAAKw8K,KAAO,EACZx8K,KAAKy8K,MAAQ,EACbz8K,KAAK08K,KAAO,EACZ18K,KAAKsM,KAAO,KAEZtM,KAAK28K,KAAO,IAAIrP,EAAMgE,MAAM,KAC5BtxK,KAAK48K,KAAO,IAAItP,EAAMgE,MAAM,KAO5BtxK,KAAK68K,OAAS,KACd78K,KAAK88K,QAAU,KACf98K,KAAK+7K,KAAO,EACZ/7K,KAAK+8K,KAAO,EACZ/8K,KAAKg9K,IAAM,CACb,CAEA,SAASC,EAAiBhP,GACxB,IAAItgK,EAEJ,OAAKsgK,GAASA,EAAKtgK,OACnBA,EAAQsgK,EAAKtgK,MACbsgK,EAAKqI,SAAWrI,EAAKuG,UAAY7mK,EAAMu7B,MAAQ,EAC/C+kI,EAAKjgJ,IAAM,GACPrgB,EAAMoqF,OACRk2E,EAAK+D,MAAqB,EAAbrkK,EAAMoqF,MAErBpqF,EAAMwO,KA1HM,EA2HZxO,EAAM8c,KAAO,EACb9c,EAAM0uK,SAAW,EACjB1uK,EAAMmtK,KAAO,MACbntK,EAAMwjC,KAAO,KACbxjC,EAAMwtK,KAAO,EACbxtK,EAAM2/C,KAAO,EAEb3/C,EAAM+tK,QAAU/tK,EAAMkvK,OAAS,IAAIvP,EAAMiE,MA7FzB,KA8FhB5jK,EAAMguK,SAAWhuK,EAAMmvK,QAAU,IAAIxP,EAAMiE,MA7F1B,KA+FjB5jK,EAAMouK,KAAO,EACbpuK,EAAMovK,MAAQ,EAxJM,GAqIevK,CAsBrC,CAEA,SAAS0K,EAAajP,GACpB,IAAItgK,EAEJ,OAAKsgK,GAASA,EAAKtgK,QACnBA,EAAQsgK,EAAKtgK,OACPotK,MAAQ,EACdptK,EAAMqtK,MAAQ,EACdrtK,EAAMstK,MAAQ,EACPgC,EAAiBhP,IALWuE,CAOrC,CAEA,SAAS2K,EAAclP,EAAMN,GAC3B,IAAI51E,EACApqF,EAGJ,OAAKsgK,GAASA,EAAKtgK,OACnBA,EAAQsgK,EAAKtgK,MAGTggK,EAAa,GACf51E,EAAO,EACP41E,GAAcA,IAGd51E,EAA2B,GAAnB41E,GAAc,GAClBA,EAAa,KACfA,GAAc,KAKdA,IAAeA,EAAa,GAAKA,EAAa,IACzC6E,GAEY,OAAjB7kK,EAAMkG,QAAmBlG,EAAM2uK,QAAU3O,IAC3ChgK,EAAMkG,OAAS,MAIjBlG,EAAMoqF,KAAOA,EACbpqF,EAAM2uK,MAAQ3O,EACPuP,EAAajP,KA1BeuE,CA2BrC,CAEA,SAAS9C,EAAazB,EAAMN,GAC1B,IAAIt+F,EACA1hE,EAEJ,OAAKsgK,GAGLtgK,EAAQ,IAAIyuK,EAIZnO,EAAKtgK,MAAQA,EACbA,EAAMkG,OAAS,KAvNK,KAwNpBw7D,EAAM8tG,EAAclP,EAAMN,MAExBM,EAAKtgK,MAAQ,MAER0hE,GAbamjG,CActB,CAiBA,IAEI4K,EAAQC,EAFRC,GAAS,EAIb,SAASC,EAAY5vK,GAEnB,GAAI2vK,EAAQ,CACV,IAAIzvC,EAOJ,IALAuvC,EAAS,IAAI9P,EAAMiE,MAAM,KACzB8L,EAAU,IAAI/P,EAAMiE,MAAM,IAG1B1jC,EAAM,EACCA,EAAM,KAAOlgI,EAAMgvK,KAAK9uC,KAAS,EACxC,KAAOA,EAAM,KAAOlgI,EAAMgvK,KAAK9uC,KAAS,EACxC,KAAOA,EAAM,KAAOlgI,EAAMgvK,KAAK9uC,KAAS,EACxC,KAAOA,EAAM,KAAOlgI,EAAMgvK,KAAK9uC,KAAS,EAMxC,IAJAouC,EArRO,EAqRctuK,EAAMgvK,KAAM,EAAG,IAAKS,EAAU,EAAGzvK,EAAMivK,KAAM,CAAEtvH,KAAM,IAG1EugF,EAAM,EACCA,EAAM,IAAMlgI,EAAMgvK,KAAK9uC,KAAS,EAEvCouC,EA1RQ,EA0RatuK,EAAMgvK,KAAM,EAAG,GAAMU,EAAS,EAAG1vK,EAAMivK,KAAM,CAAEtvH,KAAM,IAG1EgwH,GAAS,CACX,CAEA3vK,EAAM+tK,QAAU0B,EAChBzvK,EAAMiuK,QAAU,EAChBjuK,EAAMguK,SAAW0B,EACjB1vK,EAAMkuK,SAAW,CACnB,CAiBA,SAAS2B,EAAavP,EAAMzuJ,EAAK0pC,EAAKzmB,GACpC,IAAIujB,EACAr4C,EAAQsgK,EAAKtgK,MAqCjB,OAlCqB,OAAjBA,EAAMkG,SACRlG,EAAMotK,MAAQ,GAAKptK,EAAM2uK,MACzB3uK,EAAMstK,MAAQ,EACdttK,EAAMqtK,MAAQ,EAEdrtK,EAAMkG,OAAS,IAAIy5J,EAAMwB,KAAKnhK,EAAMotK,QAIlCt4I,GAAQ90B,EAAMotK,OAChBzN,EAAMsD,SAASjjK,EAAMkG,OAAQ2L,EAAK0pC,EAAMv7C,EAAMotK,MAAOptK,EAAMotK,MAAO,GAClEptK,EAAMstK,MAAQ,EACdttK,EAAMqtK,MAAQrtK,EAAMotK,SAGpB/0H,EAAOr4C,EAAMotK,MAAQptK,EAAMstK,OAChBx4I,IACTujB,EAAOvjB,GAGT6qI,EAAMsD,SAASjjK,EAAMkG,OAAQ2L,EAAK0pC,EAAMzmB,EAAMujB,EAAMr4C,EAAMstK,QAC1Dx4I,GAAQujB,IAGNsnH,EAAMsD,SAASjjK,EAAMkG,OAAQ2L,EAAK0pC,EAAMzmB,EAAMA,EAAM,GACpD90B,EAAMstK,MAAQx4I,EACd90B,EAAMqtK,MAAQrtK,EAAMotK,QAGpBptK,EAAMstK,OAASj1H,EACXr4C,EAAMstK,QAAUttK,EAAMotK,QAASptK,EAAMstK,MAAQ,GAC7CttK,EAAMqtK,MAAQrtK,EAAMotK,QAASptK,EAAMqtK,OAASh1H,KAG7C,CACT,CAsoCAo9D,EAAQ85D,aAAeA,EACvB95D,EAAQ+5D,cAAgBA,EACxB/5D,EAAQ65D,iBAAmBA,EAC3B75D,EAAQq6D,YApvCR,SAAqBxP,GACnB,OAAOyB,EAAazB,EArKN,GAsKhB,EAmvCA7qD,EAAQssD,aAAeA,EACvBtsD,EAAQ0sD,QAzoCR,SAAiB7B,EAAMzgF,GACrB,IAAI7/E,EACA0S,EAAOm3E,EACPlrF,EACArE,EACAy0K,EAAM3xI,EACNowI,EACA7tH,EACAstH,EAAKC,EACLp4I,EACA7I,EACA6hJ,EAEAiC,EAAWC,EAASC,EAEpBC,EAAWC,EAASC,EACpBh4J,EACAspD,EAEAtrB,EAEAzgC,EATAk4J,EAAO,EAMPwC,EAAO,IAAI1Q,EAAMwB,KAAK,GAKtBvyJ,EACF,CAAE,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,IAGlE,IAAK0xJ,IAASA,EAAKtgK,QAAUsgK,EAAKz2E,SAC5By2E,EAAK5tJ,OAA2B,IAAlB4tJ,EAAKY,SACvB,OAAO2D,GAGT7kK,EAAQsgK,EAAKtgK,OACHwO,OAASqoG,IAAQ72G,EAAMwO,KA/Uf,IAmVlBlU,EAAMgmK,EAAKc,SACXv3E,EAASy2E,EAAKz2E,OACdzsD,EAAOkjI,EAAKC,UACZ5hK,EAAO2hK,EAAKW,QACZvuJ,EAAQ4tJ,EAAK5tJ,MACbq8J,EAAOzO,EAAKY,SACZsM,EAAOxtK,EAAMwtK,KACb7tH,EAAO3/C,EAAM2/C,KAGbstH,EAAM8B,EACN7B,EAAO9vI,EACPskC,EA7XoB,EA+XpB4uG,EACA,OACE,OAAQtwK,EAAMwO,MACZ,KAhXQ,EAiXN,GAAmB,IAAfxO,EAAMoqF,KAAY,CACpBpqF,EAAMwO,KAtWI,GAuWV,KACF,CAEA,KAAOmxC,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA,GAAkB,EAAb3/C,EAAMoqF,MAAsB,QAATojF,EAAiB,CACvCxtK,EAAM0/C,MAAQ,EAEd2wH,EAAK,GAAY,IAAP7C,EACV6C,EAAK,GAAM7C,IAAS,EAAK,IACzBxtK,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAO2wH,EAAM,EAAG,GAI1C7C,EAAO,EACP7tH,EAAO,EAEP3/C,EAAMwO,KAxYD,EAyYL,KACF,CAKA,GAJAxO,EAAM0iC,MAAQ,EACV1iC,EAAMwjC,OACRxjC,EAAMwjC,KAAKptB,MAAO,KAED,EAAbpW,EAAMoqF,UACA,IAAPojF,IAA2B,IAAMA,GAAQ,IAAM,GAAI,CACtDlN,EAAKjgJ,IAAM,yBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACA,GA7ZU,IA6ZE,GAAPf,GAAwC,CAC3ClN,EAAKjgJ,IAAM,6BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAMA,GAHA5uH,GAAQ,EAERvnC,EAAiC,GAAnB,IAHdo1J,KAAU,IAIU,IAAhBxtK,EAAM2uK,MACR3uK,EAAM2uK,MAAQv2J,OAEX,GAAIA,EAAMpY,EAAM2uK,MAAO,CAC1BrO,EAAKjgJ,IAAM,sBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACAvuK,EAAMmtK,KAAO,GAAK/0J,EAElBkoJ,EAAK+D,MAAQrkK,EAAM0/C,MAAQ,EAC3B1/C,EAAMwO,KAAc,IAAPg/J,EAlaL,GAka6B32D,EAErC22D,EAAO,EACP7tH,EAAO,EAEP,MACF,KAhbS,EAkbP,KAAOA,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAGA,GADA3/C,EAAM0iC,MAAQ8qI,EAjcJ,IAkcS,IAAdxtK,EAAM0iC,OAA8B,CACvC49H,EAAKjgJ,IAAM,6BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACA,GAAkB,MAAdvuK,EAAM0iC,MAAgB,CACxB49H,EAAKjgJ,IAAM,2BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACIvuK,EAAMwjC,OACRxjC,EAAMwjC,KAAKxkC,KAASwuK,GAAQ,EAAK,GAEjB,IAAdxtK,EAAM0iC,QAER2tI,EAAK,GAAY,IAAP7C,EACV6C,EAAK,GAAM7C,IAAS,EAAK,IACzBxtK,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAO2wH,EAAM,EAAG,IAI5C7C,EAAO,EACP7tH,EAAO,EAEP3/C,EAAMwO,KAjdA,EAmdR,KAndQ,EAqdN,KAAOmxC,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEI3/C,EAAMwjC,OACRxjC,EAAMwjC,KAAKuhG,KAAOyoC,GAEF,IAAdxtK,EAAM0iC,QAER2tI,EAAK,GAAY,IAAP7C,EACV6C,EAAK,GAAM7C,IAAS,EAAK,IACzB6C,EAAK,GAAM7C,IAAS,GAAM,IAC1B6C,EAAK,GAAM7C,IAAS,GAAM,IAC1BxtK,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAO2wH,EAAM,EAAG,IAI5C7C,EAAO,EACP7tH,EAAO,EAEP3/C,EAAMwO,KA3eF,EA6eN,KA7eM,EA+eJ,KAAOmxC,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEI3/C,EAAMwjC,OACRxjC,EAAMwjC,KAAKupI,OAAiB,IAAPS,EACrBxtK,EAAMwjC,KAAK6kD,GAAMmlF,GAAQ,GAET,IAAdxtK,EAAM0iC,QAER2tI,EAAK,GAAY,IAAP7C,EACV6C,EAAK,GAAM7C,IAAS,EAAK,IACzBxtK,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAO2wH,EAAM,EAAG,IAI5C7C,EAAO,EACP7tH,EAAO,EAEP3/C,EAAMwO,KApgBC,EAsgBT,KAtgBS,EAugBP,GAAkB,KAAdxO,EAAM0iC,MAAgB,CAExB,KAAOid,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA3/C,EAAMxQ,OAASg+K,EACXxtK,EAAMwjC,OACRxjC,EAAMwjC,KAAKwpI,UAAYQ,GAEP,IAAdxtK,EAAM0iC,QAER2tI,EAAK,GAAY,IAAP7C,EACV6C,EAAK,GAAM7C,IAAS,EAAK,IACzBxtK,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAO2wH,EAAM,EAAG,IAI5C7C,EAAO,EACP7tH,EAAO,CAET,MACS3/C,EAAMwjC,OACbxjC,EAAMwjC,KAAK4oI,MAAQ,MAErBpsK,EAAMwO,KAliBC,EAoiBT,KApiBS,EAqiBP,GAAkB,KAAdxO,EAAM0iC,SACR5N,EAAO90B,EAAMxQ,QACFu/K,IAAQj6I,EAAOi6I,GACtBj6I,IACE90B,EAAMwjC,OACRprB,EAAMpY,EAAMwjC,KAAKwpI,UAAYhtK,EAAMxQ,OAC9BwQ,EAAMwjC,KAAK4oI,QAEdpsK,EAAMwjC,KAAK4oI,MAAQ,IAAIh3J,MAAMpV,EAAMwjC,KAAKwpI,YAE1CrN,EAAMsD,SACJjjK,EAAMwjC,KAAK4oI,MACX15J,EACA/T,EAGAm2B,EAEA1c,IAMc,IAAdpY,EAAM0iC,QACR1iC,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAOhtC,EAAOoiB,EAAMn2B,IAEhDowK,GAAQj6I,EACRn2B,GAAQm2B,EACR90B,EAAMxQ,QAAUslC,GAEd90B,EAAMxQ,QAAU,MAAM8gL,EAE5BtwK,EAAMxQ,OAAS,EACfwQ,EAAMwO,KAtkBA,EAwkBR,KAxkBQ,EAykBN,GAAkB,KAAdxO,EAAM0iC,MAAgB,CACxB,GAAa,IAATqsI,EAAc,MAAMuB,EACxBx7I,EAAO,EACP,GAEE1c,EAAM1F,EAAM/T,EAAOm2B,KAEf90B,EAAMwjC,MAAQprB,GACbpY,EAAMxQ,OAAS,QAClBwQ,EAAMwjC,KAAKjuC,MAAQyjB,OAAOC,aAAab,UAElCA,GAAO0c,EAAOi6I,GAOvB,GALkB,IAAd/uK,EAAM0iC,QACR1iC,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAOhtC,EAAOoiB,EAAMn2B,IAEhDowK,GAAQj6I,EACRn2B,GAAQm2B,EACJ1c,EAAO,MAAMk4J,CACnB,MACStwK,EAAMwjC,OACbxjC,EAAMwjC,KAAKjuC,KAAO,MAEpByK,EAAMxQ,OAAS,EACfwQ,EAAMwO,KAhmBG,EAkmBX,KAlmBW,EAmmBT,GAAkB,KAAdxO,EAAM0iC,MAAgB,CACxB,GAAa,IAATqsI,EAAc,MAAMuB,EACxBx7I,EAAO,EACP,GACE1c,EAAM1F,EAAM/T,EAAOm2B,KAEf90B,EAAMwjC,MAAQprB,GACbpY,EAAMxQ,OAAS,QAClBwQ,EAAMwjC,KAAK6oI,SAAWrzJ,OAAOC,aAAab,UAErCA,GAAO0c,EAAOi6I,GAMvB,GALkB,IAAd/uK,EAAM0iC,QACR1iC,EAAM0/C,MAAQsmH,EAAMhmK,EAAM0/C,MAAOhtC,EAAOoiB,EAAMn2B,IAEhDowK,GAAQj6I,EACRn2B,GAAQm2B,EACJ1c,EAAO,MAAMk4J,CACnB,MACStwK,EAAMwjC,OACbxjC,EAAMwjC,KAAK6oI,QAAU,MAEvBrsK,EAAMwO,KAvnBA,EAynBR,KAznBQ,EA0nBN,GAAkB,IAAdxO,EAAM0iC,MAAgB,CAExB,KAAOid,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA,GAAI6tH,KAAwB,MAAdxtK,EAAM0/C,OAAiB,CACnC4gH,EAAKjgJ,IAAM,sBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAEAf,EAAO,EACP7tH,EAAO,CAET,CACI3/C,EAAMwjC,OACRxjC,EAAMwjC,KAAK2oI,KAASnsK,EAAM0iC,OAAS,EAAK,EACxC1iC,EAAMwjC,KAAKptB,MAAO,GAEpBkqJ,EAAK+D,MAAQrkK,EAAM0/C,MAAQ,EAC3B1/C,EAAMwO,KAAOqoG,EACb,MACF,KAnpBU,GAqpBR,KAAOl3D,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA2gH,EAAK+D,MAAQrkK,EAAM0/C,MAAQ8uH,EAAQhB,GAEnCA,EAAO,EACP7tH,EAAO,EAEP3/C,EAAMwO,KAhqBA,GAkqBR,KAlqBQ,GAmqBN,GAAuB,IAAnBxO,EAAM0uK,SASR,OAPApO,EAAKc,SAAW9mK,EAChBgmK,EAAKC,UAAYnjI,EACjBkjI,EAAKW,QAAUtiK,EACf2hK,EAAKY,SAAW6N,EAChB/uK,EAAMwtK,KAAOA,EACbxtK,EAAM2/C,KAAOA,EApsBD,EAwsBd2gH,EAAK+D,MAAQrkK,EAAM0/C,MAAQ,EAC3B1/C,EAAMwO,KAAOqoG,EAEf,KAAKA,EACH,GArtBc,IAqtBVh3B,GAptBU,IAotBWA,EAAqB,MAAMywF,EAEtD,KAlrBc,GAmrBZ,GAAItwK,EAAM8c,KAAM,CAEd0wJ,KAAiB,EAAP7tH,EACVA,GAAe,EAAPA,EAER3/C,EAAMwO,KA1qBD,GA2qBL,KACF,CAEA,KAAOmxC,EAAO,GAAG,CACf,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAQA,OANA3/C,EAAM8c,KAAe,EAAP0wJ,EAGd7tH,GAAQ,EAGQ,GAJhB6tH,KAAU,IAKR,KAAK,EAGHxtK,EAAMwO,KA5sBE,GA6sBR,MACF,KAAK,EAKH,GAJAohK,EAAY5vK,GAGZA,EAAMwO,KA5sBI,GA3CA,IAwvBNqxE,EAAmB,CAErB2tF,KAAU,EACV7tH,GAAQ,EAER,MAAM2wH,CACR,CACA,MACF,KAAK,EAGHtwK,EAAMwO,KA3tBC,GA4tBP,MACF,KAAK,EACH8xJ,EAAKjgJ,IAAM,qBACXrgB,EAAMwO,KAAO+/J,EAGjBf,KAAU,EACV7tH,GAAQ,EAER,MACF,KAzuBc,GA+uBZ,IAJA6tH,KAAiB,EAAP7tH,EACVA,GAAe,EAAPA,EAGDA,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA,IAAY,MAAP6tH,KAAqBA,IAAS,GAAM,OAAS,CAChDlN,EAAKjgJ,IAAM,+BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CASA,GARAvuK,EAAMxQ,OAAgB,MAAPg+K,EAIfA,EAAO,EACP7tH,EAAO,EAEP3/C,EAAMwO,KAjwBK,GAtCG,IAwyBVqxE,EAAqB,MAAMywF,EAEjC,KApwBa,GAqwBXtwK,EAAMwO,KApwBI,GAswBZ,KAtwBY,GAwwBV,GADAsmB,EAAO90B,EAAMxQ,OACH,CAGR,GAFIslC,EAAOi6I,IAAQj6I,EAAOi6I,GACtBj6I,EAAOsI,IAAQtI,EAAOsI,GACb,IAATtI,EAAc,MAAMw7I,EAExB3Q,EAAMsD,SAASp5E,EAAQn3E,EAAO/T,EAAMm2B,EAAMx6B,GAE1Cy0K,GAAQj6I,EACRn2B,GAAQm2B,EACRsI,GAAQtI,EACRx6B,GAAOw6B,EACP90B,EAAMxQ,QAAUslC,EAChB,KACF,CAEA90B,EAAMwO,KAAOqoG,EACb,MACF,KAxxBa,GA0xBX,KAAOl3D,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAkBA,GAhBA3/C,EAAM6uK,KAAkC,KAAnB,GAAPrB,GAEdA,KAAU,EACV7tH,GAAQ,EAER3/C,EAAM8uK,MAAmC,GAAnB,GAAPtB,GAEfA,KAAU,EACV7tH,GAAQ,EAER3/C,EAAM4uK,MAAmC,GAAnB,GAAPpB,GAEfA,KAAU,EACV7tH,GAAQ,EAGJ3/C,EAAM6uK,KAAO,KAAO7uK,EAAM8uK,MAAQ,GAAI,CACxCxO,EAAKjgJ,IAAM,sCACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAGAvuK,EAAM+uK,KAAO,EACb/uK,EAAMwO,KAxzBO,GA0zBf,KA1zBe,GA2zBb,KAAOxO,EAAM+uK,KAAO/uK,EAAM4uK,OAAO,CAE/B,KAAOjvH,EAAO,GAAG,CACf,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA3/C,EAAMgvK,KAAKpgK,EAAM5O,EAAM+uK,SAAmB,EAAPvB,EAEnCA,KAAU,EACV7tH,GAAQ,CAEV,CACA,KAAO3/C,EAAM+uK,KAAO,IAClB/uK,EAAMgvK,KAAKpgK,EAAM5O,EAAM+uK,SAAW,EAapC,GAPA/uK,EAAM+tK,QAAU/tK,EAAMkvK,OACtBlvK,EAAMiuK,QAAU,EAEhB73H,EAAO,CAAEuJ,KAAM3/C,EAAMiuK,SACrBvsG,EAAM4sG,EA74BF,EA64BuBtuK,EAAMgvK,KAAM,EAAG,GAAIhvK,EAAM+tK,QAAS,EAAG/tK,EAAMivK,KAAM74H,GAC5Ep2C,EAAMiuK,QAAU73H,EAAKuJ,KAEjB+hB,EAAK,CACP4+F,EAAKjgJ,IAAM,2BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAEAvuK,EAAM+uK,KAAO,EACb/uK,EAAMwO,KA91BQ,GAg2BhB,KAh2BgB,GAi2Bd,KAAOxO,EAAM+uK,KAAO/uK,EAAM6uK,KAAO7uK,EAAM8uK,OAAO,CAC5C,KAGEkB,GAFAnC,EAAO7tK,EAAM+tK,QAAQP,GAAS,GAAKxtK,EAAMiuK,SAAW,MAEhC,GAAM,IAC1BgC,EAAkB,MAAPpC,KAFXkC,EAAYlC,IAAS,KAIFluH,IANZ,CAQP,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CAEV,CACA,GAAIswH,EAAW,GAEbzC,KAAUuC,EACVpwH,GAAQowH,EAER/vK,EAAMgvK,KAAKhvK,EAAM+uK,QAAUkB,MAExB,CACH,GAAiB,KAAbA,EAAiB,CAGnB,IADAt6J,EAAIo6J,EAAY,EACTpwH,EAAOhqC,GAAG,CACf,GAAa,IAATo5J,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAMA,GAHA6tH,KAAUuC,EACVpwH,GAAQowH,EAEW,IAAf/vK,EAAM+uK,KAAY,CACpBzO,EAAKjgJ,IAAM,4BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACAn2J,EAAMpY,EAAMgvK,KAAKhvK,EAAM+uK,KAAO,GAC9Bj6I,EAAO,GAAY,EAAP04I,GAEZA,KAAU,EACV7tH,GAAQ,CAEV,MACK,GAAiB,KAAbswH,EAAiB,CAGxB,IADAt6J,EAAIo6J,EAAY,EACTpwH,EAAOhqC,GAAG,CACf,GAAa,IAATo5J,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAIAA,GAAQowH,EAER33J,EAAM,EACN0c,EAAO,GAAY,GAJnB04I,KAAUuC,IAMVvC,KAAU,EACV7tH,GAAQ,CAEV,KACK,CAGH,IADAhqC,EAAIo6J,EAAY,EACTpwH,EAAOhqC,GAAG,CACf,GAAa,IAATo5J,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAIAA,GAAQowH,EAER33J,EAAM,EACN0c,EAAO,IAAa,KAJpB04I,KAAUuC,IAMVvC,KAAU,EACV7tH,GAAQ,CAEV,CACA,GAAI3/C,EAAM+uK,KAAOj6I,EAAO90B,EAAM6uK,KAAO7uK,EAAM8uK,MAAO,CAChDxO,EAAKjgJ,IAAM,4BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACA,KAAOz5I,KACL90B,EAAMgvK,KAAKhvK,EAAM+uK,QAAU32J,CAE/B,CACF,CAGA,GAAIpY,EAAMwO,OAAS+/J,EAAO,MAG1B,GAAwB,IAApBvuK,EAAMgvK,KAAK,KAAY,CACzB1O,EAAKjgJ,IAAM,uCACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAcA,GATAvuK,EAAMiuK,QAAU,EAEhB73H,EAAO,CAAEuJ,KAAM3/C,EAAMiuK,SACrBvsG,EAAM4sG,EA/gCH,EA+gCuBtuK,EAAMgvK,KAAM,EAAGhvK,EAAM6uK,KAAM7uK,EAAM+tK,QAAS,EAAG/tK,EAAMivK,KAAM74H,GAGnFp2C,EAAMiuK,QAAU73H,EAAKuJ,KAGjB+hB,EAAK,CACP4+F,EAAKjgJ,IAAM,8BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAaA,GAXAvuK,EAAMkuK,SAAW,EAGjBluK,EAAMguK,SAAWhuK,EAAMmvK,QACvB/4H,EAAO,CAAEuJ,KAAM3/C,EAAMkuK,UACrBxsG,EAAM4sG,EA/hCF,EA+hCuBtuK,EAAMgvK,KAAMhvK,EAAM6uK,KAAM7uK,EAAM8uK,MAAO9uK,EAAMguK,SAAU,EAAGhuK,EAAMivK,KAAM74H,GAG/Fp2C,EAAMkuK,SAAW93H,EAAKuJ,KAGlB+hB,EAAK,CACP4+F,EAAKjgJ,IAAM,wBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAGA,GADAvuK,EAAMwO,KAn/BQ,GA3CA,IA+hCVqxE,EAAqB,MAAMywF,EAEjC,KAt/BgB,GAu/BdtwK,EAAMwO,KAt/BO,GAw/Bf,KAx/Be,GAy/Bb,GAAIugK,GAAQ,GAAK3xI,GAAQ,IAAK,CAE5BkjI,EAAKc,SAAW9mK,EAChBgmK,EAAKC,UAAYnjI,EACjBkjI,EAAKW,QAAUtiK,EACf2hK,EAAKY,SAAW6N,EAChB/uK,EAAMwtK,KAAOA,EACbxtK,EAAM2/C,KAAOA,EAEb0uH,EAAa/N,EAAM4M,GAEnB5yK,EAAMgmK,EAAKc,SACXv3E,EAASy2E,EAAKz2E,OACdzsD,EAAOkjI,EAAKC,UACZ5hK,EAAO2hK,EAAKW,QACZvuJ,EAAQ4tJ,EAAK5tJ,MACbq8J,EAAOzO,EAAKY,SACZsM,EAAOxtK,EAAMwtK,KACb7tH,EAAO3/C,EAAM2/C,KAGT3/C,EAAMwO,OAASqoG,IACjB72G,EAAMovK,MAAQ,GAEhB,KACF,CAEA,IADApvK,EAAMovK,KAAO,EAIXY,GAFAnC,EAAO7tK,EAAM+tK,QAAQP,GAAS,GAAKxtK,EAAMiuK,SAAW,MAEhC,GAAM,IAC1BgC,EAAkB,MAAPpC,KAFXkC,EAAYlC,IAAS,KAIJluH,IANV,CAQP,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CAEV,CACA,GAAIqwH,KAAsB,IAAVA,GAAuB,CAIrC,IAHAE,EAAYH,EACZI,EAAUH,EACVI,EAAWH,EAKTD,GAHAnC,EAAO7tK,EAAM+tK,QAAQqC,IACX5C,GAAS,GAAM0C,EAAYC,GAAY,IAAoCD,OAEjE,GAAM,IAC1BD,EAAkB,MAAPpC,IAENqC,GAJLH,EAAYlC,IAAS,KAIUluH,IAPxB,CASP,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CAEV,CAEA6tH,KAAU0C,EACVvwH,GAAQuwH,EAERlwK,EAAMovK,MAAQc,CAChB,CAOA,GALA1C,KAAUuC,EACVpwH,GAAQowH,EAER/vK,EAAMovK,MAAQW,EACd/vK,EAAMxQ,OAASygL,EACC,IAAZD,EAAe,CAIjBhwK,EAAMwO,KAhkCK,GAikCX,KACF,CACA,GAAc,GAAVwhK,EAAc,CAEhBhwK,EAAMovK,MAAQ,EACdpvK,EAAMwO,KAAOqoG,EACb,KACF,CACA,GAAc,GAAVm5D,EAAc,CAChB1P,EAAKjgJ,IAAM,8BACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACAvuK,EAAMosK,MAAkB,GAAV4D,EACdhwK,EAAMwO,KAnlCU,GAqlClB,KArlCkB,GAslChB,GAAIxO,EAAMosK,MAAO,CAGf,IADAz2J,EAAI3V,EAAMosK,MACHzsH,EAAOhqC,GAAG,CACf,GAAa,IAATo5J,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA3/C,EAAMxQ,QAAUg+K,GAAS,GAAKxtK,EAAMosK,OAAS,EAE7CoB,KAAUxtK,EAAMosK,MAChBzsH,GAAQ3/C,EAAMosK,MAEdpsK,EAAMovK,MAAQpvK,EAAMosK,KACtB,CAEApsK,EAAMqvK,IAAMrvK,EAAMxQ,OAClBwQ,EAAMwO,KAxmCQ,GA0mChB,KA1mCgB,GA2mCd,KAGEwhK,GAFAnC,EAAO7tK,EAAMguK,SAASR,GAAS,GAAKxtK,EAAMkuK,UAAY,MAElC,GAAM,IAC1B+B,EAAkB,MAAPpC,KAFXkC,EAAYlC,IAAS,KAIFluH,IANZ,CAQP,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CAEV,CACA,KAAe,IAAVqwH,GAAuB,CAI1B,IAHAE,EAAYH,EACZI,EAAUH,EACVI,EAAWH,EAKTD,GAHAnC,EAAO7tK,EAAMguK,SAASoC,IACZ5C,GAAS,GAAM0C,EAAYC,GAAY,IAAoCD,OAEjE,GAAM,IAC1BD,EAAkB,MAAPpC,IAENqC,GAJLH,EAAYlC,IAAS,KAIUluH,IAPxB,CASP,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CAEV,CAEA6tH,KAAU0C,EACVvwH,GAAQuwH,EAERlwK,EAAMovK,MAAQc,CAChB,CAMA,GAJA1C,KAAUuC,EACVpwH,GAAQowH,EAER/vK,EAAMovK,MAAQW,EACA,GAAVC,EAAc,CAChB1P,EAAKjgJ,IAAM,wBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CACAvuK,EAAMwZ,OAASy2J,EACfjwK,EAAMosK,MAAoB,GAAZ,EACdpsK,EAAMwO,KA7pCW,GA+pCnB,KA/pCmB,GAgqCjB,GAAIxO,EAAMosK,MAAO,CAGf,IADAz2J,EAAI3V,EAAMosK,MACHzsH,EAAOhqC,GAAG,CACf,GAAa,IAATo5J,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA3/C,EAAMwZ,QAAUg0J,GAAS,GAAKxtK,EAAMosK,OAAS,EAE7CoB,KAAUxtK,EAAMosK,MAChBzsH,GAAQ3/C,EAAMosK,MAEdpsK,EAAMovK,MAAQpvK,EAAMosK,KACtB,CAEA,GAAIpsK,EAAMwZ,OAASxZ,EAAMmtK,KAAM,CAC7B7M,EAAKjgJ,IAAM,gCACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAGAvuK,EAAMwO,KAxrCS,GA0rCjB,KA1rCiB,GA2rCf,GAAa,IAAT4uB,EAAc,MAAMkzI,EAExB,GADAx7I,EAAOo4I,EAAO9vI,EACVp9B,EAAMwZ,OAASsb,EAAM,CAEvB,IADAA,EAAO90B,EAAMwZ,OAASsb,GACX90B,EAAMqtK,OACXrtK,EAAMouK,KAAM,CACd9N,EAAKjgJ,IAAM,gCACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAiBEz5I,EAAO90B,EAAMstK,OACfx4I,GAAQ90B,EAAMstK,MACdrhJ,EAAOjsB,EAAMotK,MAAQt4I,GAGrB7I,EAAOjsB,EAAMstK,MAAQx4I,EAEnBA,EAAO90B,EAAMxQ,SAAUslC,EAAO90B,EAAMxQ,QACxCs+K,EAAc9tK,EAAMkG,MACtB,MAEE4nK,EAAcjkF,EACd59D,EAAO3xB,EAAM0F,EAAMwZ,OACnBsb,EAAO90B,EAAMxQ,OAEXslC,EAAOsI,IAAQtI,EAAOsI,GAC1BA,GAAQtI,EACR90B,EAAMxQ,QAAUslC,EAChB,GACE+0D,EAAOvvF,KAASwzK,EAAY7hJ,aACnB6I,GACU,IAAjB90B,EAAMxQ,SAAgBwQ,EAAMwO,KA9uCnB,IA+uCb,MACF,KA3uCe,GA4uCb,GAAa,IAAT4uB,EAAc,MAAMkzI,EACxBzmF,EAAOvvF,KAAS0F,EAAMxQ,OACtB4tC,IACAp9B,EAAMwO,KApvCO,GAqvCb,MACF,KAhvCS,GAivCP,GAAIxO,EAAMoqF,KAAM,CAEd,KAAOzqC,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IAEAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAaA,GAXAutH,GAAQ9vI,EACRkjI,EAAKuG,WAAaqG,EAClBltK,EAAMu7B,OAAS2xI,EACXA,IACF5M,EAAK+D,MAAQrkK,EAAM0/C,MAEd1/C,EAAM0iC,MAAQsjI,EAAMhmK,EAAM0/C,MAAOmqC,EAAQqjF,EAAM5yK,EAAM4yK,GAAQnH,EAAQ/lK,EAAM0/C,MAAOmqC,EAAQqjF,EAAM5yK,EAAM4yK,IAG7GA,EAAO9vI,GAEFp9B,EAAM0iC,MAAQ8qI,EAAOgB,EAAQhB,MAAWxtK,EAAM0/C,MAAO,CACxD4gH,EAAKjgJ,IAAM,uBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAEAf,EAAO,EACP7tH,EAAO,CAGT,CACA3/C,EAAMwO,KAhxCE,GAkxCV,KAlxCU,GAmxCR,GAAIxO,EAAMoqF,MAAQpqF,EAAM0iC,MAAO,CAE7B,KAAOid,EAAO,IAAI,CAChB,GAAa,IAATovH,EAAc,MAAMuB,EACxBvB,IACAvB,GAAQ96J,EAAM/T,MAAWghD,EACzBA,GAAQ,CACV,CAEA,GAAI6tH,KAAwB,WAAdxtK,EAAMu7B,OAAqB,CACvC+kI,EAAKjgJ,IAAM,yBACXrgB,EAAMwO,KAAO+/J,EACb,KACF,CAEAf,EAAO,EACP7tH,EAAO,CAGT,CACA3/C,EAAMwO,KAtyCA,GAwyCR,KAxyCQ,GAyyCNkzD,EAt1Cc,EAu1Cd,MAAM4uG,EACR,KAAK/B,EACH7sG,GAr1Cc,EAs1Cd,MAAM4uG,EACR,KA5yCO,GA6yCL,OAv1Cc,EA01ChB,QACE,OAAOzL,EAsBb,OARAvE,EAAKc,SAAW9mK,EAChBgmK,EAAKC,UAAYnjI,EACjBkjI,EAAKW,QAAUtiK,EACf2hK,EAAKY,SAAW6N,EAChB/uK,EAAMwtK,KAAOA,EACbxtK,EAAM2/C,KAAOA,GAGT3/C,EAAMotK,OAAUF,IAAS5M,EAAKC,WAAavgK,EAAMwO,KAAO+/J,IACvCvuK,EAAMwO,KA50Cd,IApDO,IAg4CuBqxE,KACrCgwF,EAAavP,EAAMA,EAAKz2E,OAAQy2E,EAAKc,SAAU8L,EAAO5M,EAAKC,YAC7DvgK,EAAMwO,KA10CC,IA1CS,IAw3CpBy+J,GAAO3M,EAAKY,SACZgM,GAAQ5M,EAAKC,UACbD,EAAKqI,UAAYsE,EACjB3M,EAAKuG,WAAaqG,EAClBltK,EAAMu7B,OAAS2xI,EACXltK,EAAMoqF,MAAQ8iF,IAChB5M,EAAK+D,MAAQrkK,EAAM0/C,MAChB1/C,EAAM0iC,MAAQsjI,EAAMhmK,EAAM0/C,MAAOmqC,EAAQqjF,EAAM5M,EAAKc,SAAW8L,GAAQnH,EAAQ/lK,EAAM0/C,MAAOmqC,EAAQqjF,EAAM5M,EAAKc,SAAW8L,IAE/H5M,EAAKqL,UAAY3rK,EAAM2/C,MAAQ3/C,EAAM8c,KAAO,GAAK,IAC9B9c,EAAMwO,OAASqoG,EAAO,IAAM,IAn2C3B,KAo2CD72G,EAAMwO,MAz2CR,KAy2CyBxO,EAAMwO,KAAiB,IAAM,IACzD,IAARy+J,GAAsB,IAATC,GAl5CC,IAk5CcrtF,IA14Cd,IA04CqCne,IACvDA,GAp4CkB,GAs4CbA,EACT,EAwEA+zC,EAAQytD,WAtER,SAAoB5C,GAElB,IAAKA,IAASA,EAAKtgK,MACjB,OAAO6kK,EAGT,IAAI7kK,EAAQsgK,EAAKtgK,MAKjB,OAJIA,EAAMkG,SACRlG,EAAMkG,OAAS,MAEjBo6J,EAAKtgK,MAAQ,KA15CO,CA45CtB,EA2DAy1G,EAAQwsD,iBAzDR,SAA0B3B,EAAM98H,GAC9B,IAAIxjC,EAGJ,OAAKsgK,GAASA,EAAKtgK,OAED,GADlBA,EAAQsgK,EAAKtgK,OACFoqF,MAGXpqF,EAAMwjC,KAAOA,EACbA,EAAKptB,MAAO,EAx6CQ,GAk6CeyuJ,CAQrC,EA8CApvD,EAAQysD,qBA5CR,SAA8B5B,EAAMI,GAClC,IAEI1gK,EAFA6sK,EAAanM,EAAWlxK,OAO5B,OAAK8wK,GAAyBA,EAAKtgK,MAGhB,KAFnBA,EAAQsgK,EAAKtgK,OAEHoqF,MA35CE,KA25CYpqF,EAAMwO,KACrBq2J,EA55CG,KAg6CR7kK,EAAMwO,MAGCu3J,EAFA,EAEgBrF,EAAYmM,EAAY,KAClC7sK,EAAM0/C,OA37CH,EAi8CdmwH,EAAavP,EAAMI,EAAYmM,EAAYA,IAE/C7sK,EAAMwO,KAx5CG,IA1CS,IAq8CpBxO,EAAM0uK,SAAW,EA38CG,GAo7C+C7J,CA0BrE,EAWApvD,EAAQ86D,YAAc,mECp/CtB,IAAI5Q,EAAQ,EAAQ,OAEhB6Q,EAAU,GASVC,EAAQ,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAG3DC,EAAO,CACT,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGtDC,EAAQ,CACV,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IACtD,IAAK,IAAK,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAClD,KAAM,MAAO,MAAO,MAAO,EAAG,GAG5BC,EAAO,CACT,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC5D,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,IAGtBp7D,EAAOC,QAAU,SAAuBtiH,EAAM67K,EAAM6B,EAAY9xH,EAAOnI,EAAOk6H,EAAa7B,EAAM74H,GAE/F,IAYI26H,EACA/zG,EACAopF,EACA4qB,EACAryK,EAIA48C,EAMAw0H,EAAWC,EAASC,EA1BpBtwH,EAAOvJ,EAAKuJ,KAGZvnC,EAAM,EACN8nH,EAAM,EACNl7H,EAAM,EAAG0O,EAAM,EACfyjC,EAAO,EACPxX,EAAO,EACPw2H,EAAO,EACP/4H,EAAO,EACP6zI,EAAO,EACPC,EAAO,EAMPn+K,EAAO,KACPo+K,EAAa,EAGbvnF,EAAQ,IAAI+1E,EAAMgE,MAAM6M,IACxBY,EAAO,IAAIzR,EAAMgE,MAAM6M,IACvBpE,EAAQ,KACRiF,EAAc,EAoClB,IAAKj5J,EAAM,EAAGA,GAAOo4J,EAASp4J,IAC5BwxE,EAAMxxE,GAAO,EAEf,IAAK8nH,EAAM,EAAGA,EAAMnhF,EAAOmhF,IACzBt2C,EAAMolF,EAAK6B,EAAa3wC,MAK1B,IADA/oF,EAAOwI,EACFjsC,EAAM88J,EAAS98J,GAAO,GACN,IAAfk2E,EAAMl2E,GADkBA,KAM9B,GAHIyjC,EAAOzjC,IACTyjC,EAAOzjC,GAEG,IAARA,EAaF,OATAkjC,EAAMk6H,KAAiB,SAMvBl6H,EAAMk6H,KAAiB,SAEvB16H,EAAKuJ,KAAO,EACL,EAET,IAAK36C,EAAM,EAAGA,EAAM0O,GACC,IAAfk2E,EAAM5kF,GADaA,KASzB,IANImyC,EAAOnyC,IACTmyC,EAAOnyC,GAITo4B,EAAO,EACFhlB,EAAM,EAAGA,GAAOo4J,EAASp4J,IAG5B,GAFAglB,IAAS,GACTA,GAAQwsD,EAAMxxE,IACH,EACT,OAAQ,EAGZ,GAAIglB,EAAO,IAtID,IAsIOjqC,GAA0B,IAARugB,GACjC,OAAQ,EAKV,IADA09J,EAAK,GAAK,EACLh5J,EAAM,EAAGA,EAAMo4J,EAASp4J,IAC3Bg5J,EAAKh5J,EAAM,GAAKg5J,EAAKh5J,GAAOwxE,EAAMxxE,GAIpC,IAAK8nH,EAAM,EAAGA,EAAMnhF,EAAOmhF,IACM,IAA3B8uC,EAAK6B,EAAa3wC,KACpB+uC,EAAKmC,EAAKpC,EAAK6B,EAAa3wC,OAAWA,GAmE3C,GAtNU,IAyLN/sI,GACFJ,EAAOq5K,EAAQ6C,EACf1zH,EAAM,IA1LC,IA4LEpoD,GACTJ,EAAO09K,EACPU,GAAc,IACd/E,EAAQsE,EACRW,GAAe,IACf91H,EAAM,MAGNxoD,EAAO49K,EACPvE,EAAQwE,EACRr1H,GAAO,GAIT21H,EAAO,EACPhxC,EAAM,EACN9nH,EAAMpT,EACNrG,EAAOmyK,EACPnxI,EAAOwX,EACPg/G,EAAO,EACP/P,GAAO,EAEP4qB,GADAC,EAAO,GAAK95H,GACE,EAlNL,IAqNJhkD,GAAiB89K,EA1NN,KAMN,IAqNP99K,GAAkB89K,EA1NJ,IA2Nf,OAAO,EAIT,OAAS,CAEPlB,EAAY33J,EAAM+9I,EACd8Y,EAAK/uC,GAAO3kF,GACdy0H,EAAU,EACVC,EAAWhB,EAAK/uC,IAET+uC,EAAK/uC,GAAO3kF,GACnBy0H,EAAU5D,EAAMiF,EAAcpC,EAAK/uC,IACnC+vC,EAAWl9K,EAAKo+K,EAAalC,EAAK/uC,MAGlC8vC,EAAU,GACVC,EAAW,GAIbc,EAAO,GAAM34J,EAAM+9I,EAEnBnxJ,EADAg4D,EAAO,GAAKr9B,EAEZ,GAEEiX,EAAMj4C,GAAQuyK,GAAQ/a,IADtBn5F,GAAQ+zG,IAC+BhB,GAAa,GAAOC,GAAW,GAAMC,QAC5D,IAATjzG,GAIT,IADA+zG,EAAO,GAAM34J,EAAM,EACZ84J,EAAOH,GACZA,IAAS,EAWX,GATa,IAATA,GACFG,GAAQH,EAAO,EACfG,GAAQH,GAERG,EAAO,EAIThxC,IACqB,KAAft2C,EAAMxxE,GAAY,CACtB,GAAIA,IAAQ1E,EAAO,MACnB0E,EAAM42J,EAAK6B,EAAa5B,EAAK/uC,GAC/B,CAGA,GAAI9nH,EAAM++B,IAAS+5H,EAAOF,KAAU5qB,EAAK,CAYvC,IAVa,IAAT+P,IACFA,EAAOh/G,GAITx4C,GAAQqG,EAIRo4B,EAAO,IADPuC,EAAOvnB,EAAM+9I,GAENx2H,EAAOw2H,EAAOziJ,MACnB0pB,GAAQwsD,EAAMjqD,EAAOw2H,KACT,IACZx2H,IACAvC,IAAS,EAKX,GADA6zI,GAAQ,GAAKtxI,EA5RR,IA6RAxsC,GAAiB89K,EAlSV,KAMN,IA6RH99K,GAAkB89K,EAlSR,IAmSX,OAAO,EAQTr6H,EAJAwvG,EAAM8qB,EAAOF,GAIC75H,GAAQ,GAAOxX,GAAQ,GAAOhhC,EAAOmyK,CACrD,CACF,CAeA,OAVa,IAATI,IAIFt6H,EAAMj4C,EAAOuyK,GAAU94J,EAAM+9I,GAAS,GAAO,IAAM,IAKrD//G,EAAKuJ,KAAOxI,EACL,CACT,0BCjUAq+D,EAAOC,QAAU,CACf,EAAQ,kBACR,EAAQ,aACR,EAAQ,GACR,KAAQ,aACR,KAAQ,eACR,KAAQ,aACR,KAAQ,sBACR,KAAQ,eACR,KAAQ,sDCPV,IAAIkqD,EAAQ,EAAQ,OAqBpB,SAAS6G,EAAK1vH,GAA6B,IAAtB,IAAI1+B,EAAM0+B,EAAItnD,SAAiB4oB,GAAO,GAAK0+B,EAAI1+B,GAAO,CAAK,CAIhF,IAiBIk5J,EAAgB,IAGhBC,EAAgBD,IAGhBE,EAAgB,GAShBzG,EAAgB,GA2BhB0G,EACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAEvDC,EACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAEhEC,EACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAEnCC,EACF,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAgB3CC,EAAgB,IAAIz8J,MAAM,KAC9BoxJ,EAAKqL,GAOL,IAAIC,EAAgB,IAAI18J,MAAMo8J,IAC9BhL,EAAKsL,GAKL,IAAIC,EAAgB,IAAI38J,MAjBJ,KAkBpBoxJ,EAAKuL,GAML,IAAIC,EAAgB,IAAI58J,MAAM6wJ,KAC9BO,EAAKwL,GAGL,IAAIC,EAAgB,IAAI78J,MAhGJ,IAiGpBoxJ,EAAKyL,GAGL,IAkBIC,EACAC,EACAC,EApBAC,EAAgB,IAAIj9J,MAAMo8J,GAK9B,SAASc,EAAeC,EAAaC,EAAYC,EAAYC,EAAOC,GAElEtgL,KAAKkgL,YAAeA,EACpBlgL,KAAKmgL,WAAeA,EACpBngL,KAAKogL,WAAeA,EACpBpgL,KAAKqgL,MAAeA,EACpBrgL,KAAKsgL,WAAeA,EAGpBtgL,KAAKugL,UAAeL,GAAeA,EAAY/iL,MACjD,CAQA,SAASqjL,EAASC,EAAUC,GAC1B1gL,KAAKygL,SAAWA,EAChBzgL,KAAK2gL,SAAW,EAChB3gL,KAAK0gL,UAAYA,CACnB,CAIA,SAASE,EAAO56H,GACd,OAAOA,EAAO,IAAM05H,EAAW15H,GAAQ05H,EAAW,KAAO15H,IAAS,GACpE,CAOA,SAAS66H,EAAUx9J,EAAG2yB,GAGpB3yB,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAmB,IAAN,EAC7BhxJ,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAcr+H,IAAM,EAAK,GAC3C,CAOA,SAAS8qI,EAAUz9J,EAAGjlB,EAAOjB,GACvBkmB,EAAE+1J,SApIY,GAoIWj8K,GAC3BkmB,EAAE81J,QAAW/6K,GAASilB,EAAE+1J,SAAY,MACpCyH,EAAUx9J,EAAGA,EAAE81J,QACf91J,EAAE81J,OAAS/6K,GAvIK,GAuIgBilB,EAAE+1J,SAClC/1J,EAAE+1J,UAAYj8K,EAxIE,KA0IhBkmB,EAAE81J,QAAW/6K,GAASilB,EAAE+1J,SAAY,MACpC/1J,EAAE+1J,UAAYj8K,EAElB,CAGA,SAAS4jL,EAAU19J,EAAGw4B,EAAGmlI,GACvBF,EAAUz9J,EAAG29J,EAAS,EAAJnlI,GAAiBmlI,EAAS,EAAJnlI,EAAQ,GAClD,CAQA,SAASolI,EAAWv6J,EAAMX,GACxB,IAAIoG,EAAM,EACV,GACEA,GAAc,EAAPzF,EACPA,KAAU,EACVyF,IAAQ,UACCpG,EAAM,GACjB,OAAOoG,IAAQ,CACjB,CA+HA,SAAS+0J,EAAUF,EAAML,EAAUlI,GAKjC,IAEInrH,EACAhqC,EAHA69J,EAAY,IAAIp+J,MAAM21J,IACtBhyJ,EAAO,EAOX,IAAK4mC,EAAO,EAAGA,GAAQorH,EAAUprH,IAC/B6zH,EAAU7zH,GAAQ5mC,EAAQA,EAAO+xJ,EAASnrH,EAAO,IAAO,EAS1D,IAAKhqC,EAAI,EAAIA,GAAKq9J,EAAUr9J,IAAK,CAC/B,IAAIyC,EAAMi7J,EAAS,EAAJ19J,EAAQ,GACX,IAARyC,IAEJi7J,EAAS,EAAJ19J,GAAkB29J,EAAWE,EAAUp7J,KAAQA,GAItD,CACF,CA8GA,SAASq7J,EAAW/9J,GAClB,IAAIC,EAGJ,IAAKA,EAAI,EAAGA,EAAI47J,EAAU57J,IAAOD,EAAE60J,UAAc,EAAJ50J,GAAkB,EAC/D,IAAKA,EAAI,EAAGA,EAAI67J,EAAU77J,IAAOD,EAAE+0J,UAAc,EAAJ90J,GAAkB,EAC/D,IAAKA,EAAI,EAAGA,EA9bM,GA8bQA,IAAOD,EAAEg1J,QAAY,EAAJ/0J,GAAkB,EAE7DD,EAAE60J,UAAUmJ,KAA0B,EACtCh+J,EAAE41J,QAAU51J,EAAE61J,WAAa,EAC3B71J,EAAE4zJ,SAAW5zJ,EAAEyhJ,QAAU,CAC3B,CAMA,SAASwc,EAAUj+J,GAEbA,EAAE+1J,SAAW,EACfyH,EAAUx9J,EAAGA,EAAE81J,QACN91J,EAAE+1J,SAAW,IAEtB/1J,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAahxJ,EAAE81J,QAEjC91J,EAAE81J,OAAS,EACX91J,EAAE+1J,SAAW,CACf,CA6BA,SAASmI,EAAQP,EAAM19J,EAAG63B,EAAGvD,GAC3B,IAAI4pI,EAAU,EAAJl+J,EACNm+J,EAAU,EAAJtmI,EACV,OAAQ6lI,EAAKQ,GAAgBR,EAAKS,IAC1BT,EAAKQ,KAAkBR,EAAKS,IAAiB7pI,EAAMt0B,IAAMs0B,EAAMuD,EACzE,CAQA,SAASumI,EAAWr+J,EAAG29J,EAAMj8J,GAO3B,IAFA,IAAIN,EAAIpB,EAAEs1J,KAAK5zJ,GACXE,EAAIF,GAAK,EACNE,GAAK5B,EAAEu1J,WAER3zJ,EAAI5B,EAAEu1J,UACR2I,EAAQP,EAAM39J,EAAEs1J,KAAK1zJ,EAAI,GAAI5B,EAAEs1J,KAAK1zJ,GAAI5B,EAAEu0B,QAC1C3yB,KAGEs8J,EAAQP,EAAMv8J,EAAGpB,EAAEs1J,KAAK1zJ,GAAI5B,EAAEu0B,SAGlCv0B,EAAEs1J,KAAK5zJ,GAAK1B,EAAEs1J,KAAK1zJ,GACnBF,EAAIE,EAGJA,IAAM,EAER5B,EAAEs1J,KAAK5zJ,GAAKN,CACd,CASA,SAASk9J,EAAet+J,EAAGu+J,EAAOC,GAKhC,IAAI77H,EACA87H,EAEAp7J,EACAqzJ,EAFAgI,EAAK,EAIT,GAAmB,IAAf1+J,EAAE4zJ,SACJ,GACEjxH,EAAQ3iC,EAAEixJ,YAAYjxJ,EAAE21J,MAAa,EAAL+I,IAAW,EAAM1+J,EAAEixJ,YAAYjxJ,EAAE21J,MAAa,EAAL+I,EAAS,GAClFD,EAAKz+J,EAAEixJ,YAAYjxJ,EAAEy1J,MAAQiJ,GAC7BA,IAEa,IAAT/7H,EACF+6H,EAAU19J,EAAGy+J,EAAIF,IAKjBb,EAAU19J,GADVqD,EAAOi5J,EAAamC,IACA7C,EAAW,EAAG2C,GAEpB,KADd7H,EAAQqF,EAAY14J,KAGlBo6J,EAAUz9J,EADVy+J,GAAMlC,EAAYl5J,GACDqzJ,GAMnBgH,EAAU19J,EAHVqD,EAAOk6J,IADP56H,GAImB67H,GAEL,KADd9H,EAAQsF,EAAY34J,KAGlBo6J,EAAUz9J,EADV2iC,GAAQg6H,EAAUt5J,GACCqzJ,UAQhBgI,EAAK1+J,EAAE4zJ,UAGlB8J,EAAU19J,EA1jBM,IA0jBQu+J,EAC1B,CAWA,SAASI,EAAW3+J,EAAG1iB,GAIrB,IAII2iB,EAAG63B,EAEH3a,EANAwgJ,EAAWrgL,EAAK8/K,SAChBwB,EAAWthL,EAAK+/K,UAAUR,YAC1BK,EAAY5/K,EAAK+/K,UAAUH,UAC3BF,EAAW1/K,EAAK+/K,UAAUL,MAE1BM,GAAY,EAUhB,IAHAt9J,EAAEu1J,SAAW,EACbv1J,EAAEw1J,SAxmBgB,IA0mBbv1J,EAAI,EAAGA,EAAI+8J,EAAO/8J,IACQ,IAAzB09J,EAAS,EAAJ19J,IACPD,EAAEs1J,OAAOt1J,EAAEu1J,UAAY+H,EAAWr9J,EAClCD,EAAEu0B,MAAMt0B,GAAK,GAGb09J,EAAS,EAAJ19J,EAAQ,GAAa,EAS9B,KAAOD,EAAEu1J,SAAW,GAElBoI,EAAY,GADZxgJ,EAAOnd,EAAEs1J,OAAOt1J,EAAEu1J,UAAa+H,EAAW,IAAMA,EAAW,IACjC,EAC1Bt9J,EAAEu0B,MAAMpX,GAAQ,EAChBnd,EAAE41J,UAEEsH,IACFl9J,EAAE61J,YAAc+I,EAAa,EAAPzhJ,EAAW,IASrC,IALA7/B,EAAKggL,SAAWA,EAKXr9J,EAAKD,EAAEu1J,UAAY,EAAct1J,GAAK,EAAGA,IAAOo+J,EAAWr+J,EAAG29J,EAAM19J,GAKzEkd,EAAO6/I,EACP,GAGE/8J,EAAID,EAAEs1J,KAAK,GACXt1J,EAAEs1J,KAAK,GAAiBt1J,EAAEs1J,KAAKt1J,EAAEu1J,YACjC8I,EAAWr+J,EAAG29J,EAAM,GAGpB7lI,EAAI93B,EAAEs1J,KAAK,GAEXt1J,EAAEs1J,OAAOt1J,EAAEw1J,UAAYv1J,EACvBD,EAAEs1J,OAAOt1J,EAAEw1J,UAAY19H,EAGvB6lI,EAAY,EAAPxgJ,GAAqBwgJ,EAAS,EAAJ19J,GAAkB09J,EAAS,EAAJ7lI,GACtD93B,EAAEu0B,MAAMpX,IAASnd,EAAEu0B,MAAMt0B,IAAMD,EAAEu0B,MAAMuD,GAAK93B,EAAEu0B,MAAMt0B,GAAKD,EAAEu0B,MAAMuD,IAAM,EACvE6lI,EAAS,EAAJ19J,EAAQ,GAAa09J,EAAS,EAAJ7lI,EAAQ,GAAa3a,EAGpDnd,EAAEs1J,KAAK,GAAiBn4I,IACxBkhJ,EAAWr+J,EAAG29J,EAAM,SAEb39J,EAAEu1J,UAAY,GAEvBv1J,EAAEs1J,OAAOt1J,EAAEw1J,UAAYx1J,EAAEs1J,KAAK,GAjehC,SAAoBt1J,EAAG1iB,GAIrB,IAOIs1C,EACA3yB,EAAG63B,EACHmS,EACA40H,EACAhoK,EAXA8mK,EAAkBrgL,EAAK8/K,SACvBE,EAAkBhgL,EAAKggL,SACvBsB,EAAkBthL,EAAK+/K,UAAUR,YACjCK,EAAkB5/K,EAAK+/K,UAAUH,UACjCxG,EAAkBp5K,EAAK+/K,UAAUP,WACjCz/K,EAAkBC,EAAK+/K,UAAUN,WACjCE,EAAkB3/K,EAAK+/K,UAAUJ,WAMjC6B,EAAW,EAEf,IAAK70H,EAAO,EAAGA,GAAQorH,EAAUprH,IAC/BjqC,EAAEo1J,SAASnrH,GAAQ,EAQrB,IAFA0zH,EAA0B,EAArB39J,EAAEs1J,KAAKt1J,EAAEw1J,UAAgB,GAAa,EAEtC5iI,EAAI5yB,EAAEw1J,SAAW,EAAG5iI,EAjOP,IAiOsBA,KAEtCqX,EAAO0zH,EAA+B,EAA1BA,EAAS,GADrB19J,EAAID,EAAEs1J,KAAK1iI,IACc,GAAiB,GAAa,GAC5CqqI,IACThzH,EAAOgzH,EACP6B,KAEFnB,EAAS,EAAJ19J,EAAQ,GAAagqC,EAGtBhqC,EAAIq9J,IAERt9J,EAAEo1J,SAASnrH,KACX40H,EAAQ,EACJ5+J,GAAK5iB,IACPwhL,EAAQnI,EAAMz2J,EAAI5iB,IAEpBwZ,EAAI8mK,EAAS,EAAJ19J,GACTD,EAAE41J,SAAW/+J,GAAKozC,EAAO40H,GACrB3B,IACFl9J,EAAE61J,YAAch/J,GAAK+nK,EAAU,EAAJ3+J,EAAQ,GAAa4+J,KAGpD,GAAiB,IAAbC,EAAJ,CAMA,EAAG,CAED,IADA70H,EAAOgzH,EAAa,EACQ,IAArBj9J,EAAEo1J,SAASnrH,IAAeA,IACjCjqC,EAAEo1J,SAASnrH,KACXjqC,EAAEo1J,SAASnrH,EAAO,IAAM,EACxBjqC,EAAEo1J,SAAS6H,KAIX6B,GAAY,CACd,OAASA,EAAW,GAOpB,IAAK70H,EAAOgzH,EAAqB,IAAThzH,EAAYA,IAElC,IADAhqC,EAAID,EAAEo1J,SAASnrH,GACF,IAANhqC,IACL63B,EAAI93B,EAAEs1J,OAAO1iI,IACL0qI,IACJK,EAAS,EAAJ7lI,EAAQ,KAAemS,IAE9BjqC,EAAE41J,UAAY3rH,EAAO0zH,EAAS,EAAJ7lI,EAAQ,IAAc6lI,EAAS,EAAJ7lI,GACrD6lI,EAAS,EAAJ7lI,EAAQ,GAAamS,GAE5BhqC,IAjC0B,CAoChC,CAgZE8+J,CAAW/+J,EAAG1iB,GAGdugL,EAAUF,EAAML,EAAUt9J,EAAEo1J,SAC9B,CAOA,SAAS4J,EAAUh/J,EAAG29J,EAAML,GAK1B,IAAIr9J,EAEAg/J,EADAC,GAAW,EAGXC,EAAUxB,EAAK,GAEfzpF,EAAQ,EACRkrF,EAAY,EACZC,EAAY,EAQhB,IANgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAEd1B,EAAsB,GAAhBL,EAAW,GAAS,GAAa,MAElCr9J,EAAI,EAAGA,GAAKq9J,EAAUr9J,IACzBg/J,EAASE,EACTA,EAAUxB,EAAe,GAAT19J,EAAI,GAAS,KAEvBi0E,EAAQkrF,GAAaH,IAAWE,IAG3BjrF,EAAQmrF,EACjBr/J,EAAEg1J,QAAiB,EAATiK,IAAwB/qF,EAEd,IAAX+qF,GAELA,IAAWC,GAAWl/J,EAAEg1J,QAAiB,EAATiK,KACpCj/J,EAAEg1J,QAAQsK,OAEDprF,GAAS,GAClBl0E,EAAEg1J,QAAQuK,MAGVv/J,EAAEg1J,QAAQwK,MAGZtrF,EAAQ,EACRgrF,EAAUD,EAEM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,GAGlB,CAOA,SAASI,EAAUz/J,EAAG29J,EAAML,GAK1B,IAAIr9J,EAEAg/J,EADAC,GAAW,EAGXC,EAAUxB,EAAK,GAEfzpF,EAAQ,EACRkrF,EAAY,EACZC,EAAY,EAQhB,IALgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAGTp/J,EAAI,EAAGA,GAAKq9J,EAAUr9J,IAIzB,GAHAg/J,EAASE,EACTA,EAAUxB,EAAe,GAAT19J,EAAI,GAAS,OAEvBi0E,EAAQkrF,GAAaH,IAAWE,GAAtC,CAGO,GAAIjrF,EAAQmrF,EACjB,GAAK3B,EAAU19J,EAAGi/J,EAAQj/J,EAAEg1J,eAA+B,KAAV9gF,QAE7B,IAAX+qF,GACLA,IAAWC,IACbxB,EAAU19J,EAAGi/J,EAAQj/J,EAAEg1J,SACvB9gF,KAGFwpF,EAAU19J,EA1wBE,GA0wBUA,EAAEg1J,SACxByI,EAAUz9J,EAAGk0E,EAAQ,EAAG,IAEfA,GAAS,IAClBwpF,EAAU19J,EA3wBE,GA2wBYA,EAAEg1J,SAC1ByI,EAAUz9J,EAAGk0E,EAAQ,EAAG,KAGxBwpF,EAAU19J,EA5wBE,GA4wBcA,EAAEg1J,SAC5ByI,EAAUz9J,EAAGk0E,EAAQ,GAAI,IAG3BA,EAAQ,EACRgrF,EAAUD,EACM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,EAdd,CAiBJ,CAnuBAvO,EAAK6L,GAu1BL,IAAI+C,GAAmB,EA4BvB,SAAS1I,EAAiBh3J,EAAGohC,EAAKu+H,EAAYv4J,GAM5Cq2J,EAAUz9J,EAAG,GAAuBoH,EAAO,EAAI,GAAI,GAzfrD,SAAoBpH,EAAGohC,EAAK1+B,EAAKyY,GAM/B8iJ,EAAUj+J,GAENmb,IACFqiJ,EAAUx9J,EAAG0C,GACb86J,EAAUx9J,GAAI0C,IAKhBunJ,EAAMsD,SAASvtJ,EAAEixJ,YAAajxJ,EAAExP,OAAQ4wC,EAAK1+B,EAAK1C,EAAEgxJ,SACpDhxJ,EAAEgxJ,SAAWtuJ,CACf,CAyeEk9J,CAAW5/J,EAAGohC,EAAKu+H,GAAY,EACjC,CAmKA5/D,EAAQm2D,SAlMR,SAAkBl2J,GAGX0/J,KAxmBP,WACE,IAAIz/J,EACAgqC,EACAnwD,EACAupB,EACAs/B,EACAyyH,EAAW,IAAI11J,MAAM21J,IAiBzB,IADAv7K,EAAS,EACJupB,EAAO,EAAGA,EAAOw8J,GAAkBx8J,IAEtC,IADAk5J,EAAYl5J,GAAQvpB,EACfmmB,EAAI,EAAGA,EAAK,GAAK87J,EAAY14J,GAAQpD,IACxCq8J,EAAaxiL,KAAYupB,EAY7B,IAJAi5J,EAAaxiL,EAAS,GAAKupB,EAG3Bs/B,EAAO,EACFt/B,EAAO,EAAGA,EAAO,GAAIA,IAExB,IADAs5J,EAAUt5J,GAAQs/B,EACb1iC,EAAI,EAAGA,EAAK,GAAK+7J,EAAY34J,GAAQpD,IACxCo8J,EAAW15H,KAAUt/B,EAKzB,IADAs/B,IAAS,EACFt/B,EAAOy4J,EAASz4J,IAErB,IADAs5J,EAAUt5J,GAAQs/B,GAAQ,EACrB1iC,EAAI,EAAGA,EAAK,GAAM+7J,EAAY34J,GAAQ,EAAKpD,IAC9Co8J,EAAW,IAAM15H,KAAUt/B,EAM/B,IAAK4mC,EAAO,EAAGA,GAAQorH,EAAUprH,IAC/BmrH,EAASnrH,GAAQ,EAInB,IADAhqC,EAAI,EACGA,GAAK,KACVk8J,EAAiB,EAAJl8J,EAAQ,GAAa,EAClCA,IACAm1J,EAAS,KAEX,KAAOn1J,GAAK,KACVk8J,EAAiB,EAAJl8J,EAAQ,GAAa,EAClCA,IACAm1J,EAAS,KAEX,KAAOn1J,GAAK,KACVk8J,EAAiB,EAAJl8J,EAAQ,GAAa,EAClCA,IACAm1J,EAAS,KAEX,KAAOn1J,GAAK,KACVk8J,EAAiB,EAAJl8J,EAAQ,GAAa,EAClCA,IACAm1J,EAAS,KASX,IAHAyI,EAAU1B,EAAcN,IAAazG,GAGhCn1J,EAAI,EAAGA,EAAI67J,EAAS77J,IACvBm8J,EAAiB,EAAJn8J,EAAQ,GAAa,EAClCm8J,EAAiB,EAAJn8J,GAAkB29J,EAAW39J,EAAG,GAI/Cu8J,EAAgB,IAAII,EAAeT,EAAcJ,EAAaH,IAAcC,EAASxG,GACrFoH,EAAgB,IAAIG,EAAeR,EAAcJ,EAAa,EAAYF,EAASzG,GACnFqH,EAAiB,IAAIE,EAAe,IAAIl9J,MAAM,GAAIu8J,EAAc,EA/a9C,GAiBF,EAialB,CAugBI6D,GACAJ,GAAmB,GAGrB1/J,EAAEi1J,OAAU,IAAIkI,EAASn9J,EAAE60J,UAAW2H,GACtCx8J,EAAEk1J,OAAU,IAAIiI,EAASn9J,EAAE+0J,UAAW0H,GACtCz8J,EAAEm1J,QAAU,IAAIgI,EAASn9J,EAAEg1J,QAAS0H,GAEpC18J,EAAE81J,OAAS,EACX91J,EAAE+1J,SAAW,EAGbgI,EAAW/9J,EACb,EAkLA+/F,EAAQi3D,iBAAmBA,EAC3Bj3D,EAAQsxD,gBAnJR,SAAyBrxJ,EAAGohC,EAAKu+H,EAAYv4J,GAM3C,IAAI24J,EAAUC,EACVC,EAAc,EAGdjgK,EAAE6gC,MAAQ,GAnhCY,IAshCpB7gC,EAAE4qJ,KAAKqL,YACTj2J,EAAE4qJ,KAAKqL,UArGb,SAA0Bj2J,GAKxB,IACIC,EADAigK,EAAa,WAIjB,IAAKjgK,EAAI,EAAGA,GAAK,GAAIA,IAAKigK,KAAgB,EACxC,GAAkB,EAAbA,GAAoD,IAAhClgK,EAAE60J,UAAc,EAAJ50J,GACnC,OAh8BsB,EAq8B1B,GAAoC,IAAhCD,EAAE60J,UAAU,KAA0D,IAAjC70J,EAAE60J,UAAU,KAChB,IAAjC70J,EAAE60J,UAAU,IACd,OAt8BwB,EAw8B1B,IAAK50J,EAAI,GAAIA,EAAI27J,EAAU37J,IACzB,GAAoC,IAAhCD,EAAE60J,UAAc,EAAJ50J,GACd,OA18BsB,EAi9B1B,OAl9B0B,CAm9B5B,CAuEyBkgK,CAAiBngK,IAItC2+J,EAAW3+J,EAAGA,EAAEi1J,QAIhB0J,EAAW3+J,EAAGA,EAAEk1J,QAUhB+K,EAnMJ,SAAuBjgK,GACrB,IAAIigK,EAgBJ,IAbAjB,EAAUh/J,EAAGA,EAAE60J,UAAW70J,EAAEi1J,OAAOqI,UACnC0B,EAAUh/J,EAAGA,EAAE+0J,UAAW/0J,EAAEk1J,OAAOoI,UAGnCqB,EAAW3+J,EAAGA,EAAEm1J,SASX8K,EAAcG,GAAcH,GAAe,GACW,IAArDjgK,EAAEg1J,QAAgC,EAAxBkH,EAAS+D,GAAmB,GADOA,KAUnD,OAJAjgK,EAAE41J,SAAW,GAAKqK,EAAc,GAAK,EAAI,EAAI,EAItCA,CACT,CAuKkBI,CAAcrgK,GAG5B+/J,EAAY//J,EAAE41J,QAAU,EAAI,IAAO,GACnCoK,EAAehgK,EAAE61J,WAAa,EAAI,IAAO,IAMtBkK,IAAYA,EAAWC,IAI1CD,EAAWC,EAAcL,EAAa,EAGnCA,EAAa,GAAKI,IAAuB,IAAT3+H,EASnC41H,EAAiBh3J,EAAGohC,EAAKu+H,EAAYv4J,GA1kCb,IA4kCfpH,EAAEwqJ,UAAwBwV,IAAgBD,GAEnDtC,EAAUz9J,EAAG,GAAuBoH,EAAO,EAAI,GAAI,GACnDk3J,EAAet+J,EAAGm8J,EAAcC,KAGhCqB,EAAUz9J,EAAG,GAAoBoH,EAAO,EAAI,GAAI,GAjMpD,SAAwBpH,EAAGsgK,EAAQC,EAAQC,GAIzC,IAAI3P,EASJ,IAHA4M,EAAUz9J,EAAGsgK,EAAS,IAAK,GAC3B7C,EAAUz9J,EAAGugK,EAAS,EAAK,GAC3B9C,EAAUz9J,EAAGwgK,EAAU,EAAI,GACtB3P,EAAO,EAAGA,EAAO2P,EAAS3P,IAE7B4M,EAAUz9J,EAAGA,EAAEg1J,QAAyB,EAAjBkH,EAASrL,GAAY,GAAY,GAI1D4O,EAAUz/J,EAAGA,EAAE60J,UAAWyL,EAAS,GAGnCb,EAAUz/J,EAAGA,EAAE+0J,UAAWwL,EAAS,EAErC,CA0KIE,CAAezgK,EAAGA,EAAEi1J,OAAOqI,SAAW,EAAGt9J,EAAEk1J,OAAOoI,SAAW,EAAG2C,EAAc,GAC9E3B,EAAet+J,EAAGA,EAAE60J,UAAW70J,EAAE+0J,YAMnCgJ,EAAW/9J,GAEPoH,GACF62J,EAAUj+J,EAId,EAmEA+/F,EAAQ0zD,UA7DR,SAAmBzzJ,EAAG2iC,EAAM87H,GAmD1B,OA5CAz+J,EAAEixJ,YAAYjxJ,EAAE21J,MAAqB,EAAb31J,EAAE4zJ,UAAqBjxH,IAAS,EAAK,IAC7D3iC,EAAEixJ,YAAYjxJ,EAAE21J,MAAqB,EAAb31J,EAAE4zJ,SAAe,GAAY,IAAPjxH,EAE9C3iC,EAAEixJ,YAAYjxJ,EAAEy1J,MAAQz1J,EAAE4zJ,UAAiB,IAAL6K,EACtCz+J,EAAE4zJ,WAEW,IAATjxH,EAEF3iC,EAAE60J,UAAe,EAAL4J,MAEZz+J,EAAEyhJ,UAEF9+G,IAKA3iC,EAAE60J,UAA8C,GAAnCyH,EAAamC,GAAM7C,EAAW,MAC3C57J,EAAE+0J,UAAyB,EAAfwI,EAAO56H,OA0Bb3iC,EAAE4zJ,WAAa5zJ,EAAE01J,YAAc,CAKzC,EAMA31D,EAAQg3D,UAhKR,SAAmB/2J,GACjBy9J,EAAUz9J,EAAG0gK,EAAmB,GAChChD,EAAU19J,EAz8BM,IAy8BQm8J,GA5yB1B,SAAkBn8J,GACG,KAAfA,EAAE+1J,UACJyH,EAAUx9J,EAAGA,EAAE81J,QACf91J,EAAE81J,OAAS,EACX91J,EAAE+1J,SAAW,GAEJ/1J,EAAE+1J,UAAY,IACvB/1J,EAAEixJ,YAAYjxJ,EAAEgxJ,WAAwB,IAAXhxJ,EAAE81J,OAC/B91J,EAAE81J,SAAW,EACb91J,EAAE+1J,UAAY,EAElB,CAkyBE4K,CAAS3gK,EACX,0BC3/BA8/F,EAAOC,QAzBP,WAEEpjH,KAAKqgB,MAAQ,KACbrgB,KAAK4uK,QAAU,EAEf5uK,KAAK6uK,SAAW,EAEhB7uK,KAAKs2K,SAAW,EAEhBt2K,KAAKw3F,OAAS,KACdx3F,KAAK+uK,SAAW,EAEhB/uK,KAAKkuK,UAAY,EAEjBluK,KAAKw0K,UAAY,EAEjBx0K,KAAKguB,IAAM,GAEXhuB,KAAK2N,MAAQ,KAEb3N,KAAKs5K,UAAY,EAEjBt5K,KAAKgyK,MAAQ,CACf,gCCnCA,IAAIiS,EAAuB,EAAQ,OAEnC,SAASC,IAAiB,CAE1B/gE,EAAOC,QAAU,WACf,SAAS+gE,EAAKlnL,EAAOoM,EAAU+6K,EAAe5rK,EAAU6rK,EAAcC,GACpE,GAAIA,IAAWL,EAAf,CAIA,IAAI7gL,EAAM,IAAIH,MACZ,mLAKF,MADAG,EAAIF,KAAO,sBACLE,CAPN,CAQF,CAEA,SAASmhL,IACP,OAAOJ,CACT,CAHAA,EAAKlqG,WAAakqG,EAMlB,IAAIK,EAAiB,CACnBtlK,MAAOilK,EACPM,KAAMN,EACN/tC,KAAM+tC,EACNntD,OAAQmtD,EACR/jL,OAAQ+jL,EACR53D,OAAQ43D,EACR5zJ,OAAQ4zJ,EAERO,IAAKP,EACLQ,QAASJ,EACTjzK,QAAS6yK,EACTS,WAAYL,EACZ/jJ,KAAM2jJ,EACNU,SAAUN,EACVO,MAAOP,EACPQ,UAAWR,EACXS,MAAOT,EACPU,MAAOV,GAMT,OAHAC,EAAeU,eAAiBhB,EAChCM,EAAeW,UAAYX,EAEpBA,CACT,mBChCErhE,EAAOC,QAAU,EAAQ,MAAR,2BCfnBD,EAAOC,QAFoB,6ECEd,IAAIgiE,EAAG,EAAQ,OAASjqI,EAAE,EAAQ,OAAiBr2B,EAAE,EAAQ,OAAa,SAASb,EAAEe,GAAG,IAAI,IAAIzf,EAAE,yDAAyDyf,EAAE62B,EAAE,EAAEA,EAAE57C,UAAU9C,OAAO0+C,IAAIt2C,GAAG,WAAWkuI,mBAAmBxzI,UAAU47C,IAAI,MAAM,yBAAyB72B,EAAE,WAAWzf,EAAE,gHAAgH,CAAC,IAAI6/K,EAAG,MAAMniL,MAAMghB,EAAE,MAAM,IAAI06B,EAAG,IAAI4jC,IAAI4S,EAAG,CAAC,EAAE,SAAShgC,EAAGnwC,EAAEzf,GAAG8/K,EAAGrgK,EAAEzf,GAAG8/K,EAAGrgK,EAAE,UAAUzf,EAAE,CAC7e,SAAS8/K,EAAGrgK,EAAEzf,GAAW,IAAR4vF,EAAGnwE,GAAGzf,EAAMyf,EAAE,EAAEA,EAAEzf,EAAEpI,OAAO6nB,IAAI25B,EAAGl5C,IAAIF,EAAEyf,GAAG,CAC5D,IAAIw5B,IAAK,oBAAqB3qC,aAAQ,IAAqBA,OAAOnR,eAAU,IAAqBmR,OAAOnR,SAASk7F,eAAe0nF,EAAG,8VAA8VC,EAAG/nL,OAAOM,UAAUwC,eACrfklL,EAAG,CAAC,EAAEC,EAAG,CAAC,EAC8M,SAAS3/D,EAAE9gG,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,EAAE3d,GAAGyD,KAAK0lL,gBAAgB,IAAIngL,GAAG,IAAIA,GAAG,IAAIA,EAAEvF,KAAK2lL,cAAc7iK,EAAE9iB,KAAK4lL,mBAAmBvmL,EAAEW,KAAK6lL,gBAAgBhqI,EAAE77C,KAAK8lL,aAAa9gK,EAAEhlB,KAAKc,KAAKyE,EAAEvF,KAAK+lL,YAAY7rK,EAAEla,KAAKgmL,kBAAkBzpL,CAAC,CAAC,IAAIy/C,EAAE,CAAC,EACpb,uIAAuIrjC,MAAM,KAAKrT,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAe1f,SAAQ,SAAS0f,GAAG,IAAIzf,EAAEyf,EAAE,GAAGg3B,EAAEz2C,GAAG,IAAIugH,EAAEvgH,EAAE,GAAE,EAAGyf,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAAS1f,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAEs2E,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBh2F,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OrM,MAAM,KAAKrT,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAEs2E,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAYh2F,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAY1f,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQ1f,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAAS1f,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAEs2E,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIt8C,EAAG,gBAAgB,SAASvB,EAAGz4B,GAAG,OAAOA,EAAE,GAAGjV,aAAa,CAIxZ,SAASk2K,EAAGjhK,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE28C,EAAE17C,eAAeiF,GAAGy2C,EAAEz2C,GAAG,MAAW,OAAOlG,EAAE,IAAIA,EAAEyB,MAAKgiB,IAAO,EAAEvd,EAAEpI,SAAS,MAAMoI,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYyf,EAAEzf,EAAEs2C,EAAE/4B,GAAG,GAAG,MAAOvd,GADgG,SAAYyf,EAAEzf,EAAEs2C,EAAE/4B,GAAG,GAAG,OAAO+4B,GAAG,IAAIA,EAAE/6C,KAAK,OAAM,EAAG,cAAcyE,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGud,IAAc,OAAO+4B,GAASA,EAAE6pI,gBAAmD,WAAnC1gK,EAAEA,EAAEs2E,cAAc95F,MAAM,EAAE,KAAsB,UAAUwjB,GAAE,QAAQ,OAAM,EAAG,CAClUkhK,CAAGlhK,EAAEzf,EAAEs2C,EAAE/4B,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAO+4B,EAAE,OAAOA,EAAE/6C,MAAM,KAAK,EAAE,OAAOyE,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOmB,MAAMnB,GAAG,KAAK,EAAE,OAAOmB,MAAMnB,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOvD4gL,CAAG5gL,EAAEs2C,EAAEx8C,EAAEyjB,KAAK+4B,EAAE,MAAM/4B,GAAG,OAAOzjB,EARpL,SAAY2lB,GAAG,QAAGugK,EAAGnmL,KAAKqmL,EAAGzgK,KAAeugK,EAAGnmL,KAAKomL,EAAGxgK,KAAesgK,EAAG5iK,KAAKsC,GAAUygK,EAAGzgK,IAAG,GAAGwgK,EAAGxgK,IAAG,GAAS,GAAE,CAQoEohK,CAAG7gL,KAAK,OAAOs2C,EAAE72B,EAAEqhK,gBAAgB9gL,GAAGyf,EAAExf,aAAaD,EAAE,GAAGs2C,IAAIx8C,EAAEwmL,gBAAgB7gK,EAAE3lB,EAAEymL,cAAc,OAAOjqI,EAAE,IAAIx8C,EAAEyB,MAAQ,GAAG+6C,GAAGt2C,EAAElG,EAAEsmL,cAAc7iK,EAAEzjB,EAAEumL,mBAAmB,OAAO/pI,EAAE72B,EAAEqhK,gBAAgB9gL,IAAas2C,EAAE,KAAXx8C,EAAEA,EAAEyB,OAAc,IAAIzB,IAAG,IAAKw8C,EAAE,GAAG,GAAGA,EAAE/4B,EAAEkC,EAAEshK,eAAexjK,EAAEvd,EAAEs2C,GAAG72B,EAAExf,aAAaD,EAAEs2C,KAAK,CAHje,0jCAA0jCljC,MAAM,KAAKrT,SAAQ,SAAS0f,GAAG,IAAIzf,EAAEyf,EAAEqC,QAAQ23B,EACzmCvB,GAAIzB,EAAEz2C,GAAG,IAAIugH,EAAEvgH,EAAE,GAAE,EAAGyf,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2ErM,MAAM,KAAKrT,SAAQ,SAAS0f,GAAG,IAAIzf,EAAEyf,EAAEqC,QAAQ23B,EAAGvB,GAAIzB,EAAEz2C,GAAG,IAAIugH,EAAEvgH,EAAE,GAAE,EAAGyf,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAa1f,SAAQ,SAAS0f,GAAG,IAAIzf,EAAEyf,EAAEqC,QAAQ23B,EAAGvB,GAAIzB,EAAEz2C,GAAG,IAAIugH,EAAEvgH,EAAE,GAAE,EAAGyf,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAe1f,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAEs2E,cAAc,MAAK,GAAG,EAAG,IACldt/C,EAAEuqI,UAAU,IAAIzgE,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcxgH,SAAQ,SAAS0f,GAAGg3B,EAAEh3B,GAAG,IAAI8gG,EAAE9gG,EAAE,GAAE,EAAGA,EAAEs2E,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIkrF,EAAGpB,EAAGqB,mDAAmDC,EAAG,MAAMC,EAAG,MAAM3vF,EAAG,MAAM4vF,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAAMC,EAAG,MAChN,GAAG,mBAAoB9jL,QAAQA,OAAO+/B,IAAI,CAAC,IAAIq/F,EAAEp/H,OAAO+/B,IAAIgjJ,EAAG3jD,EAAE,iBAAiB4jD,EAAG5jD,EAAE,gBAAgB/rC,EAAG+rC,EAAE,kBAAkB6jD,EAAG7jD,EAAE,qBAAqB8jD,EAAG9jD,EAAE,kBAAkB+jD,EAAG/jD,EAAE,kBAAkBgkD,EAAGhkD,EAAE,iBAAiBikD,EAAGjkD,EAAE,qBAAqBkkD,EAAGlkD,EAAE,kBAAkBmkD,EAAGnkD,EAAE,uBAAuBokD,EAAGpkD,EAAE,cAAcqkD,EAAGrkD,EAAE,cAAcskD,EAAGtkD,EAAE,eAAeA,EAAE,eAAeukD,EAAGvkD,EAAE,mBAAmBwkD,EAAGxkD,EAAE,0BAA0BykD,EAAGzkD,EAAE,mBAAmB0kD,EAAG1kD,EAAE,sBAAsB,CAC9d,IAAmL2kD,EAA/KC,EAAG,mBAAoBhkL,QAAQA,OAAO6gB,SAAS,SAASojK,EAAG5iK,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAE2iK,GAAI3iK,EAAE2iK,IAAK3iK,EAAE,eAA0CA,EAAE,IAAI,CAAQ,SAAS6iK,EAAG7iK,GAAG,QAAG,IAAS0iK,EAAG,IAAI,MAAMzkL,OAAQ,CAAC,MAAM44C,GAAG,IAAIt2C,EAAEs2C,EAAE16C,MAAM4V,OAAO2R,MAAM,gBAAgBg/J,EAAGniL,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAKmiL,EAAG1iK,CAAC,CAAC,IAAI8iK,GAAG,EACjU,SAASC,EAAG/iK,EAAEzf,GAAG,IAAIyf,GAAG8iK,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAIjsI,EAAE54C,MAAM+kL,kBAAkB/kL,MAAM+kL,uBAAkB,EAAO,IAAI,GAAGziL,EAAE,GAAGA,EAAE,WAAW,MAAMtC,OAAQ,EAAEzF,OAAOC,eAAe8H,EAAEzH,UAAU,QAAQ,CAAC45B,IAAI,WAAW,MAAMz0B,OAAQ,IAAI,iBAAkBnE,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUwG,EAAE,GAAG,CAAC,MAAMwf,GAAG,IAAIjC,EAAEiC,CAAC,CAACjmB,QAAQC,UAAUimB,EAAE,GAAGzf,EAAE,KAAK,CAAC,IAAIA,EAAEnG,MAAM,CAAC,MAAM2lB,GAAGjC,EAAEiC,CAAC,CAACC,EAAE5lB,KAAKmG,EAAEzH,UAAU,KAAK,CAAC,IAAI,MAAMmF,OAAQ,CAAC,MAAM8hB,GAAGjC,EAAEiC,CAAC,CAACC,GAAG,CAAC,CAAC,MAAMD,GAAG,GAAGA,GAAGjC,GAAG,iBAAkBiC,EAAE5jB,MAAM,CAAC,IAAI,IAAI9B,EAAE0lB,EAAE5jB,MAAMwX,MAAM,MACnfuB,EAAE4I,EAAE3hB,MAAMwX,MAAM,MAAMpc,EAAE8C,EAAElC,OAAO,EAAE84C,EAAE/7B,EAAE/c,OAAO,EAAE,GAAGZ,GAAG,GAAG05C,GAAG52C,EAAE9C,KAAK2d,EAAE+7B,IAAIA,IAAI,KAAK,GAAG15C,GAAG,GAAG05C,EAAE15C,IAAI05C,IAAI,GAAG52C,EAAE9C,KAAK2d,EAAE+7B,GAAG,CAAC,GAAG,IAAI15C,GAAG,IAAI05C,EAAG,MAAM15C,IAAQ,IAAJ05C,GAAS52C,EAAE9C,KAAK2d,EAAE+7B,GAAG,MAAM,KAAK52C,EAAE9C,GAAG8qB,QAAQ,WAAW,cAAc,GAAG9qB,GAAG,GAAG05C,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ6xI,GAAG,EAAG7kL,MAAM+kL,kBAAkBnsI,CAAC,CAAC,OAAO72B,EAAEA,EAAEA,EAAE60E,aAAa70E,EAAE9hB,KAAK,IAAI2kL,EAAG7iK,GAAG,EAAE,CAC/T,SAASijK,EAAGjjK,GAAG,OAAOA,EAAEiX,KAAK,KAAK,EAAE,OAAO4rJ,EAAG7iK,EAAElkB,MAAM,KAAK,GAAG,OAAO+mL,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO7iK,EAAE+iK,EAAG/iK,EAAElkB,MAAK,GAAM,KAAK,GAAG,OAAOkkB,EAAE+iK,EAAG/iK,EAAElkB,KAAK+zI,QAAO,GAAM,KAAK,GAAG,OAAO7vH,EAAE+iK,EAAG/iK,EAAElkB,KAAKonL,SAAQ,GAAM,KAAK,EAAE,OAAOljK,EAAE+iK,EAAG/iK,EAAElkB,MAAK,GAAM,QAAQ,MAAM,GAAG,CACjU,SAASqnL,EAAGnjK,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAE60E,aAAa70E,EAAE9hB,MAAM,KAAK,GAAG,iBAAkB8hB,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKgyE,EAAG,MAAM,WAAW,KAAK2vF,EAAG,MAAM,SAAS,KAAKE,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,iBAAkBliK,EAAE,OAAOA,EAAEojK,UAAU,KAAKrB,EAAG,OAAO/hK,EAAE60E,aAAa,WAAW,YAAY,KAAKitF,EAAG,OAAO9hK,EAAE0R,SAASmjE,aAAa,WAAW,YAAY,KAAKmtF,EAAG,IAAIzhL,EAAEyf,EAAE6vH,OACnd,OAD0dtvI,EAAEA,EAAEs0F,aAAat0F,EAAErC,MAAM,GAC5e8hB,EAAE60E,cAAc,KAAKt0F,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK4hL,EAAG,OAAOgB,EAAGnjK,EAAElkB,MAAM,KAAKumL,EAAG,OAAOc,EAAGnjK,EAAEkjK,SAAS,KAAKd,EAAG7hL,EAAEyf,EAAEqjK,SAASrjK,EAAEA,EAAEsjK,MAAM,IAAI,OAAOH,EAAGnjK,EAAEzf,GAAG,CAAC,MAAMs2C,GAAG,EAAE,OAAO,IAAI,CAAC,SAAS0sI,EAAGvjK,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,GAAG,CAAC,SAASwjK,EAAGxjK,GAAG,IAAIzf,EAAEyf,EAAElkB,KAAK,OAAOkkB,EAAEA,EAAEyjK,WAAW,UAAUzjK,EAAEs2E,gBAAgB,aAAa/1F,GAAG,UAAUA,EAAE,CAE5Z,SAASmjL,EAAG1jK,GAAGA,EAAE2jK,gBAAgB3jK,EAAE2jK,cADvD,SAAY3jK,GAAG,IAAIzf,EAAEijL,EAAGxjK,GAAG,UAAU,QAAQ62B,EAAEr+C,OAAOoD,yBAAyBokB,EAAE7mB,YAAYL,UAAUyH,GAAGud,EAAE,GAAGkC,EAAEzf,GAAG,IAAIyf,EAAE1kB,eAAeiF,SAAI,IAAqBs2C,GAAG,mBAAoBA,EAAEr7C,KAAK,mBAAoBq7C,EAAEnkB,IAAI,CAAC,IAAIr4B,EAAEw8C,EAAEr7C,IAAI0Z,EAAE2hC,EAAEnkB,IAAiL,OAA7Kl6B,OAAOC,eAAeunB,EAAEzf,EAAE,CAACjI,cAAa,EAAGkD,IAAI,WAAW,OAAOnB,EAAED,KAAKY,KAAK,EAAE03B,IAAI,SAAS1S,GAAGlC,EAAE,GAAGkC,EAAE9K,EAAE9a,KAAKY,KAAKglB,EAAE,IAAIxnB,OAAOC,eAAeunB,EAAEzf,EAAE,CAAClI,WAAWw+C,EAAEx+C,aAAmB,CAACy1B,SAAS,WAAW,OAAOhQ,CAAC,EAAE44C,SAAS,SAAS12C,GAAGlC,EAAE,GAAGkC,CAAC,EAAE4jK,aAAa,WAAW5jK,EAAE2jK,cACxf,YAAY3jK,EAAEzf,EAAE,EAAE,CAAC,CAAkDsjL,CAAG7jK,GAAG,CAAC,SAAS8jK,EAAG9jK,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIzf,EAAEyf,EAAE2jK,cAAc,IAAIpjL,EAAE,OAAM,EAAG,IAAIs2C,EAAEt2C,EAAEutB,WAAehQ,EAAE,GAAqD,OAAlDkC,IAAIlC,EAAE0lK,EAAGxjK,GAAGA,EAAEs6E,QAAQ,OAAO,QAAQt6E,EAAE5mB,QAAO4mB,EAAElC,KAAa+4B,IAAGt2C,EAAEm2D,SAAS12C,IAAG,EAAM,CAAC,SAAS+jK,EAAG/jK,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqBtiB,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOsiB,EAAEgkK,eAAehkK,EAAE/Q,IAAI,CAAC,MAAM1O,GAAG,OAAOyf,EAAE/Q,IAAI,CAAC,CACpa,SAASg1K,EAAGjkK,EAAEzf,GAAG,IAAIs2C,EAAEt2C,EAAE+5F,QAAQ,OAAOnkD,EAAE,CAAC,EAAE51C,EAAE,CAAC2jL,oBAAe,EAAOrvB,kBAAa,EAAOz7J,WAAM,EAAOkhG,QAAQ,MAAMzjD,EAAEA,EAAE72B,EAAEmkK,cAAcC,gBAAgB,CAAC,SAASC,GAAGrkK,EAAEzf,GAAG,IAAIs2C,EAAE,MAAMt2C,EAAEs0J,aAAa,GAAGt0J,EAAEs0J,aAAa/2I,EAAE,MAAMvd,EAAE+5F,QAAQ/5F,EAAE+5F,QAAQ/5F,EAAE2jL,eAAertI,EAAE0sI,EAAG,MAAMhjL,EAAEnH,MAAMmH,EAAEnH,MAAMy9C,GAAG72B,EAAEmkK,cAAc,CAACC,eAAetmK,EAAEwmK,aAAaztI,EAAE0tI,WAAW,aAAahkL,EAAEzE,MAAM,UAAUyE,EAAEzE,KAAK,MAAMyE,EAAE+5F,QAAQ,MAAM/5F,EAAEnH,MAAM,CAAC,SAASorL,GAAGxkK,EAAEzf,GAAe,OAAZA,EAAEA,EAAE+5F,UAAiB2mF,EAAGjhK,EAAE,UAAUzf,GAAE,EAAG,CAC9d,SAASkkL,GAAGzkK,EAAEzf,GAAGikL,GAAGxkK,EAAEzf,GAAG,IAAIs2C,EAAE0sI,EAAGhjL,EAAEnH,OAAO0kB,EAAEvd,EAAEzE,KAAK,GAAG,MAAM+6C,EAAK,WAAW/4B,GAAM,IAAI+4B,GAAG,KAAK72B,EAAE5mB,OAAO4mB,EAAE5mB,OAAOy9C,KAAE72B,EAAE5mB,MAAM,GAAGy9C,GAAO72B,EAAE5mB,QAAQ,GAAGy9C,IAAI72B,EAAE5mB,MAAM,GAAGy9C,QAAQ,GAAG,WAAW/4B,GAAG,UAAUA,EAA8B,YAA3BkC,EAAEqhK,gBAAgB,SAAgB9gL,EAAEjF,eAAe,SAASw+C,GAAG95B,EAAEzf,EAAEzE,KAAK+6C,GAAGt2C,EAAEjF,eAAe,iBAAiBw+C,GAAG95B,EAAEzf,EAAEzE,KAAKynL,EAAGhjL,EAAEs0J,eAAe,MAAMt0J,EAAE+5F,SAAS,MAAM/5F,EAAE2jL,iBAAiBlkK,EAAEkkK,iBAAiB3jL,EAAE2jL,eAAe,CACla,SAASntE,GAAG/2F,EAAEzf,EAAEs2C,GAAG,GAAGt2C,EAAEjF,eAAe,UAAUiF,EAAEjF,eAAe,gBAAgB,CAAC,IAAIwiB,EAAEvd,EAAEzE,KAAK,KAAK,WAAWgiB,GAAG,UAAUA,QAAG,IAASvd,EAAEnH,OAAO,OAAOmH,EAAEnH,OAAO,OAAOmH,EAAE,GAAGyf,EAAEmkK,cAAcG,aAAaztI,GAAGt2C,IAAIyf,EAAE5mB,QAAQ4mB,EAAE5mB,MAAMmH,GAAGyf,EAAE60I,aAAat0J,CAAC,CAAU,MAATs2C,EAAE72B,EAAE9hB,QAAc8hB,EAAE9hB,KAAK,IAAI8hB,EAAEkkK,iBAAiBlkK,EAAEmkK,cAAcC,eAAe,KAAKvtI,IAAI72B,EAAE9hB,KAAK24C,EAAE,CACzV,SAASiD,GAAG95B,EAAEzf,EAAEs2C,GAAM,WAAWt2C,GAAGwjL,EAAG/jK,EAAE0kK,iBAAiB1kK,IAAE,MAAM62B,EAAE72B,EAAE60I,aAAa,GAAG70I,EAAEmkK,cAAcG,aAAatkK,EAAE60I,eAAe,GAAGh+G,IAAI72B,EAAE60I,aAAa,GAAGh+G,GAAE,CAAsF,SAAS8tI,GAAG3kK,EAAEzf,GAA6D,OAA1Dyf,EAAEm2B,EAAE,CAACglD,cAAS,GAAQ56F,IAAMA,EAAlI,SAAYyf,GAAG,IAAIzf,EAAE,GAAuD,OAApD6/K,EAAGwE,SAAStkL,QAAQ0f,GAAE,SAASA,GAAG,MAAMA,IAAIzf,GAAGyf,EAAE,IAAUzf,CAAC,CAAgDskL,CAAGtkL,EAAE46F,aAAUn7E,EAAEm7E,SAAS56F,GAASyf,CAAC,CACxU,SAAS05B,GAAG15B,EAAEzf,EAAEs2C,EAAE/4B,GAAe,GAAZkC,EAAEA,EAAEhkB,QAAWuE,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIlG,EAAE,EAAEA,EAAEw8C,EAAE1+C,OAAOkC,IAAIkG,EAAE,IAAIs2C,EAAEx8C,KAAI,EAAG,IAAIw8C,EAAE,EAAEA,EAAE72B,EAAE7nB,OAAO0+C,IAAIx8C,EAAEkG,EAAEjF,eAAe,IAAI0kB,EAAE62B,GAAGz9C,OAAO4mB,EAAE62B,GAAGu8B,WAAW/4E,IAAI2lB,EAAE62B,GAAGu8B,SAAS/4E,GAAGA,GAAGyjB,IAAIkC,EAAE62B,GAAGiuI,iBAAgB,EAAG,KAAK,CAAmB,IAAlBjuI,EAAE,GAAG0sI,EAAG1sI,GAAGt2C,EAAE,KAASlG,EAAE,EAAEA,EAAE2lB,EAAE7nB,OAAOkC,IAAI,CAAC,GAAG2lB,EAAE3lB,GAAGjB,QAAQy9C,EAAiD,OAA9C72B,EAAE3lB,GAAG+4E,UAAS,OAAGt1D,IAAIkC,EAAE3lB,GAAGyqL,iBAAgB,IAAW,OAAOvkL,GAAGyf,EAAE3lB,GAAG+T,WAAW7N,EAAEyf,EAAE3lB,GAAG,CAAC,OAAOkG,IAAIA,EAAE6yE,UAAS,EAAG,CAAC,CACxY,SAAS2xG,GAAG/kK,EAAEzf,GAAG,GAAG,MAAMA,EAAEid,wBAAwB,MAAMvf,MAAMghB,EAAE,KAAK,OAAOk3B,EAAE,CAAC,EAAE51C,EAAE,CAACnH,WAAM,EAAOy7J,kBAAa,EAAO15D,SAAS,GAAGn7E,EAAEmkK,cAAcG,cAAc,CAAC,SAASU,GAAGhlK,EAAEzf,GAAG,IAAIs2C,EAAEt2C,EAAEnH,MAAM,GAAG,MAAMy9C,EAAE,CAA+B,GAA9BA,EAAEt2C,EAAE46F,SAAS56F,EAAEA,EAAEs0J,aAAgB,MAAMh+G,EAAE,CAAC,GAAG,MAAMt2C,EAAE,MAAMtC,MAAMghB,EAAE,KAAK,GAAGlB,MAAMuO,QAAQuqB,GAAG,CAAC,KAAK,GAAGA,EAAE1+C,QAAQ,MAAM8F,MAAMghB,EAAE,KAAK43B,EAAEA,EAAE,EAAE,CAACt2C,EAAEs2C,CAAC,CAAC,MAAMt2C,IAAIA,EAAE,IAAIs2C,EAAEt2C,CAAC,CAACyf,EAAEmkK,cAAc,CAACG,aAAaf,EAAG1sI,GAAG,CAClZ,SAASouI,GAAGjlK,EAAEzf,GAAG,IAAIs2C,EAAE0sI,EAAGhjL,EAAEnH,OAAO0kB,EAAEylK,EAAGhjL,EAAEs0J,cAAc,MAAMh+G,KAAIA,EAAE,GAAGA,KAAM72B,EAAE5mB,QAAQ4mB,EAAE5mB,MAAMy9C,GAAG,MAAMt2C,EAAEs0J,cAAc70I,EAAE60I,eAAeh+G,IAAI72B,EAAE60I,aAAah+G,IAAI,MAAM/4B,IAAIkC,EAAE60I,aAAa,GAAG/2I,EAAE,CAAC,SAASonK,GAAGllK,GAAG,IAAIzf,EAAEyf,EAAEmlK,YAAY5kL,IAAIyf,EAAEmkK,cAAcG,cAAc,KAAK/jL,GAAG,OAAOA,IAAIyf,EAAE5mB,MAAMmH,EAAE,CAAC,IAAI6kL,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAGrlK,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAAC,SAASslK,GAAGtlK,EAAEzf,GAAG,OAAO,MAAMyf,GAAG,iCAAiCA,EAAEqlK,GAAG9kL,GAAG,+BAA+Byf,GAAG,kBAAkBzf,EAAE,+BAA+Byf,CAAC,CAC5U,IAAIulK,GAAevlK,GAAZwlK,IAAYxlK,GAAsJ,SAASA,EAAEzf,GAAG,GAAGyf,EAAEylK,eAAeL,IAAQ,cAAcplK,EAAEA,EAAEo8E,UAAU77F,MAAM,CAA2F,KAA1FglL,GAAGA,IAAI7nL,SAASk7F,cAAc,QAAUwD,UAAU,QAAQ77F,EAAEpG,UAAUqnB,WAAW,SAAajhB,EAAEglL,GAAGG,WAAW1lK,EAAE0lK,YAAY1lK,EAAE+xG,YAAY/xG,EAAE0lK,YAAY,KAAKnlL,EAAEmlL,YAAY1lK,EAAE64E,YAAYt4F,EAAEmlL,WAAW,CAAC,EAAja,oBAAqBC,OAAOA,MAAMC,wBAAwB,SAASrlL,EAAEs2C,EAAE/4B,EAAEzjB,GAAGsrL,MAAMC,yBAAwB,WAAW,OAAO5lK,GAAEzf,EAAEs2C,EAAM,GAAE,EAAE72B,IACtK,SAAS04B,GAAG14B,EAAEzf,GAAG,GAAGA,EAAE,CAAC,IAAIs2C,EAAE72B,EAAE0lK,WAAW,GAAG7uI,GAAGA,IAAI72B,EAAE6lK,WAAW,IAAIhvI,EAAE8iG,SAAwB,YAAd9iG,EAAEivI,UAAUvlL,EAAS,CAACyf,EAAEmlK,YAAY5kL,CAAC,CACtH,IAAIwlL,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGt7E,SAAQ,EAAG0D,MAAK,EAAG63E,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGt3G,YAAW,EAAGwe,SAAQ,EAAGl3E,OAAM,EAAGiwK,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAAGC,MAAK,EAAGC,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASnvI,GAAGl5B,EAAEzf,EAAEs2C,GAAG,OAAO,MAAMt2C,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAGs2C,GAAG,iBAAkBt2C,GAAG,IAAIA,GAAGwlL,GAAGzqL,eAAe0kB,IAAI+lK,GAAG/lK,IAAI,GAAGzf,GAAGwR,OAAOxR,EAAE,IAAI,CACla,SAAS8yC,GAAGrzB,EAAEzf,GAAa,IAAI,IAAIs2C,KAAlB72B,EAAEA,EAAE3S,MAAmB9M,EAAE,GAAGA,EAAEjF,eAAeu7C,GAAG,CAAC,IAAI/4B,EAAE,IAAI+4B,EAAE/rC,QAAQ,MAAMzQ,EAAE6+C,GAAGrC,EAAEt2C,EAAEs2C,GAAG/4B,GAAG,UAAU+4B,IAAIA,EAAE,YAAY/4B,EAAEkC,EAAEsoK,YAAYzxI,EAAEx8C,GAAG2lB,EAAE62B,GAAGx8C,CAAC,CAAC,CADX7B,OAAO2yB,KAAK46J,IAAIzlL,SAAQ,SAAS0f,GAAGqoK,GAAG/nL,SAAQ,SAASC,GAAGA,EAAEA,EAAEyf,EAAEm1E,OAAO,GAAGpqF,cAAciV,EAAEuF,UAAU,GAAGwgK,GAAGxlL,GAAGwlL,GAAG/lK,EAAE,GAAE,IACzG,IAAIuoK,GAAGpyI,EAAE,CAACqyI,UAAS,GAAI,CAACr2I,MAAK,EAAGz2C,MAAK,EAAGk+C,IAAG,EAAGxB,KAAI,EAAG07B,OAAM,EAAG20G,IAAG,EAAGl3I,KAAI,EAAGl2B,OAAM,EAAGqtK,QAAO,EAAG/qK,MAAK,EAAGulG,MAAK,EAAGtvG,OAAM,EAAGq2C,QAAO,EAAG0+H,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAG7oK,EAAEzf,GAAG,GAAGA,EAAE,CAAC,GAAGgoL,GAAGvoK,KAAK,MAAMzf,EAAE46F,UAAU,MAAM56F,EAAEid,yBAAyB,MAAMvf,MAAMghB,EAAE,IAAIe,IAAI,GAAG,MAAMzf,EAAEid,wBAAwB,CAAC,GAAG,MAAMjd,EAAE46F,SAAS,MAAMl9F,MAAMghB,EAAE,KAAK,GAAK,iBAAkB1e,EAAEid,2BAAyB,WAAWjd,EAAEid,yBAAyB,MAAMvf,MAAMghB,EAAE,IAAK,CAAC,GAAG,MAAM1e,EAAE8M,OAAO,iBAAkB9M,EAAE8M,MAAM,MAAMpP,MAAMghB,EAAE,IAAK,CAAC,CAClW,SAAS6pK,GAAG9oK,EAAEzf,GAAG,IAAI,IAAIyf,EAAElV,QAAQ,KAAK,MAAM,iBAAkBvK,EAAE2kH,GAAG,OAAOllG,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAAS+oK,GAAG/oK,GAA6F,OAA1FA,EAAEA,EAAEhoB,QAAQgoB,EAAEgpK,YAAYn6K,QAASo6K,0BAA0BjpK,EAAEA,EAAEipK,yBAAgC,IAAIjpK,EAAE25H,SAAS35H,EAAEy8E,WAAWz8E,CAAC,CAAC,IAAIkpK,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxb,SAASC,GAAGrpK,GAAG,GAAGA,EAAEspK,GAAGtpK,GAAG,CAAC,GAAG,mBAAoBkpK,GAAG,MAAMjrL,MAAMghB,EAAE,MAAM,IAAI1e,EAAEyf,EAAEupK,UAAUhpL,IAAIA,EAAEipL,GAAGjpL,GAAG2oL,GAAGlpK,EAAEupK,UAAUvpK,EAAElkB,KAAKyE,GAAG,CAAC,CAAC,SAASkpL,GAAGzpK,GAAGmpK,GAAGC,GAAGA,GAAGltL,KAAK8jB,GAAGopK,GAAG,CAACppK,GAAGmpK,GAAGnpK,CAAC,CAAC,SAAS0pK,KAAK,GAAGP,GAAG,CAAC,IAAInpK,EAAEmpK,GAAG5oL,EAAE6oL,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGrpK,GAAMzf,EAAE,IAAIyf,EAAE,EAAEA,EAAEzf,EAAEpI,OAAO6nB,IAAIqpK,GAAG9oL,EAAEyf,GAAG,CAAC,CAAC,SAAS2pK,GAAG3pK,EAAEzf,GAAG,OAAOyf,EAAEzf,EAAE,CAAC,SAASqpL,GAAG5pK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,OAAO2lB,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE,CAAC,SAASwvL,KAAK,CAAC,IAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAQ,OAAOd,IAAI,OAAOC,KAAGS,KAAKH,KAAI,CAEla,SAASQ,GAAGlqK,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAEupK,UAAU,GAAG,OAAO1yI,EAAE,OAAO,KAAK,IAAI/4B,EAAE0rK,GAAG3yI,GAAG,GAAG,OAAO/4B,EAAE,OAAO,KAAK+4B,EAAE/4B,EAAEvd,GAAGyf,EAAE,OAAOzf,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBud,GAAGA,EAAE1P,YAAqB0P,IAAI,YAAbkC,EAAEA,EAAElkB,OAAuB,UAAUkkB,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGlC,EAAE,MAAMkC,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAG62B,GAAG,mBACleA,EAAE,MAAM54C,MAAMghB,EAAE,IAAI1e,SAASs2C,IAAI,OAAOA,CAAC,CAAC,IAAIszI,IAAG,EAAG,GAAG3wI,EAAG,IAAI,IAAI4wI,GAAG,CAAC,EAAE5xL,OAAOC,eAAe2xL,GAAG,UAAU,CAAC5uL,IAAI,WAAW2uL,IAAG,CAAE,IAAIt7K,OAAO6M,iBAAiB,OAAO0uK,GAAGA,IAAIv7K,OAAO/R,oBAAoB,OAAOstL,GAAGA,GAAG,CAAC,MAAMpqK,IAAGmqK,IAAG,CAAE,CAAC,SAASE,GAAGrqK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,EAAE3d,EAAE05C,EAAElxB,GAAG,IAAI3jB,EAAE2hB,MAAMjlB,UAAU0D,MAAMpC,KAAKa,UAAU,GAAG,IAAIsF,EAAErF,MAAM27C,EAAEz6C,EAAE,CAAC,MAAMkiB,GAAGtjB,KAAK4L,QAAQ0X,EAAE,CAAC,CAAC,IAAIgsK,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAAC9jL,QAAQ,SAASoZ,GAAGsqK,IAAG,EAAGC,GAAGvqK,CAAC,GAAG,SAAS2qK,GAAG3qK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,EAAE3d,EAAE05C,EAAElxB,GAAGuqK,IAAG,EAAGC,GAAG,KAAKF,GAAGnvL,MAAMwvL,GAAGzvL,UAAU,CACjW,SAAS2vL,GAAG5qK,GAAG,IAAIzf,EAAEyf,EAAE62B,EAAE72B,EAAE,GAAGA,EAAE6qK,UAAU,KAAKtqL,EAAE2zF,QAAQ3zF,EAAEA,EAAE2zF,WAAW,CAACl0E,EAAEzf,EAAE,MAAoB,MAAjBA,EAAEyf,GAASqrB,SAAcwL,EAAEt2C,EAAE2zF,QAAQl0E,EAAEzf,EAAE2zF,aAAal0E,EAAE,CAAC,OAAO,IAAIzf,EAAE02B,IAAI4f,EAAE,IAAI,CAAC,SAASi0I,GAAG9qK,GAAG,GAAG,KAAKA,EAAEiX,IAAI,CAAC,IAAI12B,EAAEyf,EAAE+qK,cAAsE,GAAxD,OAAOxqL,IAAkB,QAAdyf,EAAEA,EAAE6qK,aAAqBtqL,EAAEyf,EAAE+qK,gBAAmB,OAAOxqL,EAAE,OAAOA,EAAEyqL,UAAU,CAAC,OAAO,IAAI,CAAC,SAAStwI,GAAG16B,GAAG,GAAG4qK,GAAG5qK,KAAKA,EAAE,MAAM/hB,MAAMghB,EAAE,KAAM,CAE1S,SAASg5B,GAAGj4B,GAAW,GAARA,EADtN,SAAYA,GAAG,IAAIzf,EAAEyf,EAAE6qK,UAAU,IAAItqL,EAAE,CAAS,GAAG,QAAXA,EAAEqqL,GAAG5qK,IAAe,MAAM/hB,MAAMghB,EAAE,MAAM,OAAO1e,IAAIyf,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAI62B,EAAE72B,EAAElC,EAAEvd,IAAI,CAAC,IAAIlG,EAAEw8C,EAAEq9C,OAAO,GAAG,OAAO75F,EAAE,MAAM,IAAI6a,EAAE7a,EAAEwwL,UAAU,GAAG,OAAO31K,EAAE,CAAY,GAAG,QAAd4I,EAAEzjB,EAAE65F,QAAmB,CAACr9C,EAAE/4B,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGzjB,EAAE0lF,QAAQ7qE,EAAE6qE,MAAM,CAAC,IAAI7qE,EAAE7a,EAAE0lF,MAAM7qE,GAAG,CAAC,GAAGA,IAAI2hC,EAAE,OAAO6D,GAAGrgD,GAAG2lB,EAAE,GAAG9K,IAAI4I,EAAE,OAAO48B,GAAGrgD,GAAGkG,EAAE2U,EAAEA,EAAE+1K,OAAO,CAAC,MAAMhtL,MAAMghB,EAAE,KAAM,CAAC,GAAG43B,EAAEq9C,SAASp2E,EAAEo2E,OAAOr9C,EAAEx8C,EAAEyjB,EAAE5I,MAAM,CAAC,IAAI,IAAI3d,GAAE,EAAG05C,EAAE52C,EAAE0lF,MAAM9uC,GAAG,CAAC,GAAGA,IAAI4F,EAAE,CAACt/C,GAAE,EAAGs/C,EAAEx8C,EAAEyjB,EAAE5I,EAAE,KAAK,CAAC,GAAG+7B,IAAInzB,EAAE,CAACvmB,GAAE,EAAGumB,EAAEzjB,EAAEw8C,EAAE3hC,EAAE,KAAK,CAAC+7B,EAAEA,EAAEg6I,OAAO,CAAC,IAAI1zL,EAAE,CAAC,IAAI05C,EAAE/7B,EAAE6qE,MAAM9uC,GAAG,CAAC,GAAGA,IAC5f4F,EAAE,CAACt/C,GAAE,EAAGs/C,EAAE3hC,EAAE4I,EAAEzjB,EAAE,KAAK,CAAC,GAAG42C,IAAInzB,EAAE,CAACvmB,GAAE,EAAGumB,EAAE5I,EAAE2hC,EAAEx8C,EAAE,KAAK,CAAC42C,EAAEA,EAAEg6I,OAAO,CAAC,IAAI1zL,EAAE,MAAM0G,MAAMghB,EAAE,KAAM,CAAC,CAAC,GAAG43B,EAAEg0I,YAAY/sK,EAAE,MAAM7f,MAAMghB,EAAE,KAAM,CAAC,GAAG,IAAI43B,EAAE5f,IAAI,MAAMh5B,MAAMghB,EAAE,MAAM,OAAO43B,EAAE0yI,UAAU90K,UAAUoiC,EAAE72B,EAAEzf,CAAC,CAAkB6wB,CAAGpR,IAAOA,EAAE,OAAO,KAAK,IAAI,IAAIzf,EAAEyf,IAAI,CAAC,GAAG,IAAIzf,EAAE02B,KAAK,IAAI12B,EAAE02B,IAAI,OAAO12B,EAAE,GAAGA,EAAEw/E,MAAMx/E,EAAEw/E,MAAMmU,OAAO3zF,EAAEA,EAAEA,EAAEw/E,UAAU,CAAC,GAAGx/E,IAAIyf,EAAE,MAAM,MAAMzf,EAAE0qL,SAAS,CAAC,IAAI1qL,EAAE2zF,QAAQ3zF,EAAE2zF,SAASl0E,EAAE,OAAO,KAAKzf,EAAEA,EAAE2zF,MAAM,CAAC3zF,EAAE0qL,QAAQ/2F,OAAO3zF,EAAE2zF,OAAO3zF,EAAEA,EAAE0qL,OAAO,CAAC,CAAC,OAAO,IAAI,CAChd,SAASC,GAAGlrK,EAAEzf,GAAG,IAAI,IAAIs2C,EAAE72B,EAAE6qK,UAAU,OAAOtqL,GAAG,CAAC,GAAGA,IAAIyf,GAAGzf,IAAIs2C,EAAE,OAAM,EAAGt2C,EAAEA,EAAE2zF,MAAM,CAAC,OAAM,CAAE,CAAC,IAAIi3F,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAK3O,GAAG,KAAK4O,GAAG,KAAKC,GAAG,IAAIz3J,IAAI03J,GAAG,IAAI13J,IAAIykB,GAAG,GAAGkzI,GAAG,6PAA6Pl4K,MAAM,KACrb,SAASm4K,GAAG9rK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,MAAM,CAAC0xL,UAAU/rK,EAAEgsK,aAAazrL,EAAE0rL,iBAAmB,GAAFp1I,EAAKq1I,YAAY7xL,EAAE8xL,iBAAiB,CAACruK,GAAG,CAAC,SAASsuK,GAAGpsK,EAAEzf,GAAG,OAAOyf,GAAG,IAAK,UAAU,IAAK,WAAWyrK,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAY3O,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAW4O,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAG70J,OAAOv2B,EAAE8rL,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBT,GAAG90J,OAAOv2B,EAAE8rL,WAAW,CACta,SAASC,GAAGtsK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG,OAAG,OAAO8K,GAAGA,EAAEksK,cAAch3K,GAAS8K,EAAE8rK,GAAGvrL,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG,OAAO3U,IAAY,QAARA,EAAE+oL,GAAG/oL,KAAa6qL,GAAG7qL,IAAIyf,IAAEA,EAAEisK,kBAAkBnuK,EAAEvd,EAAEyf,EAAEmsK,iBAAiB,OAAO9xL,IAAI,IAAIkG,EAAEuK,QAAQzQ,IAAIkG,EAAErE,KAAK7B,GAAU2lB,EAAC,CAE/M,SAASusK,GAAGvsK,GAAG,IAAIzf,EAAEisL,GAAGxsK,EAAEhoB,QAAQ,GAAG,OAAOuI,EAAE,CAAC,IAAIs2C,EAAE+zI,GAAGrqL,GAAG,GAAG,OAAOs2C,EAAE,GAAW,MAARt2C,EAAEs2C,EAAE5f,MAAY,GAAW,QAAR12B,EAAEuqL,GAAGj0I,IAAmH,OAAtG72B,EAAE+rK,UAAUxrL,OAAE+qL,GAAGtrK,EAAEysK,cAAa,WAAW3sK,EAAE4sK,yBAAyB1sK,EAAE2sK,UAAS,WAAWtB,GAAGx0I,EAAE,GAAE,SAAgB,GAAG,IAAIt2C,GAAGs2C,EAAE0yI,UAAUqD,QAA8D,YAArD5sK,EAAE+rK,UAAU,IAAIl1I,EAAE5f,IAAI4f,EAAE0yI,UAAUsD,cAAc,KAAY,CAAC7sK,EAAE+rK,UAAU,IAAI,CAC9U,SAASxiH,GAAGvpD,GAAG,GAAG,OAAOA,EAAE+rK,UAAU,OAAM,EAAG,IAAI,IAAIxrL,EAAEyf,EAAEmsK,iBAAiB,EAAE5rL,EAAEpI,QAAQ,CAAC,IAAI0+C,EAAE2yB,GAAGxpD,EAAEgsK,aAAahsK,EAAEisK,iBAAiB1rL,EAAE,GAAGyf,EAAEksK,aAAa,GAAG,OAAOr1I,EAAE,OAAe,QAARt2C,EAAE+oL,GAAGzyI,KAAau0I,GAAG7qL,GAAGyf,EAAE+rK,UAAUl1I,GAAE,EAAGt2C,EAAE6/F,OAAO,CAAC,OAAM,CAAE,CAAC,SAAS0sF,GAAG9sK,EAAEzf,EAAEs2C,GAAG0yB,GAAGvpD,IAAI62B,EAAE/f,OAAOv2B,EAAE,CAC3Q,SAASwsL,KAAK,IAAIxB,IAAG,EAAG,EAAEC,GAAGrzL,QAAQ,CAAC,IAAI6nB,EAAEwrK,GAAG,GAAG,GAAG,OAAOxrK,EAAE+rK,UAAU,CAAmB,QAAlB/rK,EAAEspK,GAAGtpK,EAAE+rK,aAAqBZ,GAAGnrK,GAAG,KAAK,CAAC,IAAI,IAAIzf,EAAEyf,EAAEmsK,iBAAiB,EAAE5rL,EAAEpI,QAAQ,CAAC,IAAI0+C,EAAE2yB,GAAGxpD,EAAEgsK,aAAahsK,EAAEisK,iBAAiB1rL,EAAE,GAAGyf,EAAEksK,aAAa,GAAG,OAAOr1I,EAAE,CAAC72B,EAAE+rK,UAAUl1I,EAAE,KAAK,CAACt2C,EAAE6/F,OAAO,CAAC,OAAOpgF,EAAE+rK,WAAWP,GAAGprF,OAAO,CAAC,OAAOqrF,IAAIliH,GAAGkiH,MAAMA,GAAG,MAAM,OAAO3O,IAAIvzG,GAAGuzG,MAAMA,GAAG,MAAM,OAAO4O,IAAIniH,GAAGmiH,MAAMA,GAAG,MAAMC,GAAGrrL,QAAQwsL,IAAIlB,GAAGtrL,QAAQwsL,GAAG,CACxZ,SAASE,GAAGhtK,EAAEzf,GAAGyf,EAAE+rK,YAAYxrL,IAAIyf,EAAE+rK,UAAU,KAAKR,KAAKA,IAAG,EAAGzrK,EAAEmtK,0BAA0BntK,EAAEotK,wBAAwBH,KAAK,CAC1H,SAASI,GAAGntK,GAAG,SAASzf,EAAEA,GAAG,OAAOysL,GAAGzsL,EAAEyf,EAAE,CAAC,GAAG,EAAEwrK,GAAGrzL,OAAO,CAAC60L,GAAGxB,GAAG,GAAGxrK,GAAG,IAAI,IAAI62B,EAAE,EAAEA,EAAE20I,GAAGrzL,OAAO0+C,IAAI,CAAC,IAAI/4B,EAAE0tK,GAAG30I,GAAG/4B,EAAEiuK,YAAY/rK,IAAIlC,EAAEiuK,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAON,IAAIuB,GAAGvB,GAAGzrK,GAAG,OAAO88J,IAAIkQ,GAAGlQ,GAAG98J,GAAG,OAAO0rK,IAAIsB,GAAGtB,GAAG1rK,GAAG2rK,GAAGrrL,QAAQC,GAAGqrL,GAAGtrL,QAAQC,GAAOs2C,EAAE,EAAEA,EAAE8B,GAAGxgD,OAAO0+C,KAAI/4B,EAAE66B,GAAG9B,IAAKk1I,YAAY/rK,IAAIlC,EAAEiuK,UAAU,MAAM,KAAK,EAAEpzI,GAAGxgD,QAAiB,QAAR0+C,EAAE8B,GAAG,IAAYozI,WAAYQ,GAAG11I,GAAG,OAAOA,EAAEk1I,WAAWpzI,GAAGynD,OAAO,CACtY,SAASgtF,GAAGptK,EAAEzf,GAAG,IAAIs2C,EAAE,CAAC,EAAiF,OAA/EA,EAAE72B,EAAEs2E,eAAe/1F,EAAE+1F,cAAcz/C,EAAE,SAAS72B,GAAG,SAASzf,EAAEs2C,EAAE,MAAM72B,GAAG,MAAMzf,EAASs2C,CAAC,CAAC,IAAIw2I,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAG5tK,GAAG,GAAG0tK,GAAG1tK,GAAG,OAAO0tK,GAAG1tK,GAAG,IAAIqtK,GAAGrtK,GAAG,OAAOA,EAAE,IAAY62B,EAARt2C,EAAE8sL,GAAGrtK,GAAK,IAAI62B,KAAKt2C,EAAE,GAAGA,EAAEjF,eAAeu7C,IAAIA,KAAK82I,GAAG,OAAOD,GAAG1tK,GAAGzf,EAAEs2C,GAAG,OAAO72B,CAAC,CAA/Xw5B,IAAKm0I,GAAGjwL,SAASk7F,cAAc,OAAOvrF,MAAM,mBAAmBwB,gBAAgBw+K,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBh/K,eAAew+K,GAAGI,cAAcK,YACxO,IAAIC,GAAGH,GAAG,gBAAgBI,GAAGJ,GAAG,sBAAsBK,GAAGL,GAAG,kBAAkBM,GAAGN,GAAG,iBAAiBO,GAAG,IAAIj6J,IAAIk6J,GAAG,IAAIl6J,IAAIm6J,GAAG,CAAC,QAAQ,QAAQN,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAC/e,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASI,GAAGtuK,EAAEzf,GAAG,IAAI,IAAIs2C,EAAE,EAAEA,EAAE72B,EAAE7nB,OAAO0+C,GAAG,EAAE,CAAC,IAAI/4B,EAAEkC,EAAE62B,GAAGx8C,EAAE2lB,EAAE62B,EAAE,GAAGx8C,EAAE,MAAMA,EAAE,GAAG0Q,cAAc1Q,EAAEmC,MAAM,IAAI4xL,GAAG17J,IAAI5U,EAAEvd,GAAG4tL,GAAGz7J,IAAI5U,EAAEzjB,GAAG81D,EAAG91D,EAAE,CAACyjB,GAAG,CAAC,EAAuBywK,EAAfzuK,EAAE0uK,gBAAkB,IAAIv/I,GAAE,EAC/X,SAASw/I,GAAGzuK,GAAG,GAAQ,EAAEA,EAAG,OAAOivB,GAAE,GAAG,EAAE,GAAQ,EAAEjvB,EAAG,OAAOivB,GAAE,GAAG,EAAE,GAAQ,EAAEjvB,EAAG,OAAOivB,GAAE,GAAG,EAAE,IAAI1uC,EAAE,GAAGyf,EAAE,OAAG,IAAIzf,GAAS0uC,GAAE,GAAG1uC,GAAY,GAAFyf,GAAaivB,GAAE,GAAG,IAAc,KAAX1uC,EAAE,IAAIyf,IAAkBivB,GAAE,GAAG1uC,GAAY,IAAFyf,GAAcivB,GAAE,EAAE,KAAgB,KAAZ1uC,EAAE,KAAKyf,IAAkBivB,GAAE,EAAE1uC,GAAY,KAAFyf,GAAeivB,GAAE,EAAE,MAAoB,KAAf1uC,EAAE,QAAQyf,IAAkBivB,GAAE,EAAE1uC,GAAkB,KAAhBA,EAAE,SAASyf,IAAkBivB,GAAE,EAAE1uC,GAAO,SAAFyf,GAAkBivB,GAAE,EAAE,UAAmB,UAAFjvB,GAAoBivB,GAAE,EAAE,WAA2B,KAAjB1uC,EAAE,UAAUyf,IAAkBivB,GAAE,EAAE1uC,GAAU,WAAWyf,GAAUivB,GAAE,EAAE,aACjfA,GAAE,EAASjvB,EAAC,CACZ,SAAS0uK,GAAG1uK,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAE2uK,aAAa,GAAG,IAAI93I,EAAE,OAAO5H,GAAE,EAAE,IAAInxB,EAAE,EAAEzjB,EAAE,EAAE6a,EAAE8K,EAAE4uK,aAAar3L,EAAEyoB,EAAE6uK,eAAe59I,EAAEjxB,EAAE8uK,YAAY,GAAG,IAAI55K,EAAE4I,EAAE5I,EAAE7a,EAAE40C,GAAE,QAAQ,GAAiB,KAAd/5B,EAAI,UAAF2hC,GAAkB,CAAC,IAAI92B,EAAE7K,GAAG3d,EAAE,IAAIwoB,GAAGjC,EAAE2wK,GAAG1uK,GAAG1lB,EAAE40C,IAAS,KAALgC,GAAG/7B,KAAU4I,EAAE2wK,GAAGx9I,GAAG52C,EAAE40C,GAAG,MAAa,KAAP/5B,EAAE2hC,GAAGt/C,IAASumB,EAAE2wK,GAAGv5K,GAAG7a,EAAE40C,IAAG,IAAIgC,IAAInzB,EAAE2wK,GAAGx9I,GAAG52C,EAAE40C,IAAG,GAAG,IAAInxB,EAAE,OAAO,EAAqC,GAAxBA,EAAE+4B,IAAI,GAAjB/4B,EAAE,GAAGixK,GAAGjxK,IAAa,EAAE,GAAGA,IAAI,GAAG,EAAK,IAAIvd,GAAGA,IAAIud,KAAQvd,EAAEhJ,GAAG,CAAO,GAANk3L,GAAGluL,GAAMlG,GAAG40C,GAAE,OAAO1uC,EAAE0uC,GAAE50C,CAAC,CAAoB,GAAG,KAAtBkG,EAAEyf,EAAEgvK,gBAAwB,IAAIhvK,EAAEA,EAAEivK,cAAc1uL,GAAGud,EAAE,EAAEvd,GAAclG,EAAE,IAAbw8C,EAAE,GAAGk4I,GAAGxuL,IAAUud,GAAGkC,EAAE62B,GAAGt2C,IAAIlG,EAAE,OAAOyjB,CAAC,CAC3e,SAASoxK,GAAGlvK,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE2uK,cAAsC3uK,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASmvK,GAAGnvK,EAAEzf,GAAG,OAAOyf,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAmB,KAAZA,EAAEovK,GAAG,IAAI7uL,IAAS4uL,GAAG,GAAG5uL,GAAGyf,EAAE,KAAK,GAAG,OAAoB,KAAbA,EAAEovK,GAAG,KAAK7uL,IAAS4uL,GAAG,EAAE5uL,GAAGyf,EAAE,KAAK,EAAE,OAAqB,KAAdA,EAAEovK,GAAG,MAAM7uL,MAA4B,KAAjByf,EAAEovK,GAAG,SAAS7uL,MAAWyf,EAAE,MAAMA,EAAE,KAAK,EAAE,OAA0B,KAAnBzf,EAAE6uL,GAAG,WAAW7uL,MAAWA,EAAE,WAAWA,EAAE,MAAMtC,MAAMghB,EAAE,IAAIe,GAAI,CAAC,SAASovK,GAAGpvK,GAAG,OAAOA,GAAGA,CAAC,CAAC,SAASqvK,GAAGrvK,GAAG,IAAI,IAAIzf,EAAE,GAAGs2C,EAAE,EAAE,GAAGA,EAAEA,IAAIt2C,EAAErE,KAAK8jB,GAAG,OAAOzf,CAAC,CACtd,SAAS+uL,GAAGtvK,EAAEzf,EAAEs2C,GAAG72B,EAAE2uK,cAAcpuL,EAAE,IAAIud,EAAEvd,EAAE,EAAEyf,EAAE6uK,gBAAgB/wK,EAAEkC,EAAE8uK,aAAahxK,GAAEkC,EAAEA,EAAEuvK,YAAWhvL,EAAE,GAAGwuL,GAAGxuL,IAAQs2C,CAAC,CAAC,IAAIk4I,GAAGpoK,KAAKi2G,MAAMj2G,KAAKi2G,MAAiC,SAAY58G,GAAG,OAAO,IAAIA,EAAE,GAAG,IAAIwvK,GAAGxvK,GAAGyvK,GAAG,GAAG,CAAC,EAAxED,GAAG7oK,KAAKloB,IAAIgxL,GAAG9oK,KAAKixG,IAAqD,IAAIrjF,GAAGz0B,EAAE4vK,8BAA8BC,GAAG7vK,EAAE4sK,yBAAyBx4I,IAAG,EAAG,SAAS07I,GAAG5vK,EAAEzf,EAAEs2C,EAAE/4B,GAAGisK,IAAIF,KAAK,IAAIxvL,EAAEw1L,GAAG36K,EAAE60K,GAAGA,IAAG,EAAG,IAAIH,GAAGvvL,EAAE2lB,EAAEzf,EAAEs2C,EAAE/4B,EAAE,CAAC,SAASisK,GAAG70K,IAAI+0K,IAAI,CAAC,CAAC,SAASngL,GAAGkW,EAAEzf,EAAEs2C,EAAE/4B,GAAG6xK,GAAGp7I,GAAGs7I,GAAGn2L,KAAK,KAAKsmB,EAAEzf,EAAEs2C,EAAE/4B,GAAG,CACpb,SAAS+xK,GAAG7vK,EAAEzf,EAAEs2C,EAAE/4B,GAAU,IAAIzjB,EAAX,GAAG65C,GAAU,IAAI75C,IAAS,EAAFkG,KAAO,EAAEirL,GAAGrzL,SAAS,EAAE0zL,GAAG/gL,QAAQkV,GAAGA,EAAE8rK,GAAG,KAAK9rK,EAAEzf,EAAEs2C,EAAE/4B,GAAG0tK,GAAGtvL,KAAK8jB,OAAO,CAAC,IAAI9K,EAAEs0D,GAAGxpD,EAAEzf,EAAEs2C,EAAE/4B,GAAG,GAAG,OAAO5I,EAAE7a,GAAG+xL,GAAGpsK,EAAElC,OAAO,CAAC,GAAGzjB,EAAE,CAAC,IAAI,EAAEwxL,GAAG/gL,QAAQkV,GAA+B,OAA3BA,EAAE8rK,GAAG52K,EAAE8K,EAAEzf,EAAEs2C,EAAE/4B,QAAG0tK,GAAGtvL,KAAK8jB,GAAU,GAfhO,SAAYA,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,OAAOkG,GAAG,IAAK,UAAU,OAAOkrL,GAAGa,GAAGb,GAAGzrK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,IAAG,EAAG,IAAK,YAAY,OAAOyiL,GAAGwP,GAAGxP,GAAG98J,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,IAAG,EAAG,IAAK,YAAY,OAAOqxL,GAAGY,GAAGZ,GAAG1rK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,IAAG,EAAG,IAAK,cAAc,IAAI6a,EAAE7a,EAAEgyL,UAAkD,OAAxCV,GAAGj5J,IAAIxd,EAAEo3K,GAAGX,GAAGnwL,IAAI0Z,IAAI,KAAK8K,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,KAAU,EAAG,IAAK,oBAAoB,OAAO6a,EAAE7a,EAAEgyL,UAAUT,GAAGl5J,IAAIxd,EAAEo3K,GAAGV,GAAGpwL,IAAI0Z,IAAI,KAAK8K,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,KAAI,EAAG,OAAM,CAAE,CAehIy1L,CAAG56K,EAAE8K,EAAEzf,EAAEs2C,EAAE/4B,GAAG,OAAOsuK,GAAGpsK,EAAElC,EAAE,CAACiyK,GAAG/vK,EAAEzf,EAAEud,EAAE,KAAK+4B,EAAE,CAAC,CAAE,CACnR,SAAS2yB,GAAGxpD,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE0uL,GAAGjrK,GAAW,GAAG,QAAXzjB,EAAEmyL,GAAGnyL,IAAe,CAAC,IAAI6a,EAAE01K,GAAGvwL,GAAG,GAAG,OAAO6a,EAAE7a,EAAE,SAAS,CAAC,IAAI9C,EAAE2d,EAAE+hB,IAAI,GAAG,KAAK1/B,EAAE,CAAS,GAAG,QAAX8C,EAAEywL,GAAG51K,IAAe,OAAO7a,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAI9C,EAAE,CAAC,GAAG2d,EAAEq0K,UAAUqD,QAAQ,OAAO,IAAI13K,EAAE+hB,IAAI/hB,EAAEq0K,UAAUsD,cAAc,KAAKxyL,EAAE,IAAI,MAAM6a,IAAI7a,IAAIA,EAAE,KAAK,CAAC,CAAe,OAAd01L,GAAG/vK,EAAEzf,EAAEud,EAAEzjB,EAAEw8C,GAAU,IAAI,CAAC,IAAIm5I,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACzT,SAASjwI,KAAK,GAAGiwI,GAAG,OAAOA,GAAG,IAAIlwK,EAAkBlC,EAAhBvd,EAAE0vL,GAAGp5I,EAAEt2C,EAAEpI,OAASkC,EAAE,UAAU21L,GAAGA,GAAG52L,MAAM42L,GAAG7K,YAAYjwK,EAAE7a,EAAElC,OAAO,IAAI6nB,EAAE,EAAEA,EAAE62B,GAAGt2C,EAAEyf,KAAK3lB,EAAE2lB,GAAGA,KAAK,IAAIzoB,EAAEs/C,EAAE72B,EAAE,IAAIlC,EAAE,EAAEA,GAAGvmB,GAAGgJ,EAAEs2C,EAAE/4B,KAAKzjB,EAAE6a,EAAE4I,GAAGA,KAAK,OAAOoyK,GAAG71L,EAAEmC,MAAMwjB,EAAE,EAAElC,EAAE,EAAEA,OAAE,EAAO,CAAC,SAASqyK,GAAGnwK,GAAG,IAAIzf,EAAEyf,EAAEzD,QAA+E,MAAvE,aAAayD,EAAgB,KAAbA,EAAEA,EAAEoU,WAAgB,KAAK7zB,IAAIyf,EAAE,IAAKA,EAAEzf,EAAE,KAAKyf,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAASowK,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CACnY,SAASC,GAAGtwK,GAAG,SAASzf,EAAEA,EAAEud,EAAEzjB,EAAE6a,EAAE3d,GAA6G,IAAI,IAAIs/C,KAAlH77C,KAAKu1L,WAAWhwL,EAAEvF,KAAKw1L,YAAYn2L,EAAEW,KAAKc,KAAKgiB,EAAE9iB,KAAKkxL,YAAYh3K,EAAEla,KAAKhD,OAAOT,EAAEyD,KAAKy1L,cAAc,KAAkBzwK,EAAEA,EAAE1kB,eAAeu7C,KAAKt2C,EAAEyf,EAAE62B,GAAG77C,KAAK67C,GAAGt2C,EAAEA,EAAE2U,GAAGA,EAAE2hC,IAAgI,OAA5H77C,KAAK01L,oBAAoB,MAAMx7K,EAAEnY,iBAAiBmY,EAAEnY,kBAAiB,IAAKmY,EAAEy7K,aAAaP,GAAGC,GAAGr1L,KAAK41L,qBAAqBP,GAAUr1L,IAAI,CAC9E,OAD+Em7C,EAAE51C,EAAEzH,UAAU,CAACiqG,eAAe,WAAW/nG,KAAK+B,kBAAiB,EAAG,IAAIijB,EAAEhlB,KAAKkxL,YAAYlsK,IAAIA,EAAE+iF,eAAe/iF,EAAE+iF,iBAAiB,kBAAmB/iF,EAAE2wK,cAC7e3wK,EAAE2wK,aAAY,GAAI31L,KAAK01L,mBAAmBN,GAAG,EAAEl6E,gBAAgB,WAAW,IAAIl2F,EAAEhlB,KAAKkxL,YAAYlsK,IAAIA,EAAEk2F,gBAAgBl2F,EAAEk2F,kBAAkB,kBAAmBl2F,EAAE6wK,eAAe7wK,EAAE6wK,cAAa,GAAI71L,KAAK41L,qBAAqBR,GAAG,EAAEU,QAAQ,WAAW,EAAEC,aAAaX,KAAY7vL,CAAC,CACjR,IAAoLywL,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEtzL,QAAQ,EAAEC,WAAW,EAAEq6G,UAAU,SAASp4F,GAAG,OAAOA,EAAEo4F,WAAWxrG,KAAKC,KAAK,EAAE9P,iBAAiB,EAAEs0L,UAAU,GAAGC,GAAGhB,GAAGa,IAAII,GAAGp7I,EAAE,CAAC,EAAEg7I,GAAG,CAACj4D,KAAK,EAAEs4D,OAAO,IAAIC,GAAGnB,GAAGiB,IAAaG,GAAGv7I,EAAE,CAAC,EAAEo7I,GAAG,CAACI,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEz7E,MAAM,EAAE07E,MAAM,EAAEC,QAAQ,EAAEviF,SAAS,EAAEwiF,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGvgH,OAAO,EAAEwgH,QAAQ,EAAEC,cAAc,SAAStyK,GAAG,YAAO,IAASA,EAAEsyK,cAActyK,EAAEuyK,cAAcvyK,EAAEgpK,WAAWhpK,EAAEwyK,UAAUxyK,EAAEuyK,YAAYvyK,EAAEsyK,aAAa,EAAEG,UAAU,SAASzyK,GAAG,MAAG,cAC3eA,EAASA,EAAEyyK,WAAUzyK,IAAIkxK,KAAKA,IAAI,cAAclxK,EAAElkB,MAAMk1L,GAAGhxK,EAAE2xK,QAAQT,GAAGS,QAAQV,GAAGjxK,EAAE4xK,QAAQV,GAAGU,SAASX,GAAGD,GAAG,EAAEE,GAAGlxK,GAAUgxK,GAAE,EAAE0B,UAAU,SAAS1yK,GAAG,MAAM,cAAcA,EAAEA,EAAE0yK,UAAUzB,EAAE,IAAI0B,GAAGrC,GAAGoB,IAAiCkB,GAAGtC,GAA7Bn6I,EAAE,CAAC,EAAEu7I,GAAG,CAACmB,aAAa,KAA4CC,GAAGxC,GAA9Bn6I,EAAE,CAAC,EAAEo7I,GAAG,CAACe,cAAc,KAA0ES,GAAGzC,GAA5Dn6I,EAAE,CAAC,EAAEg7I,GAAG,CAAC6B,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAGh9I,EAAE,CAAC,EAAEg7I,GAAG,CAACiC,cAAc,SAASpzK,GAAG,MAAM,kBAAkBA,EAAEA,EAAEozK,cAAcvkL,OAAOukL,aAAa,IAAIC,GAAG/C,GAAG6C,IAAyBG,GAAGhD,GAArBn6I,EAAE,CAAC,EAAEg7I,GAAG,CAAC7sL,KAAK,KAAcivL,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAItjH,KAAK,YAAYujH,GAAG,UAAUrjH,MAAM,aAAasjH,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGx0K,GAAG,IAAIzf,EAAEvF,KAAKkxL,YAAY,OAAO3rL,EAAE4xL,iBAAiB5xL,EAAE4xL,iBAAiBnyK,MAAIA,EAAEm0K,GAAGn0K,OAAMzf,EAAEyf,EAAK,CAAC,SAASoyK,KAAK,OAAOoC,EAAE,CAChS,IAAIC,GAAGt+I,EAAE,CAAC,EAAEo7I,GAAG,CAAC74L,IAAI,SAASsnB,GAAG,GAAGA,EAAEtnB,IAAI,CAAC,IAAI6H,EAAEgzL,GAAGvzK,EAAEtnB,MAAMsnB,EAAEtnB,IAAI,GAAG,iBAAiB6H,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAayf,EAAElkB,KAAc,MAARkkB,EAAEmwK,GAAGnwK,IAAU,QAAQ2B,OAAOC,aAAa5B,GAAI,YAAYA,EAAElkB,MAAM,UAAUkkB,EAAElkB,KAAKo4L,GAAGl0K,EAAEzD,UAAU,eAAe,EAAE,EAAEmF,KAAK,EAAElO,SAAS,EAAEw+K,QAAQ,EAAEviF,SAAS,EAAEwiF,OAAO,EAAEC,QAAQ,EAAEriE,OAAO,EAAE6kE,OAAO,EAAEvC,iBAAiBC,GAAGh+J,SAAS,SAASpU,GAAG,MAAM,aAAaA,EAAElkB,KAAKq0L,GAAGnwK,GAAG,CAAC,EAAEzD,QAAQ,SAASyD,GAAG,MAAM,YAAYA,EAAElkB,MAAM,UAAUkkB,EAAElkB,KAAKkkB,EAAEzD,QAAQ,CAAC,EAAEunF,MAAM,SAAS9jF,GAAG,MAAM,aAC7eA,EAAElkB,KAAKq0L,GAAGnwK,GAAG,YAAYA,EAAElkB,MAAM,UAAUkkB,EAAElkB,KAAKkkB,EAAEzD,QAAQ,CAAC,IAAIo4K,GAAGrE,GAAGmE,IAAiIG,GAAGtE,GAA7Hn6I,EAAE,CAAC,EAAEu7I,GAAG,CAACrF,UAAU,EAAEroK,MAAM,EAAEgI,OAAO,EAAE6oK,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAG9E,GAArHn6I,EAAE,CAAC,EAAEo7I,GAAG,CAAC8D,QAAQ,EAAEC,cAAc,EAAEh/E,eAAe,EAAE27E,OAAO,EAAEC,QAAQ,EAAEF,QAAQ,EAAEviF,SAAS,EAAE0iF,iBAAiBC,MAA0EmD,GAAGjF,GAA3Dn6I,EAAE,CAAC,EAAEg7I,GAAG,CAACrQ,aAAa,EAAEmS,YAAY,EAAEC,cAAc,KAAcsC,GAAGr/I,EAAE,CAAC,EAAEu7I,GAAG,CAAC+D,OAAO,SAASz1K,GAAG,MAAM,WAAWA,EAAEA,EAAEy1K,OAAO,gBAAgBz1K,GAAGA,EAAE01K,YAAY,CAAC,EACnfC,OAAO,SAAS31K,GAAG,MAAM,WAAWA,EAAEA,EAAE21K,OAAO,gBAAgB31K,GAAGA,EAAE41K,YAAY,eAAe51K,GAAGA,EAAE61K,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAG1F,GAAGkF,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG18I,GAAI,qBAAqB3qC,OAAOsnL,GAAG,KAAK38I,GAAI,iBAAiB97C,WAAWy4L,GAAGz4L,SAAS04L,cAAc,IAAIC,GAAG78I,GAAI,cAAc3qC,SAASsnL,GAAGG,GAAG98I,KAAM08I,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAG50K,OAAOC,aAAa,IAAI40K,IAAG,EAC1W,SAASC,GAAGz2K,EAAEzf,GAAG,OAAOyf,GAAG,IAAK,QAAQ,OAAO,IAAIi2K,GAAGnrL,QAAQvK,EAAEgc,SAAS,IAAK,UAAU,OAAO,MAAMhc,EAAEgc,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASm6K,GAAG12K,GAAc,MAAM,iBAAjBA,EAAEA,EAAEwxK,SAAkC,SAASxxK,EAAEA,EAAE1b,KAAK,IAAI,CAAC,IAAIqyL,IAAG,EAE9Q,IAAIC,GAAG,CAACziI,OAAM,EAAGjvB,MAAK,EAAG2xJ,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGxyK,OAAM,EAAG0tG,QAAO,EAAG+kE,UAAS,EAAGv3J,OAAM,EAAG/rB,QAAO,EAAGujL,KAAI,EAAGrvL,MAAK,EAAG+lI,MAAK,EAAGrnI,KAAI,EAAG4wL,MAAK,GAAI,SAASC,GAAGl3K,GAAG,IAAIzf,EAAEyf,GAAGA,EAAEyjK,UAAUzjK,EAAEyjK,SAASntF,cAAc,MAAM,UAAU/1F,IAAIq2L,GAAG52K,EAAElkB,MAAM,aAAayE,CAAO,CAAC,SAAS42L,GAAGn3K,EAAEzf,EAAEs2C,EAAE/4B,GAAG2rK,GAAG3rK,GAAsB,GAAnBvd,EAAE62L,GAAG72L,EAAE,aAAgBpI,SAAS0+C,EAAE,IAAIy6I,GAAG,WAAW,SAAS,KAAKz6I,EAAE/4B,GAAGkC,EAAE9jB,KAAK,CAACI,MAAMu6C,EAAE56C,UAAUsE,IAAI,CAAC,IAAI82L,GAAG,KAAKC,GAAG,KAAK,SAASlxE,GAAGpmG,GAAGu3K,GAAGv3K,EAAE,EAAE,CAAC,SAASw3K,GAAGx3K,GAAe,GAAG8jK,EAAT2T,GAAGz3K,IAAY,OAAOA,CAAC,CACpe,SAAS03K,GAAG13K,EAAEzf,GAAG,GAAG,WAAWyf,EAAE,OAAOzf,CAAC,CAAC,IAAIo3L,IAAG,EAAG,GAAGn+I,EAAG,CAAC,IAAIiyB,GAAG,GAAGjyB,EAAG,CAAC,IAAIkyB,GAAG,YAAYhuE,SAAS,IAAIguE,GAAG,CAAC,IAAIksH,GAAGl6L,SAASk7F,cAAc,OAAOg/F,GAAGp3L,aAAa,UAAU,WAAWkrE,GAAG,mBAAoBksH,GAAGC,OAAO,CAACpsH,GAAGC,EAAE,MAAMD,IAAG,EAAGksH,GAAGlsH,MAAM/tE,SAAS04L,cAAc,EAAE14L,SAAS04L,aAAa,CAAC,SAAS0B,KAAKT,KAAKA,GAAGU,YAAY,mBAAmBC,IAAIV,GAAGD,GAAG,KAAK,CAAC,SAASW,GAAGh4K,GAAG,GAAG,UAAUA,EAAE8gK,cAAc0W,GAAGF,IAAI,CAAC,IAAI/2L,EAAE,GAAyB,GAAtB42L,GAAG52L,EAAE+2L,GAAGt3K,EAAE+oK,GAAG/oK,IAAIA,EAAEomG,GAAM2jE,GAAG/pK,EAAEzf,OAAO,CAACwpL,IAAG,EAAG,IAAIJ,GAAG3pK,EAAEzf,EAAE,CAAC,QAAQwpL,IAAG,EAAGE,IAAI,CAAC,CAAC,CAAC,CAClf,SAASgO,GAAGj4K,EAAEzf,EAAEs2C,GAAG,YAAY72B,GAAG83K,KAAUR,GAAGzgJ,GAARwgJ,GAAG92L,GAAU23L,YAAY,mBAAmBF,KAAK,aAAah4K,GAAG83K,IAAI,CAAC,SAASK,GAAGn4K,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOw3K,GAAGF,GAAG,CAAC,SAASc,GAAGp4K,EAAEzf,GAAG,GAAG,UAAUyf,EAAE,OAAOw3K,GAAGj3L,EAAE,CAAC,SAAS83L,GAAGr4K,EAAEzf,GAAG,GAAG,UAAUyf,GAAG,WAAWA,EAAE,OAAOw3K,GAAGj3L,EAAE,CAAiE,IAAI+3L,GAAG,mBAAoB9/L,OAAO0sH,GAAG1sH,OAAO0sH,GAA5G,SAAYllG,EAAEzf,GAAG,OAAOyf,IAAIzf,IAAI,IAAIyf,GAAG,EAAEA,GAAI,EAAEzf,IAAIyf,GAAIA,GAAGzf,GAAIA,CAAC,EAAmDg4L,GAAG//L,OAAOM,UAAUwC,eAC7a,SAASk9L,GAAGx4K,EAAEzf,GAAG,GAAG+3L,GAAGt4K,EAAEzf,GAAG,OAAM,EAAG,GAAG,iBAAkByf,GAAG,OAAOA,GAAG,iBAAkBzf,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIs2C,EAAEr+C,OAAO2yB,KAAKnL,GAAGlC,EAAEtlB,OAAO2yB,KAAK5qB,GAAG,GAAGs2C,EAAE1+C,SAAS2lB,EAAE3lB,OAAO,OAAM,EAAG,IAAI2lB,EAAE,EAAEA,EAAE+4B,EAAE1+C,OAAO2lB,IAAI,IAAIy6K,GAAGn+L,KAAKmG,EAAEs2C,EAAE/4B,MAAMw6K,GAAGt4K,EAAE62B,EAAE/4B,IAAIvd,EAAEs2C,EAAE/4B,KAAK,OAAM,EAAG,OAAM,CAAE,CAAC,SAAS26K,GAAGz4K,GAAG,KAAKA,GAAGA,EAAE0lK,YAAY1lK,EAAEA,EAAE0lK,WAAW,OAAO1lK,CAAC,CACnU,SAAS04K,GAAG14K,EAAEzf,GAAG,IAAwBud,EAApB+4B,EAAE4hJ,GAAGz4K,GAAO,IAAJA,EAAE,EAAY62B,GAAG,CAAC,GAAG,IAAIA,EAAE8iG,SAAS,CAA0B,GAAzB77H,EAAEkC,EAAE62B,EAAEsuI,YAAYhtL,OAAU6nB,GAAGzf,GAAGud,GAAGvd,EAAE,MAAM,CAACi7B,KAAKqb,EAAE10B,OAAO5hB,EAAEyf,GAAGA,EAAElC,CAAC,CAACkC,EAAE,CAAC,KAAK62B,GAAG,CAAC,GAAGA,EAAE8hJ,YAAY,CAAC9hJ,EAAEA,EAAE8hJ,YAAY,MAAM34K,CAAC,CAAC62B,EAAEA,EAAE4lD,UAAU,CAAC5lD,OAAE,CAAM,CAACA,EAAE4hJ,GAAG5hJ,EAAE,CAAC,CAAC,SAAS+hJ,GAAG54K,EAAEzf,GAAG,SAAOyf,IAAGzf,KAAEyf,IAAIzf,KAAKyf,GAAG,IAAIA,EAAE25H,YAAYp5I,GAAG,IAAIA,EAAEo5I,SAASi/C,GAAG54K,EAAEzf,EAAEk8F,YAAY,aAAaz8E,EAAEA,EAAEpE,SAASrb,KAAGyf,EAAE64K,4BAAwD,GAA7B74K,EAAE64K,wBAAwBt4L,KAAY,CAC9Z,SAASu4L,KAAK,IAAI,IAAI94K,EAAEnR,OAAOtO,EAAEwjL,IAAKxjL,aAAayf,EAAE+4K,mBAAmB,CAAC,IAAI,IAAIliJ,EAAE,iBAAkBt2C,EAAE8rH,cAAc74G,SAASuG,IAAI,CAAC,MAAM+D,GAAG+4B,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMt2C,EAAEwjL,GAA/B/jK,EAAEzf,EAAE8rH,eAAgC3uH,SAAS,CAAC,OAAO6C,CAAC,CAAC,SAASy4L,GAAGh5K,GAAG,IAAIzf,EAAEyf,GAAGA,EAAEyjK,UAAUzjK,EAAEyjK,SAASntF,cAAc,OAAO/1F,IAAI,UAAUA,IAAI,SAASyf,EAAElkB,MAAM,WAAWkkB,EAAElkB,MAAM,QAAQkkB,EAAElkB,MAAM,QAAQkkB,EAAElkB,MAAM,aAAakkB,EAAElkB,OAAO,aAAayE,GAAG,SAASyf,EAAEi5K,gBAAgB,CACxa,IAAIC,GAAG1/I,GAAI,iBAAiB97C,UAAU,IAAIA,SAAS04L,aAAa+C,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGv5K,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAE+4B,EAAEhoC,SAASgoC,EAAEA,EAAEn5C,SAAS,IAAIm5C,EAAE8iG,SAAS9iG,EAAEA,EAAE6tI,cAAc4U,IAAI,MAAMH,IAAIA,KAAKpV,EAAGjmK,KAAU,mBAALA,EAAEq7K,KAAyBH,GAAGl7K,GAAGA,EAAE,CAACmmC,MAAMnmC,EAAE07K,eAAet1I,IAAIpmC,EAAE27K,cAAuF37K,EAAE,CAAC47K,YAA3E57K,GAAGA,EAAE4mK,eAAe5mK,EAAE4mK,cAAciV,aAAa9qL,QAAQ+qL,gBAA+BF,WAAWG,aAAa/7K,EAAE+7K,aAAaC,UAAUh8K,EAAEg8K,UAAUC,YAAYj8K,EAAEi8K,aAAcV,IAAIb,GAAGa,GAAGv7K,KAAKu7K,GAAGv7K,EAAsB,GAApBA,EAAEs5K,GAAGgC,GAAG,aAAgBjhM,SAASoI,EAAE,IAAI+wL,GAAG,WAAW,SAAS,KAAK/wL,EAAEs2C,GAAG72B,EAAE9jB,KAAK,CAACI,MAAMiE,EAAEtE,UAAU6hB,IAAIvd,EAAEvI,OAAOmhM,KAAK,CACtf7K,GAAG,mjBAAmjB36K,MAAM,KAC5jB,GAAG26K,GAAG,oRAAoR36K,MAAM,KAAK,GAAG26K,GAAGD,GAAG,GAAG,IAAI,IAAI2L,GAAG,qFAAqFrmL,MAAM,KAAKsmL,GAAG,EAAEA,GAAGD,GAAG7hM,OAAO8hM,KAAK7L,GAAG17J,IAAIsnK,GAAGC,IAAI,GAAG5Z,EAAG,eAAe,CAAC,WAAW,cACleA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBlwH,EAAG,WAAW,oEAAoEx8C,MAAM,MAAMw8C,EAAG,WAAW,uFAAuFx8C,MAAM,MAAMw8C,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2Dx8C,MAAM,MAC5fw8C,EAAG,qBAAqB,6DAA6Dx8C,MAAM,MAAMw8C,EAAG,sBAAsB,8DAA8Dx8C,MAAM,MAAM,IAAIumL,GAAG,sNAAsNvmL,MAAM,KAAKwmL,GAAG,IAAI58G,IAAI,0CAA0C5pE,MAAM,KAAKzI,OAAOgvL,KACnf,SAASE,GAAGp6K,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkC,EAAElkB,MAAM,gBAAgBkkB,EAAEywK,cAAc55I,EA/CjE,SAAY72B,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,EAAE3d,EAAE05C,EAAElxB,GAA4B,GAAzB4qK,GAAGzvL,MAAMF,KAAKC,WAAcqvL,GAAG,CAAC,IAAGA,GAAgC,MAAMrsL,MAAMghB,EAAE,MAA1C,IAAI7iB,EAAEmuL,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGruL,EAAE,CAAC,CA+CpEi+L,CAAGv8K,EAAEvd,OAAE,EAAOyf,GAAGA,EAAEywK,cAAc,IAAI,CACxG,SAAS8G,GAAGv3K,EAAEzf,GAAGA,KAAS,EAAFA,GAAK,IAAI,IAAIs2C,EAAE,EAAEA,EAAE72B,EAAE7nB,OAAO0+C,IAAI,CAAC,IAAI/4B,EAAEkC,EAAE62B,GAAGx8C,EAAEyjB,EAAExhB,MAAMwhB,EAAEA,EAAE7hB,UAAU+jB,EAAE,CAAC,IAAI9K,OAAE,EAAO,GAAG3U,EAAE,IAAI,IAAIhJ,EAAEumB,EAAE3lB,OAAO,EAAE,GAAGZ,EAAEA,IAAI,CAAC,IAAI05C,EAAEnzB,EAAEvmB,GAAGwoB,EAAEkxB,EAAEr5C,SAASwE,EAAE60C,EAAEw/I,cAA2B,GAAbx/I,EAAEA,EAAEx0C,SAAYsjB,IAAI7K,GAAG7a,EAAEu2L,uBAAuB,MAAM5wK,EAAEo6K,GAAG//L,EAAE42C,EAAE70C,GAAG8Y,EAAE6K,CAAC,MAAM,IAAIxoB,EAAE,EAAEA,EAAEumB,EAAE3lB,OAAOZ,IAAI,CAAoD,GAA5CwoB,GAAPkxB,EAAEnzB,EAAEvmB,IAAOK,SAASwE,EAAE60C,EAAEw/I,cAAcx/I,EAAEA,EAAEx0C,SAAYsjB,IAAI7K,GAAG7a,EAAEu2L,uBAAuB,MAAM5wK,EAAEo6K,GAAG//L,EAAE42C,EAAE70C,GAAG8Y,EAAE6K,CAAC,CAAC,CAAC,CAAC,GAAGyqK,GAAG,MAAMxqK,EAAEyqK,GAAGD,IAAG,EAAGC,GAAG,KAAKzqK,CAAE,CAC5a,SAASokG,GAAEpkG,EAAEzf,GAAG,IAAIs2C,EAAEyjJ,GAAG/5L,GAAGud,EAAEkC,EAAE,WAAW62B,EAAEhgB,IAAI/Y,KAAKy8K,GAAGh6L,EAAEyf,EAAE,GAAE,GAAI62B,EAAEp2C,IAAIqd,GAAG,CAAC,IAAI00B,GAAG,kBAAkB7rB,KAAK4zG,SAAS/4G,SAAS,IAAIhlB,MAAM,GAAG,SAASg+L,GAAGx6K,GAAGA,EAAEwyB,MAAMxyB,EAAEwyB,KAAI,EAAGmH,EAAGr5C,SAAQ,SAASC,GAAG45L,GAAGtjK,IAAIt2B,IAAIk6L,GAAGl6L,GAAE,EAAGyf,EAAE,MAAMy6K,GAAGl6L,GAAE,EAAGyf,EAAE,KAAK,IAAG,CAC9O,SAASy6K,GAAGz6K,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE,EAAEY,UAAU9C,aAAQ,IAAS8C,UAAU,GAAGA,UAAU,GAAG,EAAEia,EAAE2hC,EAA6D,GAA3D,oBAAoB72B,GAAG,IAAI62B,EAAE8iG,WAAWzkI,EAAE2hC,EAAE6tI,eAAkB,OAAO5mK,IAAIvd,GAAG45L,GAAGtjK,IAAI7W,GAAG,CAAC,GAAG,WAAWA,EAAE,OAAO3lB,GAAG,EAAE6a,EAAE4I,CAAC,CAAC,IAAIvmB,EAAE+iM,GAAGplL,GAAG+7B,EAAEjxB,EAAE,MAAMzf,EAAE,UAAU,UAAUhJ,EAAEs/B,IAAIoa,KAAK1wC,IAAIlG,GAAG,GAAGkgM,GAAGrlL,EAAE8K,EAAE3lB,EAAEkG,GAAGhJ,EAAEkJ,IAAIwwC,GAAG,CACrS,SAASspJ,GAAGv6K,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE+zL,GAAG5yL,IAAI+E,GAAG,YAAO,IAASlG,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAEu1L,GAAG,MAAM,KAAK,EAAEv1L,EAAEyP,GAAG,MAAM,QAAQzP,EAAEw1L,GAAGh5I,EAAEx8C,EAAEX,KAAK,KAAK6G,EAAEs2C,EAAE72B,GAAG3lB,OAAE,GAAQ8vL,IAAI,eAAe5pL,GAAG,cAAcA,GAAG,UAAUA,IAAIlG,GAAE,GAAIyjB,OAAE,IAASzjB,EAAE2lB,EAAEtE,iBAAiBnb,EAAEs2C,EAAE,CAAC+uF,SAAQ,EAAG80D,QAAQrgM,IAAI2lB,EAAEtE,iBAAiBnb,EAAEs2C,GAAE,QAAI,IAASx8C,EAAE2lB,EAAEtE,iBAAiBnb,EAAEs2C,EAAE,CAAC6jJ,QAAQrgM,IAAI2lB,EAAEtE,iBAAiBnb,EAAEs2C,GAAE,EAAG,CACvW,SAASk5I,GAAG/vK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,IAAI6a,EAAE4I,EAAE,KAAU,EAAFvd,GAAa,EAAFA,GAAM,OAAOud,GAAEkC,EAAE,OAAO,CAAC,GAAG,OAAOlC,EAAE,OAAO,IAAIvmB,EAAEumB,EAAEmZ,IAAI,GAAG,IAAI1/B,GAAG,IAAIA,EAAE,CAAC,IAAI05C,EAAEnzB,EAAEyrK,UAAUsD,cAAc,GAAG57I,IAAI52C,GAAG,IAAI42C,EAAE0oG,UAAU1oG,EAAEwrD,aAAapiG,EAAE,MAAM,GAAG,IAAI9C,EAAE,IAAIA,EAAEumB,EAAEo2E,OAAO,OAAO38F,GAAG,CAAC,IAAIwoB,EAAExoB,EAAE0/B,IAAI,IAAG,IAAIlX,GAAG,IAAIA,MAAKA,EAAExoB,EAAEgyL,UAAUsD,iBAAkBxyL,GAAG,IAAI0lB,EAAE45H,UAAU55H,EAAE08E,aAAapiG,GAAE,OAAO9C,EAAEA,EAAE28F,MAAM,CAAC,KAAK,OAAOjjD,GAAG,CAAS,GAAG,QAAX15C,EAAEi1L,GAAGv7I,IAAe,OAAe,GAAG,KAAXlxB,EAAExoB,EAAE0/B,MAAc,IAAIlX,EAAE,CAACjC,EAAE5I,EAAE3d,EAAE,SAASyoB,CAAC,CAACixB,EAAEA,EAAEwrD,UAAU,CAAC,CAAC3+E,EAAEA,EAAEo2E,MAAM,EAvDnd,SAAYl0E,EAAEzf,EAAEs2C,GAAG,GAAGmzI,GAAG,OAAOhqK,EAAEzf,EAAEs2C,GAAGmzI,IAAG,EAAG,IAAI,OAAOF,GAAG9pK,EAAEzf,EAAEs2C,EAAE,CAAC,QAAQmzI,IAAG,EAAGC,IAAI,CAAC,CAuD+X0Q,EAAG,WAAW,IAAI78K,EAAE5I,EAAE7a,EAAE0uL,GAAGlyI,GAAGt/C,EAAE,GACpfyoB,EAAE,CAAC,IAAIixB,EAAEk9I,GAAG3yL,IAAIwkB,GAAG,QAAG,IAASixB,EAAE,CAAC,IAAIlxB,EAAEuxK,GAAGrvL,EAAE+d,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAImwK,GAAGt5I,GAAG,MAAM72B,EAAE,IAAK,UAAU,IAAK,QAAQD,EAAE40K,GAAG,MAAM,IAAK,UAAU1yL,EAAE,QAAQ8d,EAAE+yK,GAAG,MAAM,IAAK,WAAW7wL,EAAE,OAAO8d,EAAE+yK,GAAG,MAAM,IAAK,aAAa,IAAK,YAAY/yK,EAAE+yK,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIj8I,EAAEg7B,OAAO,MAAM7xD,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAcD,EAAE4yK,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO5yK,EAC1iB6yK,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa7yK,EAAEq1K,GAAG,MAAM,KAAKrH,GAAG,KAAKC,GAAG,KAAKC,GAAGluK,EAAEgzK,GAAG,MAAM,KAAK7E,GAAGnuK,EAAEw1K,GAAG,MAAM,IAAK,SAASx1K,EAAE0xK,GAAG,MAAM,IAAK,QAAQ1xK,EAAEi2K,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQj2K,EAAEszK,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYtzK,EAAE60K,GAAG,IAAI5jJ,KAAS,EAAFzwC,GAAK22C,GAAGlG,GAAG,WAAWhxB,EAAEu2B,EAAEvF,EAAE,OAAOC,EAAEA,EAAE,UAAU,KAAKA,EAAED,EAAE,GAAG,IAAI,IAAQh9B,EAAJoK,EAAEN,EAAI,OAC/eM,GAAG,CAAK,IAAIqB,GAARzL,EAAEoK,GAAUmrK,UAAsF,GAA5E,IAAIv1K,EAAEijB,KAAK,OAAOxX,IAAIzL,EAAEyL,EAAE,OAAO82B,IAAc,OAAV92B,EAAEyqK,GAAG9rK,EAAEm4B,KAAYvF,EAAE90C,KAAK0+L,GAAGx8K,EAAEqB,EAAEzL,MAASkjC,EAAE,MAAM94B,EAAEA,EAAE81E,MAAM,CAAC,EAAEljD,EAAE74C,SAAS84C,EAAE,IAAIlxB,EAAEkxB,EAAEhvC,EAAE,KAAK40C,EAAEx8C,GAAG9C,EAAE2E,KAAK,CAACI,MAAM20C,EAAEh1C,UAAU+0C,IAAI,CAAC,CAAC,KAAU,EAAFzwC,GAAK,CAA4E,GAAnCwf,EAAE,aAAaC,GAAG,eAAeA,KAAtEixB,EAAE,cAAcjxB,GAAG,gBAAgBA,IAAkD,GAAFzf,KAAQ0B,EAAE40C,EAAEy7I,eAAez7I,EAAE07I,eAAe/F,GAAGvqL,KAAIA,EAAE44L,OAAgB96K,GAAGkxB,KAAGA,EAAE52C,EAAEwU,SAASxU,EAAEA,GAAG42C,EAAE52C,EAAEqqL,eAAezzI,EAAE0oJ,aAAa1oJ,EAAE6pJ,aAAajsL,OAAUkR,GAAqCA,EAAEjC,EAAiB,QAAf7b,GAAnCA,EAAE40C,EAAEy7I,eAAez7I,EAAE27I,WAAkBhG,GAAGvqL,GAAG,QACleA,KAARi1C,EAAE0zI,GAAG3oL,KAAU,IAAIA,EAAEg1B,KAAK,IAAIh1B,EAAEg1B,OAAKh1B,EAAE,QAAU8d,EAAE,KAAK9d,EAAE6b,GAAKiC,IAAI9d,GAAE,CAAgU,GAA/T+uC,EAAE2hJ,GAAGlzK,EAAE,eAAe82B,EAAE,eAAen4B,EAAE,QAAW,eAAe4B,GAAG,gBAAgBA,IAAEgxB,EAAE4jJ,GAAGn1K,EAAE,iBAAiB82B,EAAE,iBAAiBn4B,EAAE,WAAU84B,EAAE,MAAMn3B,EAAEkxB,EAAEwmJ,GAAG13K,GAAG/L,EAAE,MAAM/R,EAAEgvC,EAAEwmJ,GAAGx1L,IAAGgvC,EAAE,IAAID,EAAEvxB,EAAErB,EAAE,QAAQ2B,EAAE82B,EAAEx8C,IAAKrC,OAAOk/C,EAAEjG,EAAEqhJ,cAAct+K,EAAEyL,EAAE,KAAK+sK,GAAGnyL,KAAKyjB,KAAIkzB,EAAE,IAAIA,EAAEuF,EAAEn4B,EAAE,QAAQnc,EAAE40C,EAAEx8C,IAAKrC,OAAOgc,EAAEg9B,EAAEshJ,cAAcp7I,EAAEz3B,EAAEuxB,GAAGkG,EAAEz3B,EAAKM,GAAG9d,EAAE1B,EAAE,CAAa,IAARg2C,EAAEt0C,EAAEmc,EAAE,EAAMpK,EAAhBg9B,EAAEjxB,EAAkB/L,EAAEA,EAAE+mL,GAAG/mL,GAAGoK,IAAQ,IAAJpK,EAAE,EAAMyL,EAAE82B,EAAE92B,EAAEA,EAAEs7K,GAAGt7K,GAAGzL,IAAI,KAAK,EAAEoK,EAAEpK,GAAGg9B,EAAE+pJ,GAAG/pJ,GAAG5yB,IAAI,KAAK,EAAEpK,EAAEoK,GAAGm4B,EACpfwkJ,GAAGxkJ,GAAGviC,IAAI,KAAKoK,KAAK,CAAC,GAAG4yB,IAAIuF,GAAG,OAAOA,GAAGvF,IAAIuF,EAAEs0I,UAAU,MAAMtqL,EAAEywC,EAAE+pJ,GAAG/pJ,GAAGuF,EAAEwkJ,GAAGxkJ,EAAE,CAACvF,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOjxB,GAAGi7K,GAAGzjM,EAAE05C,EAAElxB,EAAEixB,GAAE,GAAI,OAAO/uC,GAAG,OAAOi1C,GAAG8jJ,GAAGzjM,EAAE2/C,EAAEj1C,EAAE+uC,GAAE,EAAG,CAA8D,GAAG,YAA1CjxB,GAAjBkxB,EAAEnzB,EAAE25K,GAAG35K,GAAGjP,QAAW40K,UAAUxyI,EAAEwyI,SAASntF,gBAA+B,UAAUv2E,GAAG,SAASkxB,EAAEn1C,KAAK,IAAIs6C,EAAEshJ,QAAQ,GAAGR,GAAGjmJ,GAAG,GAAG0mJ,GAAGvhJ,EAAEiiJ,OAAO,CAACjiJ,EAAE+hJ,GAAG,IAAIrhJ,EAAEmhJ,EAAE,MAAMl4K,EAAEkxB,EAAEwyI,WAAW,UAAU1jK,EAAEu2E,gBAAgB,aAAarlD,EAAEn1C,MAAM,UAAUm1C,EAAEn1C,QAAQs6C,EAAEgiJ,IAClV,OADyVhiJ,IAAIA,EAAEA,EAAEp2B,EAAElC,IAAKq5K,GAAG5/L,EAAE6+C,EAAES,EAAEx8C,IAAWy8C,GAAGA,EAAE92B,EAAEixB,EAAEnzB,GAAG,aAAakC,IAAI82B,EAAE7F,EAAEkzI,gBACtertI,EAAEytI,YAAY,WAAWtzI,EAAEn1C,MAAMg+C,GAAG7I,EAAE,SAASA,EAAE73C,QAAO09C,EAAEh5B,EAAE25K,GAAG35K,GAAGjP,OAAcmR,GAAG,IAAK,WAAak3K,GAAGpgJ,IAAI,SAASA,EAAEmiJ,mBAAgBE,GAAGriJ,EAAEsiJ,GAAGt7K,EAAEu7K,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGhiM,EAAEs/C,EAAEx8C,GAAG,MAAM,IAAK,kBAAkB,GAAG6+L,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGhiM,EAAEs/C,EAAEx8C,GAAG,IAAIg8C,EAAE,GAAG6/I,GAAG31L,EAAE,CAAC,OAAOyf,GAAG,IAAK,mBAAmB,IAAI2gC,EAAE,qBAAqB,MAAMpgD,EAAE,IAAK,iBAAiBogD,EAAE,mBAAmB,MAAMpgD,EACrf,IAAK,oBAAoBogD,EAAE,sBAAsB,MAAMpgD,EAAEogD,OAAE,CAAM,MAAMg2I,GAAGF,GAAGz2K,EAAE62B,KAAK8J,EAAE,oBAAoB,YAAY3gC,GAAG,MAAM62B,EAAEt6B,UAAUokC,EAAE,sBAAsBA,IAAI21I,IAAI,OAAOz/I,EAAE69I,SAASiC,IAAI,uBAAuBh2I,EAAE,qBAAqBA,GAAGg2I,KAAKtgJ,EAAE4J,OAAYgwI,GAAG,UAARD,GAAG31L,GAAkB21L,GAAG52L,MAAM42L,GAAG7K,YAAYwR,IAAG,IAAe,GAAV7/I,EAAEsgJ,GAAGt5K,EAAE6iC,IAAOxoD,SAASwoD,EAAE,IAAI2yI,GAAG3yI,EAAE3gC,EAAE,KAAK62B,EAAEx8C,GAAG9C,EAAE2E,KAAK,CAACI,MAAMqkD,EAAE1kD,UAAU66C,IAAIT,EAAEsK,EAAEr8C,KAAK+xC,EAAW,QAARA,EAAEqgJ,GAAG7/I,MAAc8J,EAAEr8C,KAAK+xC,MAASA,EAAEggJ,GA1BjK,SAAYr2K,EAAEzf,GAAG,OAAOyf,GAAG,IAAK,iBAAiB,OAAO02K,GAAGn2L,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEujG,MAAa,MAAK0yF,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAOv2K,EAAEzf,EAAE+D,QAASiyL,IAAIC,GAAG,KAAKx2K,EAAE,QAAQ,OAAO,KAAK,CA0B7Bi7K,CAAGj7K,EAAE62B,GAzB1b,SAAY72B,EAAEzf,GAAG,GAAGo2L,GAAG,MAAM,mBAAmB32K,IAAIk2K,IAAIO,GAAGz2K,EAAEzf,IAAIyf,EAAEigC,KAAKiwI,GAAGD,GAAGD,GAAG,KAAK2G,IAAG,EAAG32K,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKzf,EAAEyxL,SAASzxL,EAAE0xL,QAAQ1xL,EAAE2xL,UAAU3xL,EAAEyxL,SAASzxL,EAAE0xL,OAAO,CAAC,GAAG1xL,EAAEk0B,MAAM,EAAEl0B,EAAEk0B,KAAKt8B,OAAO,OAAOoI,EAAEk0B,KAAK,GAAGl0B,EAAEujG,MAAM,OAAOniF,OAAOC,aAAarhB,EAAEujG,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAOwyF,IAAI,OAAO/1L,EAAEm0L,OAAO,KAAKn0L,EAAE+D,KAAyB,CAyBsD42L,CAAGl7K,EAAE62B,MAA2B,GAAxB/4B,EAAEs5K,GAAGt5K,EAAE,kBAAqB3lB,SAASkC,EAAE,IAAIi5L,GAAG,gBACnf,cAAc,KAAKz8I,EAAEx8C,GAAG9C,EAAE2E,KAAK,CAACI,MAAMjC,EAAE4B,UAAU6hB,IAAIzjB,EAAEiK,KAAK+xC,GAAE,CAACkhJ,GAAGhgM,EAAEgJ,EAAE,GAAE,CAAC,SAASq6L,GAAG56K,EAAEzf,EAAEs2C,GAAG,MAAM,CAACj/C,SAASooB,EAAEvjB,SAAS8D,EAAEkwL,cAAc55I,EAAE,CAAC,SAASugJ,GAAGp3K,EAAEzf,GAAG,IAAI,IAAIs2C,EAAEt2C,EAAE,UAAUud,EAAE,GAAG,OAAOkC,GAAG,CAAC,IAAI3lB,EAAE2lB,EAAE9K,EAAE7a,EAAEkvL,UAAU,IAAIlvL,EAAE48B,KAAK,OAAO/hB,IAAI7a,EAAE6a,EAAY,OAAVA,EAAEg1K,GAAGlqK,EAAE62B,KAAY/4B,EAAEu2F,QAAQumF,GAAG56K,EAAE9K,EAAE7a,IAAc,OAAV6a,EAAEg1K,GAAGlqK,EAAEzf,KAAYud,EAAE5hB,KAAK0+L,GAAG56K,EAAE9K,EAAE7a,KAAK2lB,EAAEA,EAAEk0E,MAAM,CAAC,OAAOp2E,CAAC,CAAC,SAASi9K,GAAG/6K,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAEk0E,aAAal0E,GAAG,IAAIA,EAAEiX,KAAK,OAAOjX,GAAI,IAAI,CAC5a,SAASg7K,GAAGh7K,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,IAAI,IAAI6a,EAAE3U,EAAEgwL,WAAWh5L,EAAE,GAAG,OAAOs/C,GAAGA,IAAI/4B,GAAG,CAAC,IAAImzB,EAAE4F,EAAE92B,EAAEkxB,EAAE45I,UAAUzuL,EAAE60C,EAAEs4I,UAAU,GAAG,OAAOxpK,GAAGA,IAAIjC,EAAE,MAAM,IAAImzB,EAAEha,KAAK,OAAO76B,IAAI60C,EAAE70C,EAAE/B,EAAa,OAAV0lB,EAAEmqK,GAAGrzI,EAAE3hC,KAAY3d,EAAE88G,QAAQumF,GAAG/jJ,EAAE92B,EAAEkxB,IAAK52C,GAAc,OAAV0lB,EAAEmqK,GAAGrzI,EAAE3hC,KAAY3d,EAAE2E,KAAK0+L,GAAG/jJ,EAAE92B,EAAEkxB,KAAM4F,EAAEA,EAAEq9C,MAAM,CAAC,IAAI38F,EAAEY,QAAQ6nB,EAAE9jB,KAAK,CAACI,MAAMiE,EAAEtE,UAAU1E,GAAG,CAAC,SAAS4jM,KAAK,CAAC,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGt7K,EAAEzf,GAAG,OAAOyf,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQzf,EAAEg7L,UAAU,OAAM,CAAE,CAC7b,SAASC,GAAGx7K,EAAEzf,GAAG,MAAM,aAAayf,GAAG,WAAWA,GAAG,aAAaA,GAAG,iBAAkBzf,EAAE46F,UAAU,iBAAkB56F,EAAE46F,UAAU,iBAAkB56F,EAAEid,yBAAyB,OAAOjd,EAAEid,yBAAyB,MAAMjd,EAAEid,wBAAwBC,MAAM,CAAC,IAAI6U,GAAG,mBAAoB3vB,WAAWA,gBAAW,EAAO84L,GAAG,mBAAoBv9F,aAAaA,kBAAa,EAAO,SAASw9F,GAAG17K,GAAG,IAAIA,EAAE25H,SAAS35H,EAAEmlK,YAAY,GAAG,IAAInlK,EAAE25H,WAAoB,OAAT35H,EAAEA,EAAE/Q,QAAe+Q,EAAEmlK,YAAY,IAAI,CAC5c,SAASwW,GAAG37K,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE24K,YAAY,CAAC,IAAIp4L,EAAEyf,EAAE25H,SAAS,GAAG,IAAIp5I,GAAG,IAAIA,EAAE,KAAK,CAAC,OAAOyf,CAAC,CAAC,SAAS47K,GAAG57K,GAAGA,EAAEA,EAAE67K,gBAAgB,IAAI,IAAIt7L,EAAE,EAAEyf,GAAG,CAAC,GAAG,IAAIA,EAAE25H,SAAS,CAAC,IAAI9iG,EAAE72B,EAAE1b,KAAK,GAAG,MAAMuyC,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIt2C,EAAE,OAAOyf,EAAEzf,GAAG,KAAK,OAAOs2C,GAAGt2C,GAAG,CAACyf,EAAEA,EAAE67K,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG,EAA0D,IAAIC,GAAGp1K,KAAK4zG,SAAS/4G,SAAS,IAAIhlB,MAAM,GAAGw/L,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGlB,GAAG,oBAAoBkB,GAAGG,GAAG,iBAAiBH,GAC9d,SAASvP,GAAGxsK,GAAG,IAAIzf,EAAEyf,EAAEg8K,IAAI,GAAGz7L,EAAE,OAAOA,EAAE,IAAI,IAAIs2C,EAAE72B,EAAEy8E,WAAW5lD,GAAG,CAAC,GAAGt2C,EAAEs2C,EAAEgkJ,KAAKhkJ,EAAEmlJ,IAAI,CAAe,GAAdnlJ,EAAEt2C,EAAEsqL,UAAa,OAAOtqL,EAAEw/E,OAAO,OAAOlpC,GAAG,OAAOA,EAAEkpC,MAAM,IAAI//D,EAAE47K,GAAG57K,GAAG,OAAOA,GAAG,CAAC,GAAG62B,EAAE72B,EAAEg8K,IAAI,OAAOnlJ,EAAE72B,EAAE47K,GAAG57K,EAAE,CAAC,OAAOzf,CAAC,CAAKs2C,GAAJ72B,EAAE62B,GAAM4lD,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS6sF,GAAGtpK,GAAkB,QAAfA,EAAEA,EAAEg8K,KAAKh8K,EAAE66K,MAAc,IAAI76K,EAAEiX,KAAK,IAAIjX,EAAEiX,KAAK,KAAKjX,EAAEiX,KAAK,IAAIjX,EAAEiX,IAAI,KAAKjX,CAAC,CAAC,SAASy3K,GAAGz3K,GAAG,GAAG,IAAIA,EAAEiX,KAAK,IAAIjX,EAAEiX,IAAI,OAAOjX,EAAEupK,UAAU,MAAMtrL,MAAMghB,EAAE,IAAK,CAAC,SAASuqK,GAAGxpK,GAAG,OAAOA,EAAEi8K,KAAK,IAAI,CACtb,SAAS3B,GAAGt6K,GAAG,IAAIzf,EAAEyf,EAAEk8K,IAAkC,YAA9B,IAAS37L,IAAIA,EAAEyf,EAAEk8K,IAAI,IAAI3+G,KAAYh9E,CAAC,CAAC,IAAI47L,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGr8K,GAAG,MAAM,CAACvL,QAAQuL,EAAE,CAAC,SAAS4wB,GAAE5wB,GAAG,EAAEo8K,KAAKp8K,EAAEvL,QAAQ0nL,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASzlJ,GAAE32B,EAAEzf,GAAG67L,KAAKD,GAAGC,IAAIp8K,EAAEvL,QAAQuL,EAAEvL,QAAQlU,CAAC,CAAC,IAAI+7L,GAAG,CAAC,EAAE5lJ,GAAE2lJ,GAAGC,IAAIjyK,GAAEgyK,IAAG,GAAIE,GAAGD,GAC5P,SAASE,GAAGx8K,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAElkB,KAAKizI,aAAa,IAAIl4F,EAAE,OAAOylJ,GAAG,IAAIx+K,EAAEkC,EAAEupK,UAAU,GAAGzrK,GAAGA,EAAE2+K,8CAA8Cl8L,EAAE,OAAOud,EAAE4+K,0CAA0C,IAASxnL,EAAL7a,EAAE,CAAC,EAAI,IAAI6a,KAAK2hC,EAAEx8C,EAAE6a,GAAG3U,EAAE2U,GAAoH,OAAjH4I,KAAIkC,EAAEA,EAAEupK,WAAYkT,4CAA4Cl8L,EAAEyf,EAAE08K,0CAA0CriM,GAAUA,CAAC,CAAC,SAAS01D,GAAG/vC,GAAyB,OAAO,OAA7BA,EAAEA,EAAE6uH,kBAA6C,CAAC,SAAS8tD,KAAK/rJ,GAAEvmB,IAAGumB,GAAE8F,GAAE,CAAC,SAASkmJ,GAAG58K,EAAEzf,EAAEs2C,GAAG,GAAGH,GAAEjiC,UAAU6nL,GAAG,MAAMr+L,MAAMghB,EAAE,MAAM03B,GAAED,GAAEn2C,GAAGo2C,GAAEtsB,GAAEwsB,EAAE,CACjf,SAASgmJ,GAAG78K,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkC,EAAEupK,UAAgC,GAAtBvpK,EAAEzf,EAAEsuI,kBAAqB,mBAAoB/wH,EAAEg/K,gBAAgB,OAAOjmJ,EAAwB,IAAI,IAAIx8C,KAA9ByjB,EAAEA,EAAEg/K,kBAAiC,KAAKziM,KAAK2lB,GAAG,MAAM/hB,MAAMghB,EAAE,IAAIkkK,EAAG5iL,IAAI,UAAUlG,IAAI,OAAO87C,EAAE,CAAC,EAAEU,EAAE/4B,EAAE,CAAC,SAASi/K,GAAG/8K,GAAyG,OAAtGA,GAAGA,EAAEA,EAAEupK,YAAYvpK,EAAEg9K,2CAA2CV,GAAGC,GAAG7lJ,GAAEjiC,QAAQkiC,GAAED,GAAE12B,GAAG22B,GAAEtsB,GAAEA,GAAE5V,UAAe,CAAE,CAAC,SAASwoL,GAAGj9K,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkC,EAAEupK,UAAU,IAAIzrK,EAAE,MAAM7f,MAAMghB,EAAE,MAAM43B,GAAG72B,EAAE68K,GAAG78K,EAAEzf,EAAEg8L,IAAIz+K,EAAEk/K,0CAA0Ch9K,EAAE4wB,GAAEvmB,IAAGumB,GAAE8F,IAAGC,GAAED,GAAE12B,IAAI4wB,GAAEvmB,IAAGssB,GAAEtsB,GAAEwsB,EAAE,CAC/e,IAAIqmJ,GAAG,KAAKC,GAAG,KAAKC,GAAGt9K,EAAE4sK,yBAAyB2Q,GAAGv9K,EAAEmtK,0BAA0BqQ,GAAGx9K,EAAEy9K,wBAAwBC,GAAG19K,EAAE29K,qBAAqBC,GAAG59K,EAAE69K,sBAAsBC,GAAG99K,EAAE0uK,aAAaqP,GAAG/9K,EAAEg+K,iCAAiCC,GAAGj+K,EAAEk+K,2BAA2BC,GAAGn+K,EAAE4vK,8BAA8BwO,GAAGp+K,EAAEotK,wBAAwBiR,GAAGr+K,EAAEs+K,qBAAqBC,GAAGv+K,EAAEw+K,sBAAsBC,GAAG,CAAC,EAAEC,QAAG,IAASd,GAAGA,GAAG,WAAW,EAAEe,GAAG,KAAK5kJ,GAAG,KAAK6kJ,IAAG,EAAGC,GAAGf,KAAK9+E,GAAE,IAAI6/E,GAAGf,GAAG,WAAW,OAAOA,KAAKe,EAAE,EACxd,SAASC,KAAK,OAAOf,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAMpgM,MAAMghB,EAAE,MAAO,CAAC,SAASw6B,GAAGz5B,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO+9K,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAMpgM,MAAMghB,EAAE,MAAO,CAAC,SAAS4/K,GAAG7+K,EAAEzf,GAAW,OAARyf,EAAEy5B,GAAGz5B,GAAUo9K,GAAGp9K,EAAEzf,EAAE,CAAC,SAASu+L,GAAG9+K,EAAEzf,EAAEs2C,GAAW,OAAR72B,EAAEy5B,GAAGz5B,GAAUq9K,GAAGr9K,EAAEzf,EAAEs2C,EAAE,CAAC,SAASkoJ,KAAK,GAAG,OAAOllJ,GAAG,CAAC,IAAI75B,EAAE65B,GAAGA,GAAG,KAAKyjJ,GAAGt9K,EAAE,CAACg/K,IAAI,CAC/a,SAASA,KAAK,IAAIN,IAAI,OAAOD,GAAG,CAACC,IAAG,EAAG,IAAI1+K,EAAE,EAAE,IAAI,IAAIzf,EAAEk+L,GAAGI,GAAG,IAAG,WAAW,KAAK7+K,EAAEzf,EAAEpI,OAAO6nB,IAAI,CAAC,IAAI62B,EAAEt2C,EAAEyf,GAAG,GAAG62B,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAAC,IAAG4nJ,GAAG,IAAI,CAAC,MAAM5nJ,GAAG,MAAM,OAAO4nJ,KAAKA,GAAGA,GAAGjiM,MAAMwjB,EAAE,IAAIq9K,GAAGU,GAAGgB,IAAIloJ,CAAE,CAAC,QAAQ6nJ,IAAG,CAAE,CAAC,CAAC,CAAC,IAAIO,GAAGzd,EAAG0d,wBAAwB,SAASC,GAAGn/K,EAAEzf,GAAG,GAAGyf,GAAGA,EAAEo3F,aAAa,CAA4B,IAAI,IAAIvgE,KAAnCt2C,EAAE41C,EAAE,CAAC,EAAE51C,GAAGyf,EAAEA,EAAEo3F,kBAA4B,IAAS72G,EAAEs2C,KAAKt2C,EAAEs2C,GAAG72B,EAAE62B,IAAI,OAAOt2C,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAI6+L,GAAG/C,GAAG,MAAMgD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAChc,SAASI,GAAGz/K,GAAG,IAAIzf,EAAE6+L,GAAG3qL,QAAQm8B,GAAEwuJ,IAAIp/K,EAAElkB,KAAK41B,SAASguK,cAAcn/L,CAAC,CAAC,SAASo/L,GAAG3/K,EAAEzf,GAAG,KAAK,OAAOyf,GAAG,CAAC,IAAI62B,EAAE72B,EAAE6qK,UAAU,IAAI7qK,EAAE4/K,WAAWr/L,KAAKA,EAAE,IAAG,OAAOs2C,IAAIA,EAAE+oJ,WAAWr/L,KAAKA,EAAE,MAAWs2C,EAAE+oJ,YAAYr/L,CAAC,MAAMyf,EAAE4/K,YAAYr/L,EAAE,OAAOs2C,IAAIA,EAAE+oJ,YAAYr/L,GAAGyf,EAAEA,EAAEk0E,MAAM,CAAC,CAAC,SAAS9gD,GAAGpzB,EAAEzf,GAAG8+L,GAAGr/K,EAAEu/K,GAAGD,GAAG,KAAsB,QAAjBt/K,EAAEA,EAAE6/K,eAAuB,OAAO7/K,EAAE8/K,kBAAoB9/K,EAAE+/K,MAAMx/L,KAAKy/L,IAAG,GAAIhgL,EAAE8/K,aAAa,KAAK,CAC5Y,SAASG,GAAGjgL,EAAEzf,GAAG,GAAGg/L,KAAKv/K,IAAG,IAAKzf,GAAG,IAAIA,EAAmG,GAA7F,iBAAkBA,GAAG,aAAaA,IAAEg/L,GAAGv/K,EAAEzf,EAAE,YAAWA,EAAE,CAACiyB,QAAQxS,EAAEkgL,aAAa3/L,EAAE+G,KAAK,MAAS,OAAOg4L,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMphM,MAAMghB,EAAE,MAAMqgL,GAAG/+L,EAAE8+L,GAAGQ,aAAa,CAACE,MAAM,EAAED,aAAav/L,EAAE4/L,WAAW,KAAK,MAAMb,GAAGA,GAAGh4L,KAAK/G,EAAE,OAAOyf,EAAE0/K,aAAa,CAAC,IAAIU,IAAG,EAAG,SAASC,GAAGrgL,GAAGA,EAAEsgL,YAAY,CAACC,UAAUvgL,EAAE+qK,cAAcyV,gBAAgB,KAAKC,eAAe,KAAKrxE,OAAO,CAACigD,QAAQ,MAAMqxB,QAAQ,KAAK,CAC/a,SAASC,GAAG3gL,EAAEzf,GAAGyf,EAAEA,EAAEsgL,YAAY//L,EAAE+/L,cAActgL,IAAIzf,EAAE+/L,YAAY,CAACC,UAAUvgL,EAAEugL,UAAUC,gBAAgBxgL,EAAEwgL,gBAAgBC,eAAezgL,EAAEygL,eAAerxE,OAAOpvG,EAAEovG,OAAOsxE,QAAQ1gL,EAAE0gL,SAAS,CAAC,SAASE,GAAG5gL,EAAEzf,GAAG,MAAM,CAACsgM,UAAU7gL,EAAE8gL,KAAKvgM,EAAE02B,IAAI,EAAEr3B,QAAQ,KAAK7D,SAAS,KAAKuL,KAAK,KAAK,CAAC,SAASy5L,GAAG/gL,EAAEzf,GAAmB,GAAG,QAAnByf,EAAEA,EAAEsgL,aAAwB,CAAY,IAAIzpJ,GAAf72B,EAAEA,EAAEovG,QAAeigD,QAAQ,OAAOx4H,EAAEt2C,EAAE+G,KAAK/G,GAAGA,EAAE+G,KAAKuvC,EAAEvvC,KAAKuvC,EAAEvvC,KAAK/G,GAAGyf,EAAEqvJ,QAAQ9uK,CAAC,CAAC,CACvZ,SAASygM,GAAGhhL,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAEsgL,YAAYxiL,EAAEkC,EAAE6qK,UAAU,GAAG,OAAO/sK,GAAoB+4B,KAAhB/4B,EAAEA,EAAEwiL,aAAmB,CAAC,IAAIjmM,EAAE,KAAK6a,EAAE,KAAyB,GAAG,QAAvB2hC,EAAEA,EAAE2pJ,iBAA4B,CAAC,EAAE,CAAC,IAAIjpM,EAAE,CAACspM,UAAUhqJ,EAAEgqJ,UAAUC,KAAKjqJ,EAAEiqJ,KAAK7pK,IAAI4f,EAAE5f,IAAIr3B,QAAQi3C,EAAEj3C,QAAQ7D,SAAS86C,EAAE96C,SAASuL,KAAK,MAAM,OAAO4N,EAAE7a,EAAE6a,EAAE3d,EAAE2d,EAAEA,EAAE5N,KAAK/P,EAAEs/C,EAAEA,EAAEvvC,IAAI,OAAO,OAAOuvC,GAAG,OAAO3hC,EAAE7a,EAAE6a,EAAE3U,EAAE2U,EAAEA,EAAE5N,KAAK/G,CAAC,MAAMlG,EAAE6a,EAAE3U,EAAiH,OAA/Gs2C,EAAE,CAAC0pJ,UAAUziL,EAAEyiL,UAAUC,gBAAgBnmM,EAAEomM,eAAevrL,EAAEk6G,OAAOtxG,EAAEsxG,OAAOsxE,QAAQ5iL,EAAE4iL,cAAS1gL,EAAEsgL,YAAYzpJ,EAAQ,CAAoB,QAAnB72B,EAAE62B,EAAE4pJ,gBAAwB5pJ,EAAE2pJ,gBAAgBjgM,EAAEyf,EAAE1Y,KACnf/G,EAAEs2C,EAAE4pJ,eAAelgM,CAAC,CACpB,SAAS0gM,GAAGjhL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE2lB,EAAEsgL,YAAYF,IAAG,EAAG,IAAIlrL,EAAE7a,EAAEmmM,gBAAgBjpM,EAAE8C,EAAEomM,eAAexvJ,EAAE52C,EAAE+0H,OAAOigD,QAAQ,GAAG,OAAOp+H,EAAE,CAAC52C,EAAE+0H,OAAOigD,QAAQ,KAAK,IAAItvJ,EAAEkxB,EAAE70C,EAAE2jB,EAAEzY,KAAKyY,EAAEzY,KAAK,KAAK,OAAO/P,EAAE2d,EAAE9Y,EAAE7E,EAAE+P,KAAKlL,EAAE7E,EAAEwoB,EAAE,IAAIzB,EAAE0B,EAAE6qK,UAAU,GAAG,OAAOvsK,EAAE,CAAiB,IAAIm4B,GAApBn4B,EAAEA,EAAEgiL,aAAoBG,eAAehqJ,IAAIl/C,IAAI,OAAOk/C,EAAEn4B,EAAEkiL,gBAAgBpkM,EAAEq6C,EAAEnvC,KAAKlL,EAAEkiB,EAAEmiL,eAAe1gL,EAAE,CAAC,CAAC,GAAG,OAAO7K,EAAE,CAA8B,IAA7BuhC,EAAEp8C,EAAEkmM,UAAUhpM,EAAE,EAAE+mB,EAAEliB,EAAE2jB,EAAE,OAAO,CAACkxB,EAAE/7B,EAAE4rL,KAAK,IAAIlnM,EAAEsb,EAAE2rL,UAAU,IAAI/iL,EAAEmzB,KAAKA,EAAE,CAAC,OAAO3yB,IAAIA,EAAEA,EAAEhX,KAAK,CAACu5L,UAAUjnM,EAAEknM,KAAK,EAAE7pK,IAAI/hB,EAAE+hB,IAAIr3B,QAAQsV,EAAEtV,QAAQ7D,SAASmZ,EAAEnZ,SACrfuL,KAAK,OAAO0Y,EAAE,CAAC,IAAIi2B,EAAEj2B,EAAE/d,EAAEiT,EAAU,OAAR+7B,EAAE1wC,EAAE3G,EAAEi9C,EAAS50C,EAAEg1B,KAAK,KAAK,EAAc,GAAG,mBAAfgf,EAAEh0C,EAAErC,SAAiC,CAAC62C,EAAER,EAAE77C,KAAKR,EAAE68C,EAAExF,GAAG,MAAMjxB,CAAC,CAACy2B,EAAER,EAAE,MAAMj2B,EAAE,KAAK,EAAEi2B,EAAE5K,OAAe,KAAT4K,EAAE5K,MAAY,GAAG,KAAK,EAAsD,GAAG,OAA3C4F,EAAE,mBAAdgF,EAAEh0C,EAAErC,SAAgCq2C,EAAE77C,KAAKR,EAAE68C,EAAExF,GAAGgF,GAA0B,MAAMj2B,EAAEy2B,EAAEN,EAAE,CAAC,EAAEM,EAAExF,GAAG,MAAMjxB,EAAE,KAAK,EAAEogL,IAAG,EAAG,CAAC,OAAOlrL,EAAEnZ,WAAWikB,EAAEqrB,OAAO,GAAe,QAAZ4F,EAAE52C,EAAEqmM,SAAiBrmM,EAAEqmM,QAAQ,CAACxrL,GAAG+7B,EAAE/0C,KAAKgZ,GAAG,MAAMtb,EAAE,CAACinM,UAAUjnM,EAAEknM,KAAK7vJ,EAAEha,IAAI/hB,EAAE+hB,IAAIr3B,QAAQsV,EAAEtV,QAAQ7D,SAASmZ,EAAEnZ,SAASuL,KAAK,MAAM,OAAOgX,GAAGliB,EAAEkiB,EAAE1kB,EAAEmmB,EAAE02B,GAAGn4B,EAAEA,EAAEhX,KAAK1N,EAAErC,GAAG05C,EAAW,GAAG,QAAZ/7B,EAAEA,EAAE5N,MAC1e,IAAsB,QAAnB2pC,EAAE52C,EAAE+0H,OAAOigD,SAAiB,MAAWn6J,EAAE+7B,EAAE3pC,KAAK2pC,EAAE3pC,KAAK,KAAKjN,EAAEomM,eAAexvJ,EAAE52C,EAAE+0H,OAAOigD,QAAQ,KAAI,CAAU,OAAO/wJ,IAAIyB,EAAE02B,GAAGp8C,EAAEkmM,UAAUxgL,EAAE1lB,EAAEmmM,gBAAgBpkM,EAAE/B,EAAEomM,eAAeniL,EAAE4iL,IAAI3pM,EAAEyoB,EAAE+/K,MAAMxoM,EAAEyoB,EAAE+qK,cAAct0I,CAAC,CAAC,CAAC,SAAS0qJ,GAAGnhL,EAAEzf,EAAEs2C,GAA8B,GAA3B72B,EAAEzf,EAAEmgM,QAAQngM,EAAEmgM,QAAQ,KAAQ,OAAO1gL,EAAE,IAAIzf,EAAE,EAAEA,EAAEyf,EAAE7nB,OAAOoI,IAAI,CAAC,IAAIud,EAAEkC,EAAEzf,GAAGlG,EAAEyjB,EAAE/hB,SAAS,GAAG,OAAO1B,EAAE,CAAqB,GAApByjB,EAAE/hB,SAAS,KAAK+hB,EAAE+4B,EAAK,mBAAoBx8C,EAAE,MAAM4D,MAAMghB,EAAE,IAAI5kB,IAAIA,EAAED,KAAK0jB,EAAE,CAAC,CAAC,CAAC,IAAIsjL,IAAG,IAAKhhB,EAAGn4K,WAAWwxF,KAC3b,SAAS4nG,GAAGrhL,EAAEzf,EAAEs2C,EAAE/4B,GAA8B+4B,EAAE,OAAXA,EAAEA,EAAE/4B,EAAtBvd,EAAEyf,EAAE+qK,gBAA8CxqL,EAAE41C,EAAE,CAAC,EAAE51C,EAAEs2C,GAAG72B,EAAE+qK,cAAcl0I,EAAE,IAAI72B,EAAE+/K,QAAQ//K,EAAEsgL,YAAYC,UAAU1pJ,EAAE,CAC7I,IAAIyqJ,GAAG,CAACC,UAAU,SAASvhL,GAAG,SAAOA,EAAEA,EAAEwhL,kBAAiB5W,GAAG5qK,KAAKA,CAAI,EAAEyhL,gBAAgB,SAASzhL,EAAEzf,EAAEs2C,GAAG72B,EAAEA,EAAEwhL,gBAAgB,IAAI1jL,EAAE4jL,KAAKrnM,EAAEsnM,GAAG3hL,GAAG9K,EAAE0rL,GAAG9iL,EAAEzjB,GAAG6a,EAAEtV,QAAQW,EAAE,MAASs2C,IAAc3hC,EAAEnZ,SAAS86C,GAAGkqJ,GAAG/gL,EAAE9K,GAAG0sL,GAAG5hL,EAAE3lB,EAAEyjB,EAAE,EAAE+jL,oBAAoB,SAAS7hL,EAAEzf,EAAEs2C,GAAG72B,EAAEA,EAAEwhL,gBAAgB,IAAI1jL,EAAE4jL,KAAKrnM,EAAEsnM,GAAG3hL,GAAG9K,EAAE0rL,GAAG9iL,EAAEzjB,GAAG6a,EAAE+hB,IAAI,EAAE/hB,EAAEtV,QAAQW,EAAE,MAASs2C,IAAc3hC,EAAEnZ,SAAS86C,GAAGkqJ,GAAG/gL,EAAE9K,GAAG0sL,GAAG5hL,EAAE3lB,EAAEyjB,EAAE,EAAEgkL,mBAAmB,SAAS9hL,EAAEzf,GAAGyf,EAAEA,EAAEwhL,gBAAgB,IAAI3qJ,EAAE6qJ,KAAK5jL,EAAE6jL,GAAG3hL,GAAG3lB,EAAEumM,GAAG/pJ,EAAE/4B,GAAGzjB,EAAE48B,IAAI,EAAE,MAAS12B,IAAclG,EAAE0B,SACjfwE,GAAGwgM,GAAG/gL,EAAE3lB,GAAGunM,GAAG5hL,EAAElC,EAAE+4B,EAAE,GAAG,SAASkrJ,GAAG/hL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,EAAE3d,GAAiB,MAAM,mBAApByoB,EAAEA,EAAEupK,WAAsCyY,sBAAsBhiL,EAAEgiL,sBAAsBlkL,EAAE5I,EAAE3d,IAAGgJ,EAAEzH,YAAWyH,EAAEzH,UAAUmpM,wBAAsBzJ,GAAG3hJ,EAAE/4B,KAAK06K,GAAGn+L,EAAE6a,GAAK,CACpN,SAASgtL,GAAGliL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,GAAE,EAAGzjB,EAAEiiM,GAAOpnL,EAAE3U,EAAEuuI,YAA2W,MAA/V,iBAAkB55H,GAAG,OAAOA,EAAEA,EAAE+qL,GAAG/qL,IAAI7a,EAAE01D,GAAGxvD,GAAGg8L,GAAG7lJ,GAAEjiC,QAAyBS,GAAG4I,EAAE,OAAtBA,EAAEvd,EAAEwuI,eAAwCytD,GAAGx8K,EAAE3lB,GAAGiiM,IAAI/7L,EAAE,IAAIA,EAAEs2C,EAAE3hC,GAAG8K,EAAE+qK,cAAc,OAAOxqL,EAAEoI,YAAO,IAASpI,EAAEoI,MAAMpI,EAAEoI,MAAM,KAAKpI,EAAE4vJ,QAAQmxC,GAAGthL,EAAEupK,UAAUhpL,EAAEA,EAAEihM,gBAAgBxhL,EAAElC,KAAIkC,EAAEA,EAAEupK,WAAYkT,4CAA4CpiM,EAAE2lB,EAAE08K,0CAA0CxnL,GAAU3U,CAAC,CAC5Z,SAAS4hM,GAAGniL,EAAEzf,EAAEs2C,EAAE/4B,GAAGkC,EAAEzf,EAAEoI,MAAM,mBAAoBpI,EAAE6hM,2BAA2B7hM,EAAE6hM,0BAA0BvrJ,EAAE/4B,GAAG,mBAAoBvd,EAAE8hM,kCAAkC9hM,EAAE8hM,iCAAiCxrJ,EAAE/4B,GAAGvd,EAAEoI,QAAQqX,GAAGshL,GAAGO,oBAAoBthM,EAAEA,EAAEoI,MAAM,KAAK,CACpQ,SAAS25L,GAAGtiL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE2lB,EAAEupK,UAAUlvL,EAAEpC,MAAM4+C,EAAEx8C,EAAEsO,MAAMqX,EAAE+qK,cAAc1wL,EAAEo/F,KAAK2nG,GAAGf,GAAGrgL,GAAG,IAAI9K,EAAE3U,EAAEuuI,YAAY,iBAAkB55H,GAAG,OAAOA,EAAE7a,EAAEm4B,QAAQytK,GAAG/qL,IAAIA,EAAE66C,GAAGxvD,GAAGg8L,GAAG7lJ,GAAEjiC,QAAQpa,EAAEm4B,QAAQgqK,GAAGx8K,EAAE9K,IAAI+rL,GAAGjhL,EAAE62B,EAAEx8C,EAAEyjB,GAAGzjB,EAAEsO,MAAMqX,EAAE+qK,cAA2C,mBAA7B71K,EAAE3U,EAAE2uI,4BAAiDmyD,GAAGrhL,EAAEzf,EAAE2U,EAAE2hC,GAAGx8C,EAAEsO,MAAMqX,EAAE+qK,eAAe,mBAAoBxqL,EAAE2uI,0BAA0B,mBAAoB70I,EAAEkoM,yBAAyB,mBAAoBloM,EAAEmoM,2BAA2B,mBAAoBnoM,EAAEooM,qBACveliM,EAAElG,EAAEsO,MAAM,mBAAoBtO,EAAEooM,oBAAoBpoM,EAAEooM,qBAAqB,mBAAoBpoM,EAAEmoM,2BAA2BnoM,EAAEmoM,4BAA4BjiM,IAAIlG,EAAEsO,OAAO24L,GAAGO,oBAAoBxnM,EAAEA,EAAEsO,MAAM,MAAMs4L,GAAGjhL,EAAE62B,EAAEx8C,EAAEyjB,GAAGzjB,EAAEsO,MAAMqX,EAAE+qK,eAAe,mBAAoB1wL,EAAEqoM,oBAAoB1iL,EAAEqrB,OAAO,EAAE,CAAC,IAAIs3J,GAAG5kL,MAAMuO,QACvT,SAASs2K,GAAG5iL,EAAEzf,EAAEs2C,GAAW,GAAG,QAAX72B,EAAE62B,EAAEz7B,MAAiB,mBAAoB4E,GAAG,iBAAkBA,EAAE,CAAC,GAAG62B,EAAEgsJ,OAAO,CAAY,GAAXhsJ,EAAEA,EAAEgsJ,OAAY,CAAC,GAAG,IAAIhsJ,EAAE5f,IAAI,MAAMh5B,MAAMghB,EAAE,MAAM,IAAInB,EAAE+4B,EAAE0yI,SAAS,CAAC,IAAIzrK,EAAE,MAAM7f,MAAMghB,EAAE,IAAIe,IAAI,IAAI3lB,EAAE,GAAG2lB,EAAE,OAAG,OAAOzf,GAAG,OAAOA,EAAE6a,KAAK,mBAAoB7a,EAAE6a,KAAK7a,EAAE6a,IAAI0nL,aAAazoM,EAASkG,EAAE6a,KAAI7a,EAAE,SAASyf,GAAG,IAAIzf,EAAEud,EAAE27E,KAAKl5F,IAAI6gM,KAAK7gM,EAAEud,EAAE27E,KAAK,CAAC,GAAG,OAAOz5E,SAASzf,EAAElG,GAAGkG,EAAElG,GAAG2lB,CAAC,EAAEzf,EAAEuiM,WAAWzoM,EAASkG,EAAC,CAAC,GAAG,iBAAkByf,EAAE,MAAM/hB,MAAMghB,EAAE,MAAM,IAAI43B,EAAEgsJ,OAAO,MAAM5kM,MAAMghB,EAAE,IAAIe,GAAI,CAAC,OAAOA,CAAC,CACje,SAAS+iL,GAAG/iL,EAAEzf,GAAG,GAAG,aAAayf,EAAElkB,KAAK,MAAMmC,MAAMghB,EAAE,GAAG,oBAAoBzmB,OAAOM,UAAU0oB,SAASpnB,KAAKmG,GAAG,qBAAqB/H,OAAO2yB,KAAK5qB,GAAG2T,KAAK,MAAM,IAAI3T,GAAI,CACtK,SAASyiM,GAAGhjL,GAAG,SAASzf,EAAEA,EAAEs2C,GAAG,GAAG72B,EAAE,CAAC,IAAIlC,EAAEvd,EAAE0iM,WAAW,OAAOnlL,GAAGA,EAAEolL,WAAWrsJ,EAAEt2C,EAAE0iM,WAAWpsJ,GAAGt2C,EAAE4iM,YAAY5iM,EAAE0iM,WAAWpsJ,EAAEA,EAAEqsJ,WAAW,KAAKrsJ,EAAExL,MAAM,CAAC,CAAC,CAAC,SAASwL,EAAEA,EAAE/4B,GAAG,IAAIkC,EAAE,OAAO,KAAK,KAAK,OAAOlC,GAAGvd,EAAEs2C,EAAE/4B,GAAGA,EAAEA,EAAEmtK,QAAQ,OAAO,IAAI,CAAC,SAASntK,EAAEkC,EAAEzf,GAAG,IAAIyf,EAAE,IAAIkU,IAAI,OAAO3zB,GAAG,OAAOA,EAAE7H,IAAIsnB,EAAE0S,IAAInyB,EAAE7H,IAAI6H,GAAGyf,EAAE0S,IAAInyB,EAAE8G,MAAM9G,GAAGA,EAAEA,EAAE0qL,QAAQ,OAAOjrK,CAAC,CAAC,SAAS3lB,EAAE2lB,EAAEzf,GAAsC,OAAnCyf,EAAEojL,GAAGpjL,EAAEzf,IAAK8G,MAAM,EAAE2Y,EAAEirK,QAAQ,KAAYjrK,CAAC,CAAC,SAAS9K,EAAE3U,EAAEs2C,EAAE/4B,GAAa,OAAVvd,EAAE8G,MAAMyW,EAAMkC,EAA4B,QAAjBlC,EAAEvd,EAAEsqL,YAA6B/sK,EAAEA,EAAEzW,OAAQwvC,GAAGt2C,EAAE8qC,MAAM,EACpfwL,GAAG/4B,GAAEvd,EAAE8qC,MAAM,EAASwL,GADoaA,CACna,CAAC,SAASt/C,EAAEgJ,GAAsC,OAAnCyf,GAAG,OAAOzf,EAAEsqL,YAAYtqL,EAAE8qC,MAAM,GAAU9qC,CAAC,CAAC,SAAS0wC,EAAEjxB,EAAEzf,EAAEs2C,EAAE/4B,GAAG,OAAG,OAAOvd,GAAG,IAAIA,EAAE02B,MAAW12B,EAAE8iM,GAAGxsJ,EAAE72B,EAAE7I,KAAK2G,IAAKo2E,OAAOl0E,EAAEzf,KAAEA,EAAElG,EAAEkG,EAAEs2C,IAAKq9C,OAAOl0E,EAASzf,EAAC,CAAC,SAASwf,EAAEC,EAAEzf,EAAEs2C,EAAE/4B,GAAG,OAAG,OAAOvd,GAAGA,EAAE+iM,cAAczsJ,EAAE/6C,OAAYgiB,EAAEzjB,EAAEkG,EAAEs2C,EAAE5+C,QAASmjB,IAAIwnL,GAAG5iL,EAAEzf,EAAEs2C,GAAG/4B,EAAEo2E,OAAOl0E,EAAElC,KAAEA,EAAEylL,GAAG1sJ,EAAE/6C,KAAK+6C,EAAEn+C,IAAIm+C,EAAE5+C,MAAM,KAAK+nB,EAAE7I,KAAK2G,IAAK1C,IAAIwnL,GAAG5iL,EAAEzf,EAAEs2C,GAAG/4B,EAAEo2E,OAAOl0E,EAASlC,EAAC,CAAC,SAAS1hB,EAAE4jB,EAAEzf,EAAEs2C,EAAE/4B,GAAG,OAAG,OAAOvd,GAAG,IAAIA,EAAE02B,KAAK12B,EAAEgpL,UAAUsD,gBAAgBh2I,EAAEg2I,eAAetsL,EAAEgpL,UAAUia,iBAAiB3sJ,EAAE2sJ,iBAAsBjjM,EACrgBkjM,GAAG5sJ,EAAE72B,EAAE7I,KAAK2G,IAAKo2E,OAAOl0E,EAAEzf,KAAEA,EAAElG,EAAEkG,EAAEs2C,EAAEskD,UAAU,KAAMjH,OAAOl0E,EAASzf,EAAC,CAAC,SAAS+d,EAAE0B,EAAEzf,EAAEs2C,EAAE/4B,EAAE5I,GAAG,OAAG,OAAO3U,GAAG,IAAIA,EAAE02B,MAAW12B,EAAEmjM,GAAG7sJ,EAAE72B,EAAE7I,KAAK2G,EAAE5I,IAAKg/E,OAAOl0E,EAAEzf,KAAEA,EAAElG,EAAEkG,EAAEs2C,IAAKq9C,OAAOl0E,EAASzf,EAAC,CAAC,SAASk2C,EAAEz2B,EAAEzf,EAAEs2C,GAAG,GAAG,iBAAkBt2C,GAAG,iBAAkBA,EAAE,OAAOA,EAAE8iM,GAAG,GAAG9iM,EAAEyf,EAAE7I,KAAK0/B,IAAKq9C,OAAOl0E,EAAEzf,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE6iL,UAAU,KAAK1B,EAAG,OAAO7qI,EAAE0sJ,GAAGhjM,EAAEzE,KAAKyE,EAAE7H,IAAI6H,EAAEtI,MAAM,KAAK+nB,EAAE7I,KAAK0/B,IAAKz7B,IAAIwnL,GAAG5iL,EAAE,KAAKzf,GAAGs2C,EAAEq9C,OAAOl0E,EAAE62B,EAAE,KAAK8qI,EAAG,OAAOphL,EAAEkjM,GAAGljM,EAAEyf,EAAE7I,KAAK0/B,IAAKq9C,OAAOl0E,EAAEzf,EAAE,GAAGoiM,GAAGpiM,IAAIqiL,EAAGriL,GAAG,OAAOA,EAAEmjM,GAAGnjM,EACnfyf,EAAE7I,KAAK0/B,EAAE,OAAQq9C,OAAOl0E,EAAEzf,EAAEwiM,GAAG/iL,EAAEzf,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS3G,EAAEomB,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE,OAAOkG,EAAEA,EAAE7H,IAAI,KAAK,GAAG,iBAAkBm+C,GAAG,iBAAkBA,EAAE,OAAO,OAAOx8C,EAAE,KAAK42C,EAAEjxB,EAAEzf,EAAE,GAAGs2C,EAAE/4B,GAAG,GAAG,iBAAkB+4B,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEusI,UAAU,KAAK1B,EAAG,OAAO7qI,EAAEn+C,MAAM2B,EAAEw8C,EAAE/6C,OAAOk2F,EAAG1zE,EAAE0B,EAAEzf,EAAEs2C,EAAE5+C,MAAMkjG,SAASr9E,EAAEzjB,GAAG0lB,EAAEC,EAAEzf,EAAEs2C,EAAE/4B,GAAG,KAAK,KAAK6jK,EAAG,OAAO9qI,EAAEn+C,MAAM2B,EAAE+B,EAAE4jB,EAAEzf,EAAEs2C,EAAE/4B,GAAG,KAAK,GAAG6kL,GAAG9rJ,IAAI+rI,EAAG/rI,GAAG,OAAO,OAAOx8C,EAAE,KAAKikB,EAAE0B,EAAEzf,EAAEs2C,EAAE/4B,EAAE,MAAMilL,GAAG/iL,EAAE62B,EAAE,CAAC,OAAO,IAAI,CAAC,SAASZ,EAAEj2B,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,GAAG,iBAAkByjB,GAAG,iBAAkBA,EAAE,OAClemzB,EAAE1wC,EADueyf,EAAEA,EAAExkB,IAAIq7C,IACtf,KAAW,GAAG/4B,EAAEzjB,GAAG,GAAG,iBAAkByjB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEslK,UAAU,KAAK1B,EAAG,OAAO1hK,EAAEA,EAAExkB,IAAI,OAAOsiB,EAAEplB,IAAIm+C,EAAE/4B,EAAEplB,MAAM,KAAKolB,EAAEhiB,OAAOk2F,EAAG1zE,EAAE/d,EAAEyf,EAAElC,EAAE7lB,MAAMkjG,SAAS9gG,EAAEyjB,EAAEplB,KAAKqnB,EAAExf,EAAEyf,EAAElC,EAAEzjB,GAAG,KAAKsnL,EAAG,OAA2CvlL,EAAEmE,EAAtCyf,EAAEA,EAAExkB,IAAI,OAAOsiB,EAAEplB,IAAIm+C,EAAE/4B,EAAEplB,MAAM,KAAWolB,EAAEzjB,GAAG,GAAGsoM,GAAG7kL,IAAI8kK,EAAG9kK,GAAG,OAAwBQ,EAAE/d,EAAnByf,EAAEA,EAAExkB,IAAIq7C,IAAI,KAAW/4B,EAAEzjB,EAAE,MAAM0oM,GAAGxiM,EAAEud,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS7b,EAAE5H,EAAE9C,EAAE05C,EAAElxB,GAAG,IAAI,IAAI3jB,EAAE,KAAKgiB,EAAE,KAAKm4B,EAAEh/C,EAAE2/C,EAAE3/C,EAAE,EAAEyc,EAAE,KAAK,OAAOuiC,GAAGW,EAAEjG,EAAE94C,OAAO++C,IAAI,CAACX,EAAElvC,MAAM6vC,GAAGljC,EAAEuiC,EAAEA,EAAE,MAAMviC,EAAEuiC,EAAE00I,QAAQ,IAAI3sK,EAAE1kB,EAAES,EAAEk8C,EAAEtF,EAAEiG,GAAGn3B,GAAG,GAAG,OAAOzB,EAAE,CAAC,OAAOi4B,IAAIA,EAAEviC,GAAG,KAAK,CAACgM,GAAGu2B,GAAG,OACjfj4B,EAAEusK,WAAWtqL,EAAElG,EAAEk8C,GAAGh/C,EAAE2d,EAAEoJ,EAAE/mB,EAAE2/C,GAAG,OAAO94B,EAAEhiB,EAAEkiB,EAAEF,EAAE6sK,QAAQ3sK,EAAEF,EAAEE,EAAEi4B,EAAEviC,CAAC,CAAC,GAAGkjC,IAAIjG,EAAE94C,OAAO,OAAO0+C,EAAEx8C,EAAEk8C,GAAGn6C,EAAE,GAAG,OAAOm6C,EAAE,CAAC,KAAKW,EAAEjG,EAAE94C,OAAO++C,IAAkB,QAAdX,EAAEE,EAAEp8C,EAAE42C,EAAEiG,GAAGn3B,MAAcxoB,EAAE2d,EAAEqhC,EAAEh/C,EAAE2/C,GAAG,OAAO94B,EAAEhiB,EAAEm6C,EAAEn4B,EAAE6sK,QAAQ10I,EAAEn4B,EAAEm4B,GAAG,OAAOn6C,CAAC,CAAC,IAAIm6C,EAAEz4B,EAAEzjB,EAAEk8C,GAAGW,EAAEjG,EAAE94C,OAAO++C,IAAsB,QAAlBljC,EAAEiiC,EAAEM,EAAEl8C,EAAE68C,EAAEjG,EAAEiG,GAAGn3B,MAAcC,GAAG,OAAOhM,EAAE62K,WAAWt0I,EAAEzf,OAAO,OAAO9iB,EAAEtb,IAAIw+C,EAAEljC,EAAEtb,KAAKnB,EAAE2d,EAAElB,EAAEzc,EAAE2/C,GAAG,OAAO94B,EAAEhiB,EAAE4X,EAAEoK,EAAE6sK,QAAQj3K,EAAEoK,EAAEpK,GAA4C,OAAzCgM,GAAGu2B,EAAEj2C,SAAQ,SAAS0f,GAAG,OAAOzf,EAAElG,EAAE2lB,EAAE,IAAU5jB,CAAC,CAAC,SAAS40C,EAAE32C,EAAE9C,EAAE05C,EAAElxB,GAAG,IAAI3jB,EAAEwmL,EAAG3xI,GAAG,GAAG,mBAAoB70C,EAAE,MAAM6B,MAAMghB,EAAE,MAAkB,GAAG,OAAfgyB,EAAE70C,EAAEhC,KAAK62C,IAC1e,MAAMhzC,MAAMghB,EAAE,MAAM,IAAI,IAAIb,EAAEhiB,EAAE,KAAKm6C,EAAEh/C,EAAE2/C,EAAE3/C,EAAE,EAAEyc,EAAE,KAAKsK,EAAE2yB,EAAE3pC,OAAO,OAAOivC,IAAIj4B,EAAES,KAAKm4B,IAAI54B,EAAE2yB,EAAE3pC,OAAO,CAACivC,EAAElvC,MAAM6vC,GAAGljC,EAAEuiC,EAAEA,EAAE,MAAMviC,EAAEuiC,EAAE00I,QAAQ,IAAIj6I,EAAEp3C,EAAES,EAAEk8C,EAAEj4B,EAAEllB,MAAM2mB,GAAG,GAAG,OAAOixB,EAAE,CAAC,OAAOuF,IAAIA,EAAEviC,GAAG,KAAK,CAACgM,GAAGu2B,GAAG,OAAOvF,EAAE65I,WAAWtqL,EAAElG,EAAEk8C,GAAGh/C,EAAE2d,EAAE87B,EAAEz5C,EAAE2/C,GAAG,OAAO94B,EAAEhiB,EAAE40C,EAAE5yB,EAAE6sK,QAAQj6I,EAAE5yB,EAAE4yB,EAAEuF,EAAEviC,CAAC,CAAC,GAAGsK,EAAES,KAAK,OAAO83B,EAAEx8C,EAAEk8C,GAAGn6C,EAAE,GAAG,OAAOm6C,EAAE,CAAC,MAAMj4B,EAAES,KAAKm4B,IAAI54B,EAAE2yB,EAAE3pC,OAAwB,QAAjBgX,EAAEm4B,EAAEp8C,EAAEikB,EAAEllB,MAAM2mB,MAAcxoB,EAAE2d,EAAEoJ,EAAE/mB,EAAE2/C,GAAG,OAAO94B,EAAEhiB,EAAEkiB,EAAEF,EAAE6sK,QAAQ3sK,EAAEF,EAAEE,GAAG,OAAOliB,CAAC,CAAC,IAAIm6C,EAAEz4B,EAAEzjB,EAAEk8C,IAAIj4B,EAAES,KAAKm4B,IAAI54B,EAAE2yB,EAAE3pC,OAA4B,QAArBgX,EAAE23B,EAAEM,EAAEl8C,EAAE68C,EAAE54B,EAAEllB,MAAM2mB,MAAcC,GAAG,OAAO1B,EAAEusK,WAChft0I,EAAEzf,OAAO,OAAOxY,EAAE5lB,IAAIw+C,EAAE54B,EAAE5lB,KAAKnB,EAAE2d,EAAEoJ,EAAE/mB,EAAE2/C,GAAG,OAAO94B,EAAEhiB,EAAEkiB,EAAEF,EAAE6sK,QAAQ3sK,EAAEF,EAAEE,GAA4C,OAAzC0B,GAAGu2B,EAAEj2C,SAAQ,SAAS0f,GAAG,OAAOzf,EAAElG,EAAE2lB,EAAE,IAAU5jB,CAAC,CAAC,OAAO,SAAS4jB,EAAElC,EAAE5I,EAAE+7B,GAAG,IAAIlxB,EAAE,iBAAkB7K,GAAG,OAAOA,GAAGA,EAAEpZ,OAAOk2F,GAAI,OAAO98E,EAAExc,IAAIqnB,IAAI7K,EAAEA,EAAEjd,MAAMkjG,UAAU,IAAI/+F,EAAE,iBAAkB8Y,GAAG,OAAOA,EAAE,GAAG9Y,EAAE,OAAO8Y,EAAEkuK,UAAU,KAAK1B,EAAG1hK,EAAE,CAAS,IAAR5jB,EAAE8Y,EAAExc,IAAQqnB,EAAEjC,EAAE,OAAOiC,GAAG,CAAC,GAAGA,EAAErnB,MAAM0D,EAAE,CAAC,GAAmB,IAAZ2jB,EAAEkX,KAAY,GAAG/hB,EAAEpZ,OAAOk2F,EAAG,CAACn7C,EAAE72B,EAAED,EAAEkrK,UAASntK,EAAEzjB,EAAE0lB,EAAE7K,EAAEjd,MAAMkjG,WAAYjH,OAAOl0E,EAAEA,EAAElC,EAAE,MAAMkC,CAAC,OAAe,GAAGD,EAAEujL,cAAcpuL,EAAEpZ,KAAK,CAAC+6C,EAAE72B,EAAED,EAAEkrK,UAC5entK,EAAEzjB,EAAE0lB,EAAE7K,EAAEjd,QAASmjB,IAAIwnL,GAAG5iL,EAAED,EAAE7K,GAAG4I,EAAEo2E,OAAOl0E,EAAEA,EAAElC,EAAE,MAAMkC,CAAC,CAAE62B,EAAE72B,EAAED,GAAG,KAAK,CAAMxf,EAAEyf,EAAED,GAAGA,EAAEA,EAAEkrK,OAAO,CAAC/1K,EAAEpZ,OAAOk2F,IAAIl0E,EAAE4lL,GAAGxuL,EAAEjd,MAAMkjG,SAASn7E,EAAE7I,KAAK85B,EAAE/7B,EAAExc,MAAOw7F,OAAOl0E,EAAEA,EAAElC,KAAImzB,EAAEsyJ,GAAGruL,EAAEpZ,KAAKoZ,EAAExc,IAAIwc,EAAEjd,MAAM,KAAK+nB,EAAE7I,KAAK85B,IAAK71B,IAAIwnL,GAAG5iL,EAAElC,EAAE5I,GAAG+7B,EAAEijD,OAAOl0E,EAAEA,EAAEixB,EAAE,CAAC,OAAO15C,EAAEyoB,GAAG,KAAK2hK,EAAG3hK,EAAE,CAAC,IAAID,EAAE7K,EAAExc,IAAI,OAAOolB,GAAG,CAAC,GAAGA,EAAEplB,MAAMqnB,EAAE,IAAG,IAAIjC,EAAEmZ,KAAKnZ,EAAEyrK,UAAUsD,gBAAgB33K,EAAE23K,eAAe/uK,EAAEyrK,UAAUia,iBAAiBtuL,EAAEsuL,eAAe,CAAC3sJ,EAAE72B,EAAElC,EAAEmtK,UAASntK,EAAEzjB,EAAEyjB,EAAE5I,EAAEimF,UAAU,KAAMjH,OAAOl0E,EAAEA,EAAElC,EAAE,MAAMkC,CAAC,CAAM62B,EAAE72B,EAAElC,GAAG,KAAK,CAAMvd,EAAEyf,EAAElC,GAAGA,EAAEA,EAAEmtK,OAAO,EAACntK,EACpf2lL,GAAGvuL,EAAE8K,EAAE7I,KAAK85B,IAAKijD,OAAOl0E,EAAEA,EAAElC,CAAC,CAAC,OAAOvmB,EAAEyoB,GAAG,GAAG,iBAAkB9K,GAAG,iBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAO4I,GAAG,IAAIA,EAAEmZ,KAAK4f,EAAE72B,EAAElC,EAAEmtK,UAASntK,EAAEzjB,EAAEyjB,EAAE5I,IAAKg/E,OAAOl0E,EAAEA,EAAElC,IAAI+4B,EAAE72B,EAAElC,IAAGA,EAAEulL,GAAGnuL,EAAE8K,EAAE7I,KAAK85B,IAAKijD,OAAOl0E,EAAEA,EAAElC,GAAGvmB,EAAEyoB,GAAG,GAAG2iL,GAAGztL,GAAG,OAAOjT,EAAE+d,EAAElC,EAAE5I,EAAE+7B,GAAG,GAAG2xI,EAAG1tK,GAAG,OAAO87B,EAAEhxB,EAAElC,EAAE5I,EAAE+7B,GAAc,GAAX70C,GAAG2mM,GAAG/iL,EAAE9K,QAAM,IAAqBA,IAAI6K,EAAE,OAAOC,EAAEiX,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,MAAMh5B,MAAMghB,EAAE,IAAIkkK,EAAGnjK,EAAElkB,OAAO,cAAe,OAAO+6C,EAAE72B,EAAElC,EAAE,CAAC,CAAC,IAAI6lL,GAAGX,IAAG,GAAIY,GAAGZ,IAAG,GAAIa,GAAG,CAAC,EAAEC,GAAGzH,GAAGwH,IAAIE,GAAG1H,GAAGwH,IAAI/9I,GAAGu2I,GAAGwH,IACtd,SAASG,GAAGhkL,GAAG,GAAGA,IAAI6jL,GAAG,MAAM5lM,MAAMghB,EAAE,MAAM,OAAOe,CAAC,CAAC,SAASikL,GAAGjkL,EAAEzf,GAAyC,OAAtCo2C,GAAEmP,GAAGvlD,GAAGo2C,GAAEotJ,GAAG/jL,GAAG22B,GAAEmtJ,GAAGD,IAAI7jL,EAAEzf,EAAEo5I,UAAmB,KAAK,EAAE,KAAK,GAAGp5I,GAAGA,EAAEA,EAAEk+F,iBAAiBl+F,EAAEklL,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkE/kL,EAAE+kL,GAArC/kL,GAAvByf,EAAE,IAAIA,EAAEzf,EAAEk8F,WAAWl8F,GAAMklL,cAAc,KAAKzlK,EAAEA,EAAEkkL,SAAkBtzJ,GAAEkzJ,IAAIntJ,GAAEmtJ,GAAGvjM,EAAE,CAAC,SAASuxC,KAAKlB,GAAEkzJ,IAAIlzJ,GAAEmzJ,IAAInzJ,GAAEkV,GAAG,CAAC,SAASq+I,GAAGnkL,GAAGgkL,GAAGl+I,GAAGrxC,SAAS,IAAIlU,EAAEyjM,GAAGF,GAAGrvL,SAAaoiC,EAAEyuI,GAAG/kL,EAAEyf,EAAElkB,MAAMyE,IAAIs2C,IAAIF,GAAEotJ,GAAG/jL,GAAG22B,GAAEmtJ,GAAGjtJ,GAAG,CAAC,SAASutJ,GAAGpkL,GAAG+jL,GAAGtvL,UAAUuL,IAAI4wB,GAAEkzJ,IAAIlzJ,GAAEmzJ,IAAI,CAAC,IAAIrlL,GAAE29K,GAAG,GAC9c,SAASgI,GAAGrkL,GAAG,IAAI,IAAIzf,EAAEyf,EAAE,OAAOzf,GAAG,CAAC,GAAG,KAAKA,EAAE02B,IAAI,CAAC,IAAI4f,EAAEt2C,EAAEwqL,cAAc,GAAG,OAAOl0I,IAAmB,QAAfA,EAAEA,EAAEm0I,aAAqB,OAAOn0I,EAAEvyC,MAAM,OAAOuyC,EAAEvyC,MAAM,OAAO/D,CAAC,MAAM,GAAG,KAAKA,EAAE02B,UAAK,IAAS12B,EAAE+jM,cAAcC,aAAa,GAAgB,GAARhkM,EAAE8qC,MAAU,OAAO9qC,OAAO,GAAG,OAAOA,EAAEw/E,MAAM,CAACx/E,EAAEw/E,MAAMmU,OAAO3zF,EAAEA,EAAEA,EAAEw/E,MAAM,QAAQ,CAAC,GAAGx/E,IAAIyf,EAAE,MAAM,KAAK,OAAOzf,EAAE0qL,SAAS,CAAC,GAAG,OAAO1qL,EAAE2zF,QAAQ3zF,EAAE2zF,SAASl0E,EAAE,OAAO,KAAKzf,EAAEA,EAAE2zF,MAAM,CAAC3zF,EAAE0qL,QAAQ/2F,OAAO3zF,EAAE2zF,OAAO3zF,EAAEA,EAAE0qL,OAAO,CAAC,OAAO,IAAI,CAAC,IAAIuZ,GAAG,KAAKC,GAAG,KAAKC,IAAG,EACpd,SAASC,GAAG3kL,EAAEzf,GAAG,IAAIs2C,EAAE+E,GAAG,EAAE,KAAK,KAAK,GAAG/E,EAAEysJ,YAAY,UAAUzsJ,EAAE/6C,KAAK,UAAU+6C,EAAE0yI,UAAUhpL,EAAEs2C,EAAEq9C,OAAOl0E,EAAE62B,EAAExL,MAAM,EAAE,OAAOrrB,EAAEijL,YAAYjjL,EAAEijL,WAAWC,WAAWrsJ,EAAE72B,EAAEijL,WAAWpsJ,GAAG72B,EAAEmjL,YAAYnjL,EAAEijL,WAAWpsJ,CAAC,CAAC,SAAS+tJ,GAAG5kL,EAAEzf,GAAG,OAAOyf,EAAEiX,KAAK,KAAK,EAAE,IAAI4f,EAAE72B,EAAElkB,KAAyE,OAAO,QAA3EyE,EAAE,IAAIA,EAAEo5I,UAAU9iG,EAAEy/C,gBAAgB/1F,EAAEkjL,SAASntF,cAAc,KAAK/1F,KAAmByf,EAAEupK,UAAUhpL,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKyf,EAAE6kL,cAAc,IAAItkM,EAAEo5I,SAAS,KAAKp5I,KAAYyf,EAAEupK,UAAUhpL,GAAE,GAAwB,QAAQ,OAAM,EAAG,CAC1e,SAASukM,GAAG9kL,GAAG,GAAG0kL,GAAG,CAAC,IAAInkM,EAAEkkM,GAAG,GAAGlkM,EAAE,CAAC,IAAIs2C,EAAEt2C,EAAE,IAAIqkM,GAAG5kL,EAAEzf,GAAG,CAAqB,KAApBA,EAAEo7L,GAAG9kJ,EAAE8hJ,gBAAqBiM,GAAG5kL,EAAEzf,GAAuC,OAAnCyf,EAAEqrB,OAAe,KAATrrB,EAAEqrB,MAAY,EAAEq5J,IAAG,OAAGF,GAAGxkL,GAAS2kL,GAAGH,GAAG3tJ,EAAE,CAAC2tJ,GAAGxkL,EAAEykL,GAAG9I,GAAGp7L,EAAEmlL,WAAW,MAAM1lK,EAAEqrB,OAAe,KAATrrB,EAAEqrB,MAAY,EAAEq5J,IAAG,EAAGF,GAAGxkL,CAAC,CAAC,CAAC,SAAS+kL,GAAG/kL,GAAG,IAAIA,EAAEA,EAAEk0E,OAAO,OAAOl0E,GAAG,IAAIA,EAAEiX,KAAK,IAAIjX,EAAEiX,KAAK,KAAKjX,EAAEiX,KAAKjX,EAAEA,EAAEk0E,OAAOswG,GAAGxkL,CAAC,CAC7S,SAASglL,GAAGhlL,GAAG,GAAGA,IAAIwkL,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOK,GAAG/kL,GAAG0kL,IAAG,GAAG,EAAG,IAAInkM,EAAEyf,EAAElkB,KAAK,GAAG,IAAIkkB,EAAEiX,KAAK,SAAS12B,GAAG,SAASA,IAAIi7L,GAAGj7L,EAAEyf,EAAEskL,eAAe,IAAI/jM,EAAEkkM,GAAGlkM,GAAGokM,GAAG3kL,EAAEzf,GAAGA,EAAEo7L,GAAGp7L,EAAEo4L,aAAmB,GAANoM,GAAG/kL,GAAM,KAAKA,EAAEiX,IAAI,CAAgD,KAA7BjX,EAAE,QAApBA,EAAEA,EAAE+qK,eAAyB/qK,EAAEgrK,WAAW,MAAW,MAAM/sL,MAAMghB,EAAE,MAAMe,EAAE,CAAiB,IAAhBA,EAAEA,EAAE24K,YAAgBp4L,EAAE,EAAEyf,GAAG,CAAC,GAAG,IAAIA,EAAE25H,SAAS,CAAC,IAAI9iG,EAAE72B,EAAE1b,KAAK,GAAG,OAAOuyC,EAAE,CAAC,GAAG,IAAIt2C,EAAE,CAACkkM,GAAG9I,GAAG37K,EAAE24K,aAAa,MAAM34K,CAAC,CAACzf,GAAG,KAAK,MAAMs2C,GAAG,OAAOA,GAAG,OAAOA,GAAGt2C,GAAG,CAACyf,EAAEA,EAAE24K,WAAW,CAAC8L,GAAG,IAAI,CAAC,MAAMA,GAAGD,GAAG7I,GAAG37K,EAAEupK,UAAUoP,aAAa,KAAK,OAAM,CAAE,CACxf,SAAS5gJ,KAAK0sJ,GAAGD,GAAG,KAAKE,IAAG,CAAE,CAAC,IAAItrJ,GAAG,GAAG,SAAS6rJ,KAAK,IAAI,IAAIjlL,EAAE,EAAEA,EAAEo5B,GAAGjhD,OAAO6nB,IAAIo5B,GAAGp5B,GAAGklL,8BAA8B,KAAK9rJ,GAAGjhD,OAAO,CAAC,CAAC,IAAIgtM,GAAG3jB,EAAG4jB,uBAAuBC,GAAG7jB,EAAG0d,wBAAwBoG,GAAG,EAAEpvJ,GAAE,KAAKa,GAAE,KAAKE,GAAE,KAAKsuJ,IAAG,EAAGC,IAAG,EAAG,SAASC,KAAK,MAAMxnM,MAAMghB,EAAE,KAAM,CAAC,SAASymL,GAAG1lL,EAAEzf,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIs2C,EAAE,EAAEA,EAAEt2C,EAAEpI,QAAQ0+C,EAAE72B,EAAE7nB,OAAO0+C,IAAI,IAAIyhJ,GAAGt4K,EAAE62B,GAAGt2C,EAAEs2C,IAAI,OAAM,EAAG,OAAM,CAAE,CAChY,SAAS8uJ,GAAG3lL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAyH,GAAtHowL,GAAGpwL,EAAEghC,GAAE31C,EAAEA,EAAEwqL,cAAc,KAAKxqL,EAAE+/L,YAAY,KAAK//L,EAAEw/L,MAAM,EAAEoF,GAAG1wL,QAAQ,OAAOuL,GAAG,OAAOA,EAAE+qK,cAAc6a,GAAGC,GAAG7lL,EAAE62B,EAAE/4B,EAAEzjB,GAAMmrM,GAAG,CAACtwL,EAAE,EAAE,EAAE,CAAO,GAANswL,IAAG,IAAQ,GAAGtwL,GAAG,MAAMjX,MAAMghB,EAAE,MAAM/J,GAAG,EAAE+hC,GAAEF,GAAE,KAAKx2C,EAAE+/L,YAAY,KAAK6E,GAAG1wL,QAAQqxL,GAAG9lL,EAAE62B,EAAE/4B,EAAEzjB,EAAE,OAAOmrM,GAAG,CAA+D,GAA9DL,GAAG1wL,QAAQsxL,GAAGxlM,EAAE,OAAOw2C,IAAG,OAAOA,GAAEzvC,KAAKg+L,GAAG,EAAEruJ,GAAEF,GAAEb,GAAE,KAAKqvJ,IAAG,EAAMhlM,EAAE,MAAMtC,MAAMghB,EAAE,MAAM,OAAOe,CAAC,CAAC,SAASgmL,KAAK,IAAIhmL,EAAE,CAAC+qK,cAAc,KAAKwV,UAAU,KAAK0F,UAAU,KAAK10E,MAAM,KAAKjqH,KAAK,MAA8C,OAAxC,OAAO2vC,GAAEf,GAAE60I,cAAc9zI,GAAEj3B,EAAEi3B,GAAEA,GAAE3vC,KAAK0Y,EAASi3B,EAAC,CAChf,SAASivJ,KAAK,GAAG,OAAOnvJ,GAAE,CAAC,IAAI/2B,EAAEk2B,GAAE20I,UAAU7qK,EAAE,OAAOA,EAAEA,EAAE+qK,cAAc,IAAI,MAAM/qK,EAAE+2B,GAAEzvC,KAAK,IAAI/G,EAAE,OAAO02C,GAAEf,GAAE60I,cAAc9zI,GAAE3vC,KAAK,GAAG,OAAO/G,EAAE02C,GAAE12C,EAAEw2C,GAAE/2B,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAM/hB,MAAMghB,EAAE,MAAUe,EAAE,CAAC+qK,eAAPh0I,GAAE/2B,GAAqB+qK,cAAcwV,UAAUxpJ,GAAEwpJ,UAAU0F,UAAUlvJ,GAAEkvJ,UAAU10E,MAAMx6E,GAAEw6E,MAAMjqH,KAAK,MAAM,OAAO2vC,GAAEf,GAAE60I,cAAc9zI,GAAEj3B,EAAEi3B,GAAEA,GAAE3vC,KAAK0Y,CAAC,CAAC,OAAOi3B,EAAC,CAAC,SAASkvJ,GAAGnmL,EAAEzf,GAAG,MAAM,mBAAoBA,EAAEA,EAAEyf,GAAGzf,CAAC,CACxY,SAAS6lM,GAAGpmL,GAAG,IAAIzf,EAAE2lM,KAAKrvJ,EAAEt2C,EAAEgxH,MAAM,GAAG,OAAO16E,EAAE,MAAM54C,MAAMghB,EAAE,MAAM43B,EAAEwvJ,oBAAoBrmL,EAAE,IAAIlC,EAAEi5B,GAAE18C,EAAEyjB,EAAEmoL,UAAU/wL,EAAE2hC,EAAEw4H,QAAQ,GAAG,OAAOn6J,EAAE,CAAC,GAAG,OAAO7a,EAAE,CAAC,IAAI9C,EAAE8C,EAAEiN,KAAKjN,EAAEiN,KAAK4N,EAAE5N,KAAK4N,EAAE5N,KAAK/P,CAAC,CAACumB,EAAEmoL,UAAU5rM,EAAE6a,EAAE2hC,EAAEw4H,QAAQ,IAAI,CAAC,GAAG,OAAOh1K,EAAE,CAACA,EAAEA,EAAEiN,KAAKwW,EAAEA,EAAEyiL,UAAU,IAAItvJ,EAAE15C,EAAE2d,EAAE,KAAK6K,EAAE1lB,EAAE,EAAE,CAAC,IAAI+B,EAAE2jB,EAAE+gL,KAAK,IAAIwE,GAAGlpM,KAAKA,EAAE,OAAO60C,IAAIA,EAAEA,EAAE3pC,KAAK,CAACw5L,KAAK,EAAEprL,OAAOqK,EAAErK,OAAO4wL,aAAavmL,EAAEumL,aAAaC,WAAWxmL,EAAEwmL,WAAWj/L,KAAK,OAAOwW,EAAEiC,EAAEumL,eAAetmL,EAAED,EAAEwmL,WAAWvmL,EAAElC,EAAEiC,EAAErK,YAAY,CAAC,IAAI4I,EAAE,CAACwiL,KAAK1kM,EAAEsZ,OAAOqK,EAAErK,OAAO4wL,aAAavmL,EAAEumL,aAC9fC,WAAWxmL,EAAEwmL,WAAWj/L,KAAK,MAAM,OAAO2pC,GAAG15C,EAAE05C,EAAE3yB,EAAEpJ,EAAE4I,GAAGmzB,EAAEA,EAAE3pC,KAAKgX,EAAE43B,GAAE6pJ,OAAO3jM,EAAE8kM,IAAI9kM,CAAC,CAAC2jB,EAAEA,EAAEzY,IAAI,OAAO,OAAOyY,GAAGA,IAAI1lB,GAAG,OAAO42C,EAAE/7B,EAAE4I,EAAEmzB,EAAE3pC,KAAK/P,EAAE+gM,GAAGx6K,EAAEvd,EAAEwqL,iBAAiBiV,IAAG,GAAIz/L,EAAEwqL,cAAcjtK,EAAEvd,EAAEggM,UAAUrrL,EAAE3U,EAAE0lM,UAAUh1J,EAAE4F,EAAE2vJ,kBAAkB1oL,CAAC,CAAC,MAAM,CAACvd,EAAEwqL,cAAcl0I,EAAE53C,SAAS,CAC/Q,SAASwnM,GAAGzmL,GAAG,IAAIzf,EAAE2lM,KAAKrvJ,EAAEt2C,EAAEgxH,MAAM,GAAG,OAAO16E,EAAE,MAAM54C,MAAMghB,EAAE,MAAM43B,EAAEwvJ,oBAAoBrmL,EAAE,IAAIlC,EAAE+4B,EAAE53C,SAAS5E,EAAEw8C,EAAEw4H,QAAQn6J,EAAE3U,EAAEwqL,cAAc,GAAG,OAAO1wL,EAAE,CAACw8C,EAAEw4H,QAAQ,KAAK,IAAI93K,EAAE8C,EAAEA,EAAEiN,KAAK,GAAG4N,EAAE8K,EAAE9K,EAAE3d,EAAEme,QAAQne,EAAEA,EAAE+P,WAAW/P,IAAI8C,GAAGi+L,GAAGpjL,EAAE3U,EAAEwqL,iBAAiBiV,IAAG,GAAIz/L,EAAEwqL,cAAc71K,EAAE,OAAO3U,EAAE0lM,YAAY1lM,EAAEggM,UAAUrrL,GAAG2hC,EAAE2vJ,kBAAkBtxL,CAAC,CAAC,MAAM,CAACA,EAAE4I,EAAE,CACrV,SAAS4oL,GAAG1mL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEvd,EAAEomM,YAAY7oL,EAAEA,EAAEvd,EAAEqmM,SAAS,IAAIvsM,EAAEkG,EAAE2kM,8BAAyI,GAAxG,OAAO7qM,EAAE2lB,EAAE3lB,IAAIyjB,GAAUkC,EAAEA,EAAE6mL,kBAAiB7mL,GAAGslL,GAAGtlL,KAAKA,KAAEzf,EAAE2kM,8BAA8BpnL,EAAEs7B,GAAGl9C,KAAKqE,KAAMyf,EAAE,OAAO62B,EAAEt2C,EAAEqmM,SAAoB,MAAXxtJ,GAAGl9C,KAAKqE,GAAStC,MAAMghB,EAAE,KAAM,CAC/P,SAAS6nL,GAAG9mL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE6rH,GAAE,GAAG,OAAO7rH,EAAE,MAAM4D,MAAMghB,EAAE,MAAM,IAAI/J,EAAE3U,EAAEomM,YAAYpvM,EAAE2d,EAAE3U,EAAEqmM,SAAS31J,EAAEk0J,GAAG1wL,QAAQsL,EAAEkxB,EAAEsmE,UAAS,WAAW,OAAOmvF,GAAGrsM,EAAEkG,EAAEs2C,EAAE,IAAGz6C,EAAE2jB,EAAE,GAAGzB,EAAEyB,EAAE,GAAGA,EAAEk3B,GAAE,IAAIR,EAAEz2B,EAAE+qK,cAAcnxL,EAAE68C,EAAEgjD,KAAKxjD,EAAEr8C,EAAEmtM,YAAY9kM,EAAEw0C,EAAEwT,OAAOxT,EAAEA,EAAEuwJ,UAAU,IAAIh2J,EAAEkF,GACuO,OADrOl2B,EAAE+qK,cAAc,CAACtxF,KAAK7/F,EAAEqwD,OAAO1pD,EAAEymM,UAAUlpL,GAAGmzB,EAAEg2J,WAAU,WAAWrtM,EAAEmtM,YAAYlwJ,EAAEj9C,EAAEstM,YAAY9qM,EAAE,IAAI4jB,EAAE9K,EAAE3U,EAAEqmM,SAAS,IAAItO,GAAG/gM,EAAEyoB,GAAG,CAACA,EAAE62B,EAAEt2C,EAAEqmM,SAAStO,GAAGh6K,EAAE0B,KAAK5jB,EAAE4jB,GAAGA,EAAE2hL,GAAG3wJ,GAAG32C,EAAEwsM,kBAAkB7mL,EAAE3lB,EAAEs0L,cAAc3uK,EAAE3lB,EAAEwsM,iBAAiBxsM,EAAE20L,gBAAgBhvK,EAAE,IAAI,IAAIlC,EAC5fzjB,EAAE40L,cAAch+I,EAAEjxB,EAAE,EAAEixB,GAAG,CAAC,IAAIlxB,EAAE,GAAGgvK,GAAG99I,GAAGxxB,EAAE,GAAGM,EAAEjC,EAAEiC,IAAIC,EAAEixB,IAAIxxB,CAAC,CAAC,CAAC,GAAE,CAACo3B,EAAEt2C,EAAEud,IAAImzB,EAAEg2J,WAAU,WAAW,OAAOnpL,EAAEvd,EAAEqmM,SAAQ,WAAW,IAAI5mL,EAAEpmB,EAAEmtM,YAAYlwJ,EAAEj9C,EAAEstM,YAAY,IAAIrwJ,EAAE72B,EAAEzf,EAAEqmM,UAAU,IAAI9oL,EAAE6jL,GAAG3wJ,GAAG32C,EAAEwsM,kBAAkB/oL,EAAEzjB,EAAEs0L,YAAY,CAAC,MAAM36K,GAAG6iC,GAAE,WAAW,MAAM7iC,CAAE,GAAE,CAAC,GAAE,GAAE,CAACzT,EAAEud,IAAIw6K,GAAGriJ,EAAEY,IAAIyhJ,GAAGr2L,EAAE1B,IAAI+3L,GAAG7hJ,EAAE34B,MAAKkC,EAAE,CAACqvJ,QAAQ,KAAKpwK,SAAS,KAAKonM,oBAAoBF,GAAGK,kBAAkBloL,IAAKrf,SAAS7C,EAAE+qM,GAAGztM,KAAK,KAAKw8C,GAAEl2B,GAAGD,EAAEwxG,MAAMvxG,EAAED,EAAEkmL,UAAU,KAAK3nL,EAAEooL,GAAGrsM,EAAEkG,EAAEs2C,GAAG92B,EAAEgrK,cAAchrK,EAAEwgL,UAAUjiL,GAAUA,CAAC,CACve,SAAS8oL,GAAGpnL,EAAEzf,EAAEs2C,GAAc,OAAOiwJ,GAAZZ,KAAiBlmL,EAAEzf,EAAEs2C,EAAE,CAAC,SAASwwJ,GAAGrnL,GAAG,IAAIzf,EAAEylM,KAAmL,MAA9K,mBAAoBhmL,IAAIA,EAAEA,KAAKzf,EAAEwqL,cAAcxqL,EAAEggM,UAAUvgL,EAAoFA,GAAlFA,EAAEzf,EAAEgxH,MAAM,CAAC89C,QAAQ,KAAKpwK,SAAS,KAAKonM,oBAAoBF,GAAGK,kBAAkBxmL,IAAO/gB,SAASkoM,GAAGztM,KAAK,KAAKw8C,GAAEl2B,GAAS,CAACzf,EAAEwqL,cAAc/qK,EAAE,CAClR,SAASsnL,GAAGtnL,EAAEzf,EAAEs2C,EAAE/4B,GAAkO,OAA/NkC,EAAE,CAACiX,IAAIjX,EAAE9mB,OAAOqH,EAAEgnM,QAAQ1wJ,EAAE2wJ,KAAK1pL,EAAExW,KAAK,MAAsB,QAAhB/G,EAAE21C,GAAEoqJ,cAAsB//L,EAAE,CAAC0iM,WAAW,MAAM/sJ,GAAEoqJ,YAAY//L,EAAEA,EAAE0iM,WAAWjjL,EAAE1Y,KAAK0Y,GAAmB,QAAf62B,EAAEt2C,EAAE0iM,YAAoB1iM,EAAE0iM,WAAWjjL,EAAE1Y,KAAK0Y,GAAGlC,EAAE+4B,EAAEvvC,KAAKuvC,EAAEvvC,KAAK0Y,EAAEA,EAAE1Y,KAAKwW,EAAEvd,EAAE0iM,WAAWjjL,GAAWA,CAAC,CAAC,SAASynL,GAAGznL,GAA4B,OAAdA,EAAE,CAACvL,QAAQuL,GAAhBgmL,KAA4Bjb,cAAc/qK,CAAC,CAAC,SAAS0nL,KAAK,OAAOxB,KAAKnb,aAAa,CAAC,SAAS4c,GAAG3nL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE2rM,KAAK9vJ,GAAE7K,OAAOrrB,EAAE3lB,EAAE0wL,cAAcuc,GAAG,EAAE/mM,EAAEs2C,OAAE,OAAO,IAAS/4B,EAAE,KAAKA,EAAE,CACnc,SAAS8pL,GAAG5nL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE6rM,KAAKpoL,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAI5I,OAAE,EAAO,GAAG,OAAO6hC,GAAE,CAAC,IAAIx/C,EAAEw/C,GAAEg0I,cAA0B,GAAZ71K,EAAE3d,EAAEgwM,QAAW,OAAOzpL,GAAG4nL,GAAG5nL,EAAEvmB,EAAEiwM,MAAmB,YAAZF,GAAG/mM,EAAEs2C,EAAE3hC,EAAE4I,EAAU,CAACo4B,GAAE7K,OAAOrrB,EAAE3lB,EAAE0wL,cAAcuc,GAAG,EAAE/mM,EAAEs2C,EAAE3hC,EAAE4I,EAAE,CAAC,SAAS+pL,GAAG7nL,EAAEzf,GAAG,OAAOonM,GAAG,IAAI,EAAE3nL,EAAEzf,EAAE,CAAC,SAASunM,GAAG9nL,EAAEzf,GAAG,OAAOqnM,GAAG,IAAI,EAAE5nL,EAAEzf,EAAE,CAAC,SAASwnM,GAAG/nL,EAAEzf,GAAG,OAAOqnM,GAAG,EAAE,EAAE5nL,EAAEzf,EAAE,CAAC,SAASynM,GAAGhoL,EAAEzf,GAAG,MAAG,mBAAoBA,GAASyf,EAAEA,IAAIzf,EAAEyf,GAAG,WAAWzf,EAAE,KAAK,GAAK,MAAOA,GAAqByf,EAAEA,IAAIzf,EAAEkU,QAAQuL,EAAE,WAAWzf,EAAEkU,QAAQ,IAAI,QAA1E,CAA2E,CACnd,SAASwzL,GAAGjoL,EAAEzf,EAAEs2C,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE3rC,OAAO,CAAC8U,IAAI,KAAY4nL,GAAG,EAAE,EAAEI,GAAGtuM,KAAK,KAAK6G,EAAEyf,GAAG62B,EAAE,CAAC,SAASqxJ,KAAK,CAAC,SAASC,GAAGnoL,EAAEzf,GAAG,IAAIs2C,EAAEqvJ,KAAK3lM,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIud,EAAE+4B,EAAEk0I,cAAc,OAAG,OAAOjtK,GAAG,OAAOvd,GAAGmlM,GAAGnlM,EAAEud,EAAE,IAAWA,EAAE,IAAG+4B,EAAEk0I,cAAc,CAAC/qK,EAAEzf,GAAUyf,EAAC,CAAC,SAAS63B,GAAG73B,EAAEzf,GAAG,IAAIs2C,EAAEqvJ,KAAK3lM,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIud,EAAE+4B,EAAEk0I,cAAc,OAAG,OAAOjtK,GAAG,OAAOvd,GAAGmlM,GAAGnlM,EAAEud,EAAE,IAAWA,EAAE,IAAGkC,EAAEA,IAAI62B,EAAEk0I,cAAc,CAAC/qK,EAAEzf,GAAUyf,EAAC,CAC1Z,SAAS6zB,GAAG7zB,EAAEzf,GAAG,IAAIs2C,EAAE+nJ,KAAKC,GAAG,GAAGhoJ,EAAE,GAAGA,GAAE,WAAW72B,GAAE,EAAG,IAAG6+K,GAAG,GAAGhoJ,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEwuJ,GAAGvX,WAAWuX,GAAGvX,WAAW,EAAE,IAAI9tK,GAAE,GAAIzf,GAAG,CAAC,QAAQ8kM,GAAGvX,WAAWj3I,CAAC,CAAC,GAAE,CAChK,SAASswJ,GAAGnnL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAE4jL,KAAKrnM,EAAEsnM,GAAG3hL,GAAG9K,EAAE,CAAC4rL,KAAKzmM,EAAEqb,OAAOmhC,EAAEyvJ,aAAa,KAAKC,WAAW,KAAKj/L,KAAK,MAAM/P,EAAEgJ,EAAE8uK,QAA6E,GAArE,OAAO93K,EAAE2d,EAAE5N,KAAK4N,GAAGA,EAAE5N,KAAK/P,EAAE+P,KAAK/P,EAAE+P,KAAK4N,GAAG3U,EAAE8uK,QAAQn6J,EAAE3d,EAAEyoB,EAAE6qK,UAAa7qK,IAAIk2B,IAAG,OAAO3+C,GAAGA,IAAI2+C,GAAEsvJ,GAAGD,IAAG,MAAO,CAAC,GAAG,IAAIvlL,EAAE+/K,QAAQ,OAAOxoM,GAAG,IAAIA,EAAEwoM,QAAiC,QAAxBxoM,EAAEgJ,EAAE8lM,qBAA8B,IAAI,IAAIp1J,EAAE1wC,EAAEimM,kBAAkBzmL,EAAExoB,EAAE05C,EAAE4F,GAAmC,GAAhC3hC,EAAEoxL,aAAa/uM,EAAE2d,EAAEqxL,WAAWxmL,EAAKu4K,GAAGv4K,EAAEkxB,GAAG,MAAM,CAAC,MAAM70C,GAAG,CAAUwlM,GAAG5hL,EAAE3lB,EAAEyjB,EAAE,CAAC,CACja,IAAIioL,GAAG,CAACqC,YAAYnI,GAAGoI,YAAY5C,GAAG6C,WAAW7C,GAAGwB,UAAUxB,GAAG8C,oBAAoB9C,GAAG+C,gBAAgB/C,GAAGgD,QAAQhD,GAAGiD,WAAWjD,GAAGkD,OAAOlD,GAAGluF,SAASkuF,GAAGmD,cAAcnD,GAAGoD,iBAAiBpD,GAAGqD,cAAcrD,GAAGsD,iBAAiBtD,GAAGuD,oBAAoBvD,GAAGwD,0BAAyB,GAAIrD,GAAG,CAACwC,YAAYnI,GAAGoI,YAAY,SAASroL,EAAEzf,GAA4C,OAAzCylM,KAAKjb,cAAc,CAAC/qK,OAAE,IAASzf,EAAE,KAAKA,GAAUyf,CAAC,EAAEsoL,WAAWrI,GAAGgH,UAAUY,GAAGU,oBAAoB,SAASvoL,EAAEzf,EAAEs2C,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAE3rC,OAAO,CAAC8U,IAAI,KAAY2nL,GAAG,EAAE,EAAEK,GAAGtuM,KAAK,KACvf6G,EAAEyf,GAAG62B,EAAE,EAAE2xJ,gBAAgB,SAASxoL,EAAEzf,GAAG,OAAOonM,GAAG,EAAE,EAAE3nL,EAAEzf,EAAE,EAAEkoM,QAAQ,SAASzoL,EAAEzf,GAAG,IAAIs2C,EAAEmvJ,KAAqD,OAAhDzlM,OAAE,IAASA,EAAE,KAAKA,EAAEyf,EAAEA,IAAI62B,EAAEk0I,cAAc,CAAC/qK,EAAEzf,GAAUyf,CAAC,EAAE0oL,WAAW,SAAS1oL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkoL,KAAuK,OAAlKzlM,OAAE,IAASs2C,EAAEA,EAAEt2C,GAAGA,EAAEud,EAAEitK,cAAcjtK,EAAEyiL,UAAUhgM,EAAmFyf,GAAjFA,EAAElC,EAAEyzG,MAAM,CAAC89C,QAAQ,KAAKpwK,SAAS,KAAKonM,oBAAoBrmL,EAAEwmL,kBAAkBjmM,IAAOtB,SAASkoM,GAAGztM,KAAK,KAAKw8C,GAAEl2B,GAAS,CAAClC,EAAEitK,cAAc/qK,EAAE,EAAE2oL,OAAOlB,GAAGlwF,SAAS8vF,GAAGuB,cAAcV,GAAGW,iBAAiB,SAAS7oL,GAAG,IAAIzf,EAAE8mM,GAAGrnL,GAAG62B,EAAEt2C,EAAE,GAAGud,EAAEvd,EAAE,GAC5Z,OAD+ZsnM,IAAG,WAAW,IAAItnM,EAAE8kM,GAAGvX,WAC9euX,GAAGvX,WAAW,EAAE,IAAIhwK,EAAEkC,EAAE,CAAC,QAAQqlL,GAAGvX,WAAWvtL,CAAC,CAAC,GAAE,CAACyf,IAAW62B,CAAC,EAAEiyJ,cAAc,WAAW,IAAI9oL,EAAEqnL,IAAG,GAAI9mM,EAAEyf,EAAE,GAA8B,OAANynL,GAArBznL,EAAE6zB,GAAGn6C,KAAK,KAAKsmB,EAAE,KAAgB,CAACA,EAAEzf,EAAE,EAAEwoM,iBAAiB,SAAS/oL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkoL,KAAkF,OAA7EloL,EAAEitK,cAAc,CAACtxF,KAAK,CAACstG,YAAYxmM,EAAE2mM,YAAY,MAAMj9I,OAAOjqC,EAAEgnL,UAAUnwJ,GAAUiwJ,GAAGhpL,EAAEkC,EAAEzf,EAAEs2C,EAAE,EAAEmyJ,oBAAoB,WAAW,GAAGtE,GAAG,CAAC,IAAI1kL,GAAE,EAAGzf,EAzDlD,SAAYyf,GAAG,MAAM,CAACojK,SAASd,EAAG9gK,SAASxB,EAAE7lB,QAAQ6lB,EAAE,CAyDHkpL,EAAG,WAAiD,MAAtClpL,IAAIA,GAAE,EAAG62B,EAAE,MAAMilJ,MAAMt6K,SAAS,MAAYvjB,MAAMghB,EAAE,KAAM,IAAG43B,EAAEwwJ,GAAG9mM,GAAG,GAC1Z,QADya,EAAP21C,GAAE/+B,QAAU++B,GAAE7K,OAAO,IAAIi8J,GAAG,GAAE,WAAWzwJ,EAAE,MAAMilJ,MAAMt6K,SAAS,IAAI,QACpf,EAAO,OAAcjhB,CAAC,CAAkC,OAAN8mM,GAA3B9mM,EAAE,MAAMu7L,MAAMt6K,SAAS,KAAiBjhB,CAAC,EAAE0oM,0BAAyB,GAAIpD,GAAG,CAACuC,YAAYnI,GAAGoI,YAAYF,GAAGG,WAAWrI,GAAGgH,UAAUa,GAAGS,oBAAoBN,GAAGO,gBAAgBT,GAAGU,QAAQ5wJ,GAAG6wJ,WAAWtC,GAAGuC,OAAOjB,GAAGnwF,SAAS,WAAW,OAAO6uF,GAAGD,GAAG,EAAEyC,cAAcV,GAAGW,iBAAiB,SAAS7oL,GAAG,IAAIzf,EAAE6lM,GAAGD,IAAItvJ,EAAEt2C,EAAE,GAAGud,EAAEvd,EAAE,GAA6F,OAA1FunM,IAAG,WAAW,IAAIvnM,EAAE8kM,GAAGvX,WAAWuX,GAAGvX,WAAW,EAAE,IAAIhwK,EAAEkC,EAAE,CAAC,QAAQqlL,GAAGvX,WAAWvtL,CAAC,CAAC,GAAE,CAACyf,IAAW62B,CAAC,EAAEiyJ,cAAc,WAAW,IAAI9oL,EAAEomL,GAAGD,IAAI,GAAG,MAAM,CAACuB,KAAKjzL,QAC9euL,EAAE,EAAE+oL,iBAAiB3B,GAAG4B,oBAAoB,WAAW,OAAO5C,GAAGD,IAAI,EAAE,EAAE8C,0BAAyB,GAAInD,GAAG,CAACsC,YAAYnI,GAAGoI,YAAYF,GAAGG,WAAWrI,GAAGgH,UAAUa,GAAGS,oBAAoBN,GAAGO,gBAAgBT,GAAGU,QAAQ5wJ,GAAG6wJ,WAAWjC,GAAGkC,OAAOjB,GAAGnwF,SAAS,WAAW,OAAOkvF,GAAGN,GAAG,EAAEyC,cAAcV,GAAGW,iBAAiB,SAAS7oL,GAAG,IAAIzf,EAAEkmM,GAAGN,IAAItvJ,EAAEt2C,EAAE,GAAGud,EAAEvd,EAAE,GAA6F,OAA1FunM,IAAG,WAAW,IAAIvnM,EAAE8kM,GAAGvX,WAAWuX,GAAGvX,WAAW,EAAE,IAAIhwK,EAAEkC,EAAE,CAAC,QAAQqlL,GAAGvX,WAAWvtL,CAAC,CAAC,GAAE,CAACyf,IAAW62B,CAAC,EAAEiyJ,cAAc,WAAW,IAAI9oL,EAAEymL,GAAGN,IAAI,GAAG,MAAM,CAACuB,KAAKjzL,QACrfuL,EAAE,EAAE+oL,iBAAiB3B,GAAG4B,oBAAoB,WAAW,OAAOvC,GAAGN,IAAI,EAAE,EAAE8C,0BAAyB,GAAIE,GAAG3nB,EAAG4nB,kBAAkBpJ,IAAG,EAAG,SAASxkJ,GAAGx7B,EAAEzf,EAAEs2C,EAAE/4B,GAAGvd,EAAEw/E,MAAM,OAAO//D,EAAE4jL,GAAGrjM,EAAE,KAAKs2C,EAAE/4B,GAAG6lL,GAAGpjM,EAAEyf,EAAE+/D,MAAMlpC,EAAE/4B,EAAE,CAAC,SAASurL,GAAGrpL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAGw8C,EAAEA,EAAEg5F,OAAO,IAAI36H,EAAE3U,EAAE6a,IAA8B,OAA1Bg4B,GAAG7yC,EAAElG,GAAGyjB,EAAE6nL,GAAG3lL,EAAEzf,EAAEs2C,EAAE/4B,EAAE5I,EAAE7a,GAAM,OAAO2lB,GAAIggL,IAA0Ez/L,EAAE8qC,OAAO,EAAEmQ,GAAGx7B,EAAEzf,EAAEud,EAAEzjB,GAAUkG,EAAEw/E,QAAhGx/E,EAAE+/L,YAAYtgL,EAAEsgL,YAAY//L,EAAE8qC,QAAQ,IAAIrrB,EAAE+/K,QAAQ1lM,EAAEivM,GAAGtpL,EAAEzf,EAAElG,GAAwC,CAChZ,SAASi+C,GAAGt4B,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG,GAAG,OAAO8K,EAAE,CAAC,IAAIzoB,EAAEs/C,EAAE/6C,KAAK,MAAG,mBAAoBvE,GAAIgyM,GAAGhyM,SAAI,IAASA,EAAE6/G,cAAc,OAAOvgE,EAAE24F,cAAS,IAAS34F,EAAEugE,eAAsDp3F,EAAEujL,GAAG1sJ,EAAE/6C,KAAK,KAAKgiB,EAAEvd,EAAEA,EAAE4W,KAAKjC,IAAKkG,IAAI7a,EAAE6a,IAAI4E,EAAEk0E,OAAO3zF,EAASA,EAAEw/E,MAAM//D,IAAvGzf,EAAE02B,IAAI,GAAG12B,EAAEzE,KAAKvE,EAAEiyM,GAAGxpL,EAAEzf,EAAEhJ,EAAEumB,EAAEzjB,EAAE6a,GAAyE,CAAW,OAAV3d,EAAEyoB,EAAE+/D,MAAc1lF,EAAE6a,IAAK7a,EAAE9C,EAAE+sM,gBAA0BztJ,EAAE,QAAdA,EAAEA,EAAE24F,SAAmB34F,EAAE2hJ,IAAKn+L,EAAEyjB,IAAIkC,EAAE5E,MAAM7a,EAAE6a,MAAsB7a,EAAE8qC,OAAO,GAAErrB,EAAEojL,GAAG7rM,EAAEumB,IAAK1C,IAAI7a,EAAE6a,IAAI4E,EAAEk0E,OAAO3zF,EAASA,EAAEw/E,MAAM//D,GAArEspL,GAAGtpL,EAAEzf,EAAE2U,EAA+D,CACnb,SAASs0L,GAAGxpL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG,GAAG,OAAO8K,GAAGw4K,GAAGx4K,EAAEskL,cAAcxmL,IAAIkC,EAAE5E,MAAM7a,EAAE6a,IAAI,IAAG4kL,IAAG,IAAQ9qL,EAAE7a,GAAqC,OAAOkG,EAAEw/L,MAAM//K,EAAE+/K,MAAMuJ,GAAGtpL,EAAEzf,EAAE2U,GAAnD,MAAR8K,EAAEqrB,QAAe20J,IAAG,EAAyC,CAAC,OAAOyJ,GAAGzpL,EAAEzf,EAAEs2C,EAAE/4B,EAAE5I,EAAE,CACrL,SAASwrC,GAAG1gC,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEvd,EAAEskM,aAAaxqM,EAAEyjB,EAAEq9E,SAASjmF,EAAE,OAAO8K,EAAEA,EAAE+qK,cAAc,KAAK,GAAG,WAAWjtK,EAAE3G,MAAM,kCAAkC2G,EAAE3G,KAAK,GAAe,EAAP5W,EAAE4W,KAAmD,MAAU,WAAF0/B,GAA8E,OAAO72B,EAAE,OAAO9K,EAAEA,EAAEw0L,UAAU7yJ,EAAEA,EAAEt2C,EAAEw/L,MAAMx/L,EAAEq/L,WAAW,WAAWr/L,EAAEwqL,cAAc,CAAC2e,UAAU1pL,GAAG2pL,GAAGppM,EAAEyf,GAAG,KAAxKzf,EAAEwqL,cAAc,CAAC2e,UAAU,GAAGC,GAAGppM,EAAE,OAAO2U,EAAEA,EAAEw0L,UAAU7yJ,EAAoH,MAA7Ot2C,EAAEwqL,cAAc,CAAC2e,UAAU,GAAGC,GAAGppM,EAAEs2C,QAAgN,OAAO3hC,GAAG4I,EAAE5I,EAAEw0L,UAAU7yJ,EAAEt2C,EAAEwqL,cAAc,MAAMjtK,EAAE+4B,EAAE8yJ,GAAGppM,EAAEud,GAAe,OAAZ09B,GAAGx7B,EAAEzf,EAAElG,EAAEw8C,GAAUt2C,EAAEw/E,KAAK,CAC/e,SAAS6pH,GAAG5pL,EAAEzf,GAAG,IAAIs2C,EAAEt2C,EAAE6a,KAAO,OAAO4E,GAAG,OAAO62B,GAAG,OAAO72B,GAAGA,EAAE5E,MAAMy7B,KAAEt2C,EAAE8qC,OAAO,IAAG,CAAC,SAASo+J,GAAGzpL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,IAAI6a,EAAE66C,GAAGlZ,GAAG0lJ,GAAG7lJ,GAAEjiC,QAA4C,OAApCS,EAAEsnL,GAAGj8L,EAAE2U,GAAGk+B,GAAG7yC,EAAElG,GAAGw8C,EAAE8uJ,GAAG3lL,EAAEzf,EAAEs2C,EAAE/4B,EAAE5I,EAAE7a,GAAM,OAAO2lB,GAAIggL,IAA0Ez/L,EAAE8qC,OAAO,EAAEmQ,GAAGx7B,EAAEzf,EAAEs2C,EAAEx8C,GAAUkG,EAAEw/E,QAAhGx/E,EAAE+/L,YAAYtgL,EAAEsgL,YAAY//L,EAAE8qC,QAAQ,IAAIrrB,EAAE+/K,QAAQ1lM,EAAEivM,GAAGtpL,EAAEzf,EAAElG,GAAwC,CACtS,SAASwvM,GAAG7pL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,GAAG01D,GAAGlZ,GAAG,CAAC,IAAI3hC,GAAE,EAAG6nL,GAAGx8L,EAAE,MAAM2U,GAAE,EAAW,GAARk+B,GAAG7yC,EAAElG,GAAM,OAAOkG,EAAEgpL,UAAU,OAAOvpK,IAAIA,EAAE6qK,UAAU,KAAKtqL,EAAEsqL,UAAU,KAAKtqL,EAAE8qC,OAAO,GAAG62J,GAAG3hM,EAAEs2C,EAAE/4B,GAAGwkL,GAAG/hM,EAAEs2C,EAAE/4B,EAAEzjB,GAAGyjB,GAAE,OAAQ,GAAG,OAAOkC,EAAE,CAAC,IAAIzoB,EAAEgJ,EAAEgpL,UAAUt4I,EAAE1wC,EAAE+jM,cAAc/sM,EAAEU,MAAMg5C,EAAE,IAAIlxB,EAAExoB,EAAEi7B,QAAQp2B,EAAEy6C,EAAEi4F,YAAY,iBAAkB1yI,GAAG,OAAOA,EAAEA,EAAE6jM,GAAG7jM,GAAyBA,EAAEogM,GAAGj8L,EAA1BnE,EAAE2zD,GAAGlZ,GAAG0lJ,GAAG7lJ,GAAEjiC,SAAmB,IAAI6J,EAAEu4B,EAAEq4F,yBAAyBz4F,EAAE,mBAAoBn4B,GAAG,mBAAoB/mB,EAAEgrM,wBAAwB9rJ,GAAG,mBAAoBl/C,EAAE8qM,kCACpd,mBAAoB9qM,EAAE6qM,4BAA4BnxJ,IAAInzB,GAAGiC,IAAI3jB,IAAI+lM,GAAG5hM,EAAEhJ,EAAEumB,EAAE1hB,GAAGgkM,IAAG,EAAG,IAAIxmM,EAAE2G,EAAEwqL,cAAcxzL,EAAEoR,MAAM/O,EAAEqnM,GAAG1gM,EAAEud,EAAEvmB,EAAE8C,GAAG0lB,EAAExf,EAAEwqL,cAAc95I,IAAInzB,GAAGlkB,IAAImmB,GAAGsK,GAAE5V,SAAS2rL,IAAI,mBAAoB9hL,IAAI+iL,GAAG9gM,EAAEs2C,EAAEv4B,EAAER,GAAGiC,EAAExf,EAAEwqL,gBAAgB95I,EAAEmvJ,IAAI2B,GAAGxhM,EAAEs2C,EAAE5F,EAAEnzB,EAAElkB,EAAEmmB,EAAE3jB,KAAKq6C,GAAG,mBAAoBl/C,EAAEirM,2BAA2B,mBAAoBjrM,EAAEkrM,qBAAqB,mBAAoBlrM,EAAEkrM,oBAAoBlrM,EAAEkrM,qBAAqB,mBAAoBlrM,EAAEirM,2BAA2BjrM,EAAEirM,6BAA6B,mBACzejrM,EAAEmrM,oBAAoBniM,EAAE8qC,OAAO,KAAK,mBAAoB9zC,EAAEmrM,oBAAoBniM,EAAE8qC,OAAO,GAAG9qC,EAAE+jM,cAAcxmL,EAAEvd,EAAEwqL,cAAchrK,GAAGxoB,EAAEU,MAAM6lB,EAAEvmB,EAAEoR,MAAMoX,EAAExoB,EAAEi7B,QAAQp2B,EAAE0hB,EAAEmzB,IAAI,mBAAoB15C,EAAEmrM,oBAAoBniM,EAAE8qC,OAAO,GAAGvtB,GAAE,EAAG,KAAK,CAACvmB,EAAEgJ,EAAEgpL,UAAUoX,GAAG3gL,EAAEzf,GAAG0wC,EAAE1wC,EAAE+jM,cAAcloM,EAAEmE,EAAEzE,OAAOyE,EAAE+iM,YAAYryJ,EAAEkuJ,GAAG5+L,EAAEzE,KAAKm1C,GAAG15C,EAAEU,MAAMmE,EAAEq6C,EAAEl2C,EAAEskM,aAAajrM,EAAErC,EAAEi7B,QAAwB,iBAAhBzS,EAAE82B,EAAEi4F,cAAiC,OAAO/uH,EAAEA,EAAEkgL,GAAGlgL,GAAyBA,EAAEy8K,GAAGj8L,EAA1Bwf,EAAEgwC,GAAGlZ,GAAG0lJ,GAAG7lJ,GAAEjiC,SAAmB,IAAIwhC,EAAEY,EAAEq4F,0BAA0B5wH,EAAE,mBAAoB23B,GACnf,mBAAoB1+C,EAAEgrM,0BAA0B,mBAAoBhrM,EAAE8qM,kCAAkC,mBAAoB9qM,EAAE6qM,4BAA4BnxJ,IAAIwF,GAAG78C,IAAImmB,IAAIoiL,GAAG5hM,EAAEhJ,EAAEumB,EAAEiC,GAAGqgL,IAAG,EAAGxmM,EAAE2G,EAAEwqL,cAAcxzL,EAAEoR,MAAM/O,EAAEqnM,GAAG1gM,EAAEud,EAAEvmB,EAAE8C,GAAG,IAAI4H,EAAE1B,EAAEwqL,cAAc95I,IAAIwF,GAAG78C,IAAIqI,GAAGooB,GAAE5V,SAAS2rL,IAAI,mBAAoBnqJ,IAAIorJ,GAAG9gM,EAAEs2C,EAAEZ,EAAEn4B,GAAG7b,EAAE1B,EAAEwqL,gBAAgB3uL,EAAEgkM,IAAI2B,GAAGxhM,EAAEs2C,EAAEz6C,EAAE0hB,EAAElkB,EAAEqI,EAAE8d,KAAKzB,GAAG,mBAAoB/mB,EAAEuyM,4BAA4B,mBAAoBvyM,EAAEwyM,sBAAsB,mBAAoBxyM,EAAEwyM,qBAAqBxyM,EAAEwyM,oBAAoBjsL,EAC1gB7b,EAAE8d,GAAG,mBAAoBxoB,EAAEuyM,4BAA4BvyM,EAAEuyM,2BAA2BhsL,EAAE7b,EAAE8d,IAAI,mBAAoBxoB,EAAEyyM,qBAAqBzpM,EAAE8qC,OAAO,GAAG,mBAAoB9zC,EAAEgrM,0BAA0BhiM,EAAE8qC,OAAO,OAAO,mBAAoB9zC,EAAEyyM,oBAAoB/4J,IAAIjxB,EAAEskL,eAAe1qM,IAAIomB,EAAE+qK,gBAAgBxqL,EAAE8qC,OAAO,GAAG,mBAAoB9zC,EAAEgrM,yBAAyBtxJ,IAAIjxB,EAAEskL,eAAe1qM,IAAIomB,EAAE+qK,gBAAgBxqL,EAAE8qC,OAAO,KAAK9qC,EAAE+jM,cAAcxmL,EAAEvd,EAAEwqL,cAAc9oL,GAAG1K,EAAEU,MAAM6lB,EAAEvmB,EAAEoR,MAAM1G,EAAE1K,EAAEi7B,QAAQzS,EAAEjC,EAAE1hB,IAAI,mBAAoB7E,EAAEyyM,oBAC7f/4J,IAAIjxB,EAAEskL,eAAe1qM,IAAIomB,EAAE+qK,gBAAgBxqL,EAAE8qC,OAAO,GAAG,mBAAoB9zC,EAAEgrM,yBAAyBtxJ,IAAIjxB,EAAEskL,eAAe1qM,IAAIomB,EAAE+qK,gBAAgBxqL,EAAE8qC,OAAO,KAAKvtB,GAAE,EAAG,CAAC,OAAOw1B,GAAGtzB,EAAEzf,EAAEs2C,EAAE/4B,EAAE5I,EAAE7a,EAAE,CAC3L,SAASi5C,GAAGtzB,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG00L,GAAG5pL,EAAEzf,GAAG,IAAIhJ,KAAe,GAARgJ,EAAE8qC,OAAU,IAAIvtB,IAAIvmB,EAAE,OAAO8C,GAAG4iM,GAAG18L,EAAEs2C,GAAE,GAAIyyJ,GAAGtpL,EAAEzf,EAAE2U,GAAG4I,EAAEvd,EAAEgpL,UAAU4f,GAAG10L,QAAQlU,EAAE,IAAI0wC,EAAE15C,GAAG,mBAAoBs/C,EAAEo4F,yBAAyB,KAAKnxH,EAAE+xH,SAAwI,OAA/HtvI,EAAE8qC,OAAO,EAAE,OAAOrrB,GAAGzoB,GAAGgJ,EAAEw/E,MAAM4jH,GAAGpjM,EAAEyf,EAAE+/D,MAAM,KAAK7qE,GAAG3U,EAAEw/E,MAAM4jH,GAAGpjM,EAAE,KAAK0wC,EAAE/7B,IAAIsmC,GAAGx7B,EAAEzf,EAAE0wC,EAAE/7B,GAAG3U,EAAEwqL,cAAcjtK,EAAEnV,MAAMtO,GAAG4iM,GAAG18L,EAAEs2C,GAAE,GAAWt2C,EAAEw/E,KAAK,CAAC,SAASnoC,GAAG53B,GAAG,IAAIzf,EAAEyf,EAAEupK,UAAUhpL,EAAE0pM,eAAerN,GAAG58K,EAAEzf,EAAE0pM,eAAe1pM,EAAE0pM,iBAAiB1pM,EAAEiyB,SAASjyB,EAAEiyB,SAASoqK,GAAG58K,EAAEzf,EAAEiyB,SAAQ,GAAIyxK,GAAGjkL,EAAEzf,EAAEssL,cAAc,CAC3e,IAS0Vqd,GAAGC,GAAGC,GAAGC,GAT/V9wJ,GAAG,CAACyxI,WAAW,KAAKsf,UAAU,GAClC,SAASp3J,GAAGlzB,EAAEzf,EAAEs2C,GAAG,IAAsCt/C,EAAlCumB,EAAEvd,EAAEskM,aAAaxqM,EAAEqkB,GAAEjK,QAAQS,GAAE,EAA6M,OAAvM3d,KAAe,GAARgJ,EAAE8qC,UAAa9zC,GAAE,OAAOyoB,GAAG,OAAOA,EAAE+qK,mBAAwB,EAAF1wL,IAAM9C,GAAG2d,GAAE,EAAG3U,EAAE8qC,QAAQ,IAAI,OAAOrrB,GAAG,OAAOA,EAAE+qK,oBAAe,IAASjtK,EAAE1V,WAAU,IAAK0V,EAAEysL,6BAA6BlwM,GAAG,GAAGs8C,GAAEj4B,GAAI,EAAFrkB,GAAQ,OAAO2lB,QAAG,IAASlC,EAAE1V,UAAU08L,GAAGvkM,GAAGyf,EAAElC,EAAEq9E,SAAS9gG,EAAEyjB,EAAE1V,SAAY8M,GAAS8K,EAAEwqL,GAAGjqM,EAAEyf,EAAE3lB,EAAEw8C,GAAGt2C,EAAEw/E,MAAMgrG,cAAc,CAAC2e,UAAU7yJ,GAAGt2C,EAAEwqL,cAAcxxI,GAAGv5B,GAAK,iBAAkBlC,EAAE2sL,2BAAiCzqL,EAAEwqL,GAAGjqM,EAAEyf,EAAE3lB,EAAEw8C,GAAGt2C,EAAEw/E,MAAMgrG,cAAc,CAAC2e,UAAU7yJ,GAC/ft2C,EAAEwqL,cAAcxxI,GAAGh5C,EAAEw/L,MAAM,SAAS//K,KAAE62B,EAAE6zJ,GAAG,CAACvzL,KAAK,UAAUgkF,SAASn7E,GAAGzf,EAAE4W,KAAK0/B,EAAE,OAAQq9C,OAAO3zF,EAASA,EAAEw/E,MAAMlpC,KAAY72B,EAAE+qK,cAAkB71K,GAAS4I,EAAE6sL,GAAG3qL,EAAEzf,EAAEud,EAAEq9E,SAASr9E,EAAE1V,SAASyuC,GAAG3hC,EAAE3U,EAAEw/E,MAAM1lF,EAAE2lB,EAAE+/D,MAAMgrG,cAAc71K,EAAE61K,cAAc,OAAO1wL,EAAE,CAACqvM,UAAU7yJ,GAAG,CAAC6yJ,UAAUrvM,EAAEqvM,UAAU7yJ,GAAG3hC,EAAE0qL,WAAW5/K,EAAE4/K,YAAY/oJ,EAAEt2C,EAAEwqL,cAAcxxI,GAAGz7B,IAAE+4B,EAAE+zJ,GAAG5qL,EAAEzf,EAAEud,EAAEq9E,SAAStkD,GAAGt2C,EAAEwqL,cAAc,KAAYl0I,GACnQ,CAAC,SAAS2zJ,GAAGxqL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE2lB,EAAE7I,KAAKjC,EAAE8K,EAAE+/D,MAAuK,OAAjKx/E,EAAE,CAAC4W,KAAK,SAASgkF,SAAS56F,GAAU,EAAFlG,GAAM,OAAO6a,EAAoCA,EAAEw1L,GAAGnqM,EAAElG,EAAE,EAAE,OAA5C6a,EAAE0qL,WAAW,EAAE1qL,EAAE2vL,aAAatkM,GAAoBs2C,EAAE6sJ,GAAG7sJ,EAAEx8C,EAAEyjB,EAAE,MAAM5I,EAAEg/E,OAAOl0E,EAAE62B,EAAEq9C,OAAOl0E,EAAE9K,EAAE+1K,QAAQp0I,EAAE72B,EAAE+/D,MAAM7qE,EAAS2hC,CAAC,CACtV,SAAS+zJ,GAAG5qL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE2lB,EAAE+/D,MAAiL,OAA3K//D,EAAE3lB,EAAE4wL,QAAQp0I,EAAEusJ,GAAG/oM,EAAE,CAAC8c,KAAK,UAAUgkF,SAAStkD,MAAgB,EAAPt2C,EAAE4W,QAAU0/B,EAAEkpJ,MAAMjiL,GAAG+4B,EAAEq9C,OAAO3zF,EAAEs2C,EAAEo0I,QAAQ,KAAK,OAAOjrK,IAAIA,EAAEkjL,WAAW,KAAKljL,EAAEqrB,MAAM,EAAE9qC,EAAE4iM,YAAY5iM,EAAE0iM,WAAWjjL,GAAUzf,EAAEw/E,MAAMlpC,CAAC,CAC9N,SAAS8zJ,GAAG3qL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,IAAI6a,EAAE3U,EAAE4W,KAAK5f,EAAEyoB,EAAE+/D,MAAM//D,EAAEzoB,EAAE0zL,QAAQ,IAAIh6I,EAAE,CAAC95B,KAAK,SAASgkF,SAAStkD,GAAoS,OAA1R,EAAF3hC,GAAM3U,EAAEw/E,QAAQxoF,EAAqKs/C,EAAEusJ,GAAG7rM,EAAE05C,KAAzK4F,EAAEt2C,EAAEw/E,OAAQ6/G,WAAW,EAAE/oJ,EAAEguJ,aAAa5zJ,EAAiB,QAAf15C,EAAEs/C,EAAEosJ,aAAqB1iM,EAAE4iM,YAAYtsJ,EAAEssJ,YAAY5iM,EAAE0iM,WAAW1rM,EAAEA,EAAE2rM,WAAW,MAAM3iM,EAAE4iM,YAAY5iM,EAAE0iM,WAAW,MAAgB,OAAOjjL,EAAElC,EAAEslL,GAAGpjL,EAAElC,IAAIA,EAAE4lL,GAAG5lL,EAAE5I,EAAE7a,EAAE,OAAQgxC,OAAO,EAAGvtB,EAAEo2E,OAAO3zF,EAAEs2C,EAAEq9C,OAAO3zF,EAAEs2C,EAAEo0I,QAAQntK,EAAEvd,EAAEw/E,MAAMlpC,EAAS/4B,CAAC,CAAC,SAAS+sL,GAAG7qL,EAAEzf,GAAGyf,EAAE+/K,OAAOx/L,EAAE,IAAIs2C,EAAE72B,EAAE6qK,UAAU,OAAOh0I,IAAIA,EAAEkpJ,OAAOx/L,GAAGo/L,GAAG3/K,EAAEk0E,OAAO3zF,EAAE,CACxd,SAASuqM,GAAG9qL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG,IAAI3d,EAAEyoB,EAAE+qK,cAAc,OAAOxzL,EAAEyoB,EAAE+qK,cAAc,CAACggB,YAAYxqM,EAAEyqM,UAAU,KAAKC,mBAAmB,EAAExlL,KAAK3H,EAAE4iJ,KAAK7pH,EAAEq0J,SAAS7wM,EAAE4oM,WAAW/tL,IAAI3d,EAAEwzM,YAAYxqM,EAAEhJ,EAAEyzM,UAAU,KAAKzzM,EAAE0zM,mBAAmB,EAAE1zM,EAAEkuB,KAAK3H,EAAEvmB,EAAEmpK,KAAK7pH,EAAEt/C,EAAE2zM,SAAS7wM,EAAE9C,EAAE0rM,WAAW/tL,EAAE,CACzQ,SAASi2L,GAAGnrL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEvd,EAAEskM,aAAaxqM,EAAEyjB,EAAEymL,YAAYrvL,EAAE4I,EAAE4iJ,KAAsC,GAAjCllH,GAAGx7B,EAAEzf,EAAEud,EAAEq9E,SAAStkD,GAAyB,GAAtB/4B,EAAEY,GAAEjK,SAAqBqJ,EAAI,EAAFA,EAAI,EAAEvd,EAAE8qC,OAAO,OAAO,CAAC,GAAG,OAAOrrB,GAAgB,GAARA,EAAEqrB,MAAUrrB,EAAE,IAAIA,EAAEzf,EAAEw/E,MAAM,OAAO//D,GAAG,CAAC,GAAG,KAAKA,EAAEiX,IAAI,OAAOjX,EAAE+qK,eAAe8f,GAAG7qL,EAAE62B,QAAQ,GAAG,KAAK72B,EAAEiX,IAAI4zK,GAAG7qL,EAAE62B,QAAQ,GAAG,OAAO72B,EAAE+/D,MAAM,CAAC//D,EAAE+/D,MAAMmU,OAAOl0E,EAAEA,EAAEA,EAAE+/D,MAAM,QAAQ,CAAC,GAAG//D,IAAIzf,EAAE,MAAMyf,EAAE,KAAK,OAAOA,EAAEirK,SAAS,CAAC,GAAG,OAAOjrK,EAAEk0E,QAAQl0E,EAAEk0E,SAAS3zF,EAAE,MAAMyf,EAAEA,EAAEA,EAAEk0E,MAAM,CAACl0E,EAAEirK,QAAQ/2F,OAAOl0E,EAAEk0E,OAAOl0E,EAAEA,EAAEirK,OAAO,CAACntK,GAAG,CAAC,CAAQ,GAAP64B,GAAEj4B,GAAEZ,GAAkB,EAAPvd,EAAE4W,KACrd,OAAO9c,GAAG,IAAK,WAAqB,IAAVw8C,EAAEt2C,EAAEw/E,MAAU1lF,EAAE,KAAK,OAAOw8C,GAAiB,QAAd72B,EAAE62B,EAAEg0I,YAAoB,OAAOwZ,GAAGrkL,KAAK3lB,EAAEw8C,GAAGA,EAAEA,EAAEo0I,QAAY,QAAJp0I,EAAEx8C,IAAYA,EAAEkG,EAAEw/E,MAAMx/E,EAAEw/E,MAAM,OAAO1lF,EAAEw8C,EAAEo0I,QAAQp0I,EAAEo0I,QAAQ,MAAM6f,GAAGvqM,GAAE,EAAGlG,EAAEw8C,EAAE3hC,EAAE3U,EAAE0iM,YAAY,MAAM,IAAK,YAA6B,IAAjBpsJ,EAAE,KAAKx8C,EAAEkG,EAAEw/E,MAAUx/E,EAAEw/E,MAAM,KAAK,OAAO1lF,GAAG,CAAe,GAAG,QAAjB2lB,EAAE3lB,EAAEwwL,YAAuB,OAAOwZ,GAAGrkL,GAAG,CAACzf,EAAEw/E,MAAM1lF,EAAE,KAAK,CAAC2lB,EAAE3lB,EAAE4wL,QAAQ5wL,EAAE4wL,QAAQp0I,EAAEA,EAAEx8C,EAAEA,EAAE2lB,CAAC,CAAC8qL,GAAGvqM,GAAE,EAAGs2C,EAAE,KAAK3hC,EAAE3U,EAAE0iM,YAAY,MAAM,IAAK,WAAW6H,GAAGvqM,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAE0iM,YAAY,MAAM,QAAQ1iM,EAAEwqL,cAAc,UADVxqL,EAAEwqL,cACze,KAAsf,OAAOxqL,EAAEw/E,KAAK,CACpgB,SAASupH,GAAGtpL,EAAEzf,EAAEs2C,GAAyD,GAAtD,OAAO72B,IAAIzf,EAAEs/L,aAAa7/K,EAAE6/K,cAAcqB,IAAI3gM,EAAEw/L,MAAclpJ,EAAEt2C,EAAEq/L,WAAY,CAAC,GAAG,OAAO5/K,GAAGzf,EAAEw/E,QAAQ//D,EAAE+/D,MAAM,MAAM9hF,MAAMghB,EAAE,MAAM,GAAG,OAAO1e,EAAEw/E,MAAM,CAA4C,IAAjClpC,EAAEusJ,GAAZpjL,EAAEzf,EAAEw/E,MAAa//D,EAAE6kL,cAActkM,EAAEw/E,MAAMlpC,EAAMA,EAAEq9C,OAAO3zF,EAAE,OAAOyf,EAAEirK,SAASjrK,EAAEA,EAAEirK,SAAQp0I,EAAEA,EAAEo0I,QAAQmY,GAAGpjL,EAAEA,EAAE6kL,eAAgB3wG,OAAO3zF,EAAEs2C,EAAEo0I,QAAQ,IAAI,CAAC,OAAO1qL,EAAEw/E,KAAK,CAAC,OAAO,IAAI,CAKhQ,SAASqrH,GAAGprL,EAAEzf,GAAG,IAAImkM,GAAG,OAAO1kL,EAAEkrL,UAAU,IAAK,SAAS3qM,EAAEyf,EAAE0gJ,KAAK,IAAI,IAAI7pH,EAAE,KAAK,OAAOt2C,GAAG,OAAOA,EAAEsqL,YAAYh0I,EAAEt2C,GAAGA,EAAEA,EAAE0qL,QAAQ,OAAOp0I,EAAE72B,EAAE0gJ,KAAK,KAAK7pH,EAAEo0I,QAAQ,KAAK,MAAM,IAAK,YAAYp0I,EAAE72B,EAAE0gJ,KAAK,IAAI,IAAI5iJ,EAAE,KAAK,OAAO+4B,GAAG,OAAOA,EAAEg0I,YAAY/sK,EAAE+4B,GAAGA,EAAEA,EAAEo0I,QAAQ,OAAOntK,EAAEvd,GAAG,OAAOyf,EAAE0gJ,KAAK1gJ,EAAE0gJ,KAAK,KAAK1gJ,EAAE0gJ,KAAKuqB,QAAQ,KAAKntK,EAAEmtK,QAAQ,KAAK,CACla,SAASogB,GAAGrrL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEvd,EAAEskM,aAAa,OAAOtkM,EAAE02B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAQyC,KAAK,GAAG,OAAO84B,GAAGxvD,EAAEzE,OAAO6gM,KAAK,KAR1C,KAAK,EAAsL,OAApL7qJ,KAAKlB,GAAEvmB,IAAGumB,GAAE8F,IAAGuuJ,MAAKnnL,EAAEvd,EAAEgpL,WAAY0gB,iBAAiBnsL,EAAE0U,QAAQ1U,EAAEmsL,eAAensL,EAAEmsL,eAAe,MAAS,OAAOjqL,GAAG,OAAOA,EAAE+/D,QAAMilH,GAAGzkM,GAAGA,EAAE8qC,OAAO,EAAEvtB,EAAE8uK,UAAUrsL,EAAE8qC,OAAO,MAAK8+J,GAAG5pM,GAAU,KAAK,KAAK,EAAE6jM,GAAG7jM,GAAG,IAAIlG,EAAE2pM,GAAGl+I,GAAGrxC,SAAkB,GAAToiC,EAAEt2C,EAAEzE,KAAQ,OAAOkkB,GAAG,MAAMzf,EAAEgpL,UAAU6gB,GAAGpqL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG2lB,EAAE5E,MAAM7a,EAAE6a,MAAM7a,EAAE8qC,OAAO,SAAS,CAAC,IAAIvtB,EAAE,CAAC,GAAG,OAC7fvd,EAAEgpL,UAAU,MAAMtrL,MAAMghB,EAAE,MAAM,OAAO,IAAI,CAAkB,GAAjBe,EAAEgkL,GAAGF,GAAGrvL,SAAYuwL,GAAGzkM,GAAG,CAACud,EAAEvd,EAAEgpL,UAAU1yI,EAAEt2C,EAAEzE,KAAK,IAAIoZ,EAAE3U,EAAE+jM,cAA8B,OAAhBxmL,EAAEk+K,IAAIz7L,EAAEud,EAAEm+K,IAAI/mL,EAAS2hC,GAAG,IAAK,SAASutE,GAAE,SAAStmG,GAAGsmG,GAAE,QAAQtmG,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQsmG,GAAE,OAAOtmG,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIkC,EAAE,EAAEA,EAAEk6K,GAAG/hM,OAAO6nB,IAAIokG,GAAE81E,GAAGl6K,GAAGlC,GAAG,MAAM,IAAK,SAASsmG,GAAE,QAAQtmG,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOsmG,GAAE,QAAQtmG,GAAGsmG,GAAE,OAAOtmG,GAAG,MAAM,IAAK,UAAUsmG,GAAE,SAAStmG,GAAG,MAAM,IAAK,QAAQumK,GAAGvmK,EAAE5I,GAAGkvG,GAAE,UAAUtmG,GAAG,MAAM,IAAK,SAASA,EAAEqmK,cAC5f,CAACmnB,cAAcp2L,EAAEq2L,UAAUnnF,GAAE,UAAUtmG,GAAG,MAAM,IAAK,WAAWknK,GAAGlnK,EAAE5I,GAAGkvG,GAAE,UAAUtmG,GAAkB,IAAI,IAAIvmB,KAAvBsxL,GAAGhyI,EAAE3hC,GAAG8K,EAAE,KAAkB9K,EAAEA,EAAE5Z,eAAe/D,KAAK8C,EAAE6a,EAAE3d,GAAG,aAAaA,EAAE,iBAAkB8C,EAAEyjB,EAAEqnK,cAAc9qL,IAAI2lB,EAAE,CAAC,WAAW3lB,IAAI,iBAAkBA,GAAGyjB,EAAEqnK,cAAc,GAAG9qL,IAAI2lB,EAAE,CAAC,WAAW,GAAG3lB,IAAI81F,EAAG70F,eAAe/D,IAAI,MAAM8C,GAAG,aAAa9C,GAAG6sH,GAAE,SAAStmG,IAAI,OAAO+4B,GAAG,IAAK,QAAQ6sI,EAAG5lK,GAAGi5F,GAAGj5F,EAAE5I,GAAE,GAAI,MAAM,IAAK,WAAWwuK,EAAG5lK,GAAGonK,GAAGpnK,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoB5I,EAAEnH,UAAU+P,EAAE0tL,QACtfrQ,IAAIr9K,EAAEkC,EAAEzf,EAAE+/L,YAAYxiL,EAAE,OAAOA,IAAIvd,EAAE8qC,OAAO,EAAE,KAAK,CAAiZ,OAAhZ9zC,EAAE,IAAI8C,EAAEs/I,SAASt/I,EAAEA,EAAEqqL,cAAc1kK,IAAIolK,KAAUplK,EAAEqlK,GAAGxuI,IAAI72B,IAAIolK,GAAQ,WAAWvuI,IAAG72B,EAAEzoB,EAAEqhG,cAAc,QAASwD,UAAU,qBAAuBp8E,EAAEA,EAAE+xG,YAAY/xG,EAAE0lK,aAAa,iBAAkB5nK,EAAEonG,GAAGllG,EAAEzoB,EAAEqhG,cAAc/hD,EAAE,CAACquE,GAAGpnG,EAAEonG,MAAMllG,EAAEzoB,EAAEqhG,cAAc/hD,GAAG,WAAWA,IAAIt/C,EAAEyoB,EAAElC,EAAEytL,SAASh0M,EAAEg0M,UAAS,EAAGztL,EAAEqR,OAAO53B,EAAE43B,KAAKrR,EAAEqR,QAAQnP,EAAEzoB,EAAEk0M,gBAAgBzrL,EAAE62B,GAAG72B,EAAEg8K,IAAIz7L,EAAEyf,EAAEi8K,IAAIn+K,EAAEosL,GAAGlqL,EAAEzf,GAAE,GAAG,GAAIA,EAAEgpL,UAAUvpK,EAAEzoB,EAAEuxL,GAAGjyI,EAAE/4B,GAAU+4B,GAAG,IAAK,SAASutE,GAAE,SAASpkG,GAAGokG,GAAE,QAAQpkG,GACpf3lB,EAAEyjB,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQsmG,GAAE,OAAOpkG,GAAG3lB,EAAEyjB,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIzjB,EAAE,EAAEA,EAAE6/L,GAAG/hM,OAAOkC,IAAI+pH,GAAE81E,GAAG7/L,GAAG2lB,GAAG3lB,EAAEyjB,EAAE,MAAM,IAAK,SAASsmG,GAAE,QAAQpkG,GAAG3lB,EAAEyjB,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOsmG,GAAE,QAAQpkG,GAAGokG,GAAE,OAAOpkG,GAAG3lB,EAAEyjB,EAAE,MAAM,IAAK,UAAUsmG,GAAE,SAASpkG,GAAG3lB,EAAEyjB,EAAE,MAAM,IAAK,QAAQumK,GAAGrkK,EAAElC,GAAGzjB,EAAE4pL,EAAGjkK,EAAElC,GAAGsmG,GAAE,UAAUpkG,GAAG,MAAM,IAAK,SAAS3lB,EAAEsqL,GAAG3kK,EAAElC,GAAG,MAAM,IAAK,SAASkC,EAAEmkK,cAAc,CAACmnB,cAAcxtL,EAAEytL,UAAUlxM,EAAE87C,EAAE,CAAC,EAAEr4B,EAAE,CAAC1kB,WAAM,IAASgrH,GAAE,UAAUpkG,GAAG,MAAM,IAAK,WAAWglK,GAAGhlK,EAAElC,GAAGzjB,EACpf0qL,GAAG/kK,EAAElC,GAAGsmG,GAAE,UAAUpkG,GAAG,MAAM,QAAQ3lB,EAAEyjB,EAAE+qK,GAAGhyI,EAAEx8C,GAAG,IAAI42C,EAAE52C,EAAE,IAAI6a,KAAK+7B,EAAE,GAAGA,EAAE31C,eAAe4Z,GAAG,CAAC,IAAI6K,EAAEkxB,EAAE/7B,GAAG,UAAUA,EAAEm+B,GAAGrzB,EAAED,GAAG,4BAA4B7K,EAAuB,OAApB6K,EAAEA,EAAEA,EAAEtC,YAAO,IAAgB+nK,GAAGxlK,EAAED,GAAI,aAAa7K,EAAE,iBAAkB6K,GAAG,aAAa82B,GAAG,KAAK92B,IAAI24B,GAAG14B,EAAED,GAAG,iBAAkBA,GAAG24B,GAAG14B,EAAE,GAAGD,GAAG,mCAAmC7K,GAAG,6BAA6BA,GAAG,cAAcA,IAAIi7E,EAAG70F,eAAe4Z,GAAG,MAAM6K,GAAG,aAAa7K,GAAGkvG,GAAE,SAASpkG,GAAG,MAAMD,GAAGkhK,EAAGjhK,EAAE9K,EAAE6K,EAAExoB,GAAG,CAAC,OAAOs/C,GAAG,IAAK,QAAQ6sI,EAAG1jK,GAAG+2F,GAAG/2F,EAAElC,GAAE,GACnf,MAAM,IAAK,WAAW4lK,EAAG1jK,GAAGklK,GAAGllK,GAAG,MAAM,IAAK,SAAS,MAAMlC,EAAE1kB,OAAO4mB,EAAExf,aAAa,QAAQ,GAAG+iL,EAAGzlK,EAAE1kB,QAAQ,MAAM,IAAK,SAAS4mB,EAAEurL,WAAWztL,EAAEytL,SAAmB,OAAVr2L,EAAE4I,EAAE1kB,OAAcsgD,GAAG15B,IAAIlC,EAAEytL,SAASr2L,GAAE,GAAI,MAAM4I,EAAE+2I,cAAcn7G,GAAG15B,IAAIlC,EAAEytL,SAASztL,EAAE+2I,cAAa,GAAI,MAAM,QAAQ,mBAAoBx6J,EAAE0T,UAAUiS,EAAEwrL,QAAQrQ,IAAIG,GAAGzkJ,EAAE/4B,KAAKvd,EAAE8qC,OAAO,EAAE,CAAC,OAAO9qC,EAAE6a,MAAM7a,EAAE8qC,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,GAAGrrB,GAAG,MAAMzf,EAAEgpL,UAAU8gB,GAAGrqL,EAAEzf,EAAEyf,EAAEskL,cAAcxmL,OAAO,CAAC,GAAG,iBAAkBA,GAAG,OAAOvd,EAAEgpL,UAAU,MAAMtrL,MAAMghB,EAAE,MAC/e43B,EAAEmtJ,GAAGl+I,GAAGrxC,SAASuvL,GAAGF,GAAGrvL,SAASuwL,GAAGzkM,IAAIud,EAAEvd,EAAEgpL,UAAU1yI,EAAEt2C,EAAE+jM,cAAcxmL,EAAEk+K,IAAIz7L,EAAEud,EAAEgoK,YAAYjvI,IAAIt2C,EAAE8qC,OAAO,MAAKvtB,GAAG,IAAI+4B,EAAE8iG,SAAS9iG,EAAEA,EAAE6tI,eAAep5D,eAAextG,IAAKk+K,IAAIz7L,EAAEA,EAAEgpL,UAAUzrK,EAAE,CAAC,OAAO,KAAK,KAAK,GAA0B,OAAvB8yB,GAAElyB,IAAGZ,EAAEvd,EAAEwqL,cAA8B,GAARxqL,EAAE8qC,OAAiB9qC,EAAEw/L,MAAMlpJ,EAAEt2C,IAAEud,EAAE,OAAOA,EAAE+4B,GAAE,EAAG,OAAO72B,OAAE,IAASzf,EAAE+jM,cAAcl8L,UAAU48L,GAAGzkM,GAAGs2C,EAAE,OAAO72B,EAAE+qK,cAAiBjtK,IAAI+4B,GAAe,EAAPt2C,EAAE4W,OAAW,OAAO6I,IAAG,IAAKzf,EAAE+jM,cAAciG,4BAA2C,EAAV7rL,GAAEjK,QAAW,IAAI+hC,KAAIA,GAAE,IAAW,IAAIA,IAAG,IAAIA,KAAEA,GACrf,GAAE,OAAO0vE,MAAW,UAAHg7E,OAAuB,UAAHwK,KAAeC,GAAGzlF,GAAE17E,OAAM1sB,GAAG+4B,KAAEt2C,EAAE8qC,OAAO,GAAS,MAAK,KAAK,EAAE,OAAOyG,KAAKq4J,GAAG5pM,GAAG,OAAOyf,GAAGw6K,GAAGj6L,EAAEgpL,UAAUsD,eAAe,KAAK,KAAK,GAAG,OAAO4S,GAAGl/L,GAAG,KAA0C,KAAK,GAA0B,GAAvBqwC,GAAElyB,IAAwB,QAArBZ,EAAEvd,EAAEwqL,eAA0B,OAAO,KAAsC,GAAjC71K,KAAe,GAAR3U,EAAE8qC,OAA2B,QAAjB9zC,EAAEumB,EAAEktL,WAAsB,GAAG91L,EAAEk2L,GAAGttL,GAAE,OAAQ,CAAC,GAAG,IAAI04B,IAAG,OAAOx2B,GAAgB,GAARA,EAAEqrB,MAAU,IAAIrrB,EAAEzf,EAAEw/E,MAAM,OAAO//D,GAAG,CAAS,GAAG,QAAXzoB,EAAE8sM,GAAGrkL,IAAe,CACjW,IADkWzf,EAAE8qC,OAAO,GAAG+/J,GAAGttL,GAAE,GAAoB,QAAhB5I,EAAE3d,EAAE+oM,eAAuB//L,EAAE+/L,YAAYprL,EAAE3U,EAAE8qC,OAAO,GACnf,OAAOvtB,EAAEmlL,aAAa1iM,EAAE4iM,YAAY,MAAM5iM,EAAE0iM,WAAWnlL,EAAEmlL,WAAWnlL,EAAE+4B,EAAMA,EAAEt2C,EAAEw/E,MAAM,OAAOlpC,GAAO72B,EAAElC,GAAN5I,EAAE2hC,GAAQxL,OAAO,EAAEn2B,EAAEguL,WAAW,KAAKhuL,EAAEiuL,YAAY,KAAKjuL,EAAE+tL,WAAW,KAAmB,QAAd1rM,EAAE2d,EAAE21K,YAAoB31K,EAAE0qL,WAAW,EAAE1qL,EAAE6qL,MAAM//K,EAAE9K,EAAE6qE,MAAM,KAAK7qE,EAAEovL,cAAc,KAAKpvL,EAAE61K,cAAc,KAAK71K,EAAEorL,YAAY,KAAKprL,EAAE2qL,aAAa,KAAK3qL,EAAEq0K,UAAU,OAAOr0K,EAAE0qL,WAAWroM,EAAEqoM,WAAW1qL,EAAE6qL,MAAMxoM,EAAEwoM,MAAM7qL,EAAE6qE,MAAMxoF,EAAEwoF,MAAM7qE,EAAEovL,cAAc/sM,EAAE+sM,cAAcpvL,EAAE61K,cAAcxzL,EAAEwzL,cAAc71K,EAAEorL,YAAY/oM,EAAE+oM,YAAYprL,EAAEpZ,KAAKvE,EAAEuE,KAAKkkB,EAAEzoB,EAAEsoM,aACpf3qL,EAAE2qL,aAAa,OAAO7/K,EAAE,KAAK,CAAC+/K,MAAM//K,EAAE+/K,MAAMD,aAAa9/K,EAAE8/K,eAAejpJ,EAAEA,EAAEo0I,QAA2B,OAAnBt0I,GAAEj4B,GAAY,EAAVA,GAAEjK,QAAU,GAAUlU,EAAEw/E,KAAK,CAAC//D,EAAEA,EAAEirK,OAAO,CAAC,OAAOntK,EAAE4iJ,MAAM5hD,KAAI8sF,KAAKrrM,EAAE8qC,OAAO,GAAGn2B,GAAE,EAAGk2L,GAAGttL,GAAE,GAAIvd,EAAEw/L,MAAM,SAAS,KAAK,CAAC,IAAI7qL,EAAE,GAAW,QAAR8K,EAAEqkL,GAAG9sM,KAAa,GAAGgJ,EAAE8qC,OAAO,GAAGn2B,GAAE,EAAmB,QAAhB2hC,EAAE72B,EAAEsgL,eAAuB//L,EAAE+/L,YAAYzpJ,EAAEt2C,EAAE8qC,OAAO,GAAG+/J,GAAGttL,GAAE,GAAI,OAAOA,EAAE4iJ,MAAM,WAAW5iJ,EAAEotL,WAAW3zM,EAAEszL,YAAY6Z,GAAG,OAAmC,QAA5BnkM,EAAEA,EAAE0iM,WAAWnlL,EAAEmlL,cAAsB1iM,EAAE2iM,WAAW,MAAM,UAAU,EAAEpkF,KAAIhhG,EAAEmtL,mBAAmBW,IAAI,aAAa/0J,IAAIt2C,EAAE8qC,OACjf,GAAGn2B,GAAE,EAAGk2L,GAAGttL,GAAE,GAAIvd,EAAEw/L,MAAM,UAAUjiL,EAAEitL,aAAaxzM,EAAE0zL,QAAQ1qL,EAAEw/E,MAAMx/E,EAAEw/E,MAAMxoF,IAAa,QAATs/C,EAAE/4B,EAAE2H,MAAcoxB,EAAEo0I,QAAQ1zL,EAAEgJ,EAAEw/E,MAAMxoF,EAAEumB,EAAE2H,KAAKluB,EAAE,CAAC,OAAO,OAAOumB,EAAE4iJ,MAAM7pH,EAAE/4B,EAAE4iJ,KAAK5iJ,EAAEktL,UAAUn0J,EAAE/4B,EAAE4iJ,KAAK7pH,EAAEo0I,QAAQntK,EAAEmlL,WAAW1iM,EAAE0iM,WAAWnlL,EAAEmtL,mBAAmBnsF,KAAIjoE,EAAEo0I,QAAQ,KAAK1qL,EAAEme,GAAEjK,QAAQkiC,GAAEj4B,GAAExJ,EAAI,EAAF3U,EAAI,EAAI,EAAFA,GAAKs2C,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOg1J,KAAK,OAAO7rL,GAAG,OAAOA,EAAE+qK,gBAAiB,OAAOxqL,EAAEwqL,gBAAgB,kCAAkCjtK,EAAE3G,OAAO5W,EAAE8qC,OAAO,GAAG,KAAK,MAAMptC,MAAMghB,EAAE,IAAI1e,EAAE02B,KAAM,CACtd,SAAS60K,GAAG9rL,GAAG,OAAOA,EAAEiX,KAAK,KAAK,EAAE84B,GAAG/vC,EAAElkB,OAAO6gM,KAAK,IAAIp8L,EAAEyf,EAAEqrB,MAAM,OAAS,KAAF9qC,GAAQyf,EAAEqrB,OAAS,KAAH9qC,EAAQ,GAAGyf,GAAG,KAAK,KAAK,EAAgC,GAA9B8xB,KAAKlB,GAAEvmB,IAAGumB,GAAE8F,IAAGuuJ,KAAyB,IAApB1kM,EAAEyf,EAAEqrB,OAAoB,MAAMptC,MAAMghB,EAAE,MAAyB,OAAnBe,EAAEqrB,OAAS,KAAH9qC,EAAQ,GAAUyf,EAAE,KAAK,EAAE,OAAOokL,GAAGpkL,GAAG,KAAK,KAAK,GAAG,OAAO4wB,GAAElyB,IAAe,MAAZne,EAAEyf,EAAEqrB,QAAcrrB,EAAEqrB,OAAS,KAAH9qC,EAAQ,GAAGyf,GAAG,KAAK,KAAK,GAAG,OAAO4wB,GAAElyB,IAAG,KAAK,KAAK,EAAE,OAAOozB,KAAK,KAAK,KAAK,GAAG,OAAO2tJ,GAAGz/K,GAAG,KAAK,KAAK,GAAG,KAAK,GAAG,OAAO6rL,KAAK,KAAK,QAAQ,OAAO,KAAK,CAC1a,SAASE,GAAG/rL,EAAEzf,GAAG,IAAI,IAAIs2C,EAAE,GAAG/4B,EAAEvd,EAAE,GAAGs2C,GAAGosI,EAAGnlK,GAAGA,EAAEA,EAAEo2E,aAAap2E,GAAG,IAAIzjB,EAAEw8C,CAAC,CAAC,MAAM3hC,GAAG7a,EAAE,6BAA6B6a,EAAEhT,QAAQ,KAAKgT,EAAE/Y,KAAK,CAAC,MAAM,CAAC/C,MAAM4mB,EAAEiqC,OAAO1pD,EAAEpE,MAAM9B,EAAE,CAAC,SAAS2xM,GAAGhsL,EAAEzf,GAAG,IAAI9I,QAAQiI,MAAMa,EAAEnH,MAAM,CAAC,MAAMy9C,GAAGl0C,YAAW,WAAW,MAAMk0C,CAAE,GAAE,CAAC,CAlBhQqzJ,GAAG,SAASlqL,EAAEzf,GAAG,IAAI,IAAIs2C,EAAEt2C,EAAEw/E,MAAM,OAAOlpC,GAAG,CAAC,GAAG,IAAIA,EAAE5f,KAAK,IAAI4f,EAAE5f,IAAIjX,EAAE64E,YAAYhiD,EAAE0yI,gBAAgB,GAAG,IAAI1yI,EAAE5f,KAAK,OAAO4f,EAAEkpC,MAAM,CAAClpC,EAAEkpC,MAAMmU,OAAOr9C,EAAEA,EAAEA,EAAEkpC,MAAM,QAAQ,CAAC,GAAGlpC,IAAIt2C,EAAE,MAAM,KAAK,OAAOs2C,EAAEo0I,SAAS,CAAC,GAAG,OAAOp0I,EAAEq9C,QAAQr9C,EAAEq9C,SAAS3zF,EAAE,OAAOs2C,EAAEA,EAAEq9C,MAAM,CAACr9C,EAAEo0I,QAAQ/2F,OAAOr9C,EAAEq9C,OAAOr9C,EAAEA,EAAEo0I,OAAO,CAAC,EAAEkf,GAAG,WAAW,EACxTC,GAAG,SAASpqL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAE2lB,EAAEskL,cAAc,GAAGjqM,IAAIyjB,EAAE,CAACkC,EAAEzf,EAAEgpL,UAAUya,GAAGF,GAAGrvL,SAAS,IAAyUld,EAArU2d,EAAE,KAAK,OAAO2hC,GAAG,IAAK,QAAQx8C,EAAE4pL,EAAGjkK,EAAE3lB,GAAGyjB,EAAEmmK,EAAGjkK,EAAElC,GAAG5I,EAAE,GAAG,MAAM,IAAK,SAAS7a,EAAEsqL,GAAG3kK,EAAE3lB,GAAGyjB,EAAE6mK,GAAG3kK,EAAElC,GAAG5I,EAAE,GAAG,MAAM,IAAK,SAAS7a,EAAE87C,EAAE,CAAC,EAAE97C,EAAE,CAACjB,WAAM,IAAS0kB,EAAEq4B,EAAE,CAAC,EAAEr4B,EAAE,CAAC1kB,WAAM,IAAS8b,EAAE,GAAG,MAAM,IAAK,WAAW7a,EAAE0qL,GAAG/kK,EAAE3lB,GAAGyjB,EAAEinK,GAAG/kK,EAAElC,GAAG5I,EAAE,GAAG,MAAM,QAAQ,mBAAoB7a,EAAE0T,SAAS,mBAAoB+P,EAAE/P,UAAUiS,EAAEwrL,QAAQrQ,IAAyB,IAAI/+L,KAAzBysL,GAAGhyI,EAAE/4B,GAAS+4B,EAAE,KAAcx8C,EAAE,IAAIyjB,EAAExiB,eAAec,IAAI/B,EAAEiB,eAAec,IAAI,MAAM/B,EAAE+B,GAAG,GAAG,UAC3eA,EAAE,CAAC,IAAI60C,EAAE52C,EAAE+B,GAAG,IAAI7E,KAAK05C,EAAEA,EAAE31C,eAAe/D,KAAKs/C,IAAIA,EAAE,CAAC,GAAGA,EAAEt/C,GAAG,GAAG,KAAK,4BAA4B6E,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAI+zF,EAAG70F,eAAec,GAAG8Y,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIhZ,KAAKE,EAAE,OAAO,IAAIA,KAAK0hB,EAAE,CAAC,IAAIiC,EAAEjC,EAAE1hB,GAAyB,GAAtB60C,EAAE,MAAM52C,EAAEA,EAAE+B,QAAG,EAAU0hB,EAAExiB,eAAec,IAAI2jB,IAAIkxB,IAAI,MAAMlxB,GAAG,MAAMkxB,GAAG,GAAG,UAAU70C,EAAE,GAAG60C,EAAE,CAAC,IAAI15C,KAAK05C,GAAGA,EAAE31C,eAAe/D,IAAIwoB,GAAGA,EAAEzkB,eAAe/D,KAAKs/C,IAAIA,EAAE,CAAC,GAAGA,EAAEt/C,GAAG,IAAI,IAAIA,KAAKwoB,EAAEA,EAAEzkB,eAAe/D,IAAI05C,EAAE15C,KAAKwoB,EAAExoB,KAAKs/C,IAClfA,EAAE,CAAC,GAAGA,EAAEt/C,GAAGwoB,EAAExoB,GAAG,MAAMs/C,IAAI3hC,IAAIA,EAAE,IAAIA,EAAEhZ,KAAKE,EAAEy6C,IAAIA,EAAE92B,MAAM,4BAA4B3jB,GAAG2jB,EAAEA,EAAEA,EAAEtC,YAAO,EAAOwzB,EAAEA,EAAEA,EAAExzB,YAAO,EAAO,MAAMsC,GAAGkxB,IAAIlxB,IAAI7K,EAAEA,GAAG,IAAIhZ,KAAKE,EAAE2jB,IAAI,aAAa3jB,EAAE,iBAAkB2jB,GAAG,iBAAkBA,IAAI7K,EAAEA,GAAG,IAAIhZ,KAAKE,EAAE,GAAG2jB,GAAG,mCAAmC3jB,GAAG,6BAA6BA,IAAI+zF,EAAG70F,eAAec,IAAI,MAAM2jB,GAAG,aAAa3jB,GAAGgoH,GAAE,SAASpkG,GAAG9K,GAAG+7B,IAAIlxB,IAAI7K,EAAE,KAAK,iBAAkB6K,GAAG,OAAOA,GAAGA,EAAEqjK,WAAWd,EAAGviK,EAAEyB,YAAYtM,EAAEA,GAAG,IAAIhZ,KAAKE,EAAE2jB,GAAG,CAAC82B,IAAI3hC,EAAEA,GAAG,IAAIhZ,KAAK,QAC/e26C,GAAG,IAAIz6C,EAAE8Y,GAAK3U,EAAE+/L,YAAYlkM,KAAEmE,EAAE8qC,OAAO,EAAC,CAAC,EAAEg/J,GAAG,SAASrqL,EAAEzf,EAAEs2C,EAAE/4B,GAAG+4B,IAAI/4B,IAAIvd,EAAE8qC,OAAO,EAAE,EAc8K,IAAI4gK,GAAG,mBAAoB1rD,QAAQA,QAAQrsH,IAAI,SAASg4K,GAAGlsL,EAAEzf,EAAEs2C,IAAGA,EAAE+pJ,IAAI,EAAE/pJ,IAAK5f,IAAI,EAAE4f,EAAEj3C,QAAQ,CAAC0M,QAAQ,MAAM,IAAIwR,EAAEvd,EAAEnH,MAAsD,OAAhDy9C,EAAE96C,SAAS,WAAWowM,KAAKA,IAAG,EAAGC,GAAGtuL,GAAGkuL,GAAGhsL,EAAEzf,EAAE,EAASs2C,CAAC,CACrb,SAASw1J,GAAGrsL,EAAEzf,EAAEs2C,IAAGA,EAAE+pJ,IAAI,EAAE/pJ,IAAK5f,IAAI,EAAE,IAAInZ,EAAEkC,EAAElkB,KAAKmzI,yBAAyB,GAAG,mBAAoBnxH,EAAE,CAAC,IAAIzjB,EAAEkG,EAAEnH,MAAMy9C,EAAEj3C,QAAQ,WAAmB,OAARosM,GAAGhsL,EAAEzf,GAAUud,EAAEzjB,EAAE,CAAC,CAAC,IAAI6a,EAAE8K,EAAEupK,UAA8O,OAApO,OAAOr0K,GAAG,mBAAoBA,EAAEo3L,oBAAoBz1J,EAAE96C,SAAS,WAAW,mBAAoB+hB,IAAI,OAAOyuL,GAAGA,GAAG,IAAIhvH,IAAI,CAACviF,OAAOuxM,GAAG9rM,IAAIzF,MAAMgxM,GAAGhsL,EAAEzf,IAAI,IAAIs2C,EAAEt2C,EAAEpE,MAAMnB,KAAKsxM,kBAAkB/rM,EAAEnH,MAAM,CAACozM,eAAe,OAAO31J,EAAEA,EAAE,IAAI,GAAUA,CAAC,CAAC,IAAI41J,GAAG,mBAAoBC,QAAQA,QAAQnvH,IACxc,SAASovH,GAAG3sL,GAAG,IAAIzf,EAAEyf,EAAE5E,IAAI,GAAG,OAAO7a,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMs2C,GAAG+1J,GAAG5sL,EAAE62B,EAAE,MAAMt2C,EAAEkU,QAAQ,IAAI,CAAC,SAASo4L,GAAG7sL,EAAEzf,GAAG,OAAOA,EAAE02B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAA8Q,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAjS,KAAK,EAAE,GAAW,IAAR12B,EAAE8qC,OAAW,OAAOrrB,EAAE,CAAC,IAAI62B,EAAE72B,EAAEskL,cAAcxmL,EAAEkC,EAAE+qK,cAA4BxqL,GAAdyf,EAAEzf,EAAEgpL,WAAcgZ,wBAAwBhiM,EAAE+iM,cAAc/iM,EAAEzE,KAAK+6C,EAAEsoJ,GAAG5+L,EAAEzE,KAAK+6C,GAAG/4B,GAAGkC,EAAE8sL,oCAAoCvsM,CAAC,CAAC,OAAO,KAAK,EAA6C,YAAnC,IAARA,EAAE8qC,OAAWqwJ,GAAGn7L,EAAEgpL,UAAUsD,gBAA0D,MAAM5uL,MAAMghB,EAAE,KAAM,CAClf,SAAS8tL,GAAG/sL,EAAEzf,EAAEs2C,GAAG,OAAOA,EAAE5f,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAgD,GAAG,QAAhC12B,EAAE,QAAlBA,EAAEs2C,EAAEypJ,aAAuB//L,EAAE0iM,WAAW,MAAiB,CAACjjL,EAAEzf,EAAEA,EAAE+G,KAAK,EAAE,CAAC,KAAG,GAAK0Y,EAAEiX,KAAO,CAAC,IAAInZ,EAAEkC,EAAE9mB,OAAO8mB,EAAEunL,QAAQzpL,GAAG,CAACkC,EAAEA,EAAE1Y,IAAI,OAAO0Y,IAAIzf,EAAE,CAA8C,GAAG,QAAhCA,EAAE,QAAlBA,EAAEs2C,EAAEypJ,aAAuB//L,EAAE0iM,WAAW,MAAiB,CAACjjL,EAAEzf,EAAEA,EAAE+G,KAAK,EAAE,CAAC,IAAIjN,EAAE2lB,EAAElC,EAAEzjB,EAAEiN,KAAoB,GAAfjN,EAAEA,EAAE48B,MAAsB,EAAF58B,IAAO2yM,GAAGn2J,EAAE72B,GAAGitL,GAAGp2J,EAAE72B,IAAIA,EAAElC,CAAC,OAAOkC,IAAIzf,EAAE,CAAC,OAAO,KAAK,EACtR,OADwRyf,EAAE62B,EAAE0yI,UAAkB,EAAR1yI,EAAExL,QAAU,OAAO9qC,EAAEyf,EAAE0iL,qBAAqB5kL,EAAE+4B,EAAEysJ,cAAczsJ,EAAE/6C,KAAKyE,EAAE+jM,cAAcnF,GAAGtoJ,EAAE/6C,KAAKyE,EAAE+jM,eAAetkL,EAAEgqL,mBAAmBlsL,EACxgBvd,EAAEwqL,cAAc/qK,EAAE8sL,4CAAuD,QAAhBvsM,EAAEs2C,EAAEypJ,cAAsBa,GAAGtqJ,EAAEt2C,EAAEyf,IAAU,KAAK,EAAkB,GAAG,QAAnBzf,EAAEs2C,EAAEypJ,aAAwB,CAAQ,GAAPtgL,EAAE,KAAQ,OAAO62B,EAAEkpC,MAAM,OAAOlpC,EAAEkpC,MAAM9oD,KAAK,KAAK,EAA4B,KAAK,EAAEjX,EAAE62B,EAAEkpC,MAAMwpG,UAAU4X,GAAGtqJ,EAAEt2C,EAAEyf,EAAE,CAAC,OAAO,KAAK,EAA2E,OAAzEA,EAAE62B,EAAE0yI,eAAU,OAAOhpL,GAAW,EAARs2C,EAAExL,OAASiwJ,GAAGzkJ,EAAE/6C,KAAK+6C,EAAEytJ,gBAAgBtkL,EAAE3d,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GACnX,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAD6U,KAAK,GACzY,YAD4Y,OAAOw0C,EAAEk0I,gBAAgBl0I,EAAEA,EAAEg0I,UAAU,OAAOh0I,IAAIA,EAAEA,EAAEk0I,cAAc,OAAOl0I,IAAIA,EAAEA,EAAEm0I,WAAW,OAAOn0I,GAAGs2I,GAAGt2I,OACzb,MAAM54C,MAAMghB,EAAE,KAAM,CAClF,SAASiuL,GAAGltL,EAAEzf,GAAG,IAAI,IAAIs2C,EAAE72B,IAAI,CAAC,GAAG,IAAI62B,EAAE5f,IAAI,CAAC,IAAInZ,EAAE+4B,EAAE0yI,UAAU,GAAGhpL,EAAY,mBAAVud,EAAEA,EAAEzQ,OAA4Bi7K,YAAYxqK,EAAEwqK,YAAY,UAAU,OAAO,aAAaxqK,EAAE05C,QAAQ,WAAW,CAAC15C,EAAE+4B,EAAE0yI,UAAU,IAAIlvL,EAAEw8C,EAAEytJ,cAAcj3L,MAAMhT,EAAE,MAASA,GAAaA,EAAEiB,eAAe,WAAWjB,EAAEm9D,QAAQ,KAAK15C,EAAEzQ,MAAMmqD,QAAQte,GAAG,UAAU7+C,EAAE,CAAC,MAAM,GAAG,IAAIw8C,EAAE5f,IAAI4f,EAAE0yI,UAAUzD,UAAUvlL,EAAE,GAAGs2C,EAAEytJ,mBAAmB,IAAI,KAAKztJ,EAAE5f,KAAK,KAAK4f,EAAE5f,KAAK,OAAO4f,EAAEk0I,eAAel0I,IAAI72B,IAAI,OAAO62B,EAAEkpC,MAAM,CAAClpC,EAAEkpC,MAAMmU,OAAOr9C,EAAEA,EAAEA,EAAEkpC,MAAM,QAAQ,CAAC,GAAGlpC,IACtf72B,EAAE,MAAM,KAAK,OAAO62B,EAAEo0I,SAAS,CAAC,GAAG,OAAOp0I,EAAEq9C,QAAQr9C,EAAEq9C,SAASl0E,EAAE,OAAO62B,EAAEA,EAAEq9C,MAAM,CAACr9C,EAAEo0I,QAAQ/2F,OAAOr9C,EAAEq9C,OAAOr9C,EAAEA,EAAEo0I,OAAO,CAAC,CACzH,SAASkiB,GAAGntL,EAAEzf,GAAG,GAAG48L,IAAI,mBAAoBA,GAAGiQ,qBAAqB,IAAIjQ,GAAGiQ,qBAAqBlQ,GAAG38L,EAAE,CAAC,MAAM2U,GAAG,CAAC,OAAO3U,EAAE02B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnBjX,EAAEzf,EAAE+/L,cAAyC,QAAftgL,EAAEA,EAAEijL,YAAqB,CAAC,IAAIpsJ,EAAE72B,EAAEA,EAAE1Y,KAAK,EAAE,CAAC,IAAIwW,EAAE+4B,EAAEx8C,EAAEyjB,EAAEypL,QAAgB,GAARzpL,EAAEA,EAAEmZ,SAAO,IAAS58B,EAAE,GAAU,EAAFyjB,EAAKkvL,GAAGzsM,EAAEs2C,OAAO,CAAC/4B,EAAEvd,EAAE,IAAIlG,GAAG,CAAC,MAAM6a,GAAG03L,GAAG9uL,EAAE5I,EAAE,CAAC,CAAC2hC,EAAEA,EAAEvvC,IAAI,OAAOuvC,IAAI72B,EAAE,CAAC,MAAM,KAAK,EAAsB,GAApB2sL,GAAGpsM,GAAoB,mBAAjByf,EAAEzf,EAAEgpL,WAAmC8jB,qBAAqB,IAAIrtL,EAAE/nB,MAAMsI,EAAE+jM,cAActkL,EAAErX,MAAMpI,EAAEwqL,cAAc/qK,EAAEqtL,sBAAsB,CAAC,MAAMn4L,GAAG03L,GAAGrsM,EAC/gB2U,EAAE,CAAC,MAAM,KAAK,EAAEy3L,GAAGpsM,GAAG,MAAM,KAAK,EAAEozC,GAAG3zB,EAAEzf,GAAG,CAAC,SAAS+sM,GAAGttL,GAAGA,EAAE6qK,UAAU,KAAK7qK,EAAE+/D,MAAM,KAAK//D,EAAE6/K,aAAa,KAAK7/K,EAAEmjL,YAAY,KAAKnjL,EAAEijL,WAAW,KAAKjjL,EAAEskL,cAAc,KAAKtkL,EAAE+qK,cAAc,KAAK/qK,EAAE6kL,aAAa,KAAK7kL,EAAEk0E,OAAO,KAAKl0E,EAAEsgL,YAAY,IAAI,CAAC,SAASiN,GAAGvtL,GAAG,OAAO,IAAIA,EAAEiX,KAAK,IAAIjX,EAAEiX,KAAK,IAAIjX,EAAEiX,GAAG,CACtS,SAASu2K,GAAGxtL,GAAGA,EAAE,CAAC,IAAI,IAAIzf,EAAEyf,EAAEk0E,OAAO,OAAO3zF,GAAG,CAAC,GAAGgtM,GAAGhtM,GAAG,MAAMyf,EAAEzf,EAAEA,EAAE2zF,MAAM,CAAC,MAAMj2F,MAAMghB,EAAE,KAAM,CAAC,IAAI43B,EAAEt2C,EAAgB,OAAdA,EAAEs2C,EAAE0yI,UAAiB1yI,EAAE5f,KAAK,KAAK,EAAE,IAAInZ,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEvd,EAAEA,EAAEssL,cAAc/uK,GAAE,EAAG,MAAM,QAAQ,MAAM7f,MAAMghB,EAAE,MAAe,GAAR43B,EAAExL,QAAWqN,GAAGn4C,EAAE,IAAIs2C,EAAExL,QAAQ,IAAIrrB,EAAEzf,EAAE,IAAIs2C,EAAE72B,IAAI,CAAC,KAAK,OAAO62B,EAAEo0I,SAAS,CAAC,GAAG,OAAOp0I,EAAEq9C,QAAQq5G,GAAG12J,EAAEq9C,QAAQ,CAACr9C,EAAE,KAAK,MAAM72B,CAAC,CAAC62B,EAAEA,EAAEq9C,MAAM,CAA2B,IAA1Br9C,EAAEo0I,QAAQ/2F,OAAOr9C,EAAEq9C,OAAWr9C,EAAEA,EAAEo0I,QAAQ,IAAIp0I,EAAE5f,KAAK,IAAI4f,EAAE5f,KAAK,KAAK4f,EAAE5f,KAAK,CAAC,GAAW,EAAR4f,EAAExL,MAAQ,SAAS9qC,EAAE,GAAG,OAC/es2C,EAAEkpC,OAAO,IAAIlpC,EAAE5f,IAAI,SAAS12B,EAAOs2C,EAAEkpC,MAAMmU,OAAOr9C,EAAEA,EAAEA,EAAEkpC,KAAK,CAAC,KAAa,EAARlpC,EAAExL,OAAS,CAACwL,EAAEA,EAAE0yI,UAAU,MAAMvpK,CAAC,CAAC,CAAClC,EAAE2vL,GAAGztL,EAAE62B,EAAEt2C,GAAGmtM,GAAG1tL,EAAE62B,EAAEt2C,EAAE,CAC3H,SAASktM,GAAGztL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkC,EAAEiX,IAAI58B,EAAE,IAAIyjB,GAAG,IAAIA,EAAE,GAAGzjB,EAAE2lB,EAAE3lB,EAAE2lB,EAAEupK,UAAUvpK,EAAEupK,UAAU3xL,SAAS2I,EAAE,IAAIs2C,EAAE8iG,SAAS9iG,EAAE4lD,WAAWkxG,aAAa3tL,EAAEzf,GAAGs2C,EAAE82J,aAAa3tL,EAAEzf,IAAI,IAAIs2C,EAAE8iG,UAAUp5I,EAAEs2C,EAAE4lD,YAAakxG,aAAa3tL,EAAE62B,IAAKt2C,EAAEs2C,GAAIgiD,YAAY74E,GAA4B,OAAxB62B,EAAEA,EAAE+2J,sBAA0C,OAAOrtM,EAAEirM,UAAUjrM,EAAEirM,QAAQrQ,UAAU,GAAG,IAAIr9K,GAAc,QAAVkC,EAAEA,EAAE+/D,OAAgB,IAAI0tH,GAAGztL,EAAEzf,EAAEs2C,GAAG72B,EAAEA,EAAEirK,QAAQ,OAAOjrK,GAAGytL,GAAGztL,EAAEzf,EAAEs2C,GAAG72B,EAAEA,EAAEirK,OAAO,CACrZ,SAASyiB,GAAG1tL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkC,EAAEiX,IAAI58B,EAAE,IAAIyjB,GAAG,IAAIA,EAAE,GAAGzjB,EAAE2lB,EAAE3lB,EAAE2lB,EAAEupK,UAAUvpK,EAAEupK,UAAU3xL,SAAS2I,EAAEs2C,EAAE82J,aAAa3tL,EAAEzf,GAAGs2C,EAAEgiD,YAAY74E,QAAQ,GAAG,IAAIlC,GAAc,QAAVkC,EAAEA,EAAE+/D,OAAgB,IAAI2tH,GAAG1tL,EAAEzf,EAAEs2C,GAAG72B,EAAEA,EAAEirK,QAAQ,OAAOjrK,GAAG0tL,GAAG1tL,EAAEzf,EAAEs2C,GAAG72B,EAAEA,EAAEirK,OAAO,CAC5N,SAASt3I,GAAG3zB,EAAEzf,GAAG,IAAI,IAAalG,EAAE6a,EAAX2hC,EAAEt2C,EAAEud,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAE+4B,EAAEq9C,OAAOl0E,EAAE,OAAO,CAAC,GAAG,OAAOlC,EAAE,MAAM7f,MAAMghB,EAAE,MAAoB,OAAd5kB,EAAEyjB,EAAEyrK,UAAiBzrK,EAAEmZ,KAAK,KAAK,EAAE/hB,GAAE,EAAG,MAAM8K,EAAE,KAAK,EAAiC,KAAK,EAAE3lB,EAAEA,EAAEwyL,cAAc33K,GAAE,EAAG,MAAM8K,EAAElC,EAAEA,EAAEo2E,MAAM,CAACp2E,GAAE,CAAE,CAAC,GAAG,IAAI+4B,EAAE5f,KAAK,IAAI4f,EAAE5f,IAAI,CAACjX,EAAE,IAAI,IAAIzoB,EAAEyoB,EAAEixB,EAAE4F,EAAE92B,EAAEkxB,IAAI,GAAGk8J,GAAG51M,EAAEwoB,GAAG,OAAOA,EAAEggE,OAAO,IAAIhgE,EAAEkX,IAAIlX,EAAEggE,MAAMmU,OAAOn0E,EAAEA,EAAEA,EAAEggE,UAAU,CAAC,GAAGhgE,IAAIkxB,EAAE,MAAMjxB,EAAE,KAAK,OAAOD,EAAEkrK,SAAS,CAAC,GAAG,OAAOlrK,EAAEm0E,QAAQn0E,EAAEm0E,SAASjjD,EAAE,MAAMjxB,EAAED,EAAEA,EAAEm0E,MAAM,CAACn0E,EAAEkrK,QAAQ/2F,OAAOn0E,EAAEm0E,OAAOn0E,EAAEA,EAAEkrK,OAAO,CAAC/1K,GAAG3d,EAAE8C,EAAE42C,EAAE4F,EAAE0yI,UACrf,IAAIhyL,EAAEoiJ,SAASpiJ,EAAEklG,WAAWs1B,YAAY9gF,GAAG15C,EAAEw6H,YAAY9gF,IAAI52C,EAAE03H,YAAYl7E,EAAE0yI,UAAU,MAAM,GAAG,IAAI1yI,EAAE5f,KAAK,GAAG,OAAO4f,EAAEkpC,MAAM,CAAC1lF,EAAEw8C,EAAE0yI,UAAUsD,cAAc33K,GAAE,EAAG2hC,EAAEkpC,MAAMmU,OAAOr9C,EAAEA,EAAEA,EAAEkpC,MAAM,QAAQ,OAAO,GAAGotH,GAAGntL,EAAE62B,GAAG,OAAOA,EAAEkpC,MAAM,CAAClpC,EAAEkpC,MAAMmU,OAAOr9C,EAAEA,EAAEA,EAAEkpC,MAAM,QAAQ,CAAC,GAAGlpC,IAAIt2C,EAAE,MAAM,KAAK,OAAOs2C,EAAEo0I,SAAS,CAAC,GAAG,OAAOp0I,EAAEq9C,QAAQr9C,EAAEq9C,SAAS3zF,EAAE,OAAkB,KAAXs2C,EAAEA,EAAEq9C,QAAaj9D,MAAMnZ,GAAE,EAAG,CAAC+4B,EAAEo0I,QAAQ/2F,OAAOr9C,EAAEq9C,OAAOr9C,EAAEA,EAAEo0I,OAAO,CAAC,CAC1Z,SAAS4iB,GAAG7tL,EAAEzf,GAAG,OAAOA,EAAE02B,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI4f,EAAEt2C,EAAE+/L,YAAyC,GAAG,QAAhCzpJ,EAAE,OAAOA,EAAEA,EAAEosJ,WAAW,MAAiB,CAAC,IAAInlL,EAAE+4B,EAAEA,EAAEvvC,KAAK,KAAG,GAAKwW,EAAEmZ,OAASjX,EAAElC,EAAEypL,QAAQzpL,EAAEypL,aAAQ,OAAO,IAASvnL,GAAGA,KAAKlC,EAAEA,EAAExW,WAAWwW,IAAI+4B,EAAE,CAAC,OAAO,KAAK,EAErJ,KAAK,GAAoG,KAAK,GAAG,OAF6C,KAAK,EAAgB,GAAG,OAAjBA,EAAEt2C,EAAEgpL,WAAqB,CAACzrK,EAAEvd,EAAE+jM,cAAc,IAAIjqM,EAAE,OAAO2lB,EAAEA,EAAEskL,cAAcxmL,EAAEkC,EAAEzf,EAAEzE,KAAK,IAAIoZ,EAAE3U,EAAE+/L,YAA+B,GAAnB//L,EAAE+/L,YAAY,KAAQ,OAAOprL,EAAE,CAAgF,IAA/E2hC,EAAEolJ,IAAIn+K,EAAE,UAAUkC,GAAG,UAAUlC,EAAEhiB,MAAM,MAAMgiB,EAAE5f,MAAMsmL,GAAG3tI,EAAE/4B,GAAGgrK,GAAG9oK,EAAE3lB,GAAGkG,EAAEuoL,GAAG9oK,EAAElC,GAAOzjB,EAAE,EAAEA,EAAE6a,EAAE/c,OAAOkC,GAClf,EAAE,CAAC,IAAI9C,EAAE2d,EAAE7a,GAAG42C,EAAE/7B,EAAE7a,EAAE,GAAG,UAAU9C,EAAE87C,GAAGwD,EAAE5F,GAAG,4BAA4B15C,EAAEiuL,GAAG3uI,EAAE5F,GAAG,aAAa15C,EAAEmhD,GAAG7B,EAAE5F,GAAGgwI,EAAGpqI,EAAEt/C,EAAE05C,EAAE1wC,EAAE,CAAC,OAAOyf,GAAG,IAAK,QAAQykK,GAAG5tI,EAAE/4B,GAAG,MAAM,IAAK,WAAWmnK,GAAGpuI,EAAE/4B,GAAG,MAAM,IAAK,SAASkC,EAAE62B,EAAEstI,cAAcmnB,YAAYz0J,EAAEstI,cAAcmnB,cAAcxtL,EAAEytL,SAAmB,OAAVr2L,EAAE4I,EAAE1kB,OAAcsgD,GAAG7C,IAAI/4B,EAAEytL,SAASr2L,GAAE,GAAI8K,MAAMlC,EAAEytL,WAAW,MAAMztL,EAAE+2I,aAAan7G,GAAG7C,IAAI/4B,EAAEytL,SAASztL,EAAE+2I,cAAa,GAAIn7G,GAAG7C,IAAI/4B,EAAEytL,SAASztL,EAAEytL,SAAS,GAAG,IAAG,IAAK,CAAC,CAAC,OAAO,KAAK,EAAE,GAAG,OAAOhrM,EAAEgpL,UAAU,MAAMtrL,MAAMghB,EAAE,MAC/c,YADqd1e,EAAEgpL,UAAUzD,UACjfvlL,EAAE+jM,eAAqB,KAAK,EAA8D,aAA5DztJ,EAAEt2C,EAAEgpL,WAAYqD,UAAU/1I,EAAE+1I,SAAQ,EAAGO,GAAGt2I,EAAEg2I,iBAAsC,KAAK,GAAyD,OAAtD,OAAOtsL,EAAEwqL,gBAAgB+iB,GAAGhvF,KAAIouF,GAAG3sM,EAAEw/E,OAAM,SAAKguH,GAAGxtM,GAAU,KAAK,GAAS,YAANwtM,GAAGxtM,GAAyB,KAAK,GAAG,KAAK,GAAgC,YAA7B2sM,GAAG3sM,EAAE,OAAOA,EAAEwqL,eAAsB,MAAM9sL,MAAMghB,EAAE,KAAM,CAAC,SAAS8uL,GAAG/tL,GAAG,IAAIzf,EAAEyf,EAAEsgL,YAAY,GAAG,OAAO//L,EAAE,CAACyf,EAAEsgL,YAAY,KAAK,IAAIzpJ,EAAE72B,EAAEupK,UAAU,OAAO1yI,IAAIA,EAAE72B,EAAEupK,UAAU,IAAIkjB,IAAIlsM,EAAED,SAAQ,SAASC,GAAG,IAAIud,EAAEkwL,GAAGt0M,KAAK,KAAKsmB,EAAEzf,GAAGs2C,EAAEhgB,IAAIt2B,KAAKs2C,EAAEp2C,IAAIF,GAAGA,EAAE3D,KAAKkhB,EAAEA,GAAG,GAAE,CAAC,CACze,SAASmwL,GAAGjuL,EAAEzf,GAAG,OAAO,OAAOyf,IAAsB,QAAlBA,EAAEA,EAAE+qK,gBAAwB,OAAO/qK,EAAEgrK,cAA+B,QAAlBzqL,EAAEA,EAAEwqL,gBAAwB,OAAOxqL,EAAEyqL,WAAc,CAAC,IAAIkjB,GAAGvnL,KAAKmC,KAAKqlL,GAAG3sB,EAAG4jB,uBAAuBgJ,GAAG5sB,EAAG4nB,kBAAkB9yJ,GAAE,EAAE4vE,GAAE,KAAK9uE,GAAE,KAAK5M,GAAE,EAAE6jK,GAAG,EAAEC,GAAGjS,GAAG,GAAG7lJ,GAAE,EAAE+3J,GAAG,KAAKC,GAAG,EAAEtN,GAAG,EAAEwK,GAAG,EAAE+C,GAAG,EAAEC,GAAG,KAAKZ,GAAG,EAAElC,GAAGlqI,IAAS,SAASitI,KAAK/C,GAAG9sF,KAAI,GAAG,CAAC,IA8BsF8vF,GA9BlFh4J,GAAE,KAAKu1J,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKsC,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAG,EAAG,SAAS/N,KAAK,OAAc,GAAFprJ,GAAMwoE,MAAK,IAAIuwF,GAAGA,GAAGA,GAAGvwF,IAAG,CAC9e,SAAS6iF,GAAG3hL,GAAY,KAAU,GAAnBA,EAAEA,EAAE7I,OAAkB,OAAO,EAAE,KAAU,EAAF6I,GAAK,OAAO,KAAK4+K,KAAK,EAAE,EAAkB,GAAhB,IAAI0Q,KAAKA,GAAGd,IAAO,IAAIvP,GAAGnR,WAAW,CAAC,IAAIyhB,KAAKA,GAAG,OAAOb,GAAGA,GAAG/f,aAAa,GAAG3uK,EAAEsvL,GAAG,IAAI/uM,EAAE,SAASgvM,GAAsD,OAA7C,KAANhvM,IAAIA,KAA8B,KAAPA,GAAbyf,EAAE,SAASA,IAAOA,KAAUzf,EAAE,OAAcA,CAAC,CAA2D,OAA1Dyf,EAAE4+K,KAAY,EAAFtoJ,IAAM,KAAKt2B,EAAEA,EAAEmvK,GAAG,GAAGmgB,IAAatvL,EAAEmvK,GAAVnvK,EAtK3Q,SAAYA,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,QAAQ,OAAO,EAAE,CAsKqJ0vL,CAAG1vL,GAAUsvL,IAAYtvL,CAAC,CACpT,SAAS4hL,GAAG5hL,EAAEzf,EAAEs2C,GAAG,GAAG,GAAGs4J,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKnxM,MAAMghB,EAAE,MAAgB,GAAG,QAAbe,EAAE2vL,GAAG3vL,EAAEzf,IAAe,OAAO,KAAK+uL,GAAGtvK,EAAEzf,EAAEs2C,GAAG72B,IAAIkmG,KAAIwlF,IAAInrM,EAAE,IAAIi2C,IAAGm1J,GAAG3rL,EAAEwqB,KAAI,IAAI1sB,EAAE8gL,KAAK,IAAIr+L,EAAS,EAAF+1C,MAAa,GAAFA,IAAMs5J,GAAG5vL,IAAI6vL,GAAG7vL,EAAE62B,GAAG,IAAIP,KAAIq4J,KAAK5P,UAAe,EAAFzoJ,KAAM,KAAKx4B,GAAG,KAAKA,IAAI,OAAOoxL,GAAGA,GAAG,IAAI3xH,IAAI,CAACv9D,IAAIkvL,GAAGzuM,IAAIuf,IAAI6vL,GAAG7vL,EAAE62B,IAAI63J,GAAG1uL,CAAC,CAAC,SAAS2vL,GAAG3vL,EAAEzf,GAAGyf,EAAE+/K,OAAOx/L,EAAE,IAAIs2C,EAAE72B,EAAE6qK,UAAqC,IAA3B,OAAOh0I,IAAIA,EAAEkpJ,OAAOx/L,GAAGs2C,EAAE72B,EAAMA,EAAEA,EAAEk0E,OAAO,OAAOl0E,GAAGA,EAAE4/K,YAAYr/L,EAAgB,QAAds2C,EAAE72B,EAAE6qK,aAAqBh0I,EAAE+oJ,YAAYr/L,GAAGs2C,EAAE72B,EAAEA,EAAEA,EAAEk0E,OAAO,OAAO,IAAIr9C,EAAE5f,IAAI4f,EAAE0yI,UAAU,IAAI,CAC7e,SAASsmB,GAAG7vL,EAAEzf,GAAG,IAAI,IAAIs2C,EAAE72B,EAAE8vL,aAAahyL,EAAEkC,EAAE6uK,eAAex0L,EAAE2lB,EAAE8uK,YAAY55K,EAAE8K,EAAE+vL,gBAAgBx4M,EAAEyoB,EAAE2uK,aAAa,EAAEp3L,GAAG,CAAC,IAAI05C,EAAE,GAAG89I,GAAGx3L,GAAGwoB,EAAE,GAAGkxB,EAAE70C,EAAE8Y,EAAE+7B,GAAG,IAAI,IAAI70C,GAAG,KAAQ2jB,EAAEjC,IAASiC,EAAE1lB,EAAG,CAAC+B,EAAEmE,EAAEkuL,GAAG1uK,GAAG,IAAIzB,EAAE2wB,GAAE/5B,EAAE+7B,GAAG,IAAI3yB,EAAEliB,EAAE,IAAI,GAAGkiB,EAAEliB,EAAE,KAAK,CAAC,OAAOA,GAAGmE,IAAIyf,EAAE4uK,cAAc7uK,GAAGxoB,IAAIwoB,CAAC,CAAuB,GAAtBjC,EAAE4wK,GAAG1uK,EAAEA,IAAIkmG,GAAE17E,GAAE,GAAGjqC,EAAE0uC,GAAK,IAAInxB,EAAE,OAAO+4B,IAAIA,IAAI0nJ,IAAIjB,GAAGzmJ,GAAG72B,EAAE8vL,aAAa,KAAK9vL,EAAEgwL,iBAAiB,OAAO,CAAC,GAAG,OAAOn5J,EAAE,CAAC,GAAG72B,EAAEgwL,mBAAmBzvM,EAAE,OAAOs2C,IAAI0nJ,IAAIjB,GAAGzmJ,EAAE,CAAC,KAAKt2C,GAAGs2C,EAAE+4J,GAAGl2M,KAAK,KAAKsmB,GAAG,OAAOy+K,IAAIA,GAAG,CAAC5nJ,GAAGgD,GAAGwjJ,GAAGU,GAAGiB,KAAKP,GAAGviM,KAAK26C,GACrfA,EAAE0nJ,IAAI,KAAKh+L,EAAEs2C,EAAEioJ,GAAG,GAAG8Q,GAAGl2M,KAAK,KAAKsmB,KAAK62B,EAzK+F,SAAY72B,GAAG,OAAOA,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,GAAG,QAAQ,MAAM/hB,MAAMghB,EAAE,IAAIe,IAAK,CAyK7TiwL,CAAG1vM,GAAGs2C,EAAEioJ,GAAGjoJ,EAAEq5J,GAAGx2M,KAAK,KAAKsmB,KAAKA,EAAEgwL,iBAAiBzvM,EAAEyf,EAAE8vL,aAAaj5J,CAAC,CAAC,CAC9G,SAASq5J,GAAGlwL,GAAiB,GAAdqvL,IAAI,EAAEE,GAAGD,GAAG,EAAY,GAAFh5J,GAAM,MAAMr4C,MAAMghB,EAAE,MAAM,IAAI1e,EAAEyf,EAAE8vL,aAAa,GAAGK,MAAMnwL,EAAE8vL,eAAevvM,EAAE,OAAO,KAAK,IAAIs2C,EAAE63I,GAAG1uK,EAAEA,IAAIkmG,GAAE17E,GAAE,GAAG,GAAG,IAAIqM,EAAE,OAAO,KAAK,IAAI/4B,EAAE+4B,EAAMx8C,EAAEi8C,GAAEA,IAAG,GAAG,IAAIphC,EAAEk7L,KAAkC,IAA1BlqF,KAAIlmG,GAAGwqB,KAAI1sB,IAAE6wL,KAAK0B,GAAGrwL,EAAElC,UAAUgkC,KAAK,KAAK,CAAC,MAAM7Q,GAAGq/J,GAAGtwL,EAAEixB,EAAE,CAA8D,GAApDuuJ,KAAK2O,GAAG15L,QAAQS,EAAEohC,GAAEj8C,EAAE,OAAO+8C,GAAEt5B,EAAE,GAAGooG,GAAE,KAAK17E,GAAE,EAAE1sB,EAAE04B,IAAWg4J,GAAG9C,GAAI2E,GAAGrwL,EAAE,QAAQ,GAAG,IAAIlC,EAAE,CAAyF,GAAxF,IAAIA,IAAIw4B,IAAG,GAAGt2B,EAAE4sK,UAAU5sK,EAAE4sK,SAAQ,EAAG8O,GAAG17K,EAAE6sK,gBAAwB,KAARh2I,EAAEq4I,GAAGlvK,MAAWlC,EAAEyyL,GAAGvwL,EAAE62B,KAAQ,IAAI/4B,EAAE,MAAMvd,EAAEguM,GAAG8B,GAAGrwL,EAAE,GAAG2rL,GAAG3rL,EAAE62B,GAAGg5J,GAAG7vL,EAAE8+F,MAAKv+G,EAC3c,OAD6cyf,EAAEwwL,aACrfxwL,EAAEvL,QAAQo2K,UAAU7qK,EAAEywL,cAAc55J,EAAS/4B,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM7f,MAAMghB,EAAE,MAAM,KAAK,EACI,KAAK,EAAEyxL,GAAG1wL,GAAG,MADH,KAAK,EAAU,GAAR2rL,GAAG3rL,EAAE62B,IAAS,SAAFA,KAAcA,GAAiB,IAAb/4B,EAAEgwL,GAAG,IAAIhvF,MAAU,CAAC,GAAG,IAAI4vE,GAAG1uK,EAAE,GAAG,MAAyB,KAAnB3lB,EAAE2lB,EAAE6uK,gBAAqBh4I,KAAKA,EAAE,CAAC6qJ,KAAK1hL,EAAE8uK,aAAa9uK,EAAE6uK,eAAex0L,EAAE,KAAK,CAAC2lB,EAAE2wL,cAAcr+K,GAAGo+K,GAAGh3M,KAAK,KAAKsmB,GAAGlC,GAAG,KAAK,CAAC4yL,GAAG1wL,GAAG,MAAM,KAAK,EAAU,GAAR2rL,GAAG3rL,EAAE62B,IAAS,QAAFA,KAAaA,EAAE,MAAqB,IAAf/4B,EAAEkC,EAAEuvK,WAAel1L,GAAG,EAAE,EAAEw8C,GAAG,CAAC,IAAIt/C,EAAE,GAAGw3L,GAAGl4I,GAAG3hC,EAAE,GAAG3d,GAAEA,EAAEumB,EAAEvmB,IAAK8C,IAAIA,EAAE9C,GAAGs/C,IAAI3hC,CAAC,CAClZ,GADmZ2hC,EAAEx8C,EAClZ,IAD4Zw8C,GAAG,KAAXA,EAAEioE,KAAIjoE,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAClfA,EAAE,KAAK,KAAKq3J,GAAGr3J,EAAE,OAAOA,GAAU,CAAC72B,EAAE2wL,cAAcr+K,GAAGo+K,GAAGh3M,KAAK,KAAKsmB,GAAG62B,GAAG,KAAK,CAAC65J,GAAG1wL,GAAG,MAAyB,QAAQ,MAAM/hB,MAAMghB,EAAE,MAAO,CAAW,OAAV4wL,GAAG7vL,EAAE8+F,MAAY9+F,EAAE8vL,eAAevvM,EAAE2vM,GAAGx2M,KAAK,KAAKsmB,GAAG,IAAI,CAAC,SAAS2rL,GAAG3rL,EAAEzf,GAAuD,IAApDA,IAAIkuM,GAAGluM,IAAImrM,GAAG1rL,EAAE6uK,gBAAgBtuL,EAAEyf,EAAE8uK,cAAcvuL,EAAMyf,EAAEA,EAAE+vL,gBAAgB,EAAExvM,GAAG,CAAC,IAAIs2C,EAAE,GAAGk4I,GAAGxuL,GAAGud,EAAE,GAAG+4B,EAAE72B,EAAE62B,IAAI,EAAEt2C,IAAIud,CAAC,CAAC,CAC5U,SAAS8xL,GAAG5vL,GAAG,GAAU,GAAFs2B,GAAM,MAAMr4C,MAAMghB,EAAE,MAAW,GAALkxL,KAAQnwL,IAAIkmG,IAAQlmG,EAAE4uK,aAAapkJ,GAAG,CAAC,IAAIjqC,EAAEiqC,GAAMqM,EAAE05J,GAAGvwL,EAAEzf,GAAQiuM,GAAG9C,KAAgB70J,EAAE05J,GAAGvwL,EAAfzf,EAAEmuL,GAAG1uK,EAAEzf,IAAa,MAAgBs2C,EAAE05J,GAAGvwL,EAAfzf,EAAEmuL,GAAG1uK,EAAE,IAAgH,GAAnG,IAAIA,EAAEiX,KAAK,IAAI4f,IAAIP,IAAG,GAAGt2B,EAAE4sK,UAAU5sK,EAAE4sK,SAAQ,EAAG8O,GAAG17K,EAAE6sK,gBAAwB,KAARtsL,EAAE2uL,GAAGlvK,MAAW62B,EAAE05J,GAAGvwL,EAAEzf,KAAQ,IAAIs2C,EAAE,MAAMA,EAAE03J,GAAG8B,GAAGrwL,EAAE,GAAG2rL,GAAG3rL,EAAEzf,GAAGsvM,GAAG7vL,EAAE8+F,MAAKjoE,EAAuE,OAArE72B,EAAEwwL,aAAaxwL,EAAEvL,QAAQo2K,UAAU7qK,EAAEywL,cAAclwM,EAAEmwM,GAAG1wL,GAAG6vL,GAAG7vL,EAAE8+F,MAAY,IAAI,CACvR,SAAS8xF,GAAG5wL,EAAEzf,GAAG,IAAIs2C,EAAEP,GAAEA,IAAG,EAAE,IAAI,OAAOt2B,EAAEzf,EAAE,CAAC,QAAY,KAAJ+1C,GAAEO,KAAU83J,KAAK5P,KAAK,CAAC,CAAC,SAAS8R,GAAG7wL,EAAEzf,GAAG,IAAIs2C,EAAEP,GAAEA,KAAI,EAAEA,IAAG,EAAE,IAAI,OAAOt2B,EAAEzf,EAAE,CAAC,QAAY,KAAJ+1C,GAAEO,KAAU83J,KAAK5P,KAAK,CAAC,CAAC,SAAS4K,GAAG3pL,EAAEzf,GAAGo2C,GAAE23J,GAAGD,IAAIA,IAAI9tM,EAAEiuM,IAAIjuM,CAAC,CAAC,SAASsrM,KAAKwC,GAAGC,GAAG75L,QAAQm8B,GAAE09J,GAAG,CAC/V,SAAS+B,GAAGrwL,EAAEzf,GAAGyf,EAAEwwL,aAAa,KAAKxwL,EAAEywL,cAAc,EAAE,IAAI55J,EAAE72B,EAAE2wL,cAAiD,IAAlC,IAAI95J,IAAI72B,EAAE2wL,eAAe,EAAElV,GAAG5kJ,IAAO,OAAOO,GAAE,IAAIP,EAAEO,GAAE88C,OAAO,OAAOr9C,GAAG,CAAC,IAAI/4B,EAAE+4B,EAAE,OAAO/4B,EAAEmZ,KAAK,KAAK,EAA6B,OAA3BnZ,EAAEA,EAAEhiB,KAAK+yI,oBAAwC8tD,KAAK,MAAM,KAAK,EAAE7qJ,KAAKlB,GAAEvmB,IAAGumB,GAAE8F,IAAGuuJ,KAAK,MAAM,KAAK,EAAEb,GAAGtmL,GAAG,MAAM,KAAK,EAAEg0B,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGlB,GAAElyB,IAAG,MAAM,KAAK,GAAG+gL,GAAG3hL,GAAG,MAAM,KAAK,GAAG,KAAK,GAAG+tL,KAAKh1J,EAAEA,EAAEq9C,MAAM,CAACgyB,GAAElmG,EAAEo3B,GAAEgsJ,GAAGpjL,EAAEvL,QAAQ,MAAM+1B,GAAE6jK,GAAGG,GAAGjuM,EAAEi2C,GAAE,EAAE+3J,GAAG,KAAKE,GAAG/C,GAAGxK,GAAG,CAAC,CACxc,SAASoP,GAAGtwL,EAAEzf,GAAG,OAAE,CAAC,IAAIs2C,EAAEO,GAAE,IAAuB,GAAnBooJ,KAAK2F,GAAG1wL,QAAQsxL,GAAMR,GAAG,CAAC,IAAI,IAAIznL,EAAEo4B,GAAE60I,cAAc,OAAOjtK,GAAG,CAAC,IAAIzjB,EAAEyjB,EAAEyzG,MAAM,OAAOl3H,IAAIA,EAAEg1K,QAAQ,MAAMvxJ,EAAEA,EAAExW,IAAI,CAACi+L,IAAG,CAAE,CAAuC,GAAtCD,GAAG,EAAEruJ,GAAEF,GAAEb,GAAE,KAAKsvJ,IAAG,EAAG4I,GAAG35L,QAAQ,KAAQ,OAAOoiC,GAAG,OAAOA,EAAEq9C,OAAO,CAAC19C,GAAE,EAAE+3J,GAAGhuM,EAAE62C,GAAE,KAAK,KAAK,CAACp3B,EAAE,CAAC,IAAI9K,EAAE8K,EAAEzoB,EAAEs/C,EAAEq9C,OAAOjjD,EAAE4F,EAAE92B,EAAExf,EAAoD,GAAlDA,EAAEiqC,GAAEyG,EAAE5F,OAAO,KAAK4F,EAAEkyJ,YAAYlyJ,EAAEgyJ,WAAW,KAAQ,OAAOljL,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAEnjB,KAAK,CAAC,IAAIR,EAAE2jB,EAAE,KAAe,EAAPkxB,EAAE95B,MAAQ,CAAC,IAAImH,EAAE2yB,EAAE45I,UAAUvsK,GAAG2yB,EAAEqvJ,YAAYhiL,EAAEgiL,YAAYrvJ,EAAE85I,cAAczsK,EAAEysK,cAAc95I,EAAE8uJ,MAAMzhL,EAAEyhL,QACpf9uJ,EAAEqvJ,YAAY,KAAKrvJ,EAAE85I,cAAc,KAAK,CAAC,IAAIt0I,KAAiB,EAAV/3B,GAAEjK,SAAW7a,EAAErC,EAAE,EAAE,CAAC,IAAI0+C,EAAE,GAAGA,EAAE,KAAKr8C,EAAEq9B,IAAI,CAAC,IAAIh1B,EAAErI,EAAEmxL,cAAc,GAAG,OAAO9oL,EAAEg0C,EAAE,OAAOh0C,EAAE+oL,eAAqB,CAAC,IAAIh6I,EAAEp3C,EAAE0qM,cAAcruJ,OAAE,IAASjF,EAAE5oC,YAAY,IAAK4oC,EAAEu5J,6BAA8B9zJ,EAAO,CAAC,CAAC,GAAGR,EAAE,CAAC,IAAIiB,EAAEt9C,EAAE0mM,YAAY,GAAG,OAAOppJ,EAAE,CAAC,IAAIX,EAAE,IAAIgnC,IAAIhnC,EAAE91C,IAAIrE,GAAGxC,EAAE0mM,YAAY/pJ,CAAC,MAAMW,EAAEz2C,IAAIrE,GAAG,KAAe,EAAPxC,EAAEud,MAAQ,CAA2C,GAA1Cvd,EAAEyxC,OAAO,GAAG4F,EAAE5F,OAAO,MAAM4F,EAAE5F,QAAQ,KAAQ,IAAI4F,EAAEha,IAAI,GAAG,OAAOga,EAAE45I,UAAU55I,EAAEha,IAAI,OAAO,CAAC,IAAI7Y,EAAEwiL,IAAI,EAAE,GAAGxiL,EAAE6Y,IAAI,EAAE8pK,GAAG9vJ,EAAE7yB,EAAE,CAAC6yB,EAAE8uJ,OAAO,EAAE,MAAM//K,CAAC,CAACD,OAC5f,EAAOkxB,EAAE1wC,EAAE,IAAIyT,EAAEkB,EAAE47L,UAA+G,GAArG,OAAO98L,GAAGA,EAAEkB,EAAE47L,UAAU,IAAI7E,GAAGlsL,EAAE,IAAIw9D,IAAIvpE,EAAE0e,IAAIt2B,EAAE2jB,SAAgB,KAAXA,EAAE/L,EAAExY,IAAIY,MAAgB2jB,EAAE,IAAIw9D,IAAIvpE,EAAE0e,IAAIt2B,EAAE2jB,KAASA,EAAE8W,IAAIoa,GAAG,CAAClxB,EAAEtf,IAAIwwC,GAAG,IAAIxxB,EAAEsxL,GAAGr3M,KAAK,KAAKwb,EAAE9Y,EAAE60C,GAAG70C,EAAEQ,KAAK6iB,EAAEA,EAAE,CAAC7lB,EAAEyxC,OAAO,KAAKzxC,EAAEmmM,MAAMx/L,EAAE,MAAMyf,CAAC,CAACpmB,EAAEA,EAAEs6F,MAAM,OAAO,OAAOt6F,GAAGmmB,EAAE9hB,OAAOklL,EAAGlyI,EAAEn1C,OAAO,qBAAqB,wLAAwL,CAAC,IAAI06C,KAAIA,GAAE,GAAGz2B,EAAEgsL,GAAGhsL,EAAEkxB,GAAGr3C,EACpfrC,EAAE,EAAE,CAAC,OAAOqC,EAAEq9B,KAAK,KAAK,EAAE/hB,EAAE6K,EAAEnmB,EAAEyxC,OAAO,KAAK9qC,IAAIA,EAAE3G,EAAEmmM,OAAOx/L,EAAkBygM,GAAGpnM,EAAbsyM,GAAGtyM,EAAEsb,EAAE3U,IAAW,MAAMyf,EAAE,KAAK,EAAE9K,EAAE6K,EAAE,IAAI+2B,EAAEl9C,EAAEkC,KAAKu6C,EAAEz8C,EAAE2vL,UAAU,KAAgB,GAAR3vL,EAAEyxC,OAAY,mBAAoByL,EAAEm4F,2BAA0B,OAAO54F,GAAG,mBAAoBA,EAAEi2J,mBAAoB,OAAOC,IAAKA,GAAG11K,IAAIwf,KAAK,CAACz8C,EAAEyxC,OAAO,KAAK9qC,IAAIA,EAAE3G,EAAEmmM,OAAOx/L,EAAkBygM,GAAGpnM,EAAbyyM,GAAGzyM,EAAEsb,EAAE3U,IAAW,MAAMyf,CAAC,EAAEpmB,EAAEA,EAAEs6F,MAAM,OAAO,OAAOt6F,EAAE,CAACo3M,GAAGn6J,EAAE,CAAC,MAAMo6J,GAAI1wM,EAAE0wM,EAAG75J,KAAIP,GAAG,OAAOA,IAAIO,GAAEP,EAAEA,EAAEq9C,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAC7b,SAASk8G,KAAK,IAAIpwL,EAAEmuL,GAAG15L,QAAsB,OAAd05L,GAAG15L,QAAQsxL,GAAU,OAAO/lL,EAAE+lL,GAAG/lL,CAAC,CAAC,SAASuwL,GAAGvwL,EAAEzf,GAAG,IAAIs2C,EAAEP,GAAEA,IAAG,GAAG,IAAIx4B,EAAEsyL,KAA2B,IAAtBlqF,KAAIlmG,GAAGwqB,KAAIjqC,GAAG8vM,GAAGrwL,EAAEzf,SAAU2wM,KAAK,KAAK,CAAC,MAAM72M,GAAGi2M,GAAGtwL,EAAE3lB,EAAE,CAAgC,GAAtBmlM,KAAKlpJ,GAAEO,EAAEs3J,GAAG15L,QAAQqJ,EAAK,OAAOs5B,GAAE,MAAMn5C,MAAMghB,EAAE,MAAiB,OAAXinG,GAAE,KAAK17E,GAAE,EAASgM,EAAC,CAAC,SAAS06J,KAAK,KAAK,OAAO95J,IAAG+5J,GAAG/5J,GAAE,CAAC,SAAS0K,KAAK,KAAK,OAAO1K,KAAIomJ,MAAM2T,GAAG/5J,GAAE,CAAC,SAAS+5J,GAAGnxL,GAAG,IAAIzf,EAAEquM,GAAG5uL,EAAE6qK,UAAU7qK,EAAEquL,IAAIruL,EAAEskL,cAActkL,EAAE6kL,aAAa,OAAOtkM,EAAEywM,GAAGhxL,GAAGo3B,GAAE72C,EAAE6tM,GAAG35L,QAAQ,IAAI,CAChb,SAASu8L,GAAGhxL,GAAG,IAAIzf,EAAEyf,EAAE,EAAE,CAAC,IAAI62B,EAAEt2C,EAAEsqL,UAAqB,GAAX7qK,EAAEzf,EAAE2zF,OAAuB,KAAR3zF,EAAE8qC,MACW,CAAS,GAAG,QAAXwL,EAAEi1J,GAAGvrM,IAAkC,OAAlBs2C,EAAExL,OAAO,UAAK+L,GAAEP,GAAS,OAAO72B,IAAIA,EAAEmjL,YAAYnjL,EAAEijL,WAAW,KAAKjjL,EAAEqrB,OAAO,KAAK,KADvG,CAAc,GAAG,QAAhBwL,EAAEw0J,GAAGx0J,EAAEt2C,EAAE8tM,KAAqB,YAAJj3J,GAAEP,GAAa,GAAG,MAAPA,EAAEt2C,GAAY02B,KAAK,KAAK4f,EAAE5f,KAAK,OAAO4f,EAAEk0I,eAAuB,WAAHsjB,MAA4B,EAAPx3J,EAAE1/B,MAAQ,CAAC,IAAI,IAAI2G,EAAE,EAAEzjB,EAAEw8C,EAAEkpC,MAAM,OAAO1lF,GAAGyjB,GAAGzjB,EAAE0lM,MAAM1lM,EAAEulM,WAAWvlM,EAAEA,EAAE4wL,QAAQp0I,EAAE+oJ,WAAW9hL,CAAC,CAAC,OAAOkC,KAAgB,KAARA,EAAEqrB,SAAc,OAAOrrB,EAAEmjL,cAAcnjL,EAAEmjL,YAAY5iM,EAAE4iM,aAAa,OAAO5iM,EAAE0iM,aAAa,OAAOjjL,EAAEijL,aAAajjL,EAAEijL,WAAWC,WAAW3iM,EAAE4iM,aAAanjL,EAAEijL,WAAW1iM,EAAE0iM,YAAY,EAAE1iM,EAAE8qC,QAAQ,OAC/errB,EAAEijL,WAAWjjL,EAAEijL,WAAWC,WAAW3iM,EAAEyf,EAAEmjL,YAAY5iM,EAAEyf,EAAEijL,WAAW1iM,GAAG,CAA0H,GAAG,QAAfA,EAAEA,EAAE0qL,SAAyB,YAAJ7zI,GAAE72C,GAAS62C,GAAE72C,EAAEyf,CAAC,OAAO,OAAOzf,GAAG,IAAIi2C,KAAIA,GAAE,EAAE,CAAC,SAASk6J,GAAG1wL,GAAG,IAAIzf,EAAEq+L,KAA8B,OAAzBC,GAAG,GAAGuS,GAAG13M,KAAK,KAAKsmB,EAAEzf,IAAW,IAAI,CAC1T,SAAS6wM,GAAGpxL,EAAEzf,GAAG,GAAG4vM,WAAW,OAAOrB,IAAI,GAAU,GAAFx4J,GAAM,MAAMr4C,MAAMghB,EAAE,MAAM,IAAI43B,EAAE72B,EAAEwwL,aAAa,GAAG,OAAO35J,EAAE,OAAO,KAA2C,GAAtC72B,EAAEwwL,aAAa,KAAKxwL,EAAEywL,cAAc,EAAK55J,IAAI72B,EAAEvL,QAAQ,MAAMxW,MAAMghB,EAAE,MAAMe,EAAE8vL,aAAa,KAAK,IAAIhyL,EAAE+4B,EAAEkpJ,MAAMlpJ,EAAE+oJ,WAAWvlM,EAAEyjB,EAAE5I,EAAE8K,EAAE2uK,cAAct0L,EAAE2lB,EAAE2uK,aAAat0L,EAAE2lB,EAAE6uK,eAAe,EAAE7uK,EAAE8uK,YAAY,EAAE9uK,EAAE4uK,cAAcv0L,EAAE2lB,EAAE6mL,kBAAkBxsM,EAAE2lB,EAAEgvK,gBAAgB30L,EAAEA,EAAE2lB,EAAEivK,cAAc,IAAI,IAAI13L,EAAEyoB,EAAEuvK,WAAWt+I,EAAEjxB,EAAE+vL,gBAAgB,EAAE76L,GAAG,CAAC,IAAI6K,EAAE,GAAGgvK,GAAG75K,GAAG9Y,EAAE,GAAG2jB,EAAE1lB,EAAE0lB,GAAG,EAAExoB,EAAEwoB,IAAI,EAAEkxB,EAAElxB,IAAI,EAAE7K,IAAI9Y,CAAC,CACpV,GADqV,OACjf8yM,MAAW,GAAFpxL,IAAOoxL,GAAGr4K,IAAI7W,IAAIkvL,GAAGp4K,OAAO9W,GAAGA,IAAIkmG,KAAI9uE,GAAE8uE,GAAE,KAAK17E,GAAE,GAAG,EAAEqM,EAAExL,MAAM,OAAOwL,EAAEosJ,YAAYpsJ,EAAEosJ,WAAWC,WAAWrsJ,EAAE/4B,EAAE+4B,EAAEssJ,aAAarlL,EAAE+4B,EAAE/4B,EAAE+4B,EAAEssJ,YAAe,OAAOrlL,EAAE,CAAwC,GAAvCzjB,EAAEi8C,GAAEA,IAAG,GAAG83J,GAAG35L,QAAQ,KAAK2mL,GAAGlnJ,GAAa8kJ,GAAVzhM,EAAEuhM,MAAc,CAAC,GAAG,mBAAmBvhM,EAAE05C,EAAE,CAACgT,MAAM1sD,EAAEiiM,eAAet1I,IAAI3sD,EAAEkiM,mBAAmBz5K,EAAE,GAAGixB,GAAGA,EAAE15C,EAAEmtL,gBAAgBzzI,EAAE0oJ,aAAa9qL,QAAQzS,EAAE60C,EAAE2oJ,cAAc3oJ,EAAE2oJ,iBAAiB,IAAIx9L,EAAEi1M,WAAW,CAACpgK,EAAE70C,EAAEs9L,WAAWxkL,EAAE9Y,EAAEy9L,aAAa95K,EAAE3jB,EAAE09L,UAAU19L,EAAEA,EAAE29L,YAAY,IAAI9oJ,EAAE0oG,SAAS55H,EAAE45H,QAAQ,CAAC,MAAMs3D,GAAIhgK,EAAE,KACnf,MAAMjxB,CAAC,CAAC,IAAI1B,EAAE,EAAEm4B,GAAG,EAAE78C,GAAG,EAAEq8C,EAAE,EAAEh0C,EAAE,EAAE+uC,EAAEz5C,EAAE2/C,EAAE,KAAK32C,EAAE,OAAO,CAAC,IAAI,IAAIg2C,EAAKvF,IAAIC,GAAG,IAAI/7B,GAAG,IAAI87B,EAAE2oG,WAAWljG,EAAEn4B,EAAEpJ,GAAG87B,IAAIjxB,GAAG,IAAI3jB,GAAG,IAAI40C,EAAE2oG,WAAW//I,EAAE0kB,EAAEliB,GAAG,IAAI40C,EAAE2oG,WAAWr7H,GAAG0yB,EAAE80I,UAAU3tL,QAAW,QAAQo+C,EAAEvF,EAAE00I,aAAkBxuI,EAAElG,EAAEA,EAAEuF,EAAE,OAAO,CAAC,GAAGvF,IAAIz5C,EAAE,MAAMgJ,EAA8C,GAA5C22C,IAAIjG,KAAKgF,IAAI/gC,IAAIuhC,EAAEn4B,GAAG44B,IAAIn3B,KAAK9d,IAAI7F,IAAIxC,EAAE0kB,GAAM,QAAQi4B,EAAEvF,EAAE2nJ,aAAa,MAAUzhJ,GAAJlG,EAAEkG,GAAMulD,UAAU,CAACzrD,EAAEuF,CAAC,CAACtF,GAAG,IAAIwF,IAAI,IAAI78C,EAAE,KAAK,CAACqqD,MAAMxN,EAAEyN,IAAItqD,EAAE,MAAMq3C,EAAE,KAAKA,EAAEA,GAAG,CAACgT,MAAM,EAAEC,IAAI,EAAE,MAAMjT,EAAE,KAAKoqJ,GAAG,CAACiW,YAAY/5M,EAAEg6M,eAAetgK,GAAGiD,IAAG,EAAGs7J,GAAG,KAAKC,IAAG,EAAG74J,GAAE94B,EAAE,OAAO0zL,IAAI,CAAC,MAAMP,GAAI,GAAG,OACvgBr6J,GAAE,MAAM34C,MAAMghB,EAAE,MAAM2tL,GAAGh2J,GAAEq6J,GAAIr6J,GAAEA,GAAEssJ,UAAU,QAAO,OAAOtsJ,IAAG44J,GAAG,KAAK54J,GAAE94B,EAAE,OAAO,IAAIvmB,EAAEyoB,EAAE,OAAO42B,IAAG,CAAC,IAAIx4B,EAAEw4B,GAAEvL,MAA+B,GAAvB,GAAFjtB,GAAMs6B,GAAG9B,GAAE2yI,UAAU,IAAS,IAAFnrK,EAAM,CAAC,IAAIpK,EAAE4iC,GAAEi0I,UAAU,GAAG,OAAO72K,EAAE,CAAC,IAAIyL,EAAEzL,EAAEoH,IAAI,OAAOqE,IAAI,mBAAoBA,EAAEA,EAAE,MAAMA,EAAEhL,QAAQ,KAAK,CAAC,CAAC,OAAS,KAAF2J,GAAQ,KAAK,EAAEovL,GAAG52J,IAAGA,GAAEvL,QAAQ,EAAE,MAAM,KAAK,EAAEmiK,GAAG52J,IAAGA,GAAEvL,QAAQ,EAAEwiK,GAAGj3J,GAAEi0I,UAAUj0I,IAAG,MAAM,KAAK,KAAKA,GAAEvL,QAAQ,KAAK,MAAM,KAAK,KAAKuL,GAAEvL,QAAQ,KAAKwiK,GAAGj3J,GAAEi0I,UAAUj0I,IAAG,MAAM,KAAK,EAAEi3J,GAAGj3J,GAAEi0I,UAAUj0I,IAAG,MAAM,KAAK,EAAMjD,GAAGp8C,EAAP05C,EAAE2F,IAAU,IAAIR,EAAEnF,EAAE45I,UAAUyiB,GAAGr8J,GAAG,OACnfmF,GAAGk3J,GAAGl3J,GAAGQ,GAAEA,GAAEssJ,UAAU,CAAC,CAAC,MAAM+N,GAAI,GAAG,OAAOr6J,GAAE,MAAM34C,MAAMghB,EAAE,MAAM2tL,GAAGh2J,GAAEq6J,GAAIr6J,GAAEA,GAAEssJ,UAAU,QAAO,OAAOtsJ,IAAkD,GAA/Cn3B,EAAE47K,GAAGrnL,EAAE8kL,KAAK16K,EAAEqB,EAAE6xL,YAAY/5M,EAAEkoB,EAAE8xL,eAAkBv9L,IAAIoK,GAAGA,GAAGA,EAAEsmK,eAAekU,GAAGx6K,EAAEsmK,cAAcjmF,gBAAgBrgF,GAAG,CAAC,OAAO7mB,GAAGyhM,GAAG56K,KAAKpK,EAAEzc,EAAE0sD,WAAc,KAARxkC,EAAEloB,EAAE2sD,OAAiBzkC,EAAEzL,GAAG,mBAAmBoK,GAAGA,EAAEo7K,eAAexlL,EAAEoK,EAAEq7K,aAAa9yK,KAAKhZ,IAAI8R,EAAErB,EAAEhlB,MAAMjB,UAAUsnB,GAAGzL,EAAEoK,EAAEsmK,eAAehnL,WAAWsW,EAAE2lL,aAAa9qL,QAAS+qL,eAAen6K,EAAEA,EAAEm6K,eAAe3oJ,EAAE7yB,EAAE+mK,YAAYhtL,OAAOi+C,EAAEzvB,KAAKhZ,IAAIpW,EAAE0sD,MAAMhT,GAAG15C,OAAE,IACpfA,EAAE2sD,IAAI9N,EAAEzvB,KAAKhZ,IAAIpW,EAAE2sD,IAAIjT,IAAIxxB,EAAEkiJ,QAAQvrH,EAAE7+C,IAAI05C,EAAE15C,EAAEA,EAAE6+C,EAAEA,EAAEnF,GAAGA,EAAEynJ,GAAGt6K,EAAEg4B,GAAGlhC,EAAEwjL,GAAGt6K,EAAE7mB,GAAG05C,GAAG/7B,IAAI,IAAIuK,EAAE4xL,YAAY5xL,EAAEi6K,aAAazoJ,EAAEzV,MAAM/b,EAAEo6K,eAAe5oJ,EAAE9uB,QAAQ1C,EAAEq6K,YAAY5kL,EAAEsmB,MAAM/b,EAAEs6K,cAAc7kL,EAAEiN,WAAUnO,EAAEA,EAAEkhJ,eAAgBu8C,SAASxgK,EAAEzV,KAAKyV,EAAE9uB,QAAQ1C,EAAEiyL,kBAAkBt7J,EAAE7+C,GAAGkoB,EAAEkyL,SAAS39L,GAAGyL,EAAEkiJ,OAAOzsJ,EAAEsmB,KAAKtmB,EAAEiN,UAAUnO,EAAE49L,OAAO18L,EAAEsmB,KAAKtmB,EAAEiN,QAAQ1C,EAAEkyL,SAAS39L,OAAQA,EAAE,GAAG,IAAIyL,EAAErB,EAAEqB,EAAEA,EAAEg9E,YAAY,IAAIh9E,EAAEk6H,UAAU3lI,EAAE9X,KAAK,CAACoQ,QAAQmT,EAAEsmB,KAAKtmB,EAAE8+E,WAAW1zC,IAAIprC,EAAEi/E,YAAmD,IAAvC,mBAAoBtgF,EAAE/b,OAAO+b,EAAE/b,QAAY+b,EACrf,EAAEA,EAAEpK,EAAE7b,OAAOimB,KAAIqB,EAAEzL,EAAEoK,IAAK9R,QAAQiyF,WAAW9+E,EAAEsmB,KAAKtmB,EAAEnT,QAAQoyF,UAAUj/E,EAAEorC,GAAG,CAAC3W,KAAKknJ,GAAGC,GAAGD,GAAG,KAAKp7K,EAAEvL,QAAQoiC,EAAED,GAAE94B,EAAE,OAAO,IAAIM,EAAE4B,EAAE,OAAO42B,IAAG,CAAC,IAAIE,EAAEF,GAAEvL,MAAgC,GAAxB,GAAFyL,GAAMi2J,GAAG3uL,EAAEw4B,GAAEi0I,UAAUj0I,IAAQ,IAAFE,EAAM,CAAC9iC,OAAE,EAAO,IAAIqiC,EAAEO,GAAEx7B,IAAI,GAAG,OAAOi7B,EAAE,CAAC,IAAIsK,EAAE/J,GAAE2yI,UAAiB3yI,GAAE3f,IAA8BjjB,EAAE2sC,EAAE,mBAAoBtK,EAAEA,EAAEriC,GAAGqiC,EAAE5hC,QAAQT,CAAC,CAAC,CAAC4iC,GAAEA,GAAEssJ,UAAU,CAAC,CAAC,MAAM+N,GAAI,GAAG,OAAOr6J,GAAE,MAAM34C,MAAMghB,EAAE,MAAM2tL,GAAGh2J,GAAEq6J,GAAIr6J,GAAEA,GAAEssJ,UAAU,QAAO,OAAOtsJ,IAAGA,GAAE,KAAK4nJ,KAAKloJ,GAAEj8C,CAAC,MAAM2lB,EAAEvL,QAAQoiC,EAAE,GAAGg4J,GAAGA,IAAG,EAAGC,GAAG9uL,EAAE+uL,GAAGxuM,OAAO,IAAIq2C,GAAE94B,EAAE,OAAO84B,IAAGr2C,EACpfq2C,GAAEssJ,WAAWtsJ,GAAEssJ,WAAW,KAAa,EAARtsJ,GAAEvL,SAAUyL,EAAEF,IAAIq0I,QAAQ,KAAKn0I,EAAEyyI,UAAU,MAAM3yI,GAAEr2C,EAAqF,GAAlE,KAAjBud,EAAEkC,EAAE2uK,gBAAqB4d,GAAG,MAAM,IAAIzuL,EAAEkC,IAAIovL,GAAGD,MAAMA,GAAG,EAAEC,GAAGpvL,GAAGmvL,GAAG,EAAEt4J,EAAEA,EAAE0yI,UAAa4T,IAAI,mBAAoBA,GAAG0U,kBAAkB,IAAI1U,GAAG0U,kBAAkB3U,GAAGrmJ,OAAE,IAAO,IAAMA,EAAEpiC,QAAQ42B,OAAU,CAAC,MAAM4lK,GAAI,CAAW,GAAVpB,GAAG7vL,EAAE8+F,MAAQqtF,GAAG,MAAMA,IAAG,EAAGnsL,EAAEosL,GAAGA,GAAG,KAAKpsL,EAAE,OAAU,EAAFs2B,IAAiByoJ,KAAL,IAAqB,CACtX,SAASyS,KAAK,KAAK,OAAO56J,IAAG,CAAC,IAAI52B,EAAE42B,GAAEi0I,UAAU4kB,IAAI,OAAOD,KAAkB,EAAR54J,GAAEvL,MAAS6/I,GAAGt0I,GAAE44J,MAAMC,IAAG,GAAI,KAAK74J,GAAE3f,KAAKg3K,GAAGjuL,EAAE42B,KAAIs0I,GAAGt0I,GAAE44J,MAAMC,IAAG,IAAK,IAAIlvM,EAAEq2C,GAAEvL,MAAa,IAAF9qC,GAAQssM,GAAG7sL,EAAE42B,MAAU,IAAFr2C,IAAQsuM,KAAKA,IAAG,EAAG/P,GAAG,IAAG,WAAgB,OAALqR,KAAY,IAAI,KAAIv5J,GAAEA,GAAEssJ,UAAU,CAAC,CAAC,SAASiN,KAAK,GAAG,KAAKpB,GAAG,CAAC,IAAI/uL,EAAE,GAAG+uL,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUlQ,GAAG7+K,EAAE8xL,GAAG,CAAC,OAAM,CAAE,CAAC,SAAS7E,GAAGjtL,EAAEzf,GAAGyuM,GAAG9yM,KAAKqE,EAAEyf,GAAG6uL,KAAKA,IAAG,EAAG/P,GAAG,IAAG,WAAgB,OAALqR,KAAY,IAAI,IAAG,CAAC,SAASnD,GAAGhtL,EAAEzf,GAAG0uM,GAAG/yM,KAAKqE,EAAEyf,GAAG6uL,KAAKA,IAAG,EAAG/P,GAAG,IAAG,WAAgB,OAALqR,KAAY,IAAI,IAAG,CAChe,SAAS2B,KAAK,GAAG,OAAOhD,GAAG,OAAM,EAAG,IAAI9uL,EAAE8uL,GAAW,GAARA,GAAG,KAAe,GAAFx4J,GAAM,MAAMr4C,MAAMghB,EAAE,MAAM,IAAI1e,EAAE+1C,GAAEA,IAAG,GAAG,IAAIO,EAAEo4J,GAAGA,GAAG,GAAG,IAAI,IAAInxL,EAAE,EAAEA,EAAE+4B,EAAE1+C,OAAO2lB,GAAG,EAAE,CAAC,IAAIzjB,EAAEw8C,EAAE/4B,GAAG5I,EAAE2hC,EAAE/4B,EAAE,GAAGvmB,EAAE8C,EAAEktM,QAAyB,GAAjBltM,EAAEktM,aAAQ,EAAU,mBAAoBhwM,EAAE,IAAIA,GAAG,CAAC,MAAMwoB,GAAG,GAAG,OAAO7K,EAAE,MAAMjX,MAAMghB,EAAE,MAAM2tL,GAAG13L,EAAE6K,EAAE,CAAC,CAAY,IAAX82B,EAAEm4J,GAAGA,GAAG,GAAOlxL,EAAE,EAAEA,EAAE+4B,EAAE1+C,OAAO2lB,GAAG,EAAE,CAACzjB,EAAEw8C,EAAE/4B,GAAG5I,EAAE2hC,EAAE/4B,EAAE,GAAG,IAAI,IAAImzB,EAAE52C,EAAEnB,OAAOmB,EAAEktM,QAAQt2J,GAAG,CAAC,MAAMlxB,GAAG,GAAG,OAAO7K,EAAE,MAAMjX,MAAMghB,EAAE,MAAM2tL,GAAG13L,EAAE6K,EAAE,CAAC,CAAC,IAAIkxB,EAAEjxB,EAAEvL,QAAQ0uL,YAAY,OAAOlyJ,GAAGjxB,EAAEixB,EAAEiyJ,WAAWjyJ,EAAEiyJ,WAAW,KAAa,EAARjyJ,EAAE5F,QAAU4F,EAAEg6I,QACjf,KAAKh6I,EAAEs4I,UAAU,MAAMt4I,EAAEjxB,EAAW,OAATs2B,GAAE/1C,EAAEw+L,MAAW,CAAE,CAAC,SAASgT,GAAG/xL,EAAEzf,EAAEs2C,GAAyBkqJ,GAAG/gL,EAAfzf,EAAE2rM,GAAGlsL,EAAfzf,EAAEwrM,GAAGl1J,EAAEt2C,GAAY,IAAWA,EAAEmhM,KAAe,QAAV1hL,EAAE2vL,GAAG3vL,EAAE,MAAcsvK,GAAGtvK,EAAE,EAAEzf,GAAGsvM,GAAG7vL,EAAEzf,GAAG,CAC5I,SAASqsM,GAAG5sL,EAAEzf,GAAG,GAAG,IAAIyf,EAAEiX,IAAI86K,GAAG/xL,EAAEA,EAAEzf,QAAQ,IAAI,IAAIs2C,EAAE72B,EAAEk0E,OAAO,OAAOr9C,GAAG,CAAC,GAAG,IAAIA,EAAE5f,IAAI,CAAC86K,GAAGl7J,EAAE72B,EAAEzf,GAAG,KAAK,CAAM,GAAG,IAAIs2C,EAAE5f,IAAI,CAAC,IAAInZ,EAAE+4B,EAAE0yI,UAAU,GAAG,mBAAoB1yI,EAAE/6C,KAAKmzI,0BAA0B,mBAAoBnxH,EAAEwuL,oBAAoB,OAAOC,KAAKA,GAAG11K,IAAI/Y,IAAI,CAAW,IAAIzjB,EAAEgyM,GAAGx1J,EAAnB72B,EAAE+rL,GAAGxrM,EAAEyf,GAAgB,GAA4B,GAAzB+gL,GAAGlqJ,EAAEx8C,GAAGA,EAAEqnM,KAAkB,QAAb7qJ,EAAE84J,GAAG94J,EAAE,IAAey4I,GAAGz4I,EAAE,EAAEx8C,GAAGw1M,GAAGh5J,EAAEx8C,QAAQ,GAAG,mBAAoByjB,EAAEwuL,oBAAoB,OAAOC,KAAKA,GAAG11K,IAAI/Y,IAAI,IAAIA,EAAEwuL,kBAAkB/rM,EAAEyf,EAAE,CAAC,MAAM9K,GAAG,CAAC,KAAK,CAAC,CAAC2hC,EAAEA,EAAEq9C,MAAM,CAAC,CAC3d,SAAS68G,GAAG/wL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEkC,EAAE8wL,UAAU,OAAOhzL,GAAGA,EAAEgZ,OAAOv2B,GAAGA,EAAEmhM,KAAK1hL,EAAE8uK,aAAa9uK,EAAE6uK,eAAeh4I,EAAEqvE,KAAIlmG,IAAIwqB,GAAEqM,KAAKA,IAAI,IAAIL,IAAG,IAAIA,KAAM,SAAFhM,MAAcA,IAAG,IAAIs0E,KAAIgvF,GAAGuC,GAAGrwL,EAAE,GAAGyuL,IAAI53J,GAAGg5J,GAAG7vL,EAAEzf,EAAE,CAAC,SAASytM,GAAGhuL,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAEupK,UAAU,OAAO1yI,GAAGA,EAAE/f,OAAOv2B,GAAO,KAAJA,EAAE,KAA0B,GAAhBA,EAAEyf,EAAE7I,MAA0B,EAAF5W,GAAsB,IAAI+uM,KAAKA,GAAGd,IAAuB,KAAnBjuM,EAAE6uL,GAAG,UAAUkgB,OAAY/uM,EAAE,UAA9DA,EAAE,KAAKq+L,KAAK,EAAE,EAA5Br+L,EAAE,GAAqFs2C,EAAE6qJ,KAAe,QAAV1hL,EAAE2vL,GAAG3vL,EAAEzf,MAAc+uL,GAAGtvK,EAAEzf,EAAEs2C,GAAGg5J,GAAG7vL,EAAE62B,GAAG,CAUpZ,SAASm7J,GAAGhyL,EAAEzf,EAAEs2C,EAAE/4B,GAAG9iB,KAAKi8B,IAAIjX,EAAEhlB,KAAKtC,IAAIm+C,EAAE77C,KAAKiwL,QAAQjwL,KAAK+kF,MAAM/kF,KAAKk5F,OAAOl5F,KAAKuuL,UAAUvuL,KAAKc,KAAKd,KAAKsoM,YAAY,KAAKtoM,KAAKqM,MAAM,EAAErM,KAAKogB,IAAI,KAAKpgB,KAAK6pM,aAAatkM,EAAEvF,KAAK6kM,aAAa7kM,KAAK+vL,cAAc/vL,KAAKslM,YAAYtlM,KAAKspM,cAAc,KAAKtpM,KAAKmc,KAAK2G,EAAE9iB,KAAKqwC,MAAM,EAAErwC,KAAKioM,WAAWjoM,KAAKmoM,YAAYnoM,KAAKkoM,WAAW,KAAKloM,KAAK4kM,WAAW5kM,KAAK+kM,MAAM,EAAE/kM,KAAK6vL,UAAU,IAAI,CAAC,SAASjvI,GAAG57B,EAAEzf,EAAEs2C,EAAE/4B,GAAG,OAAO,IAAIk0L,GAAGhyL,EAAEzf,EAAEs2C,EAAE/4B,EAAE,CAAC,SAASyrL,GAAGvpL,GAAiB,UAAdA,EAAEA,EAAElnB,aAAuBknB,EAAE8hF,iBAAiB,CAEte,SAASshG,GAAGpjL,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAE6qK,UACuB,OADb,OAAOh0I,IAAGA,EAAE+E,GAAG57B,EAAEiX,IAAI12B,EAAEyf,EAAEtnB,IAAIsnB,EAAE7I,OAAQmsL,YAAYtjL,EAAEsjL,YAAYzsJ,EAAE/6C,KAAKkkB,EAAElkB,KAAK+6C,EAAE0yI,UAAUvpK,EAAEupK,UAAU1yI,EAAEg0I,UAAU7qK,EAAEA,EAAE6qK,UAAUh0I,IAAIA,EAAEguJ,aAAatkM,EAAEs2C,EAAE/6C,KAAKkkB,EAAElkB,KAAK+6C,EAAExL,MAAM,EAAEwL,EAAEqsJ,WAAW,KAAKrsJ,EAAEssJ,YAAY,KAAKtsJ,EAAEosJ,WAAW,MAAMpsJ,EAAE+oJ,WAAW5/K,EAAE4/K,WAAW/oJ,EAAEkpJ,MAAM//K,EAAE+/K,MAAMlpJ,EAAEkpC,MAAM//D,EAAE+/D,MAAMlpC,EAAEytJ,cAActkL,EAAEskL,cAAcztJ,EAAEk0I,cAAc/qK,EAAE+qK,cAAcl0I,EAAEypJ,YAAYtgL,EAAEsgL,YAAY//L,EAAEyf,EAAE6/K,aAAahpJ,EAAEgpJ,aAAa,OAAOt/L,EAAE,KAAK,CAACw/L,MAAMx/L,EAAEw/L,MAAMD,aAAav/L,EAAEu/L,cAC3ejpJ,EAAEo0I,QAAQjrK,EAAEirK,QAAQp0I,EAAExvC,MAAM2Y,EAAE3Y,MAAMwvC,EAAEz7B,IAAI4E,EAAE5E,IAAWy7B,CAAC,CACxD,SAAS0sJ,GAAGvjL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,EAAE6a,GAAG,IAAI3d,EAAE,EAAM,GAAJumB,EAAEkC,EAAK,mBAAoBA,EAAEupL,GAAGvpL,KAAKzoB,EAAE,QAAQ,GAAG,iBAAkByoB,EAAEzoB,EAAE,OAAOyoB,EAAE,OAAOA,GAAG,KAAKgyE,EAAG,OAAO0xG,GAAG7sJ,EAAEskD,SAAS9gG,EAAE6a,EAAE3U,GAAG,KAAKgiL,EAAGhrL,EAAE,EAAE8C,GAAG,GAAG,MAAM,KAAKunL,EAAGrqL,EAAE,EAAE8C,GAAG,EAAE,MAAM,KAAKwnL,EAAG,OAAO7hK,EAAE47B,GAAG,GAAG/E,EAAEt2C,EAAI,EAAFlG,IAAOipM,YAAYzhB,EAAG7hK,EAAElkB,KAAK+lL,EAAG7hK,EAAE+/K,MAAM7qL,EAAE8K,EAAE,KAAKiiK,EAAG,OAAOjiK,EAAE47B,GAAG,GAAG/E,EAAEt2C,EAAElG,IAAKyB,KAAKmmL,EAAGjiK,EAAEsjL,YAAYrhB,EAAGjiK,EAAE+/K,MAAM7qL,EAAE8K,EAAE,KAAKkiK,EAAG,OAAOliK,EAAE47B,GAAG,GAAG/E,EAAEt2C,EAAElG,IAAKipM,YAAYphB,EAAGliK,EAAE+/K,MAAM7qL,EAAE8K,EAAE,KAAKwiK,EAAG,OAAOkoB,GAAG7zJ,EAAEx8C,EAAE6a,EAAE3U,GAAG,KAAKkiL,EAAG,OAAOziK,EAAE47B,GAAG,GAAG/E,EAAEt2C,EAAElG,IAAKipM,YAAY7gB,EAAGziK,EAAE+/K,MAAM7qL,EAAE8K,EAAE,QAAQ,GAAG,iBAChfA,GAAG,OAAOA,EAAE,OAAOA,EAAEojK,UAAU,KAAKtB,EAAGvqL,EAAE,GAAG,MAAMyoB,EAAE,KAAK+hK,EAAGxqL,EAAE,EAAE,MAAMyoB,EAAE,KAAKgiK,EAAGzqL,EAAE,GAAG,MAAMyoB,EAAE,KAAKmiK,EAAG5qL,EAAE,GAAG,MAAMyoB,EAAE,KAAKoiK,EAAG7qL,EAAE,GAAGumB,EAAE,KAAK,MAAMkC,EAAE,KAAKqiK,EAAG9qL,EAAE,GAAG,MAAMyoB,EAAE,MAAM/hB,MAAMghB,EAAE,IAAI,MAAMe,EAAEA,SAASA,EAAE,KAAuD,OAAjDzf,EAAEq7C,GAAGrkD,EAAEs/C,EAAEt2C,EAAElG,IAAKipM,YAAYtjL,EAAEzf,EAAEzE,KAAKgiB,EAAEvd,EAAEw/L,MAAM7qL,EAAS3U,CAAC,CAAC,SAASmjM,GAAG1jL,EAAEzf,EAAEs2C,EAAE/4B,GAA2B,OAAxBkC,EAAE47B,GAAG,EAAE57B,EAAElC,EAAEvd,IAAKw/L,MAAMlpJ,EAAS72B,CAAC,CAAC,SAAS0qL,GAAG1qL,EAAEzf,EAAEs2C,EAAE/4B,GAA6C,OAA1CkC,EAAE47B,GAAG,GAAG57B,EAAElC,EAAEvd,IAAK+iM,YAAY9gB,EAAGxiK,EAAE+/K,MAAMlpJ,EAAS72B,CAAC,CAAC,SAASqjL,GAAGrjL,EAAEzf,EAAEs2C,GAA8B,OAA3B72B,EAAE47B,GAAG,EAAE57B,EAAE,KAAKzf,IAAKw/L,MAAMlpJ,EAAS72B,CAAC,CACnc,SAASyjL,GAAGzjL,EAAEzf,EAAEs2C,GAA8J,OAA3Jt2C,EAAEq7C,GAAG,EAAE,OAAO57B,EAAEm7E,SAASn7E,EAAEm7E,SAAS,GAAGn7E,EAAEtnB,IAAI6H,IAAKw/L,MAAMlpJ,EAAEt2C,EAAEgpL,UAAU,CAACsD,cAAc7sK,EAAE6sK,cAAcolB,gBAAgB,KAAKzO,eAAexjL,EAAEwjL,gBAAuBjjM,CAAC,CACtL,SAAS2xM,GAAGlyL,EAAEzf,EAAEs2C,GAAG77C,KAAKi8B,IAAI12B,EAAEvF,KAAK6xL,cAAc7sK,EAAEhlB,KAAKw1M,aAAax1M,KAAK81M,UAAU91M,KAAKyZ,QAAQzZ,KAAKi3M,gBAAgB,KAAKj3M,KAAK21M,eAAe,EAAE31M,KAAKivM,eAAejvM,KAAKw3B,QAAQ,KAAKx3B,KAAK4xL,QAAQ/1I,EAAE77C,KAAK80M,aAAa,KAAK90M,KAAKg1M,iBAAiB,EAAEh1M,KAAKu0L,WAAWF,GAAG,GAAGr0L,KAAK+0M,gBAAgB1gB,IAAI,GAAGr0L,KAAKg0L,eAAeh0L,KAAKy1M,cAAcz1M,KAAK6rM,iBAAiB7rM,KAAK4zL,aAAa5zL,KAAK8zL,YAAY9zL,KAAK6zL,eAAe7zL,KAAK2zL,aAAa,EAAE3zL,KAAKi0L,cAAcI,GAAG,GAAGr0L,KAAKm3M,gCAAgC,IAAI,CAEjf,SAASC,GAAGpyL,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAIzjB,EAAEkG,EAAEkU,QAAQS,EAAEwsL,KAAKnqM,EAAEoqM,GAAGtnM,GAAG2lB,EAAE,GAAG62B,EAAE,CAAqBt2C,EAAE,CAAC,GAAGqqL,GAA1B/zI,EAAEA,EAAE2qJ,mBAA8B3qJ,GAAG,IAAIA,EAAE5f,IAAI,MAAMh5B,MAAMghB,EAAE,MAAM,IAAIgyB,EAAE4F,EAAE,EAAE,CAAC,OAAO5F,EAAEha,KAAK,KAAK,EAAEga,EAAEA,EAAEs4I,UAAU/2J,QAAQ,MAAMjyB,EAAE,KAAK,EAAE,GAAGwvD,GAAG9e,EAAEn1C,MAAM,CAACm1C,EAAEA,EAAEs4I,UAAUyT,0CAA0C,MAAMz8L,CAAC,EAAE0wC,EAAEA,EAAEijD,MAAM,OAAO,OAAOjjD,GAAG,MAAMhzC,MAAMghB,EAAE,KAAM,CAAC,GAAG,IAAI43B,EAAE5f,IAAI,CAAC,IAAIlX,EAAE82B,EAAE/6C,KAAK,GAAGi0D,GAAGhwC,GAAG,CAAC82B,EAAEgmJ,GAAGhmJ,EAAE92B,EAAEkxB,GAAG,MAAMjxB,CAAC,CAAC,CAAC62B,EAAE5F,CAAC,MAAM4F,EAAEylJ,GACrW,OADwW,OAAO/7L,EAAEiyB,QAAQjyB,EAAEiyB,QAAQqkB,EAAEt2C,EAAE0pM,eAAepzJ,GAAEt2C,EAAEqgM,GAAG1rL,EAAE3d,IAAKqI,QAAQ,CAAC0M,QAAQ0T,GAAuB,QAApBlC,OAAE,IAASA,EAAE,KAAKA,KAC1evd,EAAExE,SAAS+hB,GAAGijL,GAAG1mM,EAAEkG,GAAGqhM,GAAGvnM,EAAE9C,EAAE2d,GAAU3d,CAAC,CAAC,SAAS86M,GAAGryL,GAAe,OAAZA,EAAEA,EAAEvL,SAAcsrE,OAAyB//D,EAAE+/D,MAAM9oD,IAAoDjX,EAAE+/D,MAAMwpG,WAAhF,IAA0F,CAAC,SAAS+oB,GAAGtyL,EAAEzf,GAAqB,GAAG,QAArByf,EAAEA,EAAE+qK,gBAA2B,OAAO/qK,EAAEgrK,WAAW,CAAC,IAAIn0I,EAAE72B,EAAEsqL,UAAUtqL,EAAEsqL,UAAU,IAAIzzJ,GAAGA,EAAEt2C,EAAEs2C,EAAEt2C,CAAC,CAAC,CAAC,SAAS8gI,GAAGrhH,EAAEzf,GAAG+xM,GAAGtyL,EAAEzf,IAAIyf,EAAEA,EAAE6qK,YAAYynB,GAAGtyL,EAAEzf,EAAE,CAC1V,SAASgyM,GAAGvyL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAE,MAAM+4B,GAAG,MAAMA,EAAE27J,kBAAkB37J,EAAE27J,iBAAiBC,gBAAgB,KAAiK,GAA5J57J,EAAE,IAAIq7J,GAAGlyL,EAAEzf,EAAE,MAAMs2C,IAAG,IAAKA,EAAE+1I,SAASrsL,EAAEq7C,GAAG,EAAE,KAAK,KAAK,IAAIr7C,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGs2C,EAAEpiC,QAAQlU,EAAEA,EAAEgpL,UAAU1yI,EAAEwpJ,GAAG9/L,GAAGyf,EAAE66K,IAAIhkJ,EAAEpiC,QAAQ+lL,GAAG,IAAIx6K,EAAE25H,SAAS35H,EAAEy8E,WAAWz8E,GAAMlC,EAAE,IAAIkC,EAAE,EAAEA,EAAElC,EAAE3lB,OAAO6nB,IAAI,CAAQ,IAAI3lB,GAAXkG,EAAEud,EAAEkC,IAAW2mL,YAAYtsM,EAAEA,EAAEkG,EAAEqmM,SAAS,MAAM/vJ,EAAEs7J,gCAAgCt7J,EAAEs7J,gCAAgC,CAAC5xM,EAAElG,GAAGw8C,EAAEs7J,gCAAgCj2M,KAAKqE,EAAElG,EAAE,CAACW,KAAK03M,cAAc77J,CAAC,CAChS,SAAS87J,GAAG3yL,GAAG,SAASA,GAAG,IAAIA,EAAE25H,UAAU,IAAI35H,EAAE25H,UAAU,KAAK35H,EAAE25H,WAAW,IAAI35H,EAAE25H,UAAU,iCAAiC35H,EAAE8lK,WAAW,CAElU,SAAS8sB,GAAG5yL,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,IAAI6a,EAAE2hC,EAAE+2J,oBAAoB,GAAG14L,EAAE,CAAC,IAAI3d,EAAE2d,EAAEw9L,cAAc,GAAG,mBAAoBr4M,EAAE,CAAC,IAAI42C,EAAE52C,EAAEA,EAAE,WAAW,IAAI2lB,EAAEqyL,GAAG96M,GAAG05C,EAAE72C,KAAK4lB,EAAE,CAAC,CAACoyL,GAAG7xM,EAAEhJ,EAAEyoB,EAAE3lB,EAAE,KAAK,CAAmD,GAAlD6a,EAAE2hC,EAAE+2J,oBAD1K,SAAY5tL,EAAEzf,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAEyf,EAAE,IAAIA,EAAE25H,SAAS35H,EAAEy+E,gBAAgBz+E,EAAE0lK,WAAW,OAAa,IAAInlL,EAAEo5I,WAAWp5I,EAAEsyM,aAAa,qBAAwBtyM,EAAE,IAAI,IAAIs2C,EAAEA,EAAE72B,EAAE6lK,WAAW7lK,EAAE+xG,YAAYl7E,GAAG,OAAO,IAAI07J,GAAGvyL,EAAE,EAAEzf,EAAE,CAACqsL,SAAQ,QAAI,EAAO,CAClCkmB,CAAGj8J,EAAE/4B,GAAGvmB,EAAE2d,EAAEw9L,cAAiB,mBAAoBr4M,EAAE,CAAC,IAAI0lB,EAAE1lB,EAAEA,EAAE,WAAW,IAAI2lB,EAAEqyL,GAAG96M,GAAGwoB,EAAE3lB,KAAK4lB,EAAE,CAAC,CAAC6wL,IAAG,WAAWuB,GAAG7xM,EAAEhJ,EAAEyoB,EAAE3lB,EAAE,GAAE,CAAC,OAAOg4M,GAAG96M,EAAE,CAGpG,SAASw7M,GAAG/yL,EAAEzf,GAAG,IAAIs2C,EAAE,EAAE57C,UAAU9C,aAAQ,IAAS8C,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI03M,GAAGpyM,GAAG,MAAMtC,MAAMghB,EAAE,MAAM,OATnV,SAAYe,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAE,EAAE7iB,UAAU9C,aAAQ,IAAS8C,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACmoL,SAASzB,EAAGjpL,IAAI,MAAMolB,EAAE,KAAK,GAAGA,EAAEq9E,SAASn7E,EAAE6sK,cAActsL,EAAEijM,eAAe3sJ,EAAE,CASgLm8J,CAAGhzL,EAAEzf,EAAE,KAAKs2C,EAAE,CA1BxW+3J,GAAG,SAAS5uL,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEvd,EAAEw/L,MAAM,GAAG,OAAO//K,EAAE,GAAGA,EAAEskL,gBAAgB/jM,EAAEskM,cAAcx6K,GAAE5V,QAAQurL,IAAG,MAAQ,MAAQnpJ,EAAE/4B,GAAoC,CAAO,OAANkiL,IAAG,EAAUz/L,EAAE02B,KAAK,KAAK,EAAE2gB,GAAGr3C,GAAGw3C,KAAK,MAAM,KAAK,EAAEosJ,GAAG5jM,GAAG,MAAM,KAAK,EAAEwvD,GAAGxvD,EAAEzE,OAAOihM,GAAGx8L,GAAG,MAAM,KAAK,EAAE0jM,GAAG1jM,EAAEA,EAAEgpL,UAAUsD,eAAe,MAAM,KAAK,GAAG/uK,EAAEvd,EAAE+jM,cAAclrM,MAAM,IAAIiB,EAAEkG,EAAEzE,KAAK41B,SAASilB,GAAEyoJ,GAAG/kM,EAAEqlM,eAAerlM,EAAEqlM,cAAc5hL,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOvd,EAAEwqL,cAAe,OAAQl0I,EAAEt2C,EAAEw/E,MAAM6/G,WAAmB1sJ,GAAGlzB,EAAEzf,EAAEs2C,IAAGF,GAAEj4B,GAAY,EAAVA,GAAEjK,SAA8B,QAAnBlU,EAAE+oM,GAAGtpL,EAAEzf,EAAEs2C,IAC/et2C,EAAE0qL,QAAQ,MAAKt0I,GAAEj4B,GAAY,EAAVA,GAAEjK,SAAW,MAAM,KAAK,GAA0B,GAAvBqJ,KAAO+4B,EAAEt2C,EAAEq/L,YAA4B,GAAR5/K,EAAEqrB,MAAU,CAAC,GAAGvtB,EAAE,OAAOqtL,GAAGnrL,EAAEzf,EAAEs2C,GAAGt2C,EAAE8qC,OAAO,EAAE,CAA6F,GAA1E,QAAlBhxC,EAAEkG,EAAEwqL,iBAAyB1wL,EAAE2wM,UAAU,KAAK3wM,EAAEqmK,KAAK,KAAKrmK,EAAE4oM,WAAW,MAAMtsJ,GAAEj4B,GAAEA,GAAEjK,SAAYqJ,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOvd,EAAEw/L,MAAM,EAAEr/I,GAAG1gC,EAAEzf,EAAEs2C,GAAG,OAAOyyJ,GAAGtpL,EAAEzf,EAAEs2C,EAAE,CAD7LmpJ,MAAgB,MAARhgL,EAAEqrB,MACmL,MAAM20J,IAAG,EAAa,OAAVz/L,EAAEw/L,MAAM,EAASx/L,EAAE02B,KAAK,KAAK,EAA+I,GAA7InZ,EAAEvd,EAAEzE,KAAK,OAAOkkB,IAAIA,EAAE6qK,UAAU,KAAKtqL,EAAEsqL,UAAU,KAAKtqL,EAAE8qC,OAAO,GAAGrrB,EAAEzf,EAAEskM,aAAaxqM,EAAEmiM,GAAGj8L,EAAEm2C,GAAEjiC,SAAS2+B,GAAG7yC,EAAEs2C,GAAGx8C,EAAEsrM,GAAG,KAAKplM,EAAEud,EAAEkC,EAAE3lB,EAAEw8C,GAAGt2C,EAAE8qC,OAAO,EAAK,iBACrehxC,GAAG,OAAOA,GAAG,mBAAoBA,EAAEw1I,aAAQ,IAASx1I,EAAE+oL,SAAS,CAAiD,GAAhD7iL,EAAE02B,IAAI,EAAE12B,EAAEwqL,cAAc,KAAKxqL,EAAE+/L,YAAY,KAAQvwI,GAAGjyC,GAAG,CAAC,IAAI5I,GAAE,EAAG6nL,GAAGx8L,EAAE,MAAM2U,GAAE,EAAG3U,EAAEwqL,cAAc,OAAO1wL,EAAEsO,YAAO,IAAStO,EAAEsO,MAAMtO,EAAEsO,MAAM,KAAK03L,GAAG9/L,GAAG,IAAIhJ,EAAEumB,EAAEoxH,yBAAyB,mBAAoB33I,GAAG8pM,GAAG9gM,EAAEud,EAAEvmB,EAAEyoB,GAAG3lB,EAAE81J,QAAQmxC,GAAG/gM,EAAEgpL,UAAUlvL,EAAEA,EAAEmnM,gBAAgBjhM,EAAE+hM,GAAG/hM,EAAEud,EAAEkC,EAAE62B,GAAGt2C,EAAE+yC,GAAG,KAAK/yC,EAAEud,GAAE,EAAG5I,EAAE2hC,EAAE,MAAMt2C,EAAE02B,IAAI,EAAEukB,GAAG,KAAKj7C,EAAElG,EAAEw8C,GAAGt2C,EAAEA,EAAEw/E,MAAM,OAAOx/E,EAAE,KAAK,GAAGlG,EAAEkG,EAAE+iM,YAAYtjL,EAAE,CAChX,OADiX,OAAOA,IAAIA,EAAE6qK,UAAU,KAAKtqL,EAAEsqL,UAAU,KAAKtqL,EAAE8qC,OAAO,GACnfrrB,EAAEzf,EAAEskM,aAAuBxqM,GAAV6a,EAAE7a,EAAEipL,OAAUjpL,EAAEgpL,UAAU9iL,EAAEzE,KAAKzB,EAAE6a,EAAE3U,EAAE02B,IAOxD,SAAYjX,GAAG,GAAG,mBAAoBA,EAAE,OAAOupL,GAAGvpL,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAEojK,YAAgBpB,EAAG,OAAO,GAAG,GAAGhiK,IAAImiK,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAPnF8wB,CAAG54M,GAAG2lB,EAAEm/K,GAAG9kM,EAAE2lB,GAAU9K,GAAG,KAAK,EAAE3U,EAAEkpM,GAAG,KAAKlpM,EAAElG,EAAE2lB,EAAE62B,GAAG,MAAM72B,EAAE,KAAK,EAAEzf,EAAEspM,GAAG,KAAKtpM,EAAElG,EAAE2lB,EAAE62B,GAAG,MAAM72B,EAAE,KAAK,GAAGzf,EAAE8oM,GAAG,KAAK9oM,EAAElG,EAAE2lB,EAAE62B,GAAG,MAAM72B,EAAE,KAAK,GAAGzf,EAAE+3C,GAAG,KAAK/3C,EAAElG,EAAE8kM,GAAG9kM,EAAEyB,KAAKkkB,GAAGlC,EAAE+4B,GAAG,MAAM72B,EAAE,MAAM/hB,MAAMghB,EAAE,IAAI5kB,EAAE,IAAK,CAAC,OAAOkG,EAAE,KAAK,EAAE,OAAOud,EAAEvd,EAAEzE,KAAKzB,EAAEkG,EAAEskM,aAA2C4E,GAAGzpL,EAAEzf,EAAEud,EAArCzjB,EAAEkG,EAAE+iM,cAAcxlL,EAAEzjB,EAAE8kM,GAAGrhL,EAAEzjB,GAAcw8C,GAAG,KAAK,EAAE,OAAO/4B,EAAEvd,EAAEzE,KAAKzB,EAAEkG,EAAEskM,aAA2CgF,GAAG7pL,EAAEzf,EAAEud,EAArCzjB,EAAEkG,EAAE+iM,cAAcxlL,EAAEzjB,EAAE8kM,GAAGrhL,EAAEzjB,GAAcw8C,GAAG,KAAK,EAAwB,GAAtBe,GAAGr3C,GAAGud,EAAEvd,EAAE+/L,YAAe,OAAOtgL,GAAG,OAAOlC,EAAE,MAAM7f,MAAMghB,EAAE,MAC3Y,GAA9GnB,EAAEvd,EAAEskM,aAA+BxqM,EAAE,QAApBA,EAAEkG,EAAEwqL,eAAyB1wL,EAAEiS,QAAQ,KAAKq0L,GAAG3gL,EAAEzf,GAAG0gM,GAAG1gM,EAAEud,EAAE,KAAK+4B,IAAG/4B,EAAEvd,EAAEwqL,cAAcz+K,WAAejS,EAAE09C,KAAKx3C,EAAE+oM,GAAGtpL,EAAEzf,EAAEs2C,OAAO,CAAuF,IAArE3hC,GAAjB7a,EAAEkG,EAAEgpL,WAAiBqD,WAAQ6X,GAAG9I,GAAGp7L,EAAEgpL,UAAUsD,cAAcnH,YAAY8e,GAAGjkM,EAAE2U,EAAEwvL,IAAG,GAAMxvL,EAAE,CAAqC,GAAG,OAAvC8K,EAAE3lB,EAAE83M,iCAA2C,IAAI93M,EAAE,EAAEA,EAAE2lB,EAAE7nB,OAAOkC,GAAG,GAAE6a,EAAE8K,EAAE3lB,IAAK6qM,8BAA8BllL,EAAE3lB,EAAE,GAAG++C,GAAGl9C,KAAKgZ,GAAoB,IAAjB2hC,EAAE+sJ,GAAGrjM,EAAE,KAAKud,EAAE+4B,GAAOt2C,EAAEw/E,MAAMlpC,EAAEA,GAAGA,EAAExL,OAAe,EAATwL,EAAExL,MAAS,KAAKwL,EAAEA,EAAEo0I,OAAO,MAAMzvI,GAAGx7B,EAAEzf,EAAEud,EAAE+4B,GAAGkB,KAAKx3C,EAAEA,EAAEw/E,KAAK,CAAC,OAAOx/E,EAAE,KAAK,EAAE,OAAO4jM,GAAG5jM,GAAG,OAAOyf,GACnf8kL,GAAGvkM,GAAGud,EAAEvd,EAAEzE,KAAKzB,EAAEkG,EAAEskM,aAAa3vL,EAAE,OAAO8K,EAAEA,EAAEskL,cAAc,KAAK/sM,EAAE8C,EAAE8gG,SAASqgG,GAAG19K,EAAEzjB,GAAG9C,EAAE,KAAK,OAAO2d,GAAGsmL,GAAG19K,EAAE5I,KAAK3U,EAAE8qC,OAAO,IAAIu+J,GAAG5pL,EAAEzf,GAAGi7C,GAAGx7B,EAAEzf,EAAEhJ,EAAEs/C,GAAGt2C,EAAEw/E,MAAM,KAAK,EAAE,OAAO,OAAO//D,GAAG8kL,GAAGvkM,GAAG,KAAK,KAAK,GAAG,OAAO2yC,GAAGlzB,EAAEzf,EAAEs2C,GAAG,KAAK,EAAE,OAAOotJ,GAAG1jM,EAAEA,EAAEgpL,UAAUsD,eAAe/uK,EAAEvd,EAAEskM,aAAa,OAAO7kL,EAAEzf,EAAEw/E,MAAM4jH,GAAGpjM,EAAE,KAAKud,EAAE+4B,GAAG2E,GAAGx7B,EAAEzf,EAAEud,EAAE+4B,GAAGt2C,EAAEw/E,MAAM,KAAK,GAAG,OAAOjiE,EAAEvd,EAAEzE,KAAKzB,EAAEkG,EAAEskM,aAA2CwE,GAAGrpL,EAAEzf,EAAEud,EAArCzjB,EAAEkG,EAAE+iM,cAAcxlL,EAAEzjB,EAAE8kM,GAAGrhL,EAAEzjB,GAAcw8C,GAAG,KAAK,EAAE,OAAO2E,GAAGx7B,EAAEzf,EAAEA,EAAEskM,aAAahuJ,GAAGt2C,EAAEw/E,MAAM,KAAK,EACtc,KAAK,GAAG,OAAOvkC,GAAGx7B,EAAEzf,EAAEA,EAAEskM,aAAa1pG,SAAStkD,GAAGt2C,EAAEw/E,MAAM,KAAK,GAAG//D,EAAE,CAAClC,EAAEvd,EAAEzE,KAAK41B,SAASr3B,EAAEkG,EAAEskM,aAAattM,EAAEgJ,EAAE+jM,cAAcpvL,EAAE7a,EAAEjB,MAAM,IAAI63C,EAAE1wC,EAAEzE,KAAK41B,SAAiD,GAAxCilB,GAAEyoJ,GAAGnuJ,EAAEyuJ,eAAezuJ,EAAEyuJ,cAAcxqL,EAAK,OAAO3d,EAAE,GAAG05C,EAAE15C,EAAE6B,MAA0G,KAApG8b,EAAEojL,GAAGrnJ,EAAE/7B,GAAG,EAAwF,GAArF,mBAAoB4I,EAAEo1L,sBAAsBp1L,EAAEo1L,sBAAsBjiK,EAAE/7B,GAAG,cAAqB,GAAG3d,EAAE4jG,WAAW9gG,EAAE8gG,WAAW9wE,GAAE5V,QAAQ,CAAClU,EAAE+oM,GAAGtpL,EAAEzf,EAAEs2C,GAAG,MAAM72B,CAAC,OAAO,IAAc,QAAVixB,EAAE1wC,EAAEw/E,SAAiB9uC,EAAEijD,OAAO3zF,GAAG,OAAO0wC,GAAG,CAAC,IAAIlxB,EAAEkxB,EAAE4uJ,aAAa,GAAG,OAAO9/K,EAAE,CAACxoB,EAAE05C,EAAE8uC,MAAM,IAAI,IAAI3jF,EACtf2jB,EAAE+/K,aAAa,OAAO1jM,GAAG,CAAC,GAAGA,EAAEo2B,UAAU1U,GAAQ1hB,EAAE8jM,aAAahrL,EAAG,CAAC,IAAI+7B,EAAEha,OAAM76B,EAAEwkM,IAAI,EAAE/pJ,GAAGA,IAAK5f,IAAI,EAAE8pK,GAAG9vJ,EAAE70C,IAAI60C,EAAE8uJ,OAAOlpJ,EAAgB,QAAdz6C,EAAE60C,EAAE45I,aAAqBzuL,EAAE2jM,OAAOlpJ,GAAG8oJ,GAAG1uJ,EAAEijD,OAAOr9C,GAAG92B,EAAEggL,OAAOlpJ,EAAE,KAAK,CAACz6C,EAAEA,EAAEkL,IAAI,CAAC,MAAM/P,EAAE,KAAK05C,EAAEha,KAAIga,EAAEn1C,OAAOyE,EAAEzE,KAAK,KAAam1C,EAAE8uC,MAAM,GAAG,OAAOxoF,EAAEA,EAAE28F,OAAOjjD,OAAO,IAAI15C,EAAE05C,EAAE,OAAO15C,GAAG,CAAC,GAAGA,IAAIgJ,EAAE,CAAChJ,EAAE,KAAK,KAAK,CAAa,GAAG,QAAf05C,EAAE15C,EAAE0zL,SAAoB,CAACh6I,EAAEijD,OAAO38F,EAAE28F,OAAO38F,EAAE05C,EAAE,KAAK,CAAC15C,EAAEA,EAAE28F,MAAM,CAACjjD,EAAE15C,CAAC,CAACikD,GAAGx7B,EAAEzf,EAAElG,EAAE8gG,SAAStkD,GAAGt2C,EAAEA,EAAEw/E,KAAK,CAAC,OAAOx/E,EAAE,KAAK,EAAE,OAAOlG,EAAEkG,EAAEzE,KAAsBgiB,GAAjB5I,EAAE3U,EAAEskM,cAAiB1pG,SAAS/nD,GAAG7yC,EAAEs2C,GACnd/4B,EAAEA,EADodzjB,EAAE4lM,GAAG5lM,EACpf6a,EAAEi+L,wBAA8B5yM,EAAE8qC,OAAO,EAAEmQ,GAAGx7B,EAAEzf,EAAEud,EAAE+4B,GAAGt2C,EAAEw/E,MAAM,KAAK,GAAG,OAAgB7qE,EAAEiqL,GAAX9kM,EAAEkG,EAAEzE,KAAYyE,EAAEskM,cAA6BvsJ,GAAGt4B,EAAEzf,EAAElG,EAAtB6a,EAAEiqL,GAAG9kM,EAAEyB,KAAKoZ,GAAc4I,EAAE+4B,GAAG,KAAK,GAAG,OAAO2yJ,GAAGxpL,EAAEzf,EAAEA,EAAEzE,KAAKyE,EAAEskM,aAAa/mL,EAAE+4B,GAAG,KAAK,GAAG,OAAO/4B,EAAEvd,EAAEzE,KAAKzB,EAAEkG,EAAEskM,aAAaxqM,EAAEkG,EAAE+iM,cAAcxlL,EAAEzjB,EAAE8kM,GAAGrhL,EAAEzjB,GAAG,OAAO2lB,IAAIA,EAAE6qK,UAAU,KAAKtqL,EAAEsqL,UAAU,KAAKtqL,EAAE8qC,OAAO,GAAG9qC,EAAE02B,IAAI,EAAE84B,GAAGjyC,IAAIkC,GAAE,EAAG+8K,GAAGx8L,IAAIyf,GAAE,EAAGozB,GAAG7yC,EAAEs2C,GAAGqrJ,GAAG3hM,EAAEud,EAAEzjB,GAAGioM,GAAG/hM,EAAEud,EAAEzjB,EAAEw8C,GAAGvD,GAAG,KAAK/yC,EAAEud,GAAE,EAAGkC,EAAE62B,GAAG,KAAK,GAAG,OAAOs0J,GAAGnrL,EAAEzf,EAAEs2C,GAAG,KAAK,GAAoB,KAAK,GAAG,OAAO6J,GAAG1gC,EAAEzf,EAAEs2C,GAAG,MAAM54C,MAAMghB,EAAE,IAAI1e,EAAE02B,KAC/e,EAYAs7K,GAAGz5M,UAAU+2I,OAAO,SAAS7vH,GAAGoyL,GAAGpyL,EAAEhlB,KAAK03M,cAAc,KAAK,KAAK,EAAEH,GAAGz5M,UAAUs6M,QAAQ,WAAW,IAAIpzL,EAAEhlB,KAAK03M,cAAcnyM,EAAEyf,EAAE6sK,cAAculB,GAAG,KAAKpyL,EAAE,MAAK,WAAWzf,EAAEs6L,IAAI,IAAI,GAAE,EAEkJ1P,GAAG,SAASnrK,GAAM,KAAKA,EAAEiX,MAAgB2qK,GAAG5hL,EAAE,EAAV0hL,MAAergE,GAAGrhH,EAAE,GAAG,EAAEorK,GAAG,SAASprK,GAAM,KAAKA,EAAEiX,MAAgB2qK,GAAG5hL,EAAE,SAAV0hL,MAAsBrgE,GAAGrhH,EAAE,UAAU,EAC7cqrK,GAAG,SAASrrK,GAAG,GAAG,KAAKA,EAAEiX,IAAI,CAAC,IAAI12B,EAAEmhM,KAAK7qJ,EAAE8qJ,GAAG3hL,GAAG4hL,GAAG5hL,EAAE62B,EAAEt2C,GAAG8gI,GAAGrhH,EAAE62B,EAAE,CAAC,EAAEy0I,GAAG,SAAStrK,EAAEzf,GAAG,OAAOA,GAAG,EAChG2oL,GAAG,SAASlpK,EAAEzf,EAAEs2C,GAAG,OAAOt2C,GAAG,IAAK,QAAyB,GAAjBkkL,GAAGzkK,EAAE62B,GAAGt2C,EAAEs2C,EAAE34C,KAAQ,UAAU24C,EAAE/6C,MAAM,MAAMyE,EAAE,CAAC,IAAIs2C,EAAE72B,EAAE62B,EAAE4lD,YAAY5lD,EAAEA,EAAE4lD,WAAsF,IAA3E5lD,EAAEA,EAAEx2C,iBAAiB,cAAcuI,KAAKe,UAAU,GAAGpJ,GAAG,mBAAuBA,EAAE,EAAEA,EAAEs2C,EAAE1+C,OAAOoI,IAAI,CAAC,IAAIud,EAAE+4B,EAAEt2C,GAAG,GAAGud,IAAIkC,GAAGlC,EAAE+nE,OAAO7lE,EAAE6lE,KAAK,CAAC,IAAIxrF,EAAEmvL,GAAG1rK,GAAG,IAAIzjB,EAAE,MAAM4D,MAAMghB,EAAE,KAAK6kK,EAAGhmK,GAAG2mK,GAAG3mK,EAAEzjB,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW4qL,GAAGjlK,EAAE62B,GAAG,MAAM,IAAK,SAAmB,OAAVt2C,EAAEs2C,EAAEz9C,QAAesgD,GAAG15B,IAAI62B,EAAE00J,SAAShrM,GAAE,GAAI,EAAEopL,GAAGinB,GAC9ZhnB,GAAG,SAAS5pK,EAAEzf,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,IAAI6a,EAAEohC,GAAEA,IAAG,EAAE,IAAI,OAAOuoJ,GAAG,GAAG7+K,EAAEtmB,KAAK,KAAK6G,EAAEs2C,EAAE/4B,EAAEzjB,GAAG,CAAC,QAAY,KAAJi8C,GAAEphC,KAAUy5L,KAAK5P,KAAK,CAAC,EAAElV,GAAG,aAAkB,GAAFvzI,MAhD/H,WAAc,GAAG,OAAO44J,GAAG,CAAC,IAAIlvL,EAAEkvL,GAAGA,GAAG,KAAKlvL,EAAE1f,SAAQ,SAAS0f,GAAGA,EAAE4uK,cAAc,GAAG5uK,EAAE2uK,aAAakhB,GAAG7vL,EAAE8+F,KAAI,GAAE,CAACigF,IAAI,CAgDkBsU,GAAKlD,KAAK,EAAErmB,GAAG,SAAS9pK,EAAEzf,GAAG,IAAIs2C,EAAEP,GAAEA,IAAG,EAAE,IAAI,OAAOt2B,EAAEzf,EAAE,CAAC,QAAY,KAAJ+1C,GAAEO,KAAU83J,KAAK5P,KAAK,CAAC,EAAyI,IAAIuU,GAAG,CAACC,OAAO,CAACjqB,GAAGmO,GAAGjO,GAAGC,GAAGC,GAAGymB,GAAG,CAAC17L,SAAQ,KAAM++L,GAAG,CAACC,wBAAwBjnB,GAAGknB,WAAW,EAAE3iH,QAAQ,SAAS4iH,oBAAoB,aACveC,GAAG,CAACF,WAAWF,GAAGE,WAAW3iH,QAAQyiH,GAAGziH,QAAQ4iH,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB9yB,EAAG4jB,uBAAuBmP,wBAAwB,SAASv0L,GAAW,OAAO,QAAfA,EAAEi4B,GAAGj4B,IAAmB,KAAKA,EAAEupK,SAAS,EAAEkqB,wBAAwBD,GAAGC,yBAR/I,WAAc,OAAO,IAAI,EASjXe,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,MAAM,GAAG,oBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAI9X,GAAG4X,GAAGG,OAAOrB,IAAIzW,GAAG2X,EAAE,CAAC,MAAM90L,IAAG,CAAC,CAACo+F,EAAQqjE,mDAAmD6xB,GAAGl1F,EAAQ82F,aAAanC,GACnX30F,EAAQ+2F,YAAY,SAASn1L,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE25H,SAAS,OAAO35H,EAAE,IAAIzf,EAAEyf,EAAEwhL,gBAAgB,QAAG,IAASjhM,EAAE,CAAC,GAAG,mBAAoByf,EAAE6vH,OAAO,MAAM5xI,MAAMghB,EAAE,MAAM,MAAMhhB,MAAMghB,EAAE,IAAIzmB,OAAO2yB,KAAKnL,IAAK,CAAqC,OAA5BA,EAAE,QAAVA,EAAEi4B,GAAG13C,IAAc,KAAKyf,EAAEupK,SAAkB,EAAEnrE,EAAQg3F,UAAU,SAASp1L,EAAEzf,GAAG,IAAIs2C,EAAEP,GAAE,GAAU,GAAFO,EAAM,OAAO72B,EAAEzf,GAAG+1C,IAAG,EAAE,IAAI,GAAGt2B,EAAE,OAAO6+K,GAAG,GAAG7+K,EAAEtmB,KAAK,KAAK6G,GAAG,CAAC,QAAQ+1C,GAAEO,EAAEkoJ,IAAI,CAAC,EAAE3gF,EAAQwuE,QAAQ,SAAS5sK,EAAEzf,EAAEs2C,GAAG,IAAI87J,GAAGpyM,GAAG,MAAMtC,MAAMghB,EAAE,MAAM,OAAO2zL,GAAG,KAAK5yL,EAAEzf,GAAE,EAAGs2C,EAAE,EACrdunE,EAAQyxB,OAAO,SAAS7vH,EAAEzf,EAAEs2C,GAAG,IAAI87J,GAAGpyM,GAAG,MAAMtC,MAAMghB,EAAE,MAAM,OAAO2zL,GAAG,KAAK5yL,EAAEzf,GAAE,EAAGs2C,EAAE,EAAEunE,EAAQi3F,uBAAuB,SAASr1L,GAAG,IAAI2yL,GAAG3yL,GAAG,MAAM/hB,MAAMghB,EAAE,KAAK,QAAOe,EAAE4tL,sBAAqBiD,IAAG,WAAW+B,GAAG,KAAK,KAAK5yL,GAAE,GAAG,WAAWA,EAAE4tL,oBAAoB,KAAK5tL,EAAE66K,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEz8E,EAAQk3F,wBAAwB1E,GAAGxyF,EAAQm3F,sBAAsB,SAASv1L,EAAEzf,GAAG,OAAOwyM,GAAG/yL,EAAEzf,EAAE,EAAEtF,UAAU9C,aAAQ,IAAS8C,UAAU,GAAGA,UAAU,GAAG,KAAK,EACnbmjH,EAAQo3F,oCAAoC,SAASx1L,EAAEzf,EAAEs2C,EAAE/4B,GAAG,IAAI60L,GAAG97J,GAAG,MAAM54C,MAAMghB,EAAE,MAAM,GAAG,MAAMe,QAAG,IAASA,EAAEwhL,gBAAgB,MAAMvjM,MAAMghB,EAAE,KAAK,OAAO2zL,GAAG5yL,EAAEzf,EAAEs2C,GAAE,EAAG/4B,EAAE,EAAEsgG,EAAQrtB,QAAQ,wCCtS7L,SAAS0kH,IAEP,GAC4C,oBAAnCZ,gCAC4C,mBAA5CA,+BAA+BY,SAcxC,IAEEZ,+BAA+BY,SAASA,EAC1C,CAAE,MAAOr3M,GAGP3G,QAAQiI,MAAMtB,EAChB,CACF,CAKEq3M,GACAt3F,EAAOC,QAAU,EAAjB,mCCzBW,IAAI79G,EAAE,mBAAoB5B,QAAQA,OAAO+/B,IAAImY,EAAEt2C,EAAE5B,OAAO+/B,IAAI,iBAAiB,MAAM5gB,EAAEvd,EAAE5B,OAAO+/B,IAAI,gBAAgB,MAAMrkC,EAAEkG,EAAE5B,OAAO+/B,IAAI,kBAAkB,MAAMxpB,EAAE3U,EAAE5B,OAAO+/B,IAAI,qBAAqB,MAAMnnC,EAAEgJ,EAAE5B,OAAO+/B,IAAI,kBAAkB,MAAMuS,EAAE1wC,EAAE5B,OAAO+/B,IAAI,kBAAkB,MAAM3e,EAAExf,EAAE5B,OAAO+/B,IAAI,iBAAiB,MAAMtiC,EAAEmE,EAAE5B,OAAO+/B,IAAI,oBAAoB,MAAMyX,EAAE51C,EAAE5B,OAAO+/B,IAAI,yBAAyB,MAAMpgB,EAAE/d,EAAE5B,OAAO+/B,IAAI,qBAAqB,MAAM9kC,EAAE2G,EAAE5B,OAAO+/B,IAAI,kBAAkB,MAAM1qB,EAAEzT,EACpf5B,OAAO+/B,IAAI,uBAAuB,MAAM5e,EAAEvf,EAAE5B,OAAO+/B,IAAI,cAAc,MAAMtgB,EAAE7d,EAAE5B,OAAO+/B,IAAI,cAAc,MAAMjf,EAAElf,EAAE5B,OAAO+/B,IAAI,eAAe,MAAMsS,EAAEzwC,EAAE5B,OAAO+/B,IAAI,qBAAqB,MAAMz8B,EAAE1B,EAAE5B,OAAO+/B,IAAI,mBAAmB,MAAMzf,EAAE1e,EAAE5B,OAAO+/B,IAAI,eAAe,MAClQ,SAASwY,EAAEl3B,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIu2B,EAAEv2B,EAAEojK,SAAS,OAAO7sI,GAAG,KAAKM,EAAE,OAAO72B,EAAEA,EAAElkB,MAAQ,KAAKM,EAAE,KAAK+5C,EAAE,KAAK97C,EAAE,KAAK9C,EAAE,KAAK2d,EAAE,KAAKtb,EAAE,OAAOomB,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEojK,UAAY,KAAKrjK,EAAE,KAAKzB,EAAE,KAAKF,EAAE,KAAK0B,EAAE,KAAKmxB,EAAE,OAAOjxB,EAAE,QAAQ,OAAOu2B,GAAG,KAAKz4B,EAAE,OAAOy4B,EAAE,CAAC,CAAC,SAASE,EAAEz2B,GAAG,OAAOk3B,EAAEl3B,KAAKm2B,CAAC,CAACioE,EAAQs3F,UAAUt5M,EAAEgiH,EAAQu3F,eAAex/J,EAAEioE,EAAQw3F,gBAAgB71L,EAAEq+F,EAAQy3F,gBAAgB5kK,EAAEmtE,EAAQ03F,QAAQj/J,EAAEunE,EAAQwxB,WAAWtxH,EAAE8/F,EAAQlwG,SAAS7T,EAAE+jH,EAAQ23F,KAAK33L,EAAEggG,EAAQ0xB,KAAKhwH,EAAEs+F,EAAQ43F,OAAOl4L,EAChfsgG,EAAQ63F,SAAS1+M,EAAE6mH,EAAQ83F,WAAWhhM,EAAEkpG,EAAQj2G,SAASvO,EAAEwkH,EAAQ+3F,YAAY,SAASn2L,GAAG,OAAOy2B,EAAEz2B,IAAIk3B,EAAEl3B,KAAK5jB,CAAC,EAAEgiH,EAAQg4F,iBAAiB3/J,EAAE2nE,EAAQi4F,kBAAkB,SAASr2L,GAAG,OAAOk3B,EAAEl3B,KAAKD,CAAC,EAAEq+F,EAAQk4F,kBAAkB,SAASt2L,GAAG,OAAOk3B,EAAEl3B,KAAKixB,CAAC,EAAEmtE,EAAQ0kD,UAAU,SAAS9iJ,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEojK,WAAWvsI,CAAC,EAAEunE,EAAQm4F,aAAa,SAASv2L,GAAG,OAAOk3B,EAAEl3B,KAAK1B,CAAC,EAAE8/F,EAAQo4F,WAAW,SAASx2L,GAAG,OAAOk3B,EAAEl3B,KAAK3lB,CAAC,EAAE+jH,EAAQ6oD,OAAO,SAASjnJ,GAAG,OAAOk3B,EAAEl3B,KAAK5B,CAAC,EAC1dggG,EAAQuxB,OAAO,SAAS3vH,GAAG,OAAOk3B,EAAEl3B,KAAKF,CAAC,EAAEs+F,EAAQq4F,SAAS,SAASz2L,GAAG,OAAOk3B,EAAEl3B,KAAKlC,CAAC,EAAEsgG,EAAQs4F,WAAW,SAAS12L,GAAG,OAAOk3B,EAAEl3B,KAAKzoB,CAAC,EAAE6mH,EAAQu4F,aAAa,SAAS32L,GAAG,OAAOk3B,EAAEl3B,KAAK9K,CAAC,EAAEkpG,EAAQw4F,WAAW,SAAS52L,GAAG,OAAOk3B,EAAEl3B,KAAKpmB,CAAC,EAC1OwkH,EAAQy4F,mBAAmB,SAAS72L,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI3lB,GAAG2lB,IAAIm2B,GAAGn2B,IAAIzoB,GAAGyoB,IAAI9K,GAAG8K,IAAIpmB,GAAGomB,IAAIhM,GAAG,iBAAkBgM,GAAG,OAAOA,IAAIA,EAAEojK,WAAWhlK,GAAG4B,EAAEojK,WAAWtjK,GAAGE,EAAEojK,WAAWnyI,GAAGjxB,EAAEojK,WAAWrjK,GAAGC,EAAEojK,WAAW9kK,GAAG0B,EAAEojK,WAAWpyI,GAAGhxB,EAAEojK,WAAWnhL,GAAG+d,EAAEojK,WAAWnkK,GAAGe,EAAEojK,WAAW3jK,EAAE,EAAE2+F,EAAQ04F,OAAO5/J,gCCXjUinE,EAAOC,QAAU,EAAjB,qCCDF,IAAI1qB,EAA4B,mBAAX/0F,QAAoD,iBAApBA,OAAO6gB,SAAwB,SAAUoM,GAAO,cAAcA,CAAK,EAAI,SAAUA,GAAO,OAAOA,GAAyB,mBAAXjtB,QAAyBitB,EAAIzyB,cAAgBwF,QAAUitB,IAAQjtB,OAAO7F,UAAY,gBAAkB8yB,CAAK,EAE3Q,SAASj0B,EAAgBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,oCAAwC,CAExJ,SAAS2C,EAA2BF,EAAMH,GAAQ,IAAKG,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOJ,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BG,EAAPH,CAAa,CAE/O,SAASrB,EAAUC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAInB,UAAU,kEAAoEmB,GAAeD,EAASF,UAAYN,OAAOU,OAAOD,GAAcA,EAAWH,UAAW,CAAEK,YAAa,CAAEC,MAAOJ,EAAUX,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAeW,IAAYT,OAAOgB,eAAiBhB,OAAOgB,eAAeR,EAAUC,GAAcD,EAASW,UAAYV,EAAY,CAE7e,IAAI+O,EAAQ,EAAQ,OAChBm4K,EAAY,EAAQ,MAEpB42B,EAAmB,GACnBC,EAAqB,GAYzB,SAASh4M,EAAK6I,GACZ,IAAIwjH,EAAUxjH,IAEVc,EAAQ,CACVZ,SAAS,EACTkvM,OAAQ,KACRv3M,MAAO,MAaT,OAVAiJ,EAAM0iH,QAAUA,EAAQzuH,MAAK,SAAUq6M,GAGrC,OAFAtuM,EAAMZ,SAAU,EAChBY,EAAMsuM,OAASA,EACRA,CACT,IAAG13M,OAAM,SAAUnB,GAGjB,MAFAuK,EAAMZ,SAAU,EAChBY,EAAMjJ,MAAQtB,EACRA,CACR,IAEOuK,CACT,CAEA,SAASuuM,EAAQtrL,GACf,IAAIjjB,EAAQ,CACVZ,SAAS,EACTkvM,OAAQ,CAAC,EACTv3M,MAAO,MAGLy3M,EAAW,GAEf,IACE3+M,OAAO2yB,KAAKS,GAAKtrB,SAAQ,SAAU5H,GACjC,IAAImC,EAASmE,EAAK4sB,EAAIlzB,IAEjBmC,EAAOkN,QAIVY,EAAMZ,SAAU,GAHhBY,EAAMsuM,OAAOv+M,GAAOmC,EAAOo8M,OAC3BtuM,EAAMjJ,MAAQ7E,EAAO6E,OAKvBy3M,EAASj7M,KAAKrB,EAAOwwH,SAErBxwH,EAAOwwH,QAAQzuH,MAAK,SAAUuqB,GAC5Bxe,EAAMsuM,OAAOv+M,GAAOyuB,CACtB,IAAG5nB,OAAM,SAAUnB,GACjBuK,EAAMjJ,MAAQtB,CAChB,GACF,GACF,CAAE,MAAOA,GACPuK,EAAMjJ,MAAQtB,CAChB,CAUA,OARAuK,EAAM0iH,QAAU3uH,QAAQ8lI,IAAI20E,GAAUv6M,MAAK,SAAUuqB,GAEnD,OADAxe,EAAMZ,SAAU,EACTof,CACT,IAAG5nB,OAAM,SAAUnB,GAEjB,MADAuK,EAAMZ,SAAU,EACV3J,CACR,IAEOuK,CACT,CAMA,SAASknI,EAAOonE,EAAQh/M,GACtB,OAAO+P,EAAM4wF,eALEhtE,EAKoBqrL,IAJrBrrL,EAAIwrL,WAAaxrL,EAAIyrL,QAAUzrL,EAID3zB,GAL9C,IAAiB2zB,CAMjB,CAEA,SAAS0rL,EAAwBC,EAAQv7M,GACvC,IAAI62G,EAAQ2kG,EAEZ,IAAKx7M,EAAQ+L,QACX,MAAM,IAAI9J,MAAM,iDAGlB,IAAI8gD,EAAOvmD,OAAO2lB,OAAO,CACvBtW,OAAQ,KACRE,QAAS,KACTotC,MAAO,IACPsiK,QAAS,KACT5nE,OAAQA,EACR6nE,QAAS,KACT1pE,QAAS,MACRhyI,GAECmrB,EAAM,KAEV,SAAS8iH,IAIP,OAHK9iH,IACHA,EAAMowL,EAAOx4J,EAAKl3C,SAEbsf,EAAIkkG,OACb,CAYA,OAVA0rF,EAAiB76M,KAAK+tI,GAEM,mBAAjBlrF,EAAK24J,SACdV,EAAmB96M,MAAK,WACtB,GAjHkBy7M,EAiHC54J,EAAK24J,QAhHsE,WAAlChkH,EAAQ,MAIjEikH,IAAex6G,OAAM,SAAUy6G,GACpC,YAA2B,IAAbA,QAAqE,IAAlC,IAAoBA,EACvE,IA2GM,OAAO3tE,IAlHf,IAAwB0tE,CAoHpB,IAGKH,EAAQ3kG,EAAS,SAAUglG,GAGhC,SAASC,EAAkB7/M,GACzBN,EAAgBqD,KAAM88M,GAEtB,IAAI36M,EAAQ1C,EAA2BO,KAAM68M,EAAiBz9M,KAAKY,KAAM/C,IAiBzE,OAfAkF,EAAM46M,MAAQ,WACZ56M,EAAMqN,SAAS,CAAE9K,MAAO,KAAMqI,SAAS,EAAMiwM,UAAU,IACvD7wL,EAAMowL,EAAOx4J,EAAKl3C,QAClB1K,EAAM86M,aACR,EAEAhuE,IAEA9sI,EAAMwL,MAAQ,CACZjJ,MAAOynB,EAAIznB,MACXw4M,WAAW,EACXF,UAAU,EACVjwM,QAASof,EAAIpf,QACbkvM,OAAQ9vL,EAAI8vL,QAEP95M,CACT,CAuFA,OA9GApE,EAAU++M,EAAmBD,GAyB7BC,EAAkBK,QAAU,WAC1B,OAAOluE,GACT,EAEA6tE,EAAkBh/M,UAAU2pM,mBAAqB,WAC/CznM,KAAKo9M,UAAW,EAChBp9M,KAAKi9M,aACP,EAEAH,EAAkBh/M,UAAUm/M,YAAc,WACxC,IAAI1tM,EAASvP,KAQb,GANIA,KAAKw3B,QAAQ6lL,UAAYt6L,MAAMuO,QAAQyyB,EAAKivF,UAC9CjvF,EAAKivF,QAAQ1tI,SAAQ,SAAUg4M,GAC7B/tM,EAAOioB,QAAQ6lL,SAASE,OAAOD,EACjC,IAGGnxL,EAAIpf,QAAT,CAI0B,iBAAfg3C,EAAK5J,QACK,IAAf4J,EAAK5J,MACPn6C,KAAKwP,SAAS,CAAE0tM,WAAW,IAE3Bl9M,KAAKw9M,OAAS71M,YAAW,WACvB4H,EAAOC,SAAS,CAAE0tM,WAAW,GAC/B,GAAGn5J,EAAK5J,QAIgB,iBAAjB4J,EAAK04J,UACdz8M,KAAKy9M,SAAW91M,YAAW,WACzB4H,EAAOC,SAAS,CAAEwtM,UAAU,GAC9B,GAAGj5J,EAAK04J,UAGV,IAAI10M,EAAS,WACNwH,EAAO6tM,WAIZ7tM,EAAOC,SAAS,CACd9K,MAAOynB,EAAIznB,MACXu3M,OAAQ9vL,EAAI8vL,OACZlvM,QAASof,EAAIpf,UAGfwC,EAAOmuM,iBACT,EAEAvxL,EAAIkkG,QAAQzuH,MAAK,WACfmG,GACF,IAAGxD,OAAM,SAAUnB,GACjB2E,GACF,GApCA,CAqCF,EAEA+0M,EAAkBh/M,UAAUu0M,qBAAuB,WACjDryM,KAAKo9M,UAAW,EAChBp9M,KAAK09M,gBACP,EAEAZ,EAAkBh/M,UAAU4/M,eAAiB,WAC3Cx6G,aAAaljG,KAAKw9M,QAClBt6G,aAAaljG,KAAKy9M,SACpB,EAEAX,EAAkBh/M,UAAU+2I,OAAS,WACnC,OAAI70I,KAAK2N,MAAMZ,SAAW/M,KAAK2N,MAAMjJ,MAC5BsI,EAAM4wF,cAAc75C,EAAKh3C,QAAS,CACvCjI,UAAW9E,KAAK2N,MAAMZ,QACtBmwM,UAAWl9M,KAAK2N,MAAMuvM,UACtBF,SAAUh9M,KAAK2N,MAAMqvM,SACrBt4M,MAAO1E,KAAK2N,MAAMjJ,MAClBq4M,MAAO/8M,KAAK+8M,QAEL/8M,KAAK2N,MAAMsuM,OACbl4J,EAAK8wF,OAAO70I,KAAK2N,MAAMsuM,OAAQj8M,KAAK/C,OAEpC,IAEX,EAEO6/M,CACT,CAhHwB,CAgHtB9vM,EAAMC,WAAY4qG,EAAOk8B,aAAe,CACxCspE,SAAUl4B,EAAUH,MAAM,CACxBu4B,OAAQp4B,EAAU/uC,KAAKn8D,cAExBuiI,CACL,CAEA,SAAS57F,EAAS78D,GAChB,OAAOu4J,EAAwBt4M,EAAM+/C,EACvC,CAUA68D,EAAS1nF,IART,SAAqB6qB,GACnB,GAA2B,mBAAhBA,EAAK8wF,OACd,MAAM,IAAI5xI,MAAM,2DAGlB,OAAOq5M,EAAwBJ,EAASn4J,EAC1C,EAIA,IAAI45J,EAAU,SAAUC,GAGtB,SAASD,IAGP,OAFAhhN,EAAgBqD,KAAM29M,GAEfl+M,EAA2BO,KAAM49M,EAAkB19M,MAAMF,KAAMC,WACxE,CAcA,OApBAlC,EAAU4/M,EAASC,GAQnBD,EAAQ7/M,UAAUgkM,gBAAkB,WAClC,MAAO,CACLub,SAAU,CACRE,OAAQv9M,KAAK/C,MAAMsgN,QAGzB,EAEAI,EAAQ7/M,UAAU+2I,OAAS,WACzB,OAAO7nI,EAAM48K,SAASi0B,KAAK79M,KAAK/C,MAAMkjG,SACxC,EAEOw9G,CACT,CAtBc,CAsBZ3wM,EAAMC,WAcR,SAAS6wM,EAAkBC,GAGzB,IAFA,IAAI5B,EAAW,GAER4B,EAAa5gN,QAAQ,CAC1B,IAAI8xI,EAAO8uE,EAAap5L,MACxBw3L,EAASj7M,KAAK+tI,IAChB,CAEA,OAAOvtI,QAAQ8lI,IAAI20E,GAAUv6M,MAAK,WAChC,GAAIm8M,EAAa5gN,OACf,OAAO2gN,EAAkBC,EAE7B,GACF,CAzBAJ,EAAQxhG,UAAY,CAClBohG,OAAQp4B,EAAU/uC,KAAKn8D,YAEzB0jI,EAAQ9pE,kBAAoB,CAC1BwpE,SAAUl4B,EAAUH,MAAM,CACxBu4B,OAAQp4B,EAAU/uC,KAAKn8D,aACtBA,YAIL2mC,EAAS+8F,QAAUA,EAiBnB/8F,EAASo9F,WAAa,WACpB,OAAO,IAAIt8M,SAAQ,SAAUC,EAASiiB,GACpCk6L,EAAkB/B,GAAkBn6M,KAAKD,EAASiiB,EACpD,GACF,EAEAg9F,EAASq9F,aAAe,WACtB,OAAO,IAAIv8M,SAAQ,SAAUC,EAASiiB,GAEpCk6L,EAAkB9B,GAAoBp6M,KAAKD,EAASA,EACtD,GACF,EAEAwhH,EAAOC,QAAUxC,gCCnUjB,IAAIqjE,EAAuB,EAAQ,OAEnC,SAASC,IAAiB,CAC1B,SAASg6B,IAA0B,CACnCA,EAAuBC,kBAAoBj6B,EAE3C/gE,EAAOC,QAAU,WACf,SAAS+gE,EAAKlnL,EAAOoM,EAAU+6K,EAAe5rK,EAAU6rK,EAAcC,GACpE,GAAIA,IAAWL,EAAf,CAIA,IAAI7gL,EAAM,IAAIH,MACZ,mLAKF,MADAG,EAAIF,KAAO,sBACLE,CAPN,CAQF,CAEA,SAASmhL,IACP,OAAOJ,CACT,CAHAA,EAAKlqG,WAAakqG,EAMlB,IAAIK,EAAiB,CACnBtlK,MAAOilK,EACPi6B,OAAQj6B,EACRM,KAAMN,EACN/tC,KAAM+tC,EACNntD,OAAQmtD,EACR/jL,OAAQ+jL,EACR53D,OAAQ43D,EACR5zJ,OAAQ4zJ,EAERO,IAAKP,EACLQ,QAASJ,EACTjzK,QAAS6yK,EACTmkB,YAAankB,EACbS,WAAYL,EACZ/jJ,KAAM2jJ,EACNU,SAAUN,EACVO,MAAOP,EACPQ,UAAWR,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBg5B,EAChBC,kBAAmBj6B,GAKrB,OAFAM,EAAeW,UAAYX,EAEpBA,CACT,kBC/CErhE,EAAOC,QAAU,EAAQ,MAAR,2BCNnBD,EAAOC,QAFoB,+JCJ3B,IAAIi7F,EAJJ,SAA0Bt9M,GACxBA,GACF,EAIO,MAEMu9M,EAAW,IAAMD,iBCR9B,MAAME,EAAa56M,OAAO+/B,IAAI,uBACxB86K,EAA2B,oBAAfC,WAA6BA,WAE/C,CAAC,EAED,SAASC,IACP,IAAIC,EAEJ,IAAK,gBAAqB,MAAO,CAAC,EAClC,MAAMC,EAAkD,OAApCD,EAAiBH,EAAGD,IAAuBI,EAAiBH,EAAGD,GAAc,IAAIrlL,IACrG,IAAI2lL,EAAcD,EAAWp+M,IAAI,iBAYjC,OAVKq+M,IACHA,EAAc,gBAAoB,MAMlCD,EAAWlnL,IAAI,gBAAqBmnL,IAG/BA,CACT,CAEO,MAAMC,EAAiCJ,IChBvC,SAASK,EAAuBvnL,EAAUsnL,GAC/C,OAAO,WAOL,OANqB,IAAAxR,YAAW91K,EAOlC,CACF,CAkBO,MAAM,EAA+BunL,ICtC/BC,EAAiB,KAC5B,MAAM,IAAI/7M,MAAM,wBAAwB,ECG1C,IAAIg8M,EAAmCD,EAChC,MAIDE,EAAc,CAACl6L,EAAGzf,IAAMyf,IAAMzf,EAS7B,SAAS45M,EAAmB3nL,EAAUsnL,GAC3C,MAAMM,EAAkB5nL,IAAYsnL,EAAoB,EAAyBC,EAAuBvnL,GACxG,OAAO,SAAqB6nL,EAAUC,EAAsB,CAAC,GAC3D,MAAM,WACJC,EAAaL,EAAW,eACxBM,EAA0B,UAC1BC,GACiC,mBAAxBH,EAAqC,CAC9CC,WAAYD,GACVA,EAgBJ,MAAM,MACJ7hG,EAAK,aACLiiG,EAAY,eACZC,EACAH,eAAgBI,EAChBH,UAAWI,GACTT,IAEEU,IADW,IAAAnS,SAAO,IACA,IAAAN,aAAY,CAClC,CAACgS,EAASn8M,MAAMyK,GACG0xM,EAAS1xM,IAyD5B0xM,EAASn8M,MAAO,CAACm8M,EAAUO,EAAsBJ,KAC7CO,EAAgBd,EAAiCS,EAAaM,aAAcviG,EAAMv5G,SAAUy7M,GAAkBliG,EAAMv5G,SAAU47M,EAAiBP,GAErJ,OADA,IAAA3R,eAAcmS,GACPA,CACT,CACF,CAyBO,MAAME,EAA2Bd,IC5IxC,SAAS97G,IACP,OAAOA,EAAW7lG,OAAO2lB,OAAS3lB,OAAO2lB,OAAOzkB,OAAS,SAAU4kB,GACjE,IAAK,IAAIjkB,EAAI,EAAGA,EAAIY,UAAU9C,OAAQkC,IAAK,CACzC,IAAI+jB,EAAInjB,UAAUZ,GAClB,IAAK,IAAIylB,KAAK1B,GAAG,CAAG,GAAE9iB,eAAelB,KAAKgkB,EAAG0B,KAAOxB,EAAEwB,GAAK1B,EAAE0B,GAC/D,CACA,OAAOxB,CACT,EAAG+/E,EAASnjG,MAAM,KAAMD,UAC1B,CCRA,SAASigN,EAA8Bp7L,EAAGzlB,GACxC,GAAI,MAAQylB,EAAG,MAAO,CAAC,EACvB,IAAI1B,EAAI,CAAC,EACT,IAAK,IAAIE,KAAKwB,EAAG,GAAI,CAAC,EAAExkB,eAAelB,KAAK0lB,EAAGxB,GAAI,CACjD,GAAIjkB,EAAE0Z,SAASuK,GAAI,SACnBF,EAAEE,GAAKwB,EAAExB,EACX,CACA,OAAOF,CACT,oCCPA,MAAM+8L,EAAY,CAAC,sBAAuB,yBAA0B,kBAE7D,SAASC,EAA8BC,EAAiBx8G,EAAoBy8G,EAAYr8M,GAAU,eACvGs8M,EAAc,iBACdC,EAAgB,mBAChBC,IAEA,IACI9yM,EACA+yM,EACAC,EACAC,EACAC,EALAC,GAAoB,EAuCxB,SAASC,EAAsBnlG,EAAWolG,GACxC,MAAMC,GAAgBT,EAAiBQ,EAAcN,GAC/CQ,GAAgBX,EAAe3kG,EAAWjuG,EAAOqzM,EAAcN,GAGrE,OAFA/yM,EAAQiuG,EACR8kG,EAAWM,EACPC,GAAgBC,GA1BpBP,EAAaN,EAAgB1yM,EAAO+yM,GAChC78G,EAAmBs9G,oBAAmBP,EAAgB/8G,EAAmB5/F,EAAUy8M,IACvFG,EAAcP,EAAWK,EAAYC,EAAeF,GAC7CG,GAwBHI,GApBAZ,EAAgBc,oBAAmBR,EAAaN,EAAgB1yM,EAAO+yM,IACvE78G,EAAmBs9G,oBAAmBP,EAAgB/8G,EAAmB5/F,EAAUy8M,IACvFG,EAAcP,EAAWK,EAAYC,EAAeF,GAC7CG,GAkBHK,EAfN,WACE,MAAME,EAAiBf,EAAgB1yM,EAAO+yM,GACxCW,GAAqBZ,EAAmBW,EAAgBT,GAG9D,OAFAA,EAAaS,EACTC,IAAmBR,EAAcP,EAAWK,EAAYC,EAAeF,IACpEG,CACT,CAS2BS,GAClBT,CACT,CAEA,OAAO,SAAgCjlG,EAAWolG,GAChD,OAAOF,EAAoBC,EAAsBnlG,EAAWolG,IA3C5DrzM,EA2C4FiuG,EA1C5F8kG,EA0CuGM,EAzCvGL,EAAaN,EAAgB1yM,EAAO+yM,GACpCE,EAAgB/8G,EAAmB5/F,EAAUy8M,GAC7CG,EAAcP,EAAWK,EAAYC,EAAeF,GACpDI,GAAoB,EACbD,EAsCT,CACF,CC5DO,SAASU,EAKhBC,GACE,OAAO,SAA8Bv9M,GACnC,MAAMwvJ,EAAW+tD,EAAYv9M,GAE7B,SAASw9M,IACP,OAAOhuD,CACT,CAGA,OADAguD,EAAiBN,mBAAoB,EAC9BM,CACT,CACF,CASO,SAASC,EAAqBC,GACnC,OAAOA,EAAWR,kBAAoBjiN,QAAQyiN,EAAWR,mBAA2C,IAAtBQ,EAAWxkN,MAC3F,CAaO,SAASykN,EAAmBD,EAAYvuL,GAC7C,OAAO,SAA2BnvB,GAAU,YAC1C41F,IAEA,MAAMwvC,EAAQ,SAAyBw4E,EAAiBnB,GACtD,OAAOr3E,EAAM83E,kBAAoB93E,EAAMs4E,WAAWE,EAAiBnB,GAAYr3E,EAAMs4E,WAAWE,OAAiBz/M,EACnH,EAoBA,OAjBAinI,EAAM83E,mBAAoB,EAE1B93E,EAAMs4E,WAAa,SAAgCE,EAAiBnB,GAClEr3E,EAAMs4E,WAAaA,EACnBt4E,EAAM83E,kBAAoBO,EAAqBC,GAC/C,IAAI1kN,EAAQosI,EAAMw4E,EAAiBnB,GASnC,MAPqB,mBAAVzjN,IACTosI,EAAMs4E,WAAa1kN,EACnBosI,EAAM83E,kBAAoBO,EAAqBzkN,GAC/CA,EAAQosI,EAAMw4E,EAAiBnB,IAI1BzjN,CACT,EAEOosI,CACT,CACF,CCrEO,SAASy4E,EAAwBzkL,EAAKn6B,GAC3C,MAAO,CAACe,EAAUjD,KAChB,MAAM,IAAIiC,MAAM,gCAAgCo6B,SAAWn6B,wCAA2ClC,EAAQ+gN,wBAAwB,CAE1I,CCDO,SAASC,EAAkBrB,EAAYC,EAAeF,GAE3D,OAAOr9G,EAAS,CAAC,EAAGq9G,EAAUC,EAAYC,EAC5C,CCkEA,MAAMqB,EAAgB,CACpB,MAAAlyF,GAAU,EAEVvvH,IAAK,IAAM,IAEN,SAAS0hN,EAAmBzkG,EAAO0kG,GACxC,IAAIC,EACAnhN,EAAYghN,EAEZI,EAAsB,EAEtBC,GAAiB,EAoBrB,SAASC,IACH7C,EAAa8C,eACf9C,EAAa8C,eAEjB,CAMA,SAASC,IACPJ,IAEKD,IACHA,EAAcD,EAAYA,EAAUnC,aAAauC,GAAuB9kG,EAAMuuF,UAAUuW,GACxFthN,EAlHN,WACE,MAAMo9M,EAAQC,IACd,IAAIlxL,EAAQ,KACR3C,EAAO,KACX,MAAO,CACL,KAAAuzD,GACE5wD,EAAQ,KACR3C,EAAO,IACT,EAEA,MAAAslG,GACEsuF,GAAM,KACJ,IAAI58M,EAAW2rB,EAEf,KAAO3rB,GACLA,EAASV,WACTU,EAAWA,EAAS6K,IACtB,GAEJ,EAEA,GAAA9L,GACE,IAAIS,EAAY,GACZQ,EAAW2rB,EAEf,KAAO3rB,GACLR,EAAUC,KAAKO,GACfA,EAAWA,EAAS6K,KAGtB,OAAOrL,CACT,EAEA,SAAA+qM,CAAUjrM,GACR,IAAI2hN,GAAe,EACfjhN,EAAWgpB,EAAO,CACpB1pB,WACAuL,KAAM,KACNihC,KAAM9iB,GASR,OANIhpB,EAAS8rC,KACX9rC,EAAS8rC,KAAKjhC,KAAO7K,EAErB2rB,EAAQ3rB,EAGH,WACAihN,GAA0B,OAAVt1L,IACrBs1L,GAAe,EAEXjhN,EAAS6K,KACX7K,EAAS6K,KAAKihC,KAAO9rC,EAAS8rC,KAE9B9iB,EAAOhpB,EAAS8rC,KAGd9rC,EAAS8rC,KACX9rC,EAAS8rC,KAAKjhC,KAAO7K,EAAS6K,KAE9B8gB,EAAQ3rB,EAAS6K,KAErB,CACF,EAGJ,CAgDkBq2M,GAEhB,CAEA,SAASC,IACPP,IAEID,GAAuC,IAAxBC,IACjBD,IACAA,OAAchgN,EACdnB,EAAU+8E,QACV/8E,EAAYghN,EAEhB,CAgBA,MAAMvC,EAAe,CACnBM,aA/DF,SAAsBv+M,GACpBghN,IACA,MAAMI,EAAkB5hN,EAAU+qM,UAAUvqM,GAE5C,IAAIqhN,GAAU,EACd,MAAO,KACAA,IACHA,GAAU,EACVD,IACAD,IACF,CAEJ,EAoDEG,iBAlDF,WACE9hN,EAAU8uH,QACZ,EAiDEwyF,sBACAG,aA1CF,WACE,OAAOJ,CACT,EAyCEG,aAnBF,WACOH,IACHA,GAAiB,EACjBG,IAEJ,EAeEG,eAbF,WACMN,IACFA,GAAiB,EACjBM,IAEJ,EASEI,aAAc,IAAM/hN,GAEtB,OAAOy+M,CACT,CCnJO,MACMuD,IADiC,oBAAXpvM,aAAqD,IAApBA,OAAOnR,eAAqE,IAAlCmR,OAAOnR,SAASk7F,eACzE,kBAAwB,YCX7E,SAASssB,EAAGjjH,EAAGgd,GACb,OAAIhd,IAAMgd,EACK,IAANhd,GAAiB,IAANgd,GAAW,EAAIhd,GAAM,EAAIgd,EAEpChd,GAAMA,GAAKgd,GAAMA,CAE5B,CAEe,SAASi/L,EAAaC,EAAMC,GACzC,GAAIl5F,EAAGi5F,EAAMC,GAAO,OAAO,EAE3B,GAAoB,iBAATD,GAA8B,OAATA,GAAiC,iBAATC,GAA8B,OAATA,EAC3E,OAAO,EAGT,MAAMC,EAAQ7lN,OAAO2yB,KAAKgzL,GACpBG,EAAQ9lN,OAAO2yB,KAAKizL,GAC1B,GAAIC,EAAMlmN,SAAWmmN,EAAMnmN,OAAQ,OAAO,EAE1C,IAAK,IAAID,EAAI,EAAGA,EAAImmN,EAAMlmN,OAAQD,IAChC,IAAKM,OAAOM,UAAUwC,eAAelB,KAAKgkN,EAAMC,EAAMnmN,MAAQgtH,EAAGi5F,EAAKE,EAAMnmN,IAAKkmN,EAAKC,EAAMnmN,KAC1F,OAAO,EAIX,OAAO,CACT,CCxBA,MAAM,EAAY,CAAC,0BAgBnB,IAAIqmN,EAAuBvE,EACpB,MAKDwE,EAAwB,CAAC,KAAM,MAoBrC,SAASC,EAAoBC,EAAkBC,EAAgBC,EAAmBC,EAClFC,EAA2Bf,GAEzBW,EAAiBjqM,QAAUoqM,EAC3BD,EAAkBnqM,SAAU,EAExBqqM,EAA0BrqM,UAC5BqqM,EAA0BrqM,QAAU,KACpCspM,IAEJ,CAmFA,SAASgB,EAAY/+L,EAAGzf,GACtB,OAAOyf,IAAMzf,CACf,CA8QA,QAlPA,SAAiB86M,EAAiBx8G,EAAoBy8G,GAAY,KAGhE0D,EAAI,eACJzD,EAAiBwD,EAAW,iBAC5BvD,EAAmB0C,EAAY,mBAC/BzC,EAAqByC,EAAY,oBACjCe,EAAsBf,EAAY,WAElCgB,GAAa,EAAK,QAElB1sL,EAAUsnL,GACR,CAAC,GAQH,MAAM7mH,EAAUzgE,EACV2sL,EC1LD,SAAgC9D,GACrC,OAAQA,EAAkF,mBAApBA,EACtEuB,EAAmBvB,GAAsCyB,EAAwBzB,EAAiB,mBADxEkB,GAAuB,KAAM,CAAG,IAE5D,CDuL8B6C,CAAuB/D,GAC7CgE,EE1LD,SAAmCxgH,GACxC,OAAOA,GAAoD,iBAAvBA,EAAkC09G,GAAuBt9M,GCJhF,SAA4BqgN,EAAgBrgN,GACzD,MAAMsgN,EAAsB,CAAC,EAE7B,IAAK,MAAM7mN,KAAO4mN,EAAgB,CAChC,MAAME,EAAgBF,EAAe5mN,GAER,mBAAlB8mN,IACTD,EAAoB7mN,GAAO,IAAI0/B,IAASn5B,EAASugN,KAAiBpnL,IAEtE,CAEA,OAAOmnL,CACT,CDPEnmG,CAAmBva,EAAoB5/F,KAAc4/F,EAEjB,mBAAvBA,EACb+9G,EAAmB/9G,GAA4Ci+G,EAAwBj+G,EAAoB,sBAHjC09G,GAAuBt9M,IAAY,CAC3GA,cAGJ,CFoLiCwgN,CAA0B5gH,GACnD6gH,EJjKD,SAA2BpE,GAChC,OAAQA,EAA6D,mBAAfA,EAvBjD,SAA4BA,GACjC,OAAO,SAA6Br8M,GAAU,YAC5C41F,EAAW,oBACXoqH,IAEA,IACIpD,EADA8D,GAAa,EAEjB,OAAO,SAAyBhE,EAAYC,EAAeF,GACzD,MAAMkE,EAAkBtE,EAAWK,EAAYC,EAAeF,GAU9D,OARIiE,EACGV,EAAoBW,EAAiB/D,KAAcA,EAAc+D,IAEtED,GAAa,EACb9D,EAAc+D,GAIT/D,CACT,CACF,CACF,CAEoFgE,CAAmBvE,GAAcwB,EAAwBxB,EAAY,cAAlI,IAAM0B,CAC7B,CI+JyB8C,CAAkBxE,GACnCyE,EAA2B7lN,QAAQmhN,GAuNzC,OArNwB2E,IAKtB,MAAMjD,EAAuBiD,EAAiBnrH,aAAemrH,EAAiB9hN,MAAQ,YAChF22F,EAAc,WAAWkoH,KACzBkD,EAAyB,CAC7BF,2BACAlrH,cACAkoH,uBACAiD,mBAEAb,sBAEAE,yBACAK,iBACAnE,iBACAE,qBACAD,mBACAyD,uBAGF,SAASiB,EAAgBjoN,GACvB,MAAOkoN,EAAcC,EAAwBvB,GAAgB,WAAc,KAIzE,MAAM,uBACJuB,GACEnoN,EACE4mN,EAAe3D,EAA8BjjN,EAAO,GAE1D,MAAO,CAACA,EAAMu6B,QAAS4tL,EAAwBvB,EAAa,GAC3D,CAAC5mN,IACEooN,EAAe,WAAc,IAG1BF,GAAgBA,EAAaG,WACpC,IAAAjK,mBAAgC,gBAAoB8J,EAAaG,SAAU,OAASH,EAAeltH,GAClG,CAACktH,EAAcltH,IAEZstH,EAAe,aAAiBF,GAIhCG,EAAwBtmN,QAAQjC,EAAMwgH,QAAUv+G,QAAQjC,EAAMwgH,MAAMv5G,WAAahF,QAAQjC,EAAMwgH,MAAMx5G,UACrGwhN,EAA0BvmN,QAAQqmN,IAAiBrmN,QAAQqmN,EAAa9nG,OAO9E,MAAMA,EAAQ+nG,EAAwBvoN,EAAMwgH,MAAQ8nG,EAAa9nG,MAC3DkiG,EAAiB8F,EAA0BF,EAAa5F,eAAiBliG,EAAMv5G,SAC/EwhN,EAAqB,WAAc,IPvLhC,SAAmCzhN,EAAUyB,GAC1D,IAAI,oBACFy+M,EAAmB,uBACnBE,EAAsB,eACtBK,GACEh/M,EACA1E,EAAUk/M,EAA8Bx6M,EAAMy6M,GAUlD,OAAOC,EARiB+D,EAAoBlgN,EAAUjD,GAC3BqjN,EAAuBpgN,EAAUjD,GACzC0jN,EAAezgN,EAAUjD,GAM0CiD,EAAUjD,EAClG,COyKe,CAAuBy8G,EAAMx5G,SAAUghN,IAC7C,CAACxnG,KACGiiG,EAAcqD,GAAoB,WAAc,KACrD,IAAKgC,EAA0B,OAAOvB,EAGtC,MAAM9D,EAAewC,EAAmBzkG,EAAO+nG,OAAwBpjN,EAAYmjN,EAAa7F,cAK1FqD,EAAmBrD,EAAaqD,iBAAiBrkN,KAAKghN,GAC5D,MAAO,CAACA,EAAcqD,EAAiB,GACtC,CAACtlG,EAAO+nG,EAAuBD,IAG5BI,EAAyB,WAAc,IACvCH,EAIKD,EAKFliH,EAAS,CAAC,EAAGkiH,EAAc,CAChC7F,kBAED,CAAC8F,EAAuBD,EAAc7F,IAEnCiE,EAAiB,WACjBD,EAAmB,SAAaG,GAChCC,EAA4B,WAC5BF,EAAoB,UAAa,GAEjCrd,GADuB,UAAa,GACxB,UAAa,IACzBqf,EAAkC,WACxC3C,GAA0B,KACxB1c,EAAU9sL,SAAU,EACb,KACL8sL,EAAU9sL,SAAU,CAAK,IAE1B,IACH,MAAMosM,EAA2B,WAAc,IAC5B,IAOX/B,EAA0BrqM,SAAWoqM,IAAiBH,EAAiBjqM,QAClEqqM,EAA0BrqM,QAO5BisM,EAAmBjoG,EAAMv5G,WAAY2/M,IAI7C,CAACpmG,EAAOomG,IAILiC,EAAoB,WAAc,IACpBC,GACXrG,EAxQf,SAA0BqF,EAA0BtnG,EAAOiiG,EAAcgG,EAAoBhC,EAAkBC,EAAgBC,EAAmBrd,EAAWud,EAA2Bf,EACxLiD,GAEE,IAAKjB,EAA0B,MAAO,OAEtC,IAAIkB,GAAiB,EACjBC,EAAkB,KAEtB,MAAMC,EAAkB,KACtB,GAAIF,IAAmB1f,EAAU9sL,QAG/B,OAIF,MAAM2sM,EAAmB3oG,EAAMv5G,WAC/B,IAAImiN,EAAe3hN,EAEnB,IAGE2hN,EAAgBX,EAAmBU,EAAkB1C,EAAiBjqM,QACxE,CAAE,MAAOpa,GACPqF,EAAQrF,EACR6mN,EAAkB7mN,CACpB,CAEKqF,IACHwhN,EAAkB,MAIhBG,IAAkB1C,EAAelqM,QAC9BmqM,EAAkBnqM,SACrBspM,KAOFY,EAAelqM,QAAU4sM,EACzBvC,EAA0BrqM,QAAU4sM,EACpCzC,EAAkBnqM,SAAU,EAG5BusM,IACF,EAyBF,OArBAtG,EAAa8C,cAAgB2D,EAC7BzG,EAAa+C,eAGb0D,IAE2B,KAKzB,GAJAF,GAAiB,EACjBvG,EAAakD,iBACblD,EAAa8C,cAAgB,KAEzB0D,EAMF,MAAMA,CACR,CAIJ,CAkMiBI,CAAiBvB,EAA0BtnG,EAAOiiG,EACzDgG,EAAoBhC,EAAkBC,EAAgBC,EAAmBrd,EAAWud,EAA2Bf,EAAkBgD,GAJxH,QAQV,CAACrG,IApSV,IAA2C6G,EAAYC,EAAY3hB,EAsS7D,IAAI4hB,EAtSiCF,EAqSH9C,EArSe+C,EAqSM,CAAC9C,EAAkBC,EAAgBC,EAAmBC,EAAcC,EAA2Bf,GApS1JE,GAA0B,IAAMsD,KAAcC,IAAa3hB,GAuSvD,IACE4hB,EAAmBlD,EACnBuC,EAEAD,EAA0BlG,EAAiB,IAAM+F,EAAmB/F,IAAkBkE,GAAgBgC,EACxG,CAAE,MAAOziN,GAMP,MALIwiN,EAAgCnsM,UAElCrW,EAAI8D,SAAW,4DAA4D0+M,EAAgCnsM,QAAQtY,aAG/GiC,CACR,CAEA6/M,GAA0B,KACxB2C,EAAgCnsM,aAAUrX,EAC1C0hN,EAA0BrqM,aAAUrX,EACpCuhN,EAAelqM,QAAUgtM,CAAgB,IAI3C,MAAMC,EAA2B,WAAc,IAI3C,gBAAoB1B,EAAkB3hH,EAAS,CAAC,EAAGojH,EAAkB,CACnErmM,IAAKglM,MAGR,CAACA,EAAwBJ,EAAkByB,IAe9C,OAZsB,WAAc,IAC9B1B,EAIkB,gBAAoBM,EAAatlG,SAAU,CAC7D3hH,MAAOunN,GACNe,GAGEA,GACN,CAACrB,EAAcqB,EAA0Bf,GAE9C,CAEA,MAGMgB,EAHW,OAAWzB,GAO5B,GAHAyB,EAAQ3B,iBAAmBA,EAC3B2B,EAAQ9sH,YAAcqrH,EAAgBrrH,YAAcA,EAEhDqqH,EAAY,CACd,MAOM0C,EAPa,cAAiB,SAA2B3pN,EAAOmjB,GAEpE,OAAoB,gBAAoBumM,EAAStjH,EAAS,CAAC,EAAGpmG,EAAO,CACnEmoN,uBAAwBhlM,IAE5B,IAKA,OAFAwmM,EAAU/sH,YAAcA,EACxB+sH,EAAU5B,iBAAmBA,EACtB,IAAa4B,EAAW5B,EACjC,CAEA,OAAO,IAAa2B,EAAS3B,EAAiB,CAIlD,EIxWA,QA1CA,UAAkB,MAChBvnG,EAAK,QACLjmF,EAAO,SACP2oE,EAAQ,YACR0mH,EAAW,eACXrH,EAAiB,OAAM,UACvBC,EAAY,SAEZ,MAAM8F,EAAe,WAAc,KACjC,MAAM7F,EAAewC,EAAmBzkG,GACxC,MAAO,CACLA,QACAiiG,eACAC,eAAgBkH,EAAc,IAAMA,OAAczkN,EAClDo9M,iBACAC,YACD,GACA,CAAChiG,EAAOopG,EAAarH,EAAgBC,IAClCqH,EAAgB,WAAc,IAAMrpG,EAAMv5G,YAAY,CAACu5G,IAC7DwlG,GAA0B,KACxB,MAAM,aACJvD,GACE6F,EAQJ,OAPA7F,EAAa8C,cAAgB9C,EAAaqD,iBAC1CrD,EAAa+C,eAETqE,IAAkBrpG,EAAMv5G,YAC1Bw7M,EAAaqD,mBAGR,KACLrD,EAAakD,iBACblD,EAAa8C,mBAAgBpgN,CAAS,CACvC,GACA,CAACmjN,EAAcuB,IAClB,MAAM7uH,EAAUzgE,GAAWsnL,EAE3B,OAAoB,gBAAoB7mH,EAAQ8nB,SAAU,CACxD3hH,MAAOmnN,GACNplH,EACL,ECpCO,SAAS4mH,EAAgBvvL,EAAUsnL,GACxC,MAAMM,EACN5nL,IAAYsnL,EAAoB,EAChCC,EAAuBvnL,GACvB,OAAO,WACL,MAAM,MACJimF,GACE2hG,IAEJ,OAAO3hG,CACT,CACF,CAiBO,MAAM,EAAwBspG,IC5B9B,SAASC,EAAmBxvL,EAAUsnL,GAC3C,MAAMmI,EACNzvL,IAAYsnL,EAAoB,EAAkBiI,EAAgBvvL,GAClE,OAAO,WAGL,OAFcyvL,IAEDhjN,QACf,CACF,CAuBO,MAAMijN,EAA2BF,IhBnCHvhG,MJEb0hG,EIFa1hG,EiBIf,EAAAw5F,iCjBHpBA,EAAmCx5F,EUaJA,KAC/B89F,EAAuB99F,CAAE,EOV3B2hG,CAAkB,EAAA7D,sBrBHM4D,EqBMf,0BrBN2B9I,EAAQ8I,kCsBE6Z5rK,EAAxbh2C,EAAE5B,OAAO+/B,IAAI,iBAAiBmY,EAAEl4C,OAAO+/B,IAAI,gBAAgB5gB,EAAEnf,OAAO+/B,IAAI,kBAAkBrkC,EAAEsE,OAAO+/B,IAAI,qBAAqBxpB,EAAEvW,OAAO+/B,IAAI,kBAAkBnnC,EAAEoH,OAAO+/B,IAAI,kBAAkBuS,EAAEtyC,OAAO+/B,IAAI,iBAAiB3e,EAAEphB,OAAO+/B,IAAI,wBAAwBtiC,EAAEuC,OAAO+/B,IAAI,qBAAqByX,EAAEx3C,OAAO+/B,IAAI,kBAAkBpgB,EAAE3f,OAAO+/B,IAAI,uBAAuB9kC,EAAE+E,OAAO+/B,IAAI,cAAc1qB,EAAErV,OAAO+/B,IAAI,cAActgB,EAAEzf,OAAO+/B,IAAI,mBACtb,SAASjf,EAAEO,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIF,EAAEE,EAAEojK,SAAS,OAAOtjK,GAAG,KAAKvf,EAAE,OAAOyf,EAAEA,EAAElkB,MAAQ,KAAKgiB,EAAE,KAAK5I,EAAE,KAAK7a,EAAE,KAAK87C,EAAE,KAAK73B,EAAE,OAAO0B,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEojK,UAAY,KAAKrjK,EAAE,KAAKkxB,EAAE,KAAK70C,EAAE,KAAK4X,EAAE,KAAKpa,EAAE,KAAKrC,EAAE,OAAOyoB,EAAE,QAAQ,OAAOF,GAAG,KAAK+2B,EAAE,OAAO/2B,EAAE,CAAC,CADkMy2B,EAAE53C,OAAO+/B,IAAI,0BAE1W0/E,EAAQi4F,kBAAkB,SAASr2L,GAAG,OAAOP,EAAEO,KAAKixB,CAAC,gCCRjKktE,EAAOC,QAAU,EAAjB,qCCKW,IAAIhiH,EAAE,EAAQ,OAAiBkiB,EAAE,MAAM1kB,EAAE,MAAMwkH,EAAQlwG,SAAS,MAAMkwG,EAAQ83F,WAAW,MAAM93F,EAAQ63F,SAAS,MAAM,IAAIjiM,EAAE,MAAM8L,EAAE,MAAM1B,EAAE,MAAMggG,EAAQj2G,SAAS,MAAM,IAAIouC,EAAE,MAAM92B,EAAE,MACpM,GAAG,mBAAoB9gB,QAAQA,OAAO+/B,IAAI,CAAC,IAAIsS,EAAEryC,OAAO+/B,IAAIpgB,EAAE0yB,EAAE,iBAAiBp3C,EAAEo3C,EAAE,gBAAgBotE,EAAQlwG,SAAS8iC,EAAE,kBAAkBotE,EAAQ83F,WAAWllK,EAAE,qBAAqBotE,EAAQ63F,SAASjlK,EAAE,kBAAkBh9B,EAAEg9B,EAAE,kBAAkBlxB,EAAEkxB,EAAE,iBAAiB5yB,EAAE4yB,EAAE,qBAAqBotE,EAAQj2G,SAAS6oC,EAAE,kBAAkBuF,EAAEvF,EAAE,cAAcvxB,EAAEuxB,EAAE,aAAa,CAAC,IAAI/uC,EAAE,mBAAoBtD,QAAQA,OAAO6gB,SACtR,SAAS03B,EAAEl3B,GAAG,IAAI,IAAIzf,EAAE,yDAAyDyf,EAAE62B,EAAE,EAAEA,EAAE57C,UAAU9C,OAAO0+C,IAAIt2C,GAAG,WAAWkuI,mBAAmBxzI,UAAU47C,IAAI,MAAM,yBAAyB72B,EAAE,WAAWzf,EAAE,gHAAgH,CACpb,IAAIk2C,EAAE,CAAC8qJ,UAAU,WAAW,OAAM,CAAE,EAAEO,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEJ,gBAAgB,WAAW,GAAG3gF,EAAE,CAAC,EAAE,SAAS7qE,EAAEj2B,EAAEzf,EAAEs2C,GAAG77C,KAAK/C,MAAM+nB,EAAEhlB,KAAKw3B,QAAQjyB,EAAEvF,KAAKy+F,KAAKqnB,EAAE9lH,KAAKm1J,QAAQt5G,GAAGJ,CAAC,CACrN,SAASO,IAAI,CAAyB,SAAS+mF,EAAE/9G,EAAEzf,EAAEs2C,GAAG77C,KAAK/C,MAAM+nB,EAAEhlB,KAAKw3B,QAAQjyB,EAAEvF,KAAKy+F,KAAKqnB,EAAE9lH,KAAKm1J,QAAQt5G,GAAGJ,CAAC,CADqGR,EAAEn9C,UAAUgpG,iBAAiB,CAAC,EAAE7rD,EAAEn9C,UAAU0R,SAAS,SAASwV,EAAEzf,GAAG,GAAG,iBAAkByf,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAM/hB,MAAMi5C,EAAE,KAAKl8C,KAAKm1J,QAAQsxC,gBAAgBzmM,KAAKglB,EAAEzf,EAAE,WAAW,EAAE01C,EAAEn9C,UAAUupN,YAAY,SAASriM,GAAGhlB,KAAKm1J,QAAQ2xC,mBAAmB9mM,KAAKglB,EAAE,cAAc,EACjeg3B,EAAEl+C,UAAUm9C,EAAEn9C,UAAsF,IAAIm2C,EAAE8uF,EAAEjlI,UAAU,IAAIk+C,EAAE/H,EAAE91C,YAAY4kI,EAAE3hI,EAAE6yC,EAAEgH,EAAEn9C,WAAWm2C,EAAEgzJ,sBAAqB,EAAG,IAAI79E,EAAE,CAAC3vG,QAAQ,MAAMm8B,EAAEp4C,OAAOM,UAAUwC,eAAeq7C,EAAE,CAACj+C,KAAI,EAAG0iB,KAAI,EAAGknM,QAAO,EAAGC,UAAS,GAChS,SAASnsK,EAAEp2B,EAAEzf,EAAEs2C,GAAG,IAAIx8C,EAAEyjB,EAAE,CAAC,EAAEiC,EAAE,KAAKkxB,EAAE,KAAK,GAAG,MAAM1wC,EAAE,IAAIlG,UAAK,IAASkG,EAAE6a,MAAM61B,EAAE1wC,EAAE6a,UAAK,IAAS7a,EAAE7H,MAAMqnB,EAAE,GAAGxf,EAAE7H,KAAK6H,EAAEqwC,EAAEx2C,KAAKmG,EAAElG,KAAKs8C,EAAEr7C,eAAejB,KAAKyjB,EAAEzjB,GAAGkG,EAAElG,IAAI,IAAI9C,EAAE0D,UAAU9C,OAAO,EAAE,GAAG,IAAIZ,EAAEumB,EAAEq9E,SAAStkD,OAAO,GAAG,EAAEt/C,EAAE,CAAC,IAAI,IAAI2d,EAAE6I,MAAMxmB,GAAG4+C,EAAE,EAAEA,EAAE5+C,EAAE4+C,IAAIjhC,EAAEihC,GAAGl7C,UAAUk7C,EAAE,GAAGr4B,EAAEq9E,SAASjmF,CAAC,CAAC,GAAG8K,GAAGA,EAAEo3F,aAAa,IAAI/8G,KAAK9C,EAAEyoB,EAAEo3F,kBAAe,IAASt5F,EAAEzjB,KAAKyjB,EAAEzjB,GAAG9C,EAAE8C,IAAI,MAAM,CAAC+oL,SAAS9kK,EAAExiB,KAAKkkB,EAAEtnB,IAAIqnB,EAAE3E,IAAI61B,EAAEh5C,MAAM6lB,EAAE+kL,OAAOz+E,EAAE3vG,QAAQ,CAChV,SAASksC,EAAE3gC,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEojK,WAAW9kK,CAAC,CAAoG,IAAIo4B,EAAE,OAAO,SAASrsB,EAAErK,EAAEzf,GAAG,MAAM,iBAAkByf,GAAG,OAAOA,GAAG,MAAMA,EAAEtnB,IAA7K,SAAgBsnB,GAAG,IAAIzf,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAIyf,EAAEqC,QAAQ,SAAQ,SAASrC,GAAG,OAAOzf,EAAEyf,EAAE,GAAE,CAA+EmiJ,CAAO,GAAGniJ,EAAEtnB,KAAK6H,EAAEihB,SAAS,GAAG,CAC/W,SAASs9F,EAAE9+F,EAAEzf,EAAEs2C,EAAEx8C,EAAEyjB,GAAG,IAAIiC,SAASC,EAAK,cAAcD,GAAG,YAAYA,IAAEC,EAAE,MAAK,IAAIixB,GAAE,EAAG,GAAG,OAAOjxB,EAAEixB,GAAE,OAAQ,OAAOlxB,GAAG,IAAK,SAAS,IAAK,SAASkxB,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOjxB,EAAEojK,UAAU,KAAK9kK,EAAE,KAAK1kB,EAAEq3C,GAAE,GAAI,GAAGA,EAAE,OAAWnzB,EAAEA,EAANmzB,EAAEjxB,GAASA,EAAE,KAAK3lB,EAAE,IAAIgwB,EAAE4mB,EAAE,GAAG52C,EAAE0jB,MAAMuO,QAAQxO,IAAI+4B,EAAE,GAAG,MAAM72B,IAAI62B,EAAE72B,EAAEqC,QAAQq0B,EAAE,OAAO,KAAKooE,EAAEhhG,EAAEvd,EAAEs2C,EAAE,IAAG,SAAS72B,GAAG,OAAOA,CAAC,KAAI,MAAMlC,IAAI6iC,EAAE7iC,KAAKA,EAD/W,SAAWkC,EAAEzf,GAAG,MAAM,CAAC6iL,SAAS9kK,EAAExiB,KAAKkkB,EAAElkB,KAAKpD,IAAI6H,EAAE6a,IAAI4E,EAAE5E,IAAInjB,MAAM+nB,EAAE/nB,MAAM4qM,OAAO7iL,EAAE6iL,OAAO,CACqR/rJ,CAAEh5B,EAAE+4B,IAAI/4B,EAAEplB,KAAKu4C,GAAGA,EAAEv4C,MAAMolB,EAAEplB,IAAI,IAAI,GAAGolB,EAAEplB,KAAK2pB,QAAQq0B,EAAE,OAAO,KAAK12B,IAAIzf,EAAErE,KAAK4hB,IAAI,EAAyB,GAAvBmzB,EAAE,EAAE52C,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO0jB,MAAMuO,QAAQtM,GAAG,IAAI,IAAIzoB,EACzf,EAAEA,EAAEyoB,EAAE7nB,OAAOZ,IAAI,CAAQ,IAAI2d,EAAE7a,EAAEgwB,EAAftK,EAAEC,EAAEzoB,GAAeA,GAAG05C,GAAG6tE,EAAE/+F,EAAExf,EAAEs2C,EAAE3hC,EAAE4I,EAAE,MAAM,GAAG5I,EANhE,SAAW8K,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAsC,mBAAjCA,EAAE/d,GAAG+d,EAAE/d,IAAI+d,EAAE,eAA0CA,EAAE,IAAI,CAMtDf,CAAEe,GAAG,mBAAoB9K,EAAE,IAAI8K,EAAE9K,EAAE9a,KAAK4lB,GAAGzoB,EAAE,IAAIwoB,EAAEC,EAAE1Y,QAAQyX,MAA6BkyB,GAAG6tE,EAA1B/+F,EAAEA,EAAE3mB,MAA0BmH,EAAEs2C,EAAtB3hC,EAAE7a,EAAEgwB,EAAEtK,EAAExoB,KAAkBumB,QAAQ,GAAG,WAAWiC,EAAE,MAAMxf,EAAE,GAAGyf,EAAE/hB,MAAMi5C,EAAE,GAAG,oBAAoB32C,EAAE,qBAAqB/H,OAAO2yB,KAAKnL,GAAG9L,KAAK,MAAM,IAAI3T,IAAI,OAAO0wC,CAAC,CAAC,SAASvyB,EAAEsB,EAAEzf,EAAEs2C,GAAG,GAAG,MAAM72B,EAAE,OAAOA,EAAE,IAAI3lB,EAAE,GAAGyjB,EAAE,EAAmD,OAAjDghG,EAAE9+F,EAAE3lB,EAAE,GAAG,IAAG,SAAS2lB,GAAG,OAAOzf,EAAEnG,KAAKy8C,EAAE72B,EAAElC,IAAI,IAAUzjB,CAAC,CAC3Z,SAASg8C,EAAEr2B,GAAG,IAAI,IAAIA,EAAEwiM,QAAQ,CAAC,IAAIjiN,EAAEyf,EAAEhO,QAAQzR,EAAEA,IAAIyf,EAAEwiM,QAAQ,EAAExiM,EAAEhO,QAAQzR,EAAEA,EAAE3D,MAAK,SAAS2D,GAAG,IAAIyf,EAAEwiM,UAAUjiN,EAAEA,EAAE82M,QAAQr3L,EAAEwiM,QAAQ,EAAExiM,EAAEhO,QAAQzR,EAAE,IAAE,SAASA,GAAG,IAAIyf,EAAEwiM,UAAUxiM,EAAEwiM,QAAQ,EAAExiM,EAAEhO,QAAQzR,EAAE,GAAE,CAAC,GAAG,IAAIyf,EAAEwiM,QAAQ,OAAOxiM,EAAEhO,QAAQ,MAAMgO,EAAEhO,OAAQ,CAAC,IAAIkkC,EAAE,CAACzhC,QAAQ,MAAM,SAASsiC,IAAI,IAAI/2B,EAAEk2B,EAAEzhC,QAAQ,GAAG,OAAOuL,EAAE,MAAM/hB,MAAMi5C,EAAE,MAAM,OAAOl3B,CAAC,CAAC,IAAIi3B,EAAE,CAACmuJ,uBAAuBlvJ,EAAEgpJ,wBAAwB,CAACpR,WAAW,GAAGsb,kBAAkBhlF,EAAEq+F,qBAAqB,CAAChuM,SAAQ,GAAI0J,OAAO/hB,GACjegiH,EAAQwmE,SAAS,CAACpiL,IAAIkc,EAAEpe,QAAQ,SAAS0f,EAAEzf,EAAEs2C,GAAGn4B,EAAEsB,GAAE,WAAWzf,EAAErF,MAAMF,KAAKC,UAAU,GAAE47C,EAAE,EAAE07C,MAAM,SAASvyE,GAAG,IAAIzf,EAAE,EAAuB,OAArBme,EAAEsB,GAAE,WAAWzf,GAAG,IAAUA,CAAC,EAAE26J,QAAQ,SAASl7I,GAAG,OAAOtB,EAAEsB,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAE64L,KAAK,SAAS74L,GAAG,IAAI2gC,EAAE3gC,GAAG,MAAM/hB,MAAMi5C,EAAE,MAAM,OAAOl3B,CAAC,GAAGo+F,EAAQn2G,UAAUguC,EAAEmoE,EAAQskG,cAAc3kF,EAAE3f,EAAQqjE,mDAAmDxqI,EAChXmnE,EAAQukG,aAAa,SAAS3iM,EAAEzf,EAAEs2C,GAAG,GAAG,MAAO72B,EAAc,MAAM/hB,MAAMi5C,EAAE,IAAIl3B,IAAI,IAAI3lB,EAAE+B,EAAE,CAAC,EAAE4jB,EAAE/nB,OAAO6lB,EAAEkC,EAAEtnB,IAAIqnB,EAAEC,EAAE5E,IAAI61B,EAAEjxB,EAAE6iL,OAAO,GAAG,MAAMtiM,EAAE,CAAoE,QAAnE,IAASA,EAAE6a,MAAM2E,EAAExf,EAAE6a,IAAI61B,EAAEmzE,EAAE3vG,cAAS,IAASlU,EAAE7H,MAAMolB,EAAE,GAAGvd,EAAE7H,KAAQsnB,EAAElkB,MAAMkkB,EAAElkB,KAAKs7G,aAAa,IAAI7/G,EAAEyoB,EAAElkB,KAAKs7G,aAAa,IAAIliG,KAAK3U,EAAEqwC,EAAEx2C,KAAKmG,EAAE2U,KAAKyhC,EAAEr7C,eAAe4Z,KAAK7a,EAAE6a,QAAG,IAAS3U,EAAE2U,SAAI,IAAS3d,EAAEA,EAAE2d,GAAG3U,EAAE2U,GAAG,CAAC,IAAIA,EAAEja,UAAU9C,OAAO,EAAE,GAAG,IAAI+c,EAAE7a,EAAE8gG,SAAStkD,OAAO,GAAG,EAAE3hC,EAAE,CAAC3d,EAAEwmB,MAAM7I,GAAG,IAAI,IAAIihC,EAAE,EAAEA,EAAEjhC,EAAEihC,IAAI5+C,EAAE4+C,GAAGl7C,UAAUk7C,EAAE,GAAG97C,EAAE8gG,SAAS5jG,CAAC,CAAC,MAAM,CAAC6rL,SAAS9kK,EAAExiB,KAAKkkB,EAAElkB,KACxfpD,IAAIolB,EAAE1C,IAAI2E,EAAE9nB,MAAMoC,EAAEwoM,OAAO5xJ,EAAE,EAAEmtE,EAAQwkG,cAAc,SAAS5iM,EAAEzf,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMyf,EAAE,CAACojK,SAAStjK,EAAEozL,sBAAsB3yM,EAAEm/L,cAAc1/K,EAAE6iM,eAAe7iM,EAAE8iM,aAAa,EAAE/nG,SAAS,KAAKulG,SAAS,OAAQvlG,SAAS,CAACqoE,SAASpvK,EAAE0d,SAAS1R,GAAUA,EAAEsgM,SAAStgM,CAAC,EAAEo+F,EAAQxlB,cAAcxiD,EAAEgoE,EAAQ2kG,cAAc,SAAS/iM,GAAG,IAAIzf,EAAE61C,EAAE18C,KAAK,KAAKsmB,GAAY,OAATzf,EAAEzE,KAAKkkB,EAASzf,CAAC,EAAE69G,EAAQ4kG,UAAU,WAAW,MAAM,CAACvuM,QAAQ,KAAK,EAAE2pG,EAAQ8gG,WAAW,SAASl/L,GAAG,MAAM,CAACojK,SAAShlK,EAAEyxH,OAAO7vH,EAAE,EAAEo+F,EAAQ6kG,eAAetiK,EAC3ey9D,EAAQl2G,KAAK,SAAS8X,GAAG,MAAM,CAACojK,SAAS3jK,EAAE4jK,SAAS,CAACm/B,SAAS,EAAExwM,QAAQgO,GAAGsjK,MAAMjtI,EAAE,EAAE+nE,EAAQ+B,KAAK,SAASngG,EAAEzf,GAAG,MAAM,CAAC6iL,SAAS7sI,EAAEz6C,KAAKkkB,EAAEwvH,aAAQ,IAASjvI,EAAE,KAAKA,EAAE,EAAE69G,EAAQiqF,YAAY,SAASroL,EAAEzf,GAAG,OAAOw2C,IAAIsxJ,YAAYroL,EAAEzf,EAAE,EAAE69G,EAAQkqF,WAAW,SAAStoL,EAAEzf,GAAG,OAAOw2C,IAAIuxJ,WAAWtoL,EAAEzf,EAAE,EAAE69G,EAAQwqF,cAAc,WAAW,EAAExqF,EAAQ6oF,UAAU,SAASjnL,EAAEzf,GAAG,OAAOw2C,IAAIkwJ,UAAUjnL,EAAEzf,EAAE,EAAE69G,EAAQmqF,oBAAoB,SAASvoL,EAAEzf,EAAEs2C,GAAG,OAAOE,IAAIwxJ,oBAAoBvoL,EAAEzf,EAAEs2C,EAAE,EAChdunE,EAAQoqF,gBAAgB,SAASxoL,EAAEzf,GAAG,OAAOw2C,IAAIyxJ,gBAAgBxoL,EAAEzf,EAAE,EAAE69G,EAAQqqF,QAAQ,SAASzoL,EAAEzf,GAAG,OAAOw2C,IAAI0xJ,QAAQzoL,EAAEzf,EAAE,EAAE69G,EAAQsqF,WAAW,SAAS1oL,EAAEzf,EAAEs2C,GAAG,OAAOE,IAAI2xJ,WAAW1oL,EAAEzf,EAAEs2C,EAAE,EAAEunE,EAAQuqF,OAAO,SAAS3oL,GAAG,OAAO+2B,IAAI4xJ,OAAO3oL,EAAE,EAAEo+F,EAAQ7G,SAAS,SAASv3F,GAAG,OAAO+2B,IAAIwgE,SAASv3F,EAAE,EAAEo+F,EAAQrtB,QAAQ,uCCnBnTotB,EAAOC,QAAU,EAAjB,yCCDE8kG,EAAU,YAGd9kG,EAAQ,GAIJ,WACE,GAAyB,IAArBnjH,UAAU9C,OACd,MAA4B,iBAAjB8C,UAAU,GAAwBioN,EACtCA,EAAQhoN,MAAM,KAAMD,UAC7B,qGCLAkoN,EAAc,CAChBC,KAAM,eAAiBz8L,KAAK4zG,SAAS/4G,SAAS,IAAI+D,UAAU,GAAG5R,MAAM,IAAIO,KAAK,KAC9E4wH,QAAS,kBAAoBn+G,KAAK4zG,SAAS/4G,SAAS,IAAI+D,UAAU,GAAG5R,MAAM,IAAIO,KAAK,MAGlFw/E,EAA4B,mBAAX/0F,QAAoD,iBAApBA,OAAO6gB,SAAwB,SAAUoM,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXjtB,QAAyBitB,EAAIzyB,cAAgBwF,QAAUitB,IAAQjtB,OAAO7F,UAAY,gBAAkB8yB,CAC3H,EAEIyyE,EAAW7lG,OAAO2lB,QAAU,SAAUnmB,GACxC,IAAK,IAAIE,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CACzC,IAAI+xD,EAAShvD,UAAU/C,GAEvB,IAAK,IAAIQ,KAAOuxD,EACVzxD,OAAOM,UAAUwC,eAAelB,KAAK6vD,EAAQvxD,KAC/CV,EAAOU,GAAOuxD,EAAOvxD,GAG3B,CAEA,OAAOV,CACT,EAMA,SAAS20J,EAAc/gI,GACrB,GAAkE,iBAA9C,IAARA,EAAsB,YAAc8nE,EAAQ9nE,KAA8B,OAARA,EAAc,OAAO,EAGnG,IADA,IAAI83F,EAAQ93F,EAC4B,OAAjCpzB,OAAOiB,eAAeiqH,IAC3BA,EAAQlrH,OAAOiB,eAAeiqH,GAGhC,OAAOlrH,OAAOiB,eAAemyB,KAAS83F,CACxC,CA2BA,SAAShL,EAAY2qG,EAASC,EAAgBC,GAC5C,IAAIxtH,EAOJ,GAL8B,mBAAnButH,QAAqD,IAAbC,IACjDA,EAAWD,EACXA,OAAiBlmN,QAGK,IAAbmmN,EAA0B,CACnC,GAAwB,mBAAbA,EACT,MAAM,IAAItlN,MAAM,2CAGlB,OAAOslN,EAAS7qG,EAAT6qG,CAAsBF,EAASC,EACxC,CAEA,GAAuB,mBAAZD,EACT,MAAM,IAAIplN,MAAM,0CAGlB,IAAIulN,EAAiBH,EACjBI,EAAeH,EACfI,EAAmB,GACnBC,EAAgBD,EAChBE,GAAgB,EAEpB,SAASC,IACHF,IAAkBD,IACpBC,EAAgBD,EAAiBlnN,QAErC,CAOA,SAAS0C,IACP,GAAI0kN,EACF,MAAM,IAAI3lN,MAAM,wMAGlB,OAAOwlN,CACT,CAyBA,SAASzc,EAAUvqM,GACjB,GAAwB,mBAAbA,EACT,MAAM,IAAIwB,MAAM,2CAGlB,GAAI2lN,EACF,MAAM,IAAI3lN,MAAM,+TAGlB,IAAIy/M,GAAe,EAKnB,OAHAmG,IACAF,EAAcznN,KAAKO,GAEZ,WACL,GAAKihN,EAAL,CAIA,GAAIkG,EACF,MAAM,IAAI3lN,MAAM,oKAGlBy/M,GAAe,EAEfmG,IACA,IAAIx8M,EAAQs8M,EAAc74M,QAAQrO,GAClCknN,EAActnN,OAAOgL,EAAO,EAV5B,CAWF,CACF,CA2BA,SAASpI,EAASyW,GAChB,IAAKi3I,EAAcj3I,GACjB,MAAM,IAAIzX,MAAM,2EAGlB,QAA2B,IAAhByX,EAAO5Z,KAChB,MAAM,IAAImC,MAAM,sFAGlB,GAAI2lN,EACF,MAAM,IAAI3lN,MAAM,sCAGlB,IACE2lN,GAAgB,EAChBH,EAAeD,EAAeC,EAAc/tM,EAC9C,CAAE,QACAkuM,GAAgB,CAClB,CAGA,IADA,IAAI3nN,EAAYynN,EAAmBC,EAC1BzrN,EAAI,EAAGA,EAAI+D,EAAU9D,OAAQD,IAAK,EAEzCuE,EADeR,EAAU/D,KAE3B,CAEA,OAAOwd,CACT,CAiEA,OAFAzW,EAAS,CAAEnD,KAAMqnN,EAAYC,QAEtBrtH,EAAQ,CACb92F,SAAUA,EACV+nM,UAAWA,EACX9nM,SAAUA,EACVg6G,eAzDF,SAAwB4qG,GACtB,GAA2B,mBAAhBA,EACT,MAAM,IAAI7lN,MAAM,8CAGlBulN,EAAiBM,EACjB7kN,EAAS,CAAEnD,KAAMqnN,EAAYr+E,SAC/B,IAmDS,KA3CT,WACE,IAAIpkI,EAEAqjN,EAAiB/c,EACrB,OAAOtmM,EAAO,CASZsmM,UAAW,SAAmBgd,GAC5B,GAA4E,iBAAnD,IAAbA,EAA2B,YAActwH,EAAQswH,KAAwC,OAAbA,EACtF,MAAM,IAAIlsN,UAAU,0CAGtB,SAASmsN,IACHD,EAAS18M,MACX08M,EAAS18M,KAAKpI,IAElB,CAIA,OAFA+kN,IAEO,CAAE7G,YADS2G,EAAeE,GAEnC,IACM,KAAgB,WACtB,OAAOjpN,IACT,EAAG0F,CACL,EAYqCq1F,CACvC,CAsBA,SAASmuH,EAA8BxrN,EAAKgd,GAC1C,IAAIyuM,EAAazuM,GAAUA,EAAO5Z,KAGlC,MAAO,UAFiBqoN,GAAc,WAAaxiM,OAAOwiM,GAAc,KAAO,aAEzC,cAAgBzrN,EAA/C,gLACT,CA6DA,SAAS+gB,EAAgB2qM,GAGvB,IAFA,IAAIC,EAAc7rN,OAAO2yB,KAAKi5L,GAC1BE,EAAgB,CAAC,EACZpsN,EAAI,EAAGA,EAAImsN,EAAYlsN,OAAQD,IAAK,CAC3C,IAAIQ,EAAM2rN,EAAYnsN,GAElB,EAMyB,mBAAlBksN,EAAS1rN,KAClB4rN,EAAc5rN,GAAO0rN,EAAS1rN,GAElC,CACA,IAAI6rN,EAAmB/rN,OAAO2yB,KAAKm5L,GAOnC,IAAIE,OAAsB,EAC1B,KAxDF,SAA4BJ,GAC1B5rN,OAAO2yB,KAAKi5L,GAAU9jN,SAAQ,SAAU5H,GACtC,IAAI2qN,EAAUe,EAAS1rN,GAGvB,QAA4B,IAFT2qN,OAAQjmN,EAAW,CAAEtB,KAAMqnN,EAAYC,OAGxD,MAAM,IAAInlN,MAAM,YAAcvF,EAAd,iRAIlB,QAAkD,IAAvC2qN,OAAQjmN,EAAW,CAAEtB,KADrB,gCAAkC6qB,KAAK4zG,SAAS/4G,SAAS,IAAI+D,UAAU,GAAG5R,MAAM,IAAIO,KAAK,OAElG,MAAM,IAAIjW,MAAM,YAAcvF,EAAd,6EAAyGyqN,EAAYC,KAArH,8SAEpB,GACF,CA2CIqB,CAAmBH,EACrB,CAAE,MAAOjqN,GACPmqN,EAAsBnqN,CACxB,CAEA,OAAO,WACL,IAAIsO,EAAQ1N,UAAU9C,OAAS,QAAsBiF,IAAjBnC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC7Eya,EAASza,UAAU,GAEvB,GAAIupN,EACF,MAAMA,EAYR,IAFA,IAAIE,GAAa,EACb9tG,EAAY,CAAC,EACR9wF,EAAK,EAAGA,EAAKy+L,EAAiBpsN,OAAQ2tB,IAAM,CACnD,IAAI6+L,EAAOJ,EAAiBz+L,GACxBu9L,EAAUiB,EAAcK,GACxBC,EAAsBj8M,EAAMg8M,GAC5BE,EAAkBxB,EAAQuB,EAAqBlvM,GACnD,QAA+B,IAApBmvM,EAAiC,CAC1C,IAAIC,EAAeZ,EAA8BS,EAAMjvM,GACvD,MAAM,IAAIzX,MAAM6mN,EAClB,CACAluG,EAAU+tG,GAAQE,EAClBH,EAAaA,GAAcG,IAAoBD,CACjD,CACA,OAAOF,EAAa9tG,EAAYjuG,CAClC,CACF,CAEA,SAASo8M,EAAkBvF,EAAevgN,GACxC,OAAO,WACL,OAAOA,EAASugN,EAActkN,MAAMF,KAAMC,WAC5C,CACF,CAuBA,SAASm+G,EAAmBkmG,EAAgBrgN,GAC1C,GAA8B,mBAAnBqgN,EACT,OAAOyF,EAAkBzF,EAAgBrgN,GAG3C,GAAwF,iBAAzD,IAAnBqgN,EAAiC,YAAc5rH,EAAQ4rH,KAAoD,OAAnBA,EAClG,MAAM,IAAIrhN,MAAM,0EAA+F,OAAnBqhN,EAA0B,YAAmC,IAAnBA,EAAiC,YAAc5rH,EAAQ4rH,IAA7K,8FAKlB,IAFA,IAAIn0L,EAAO3yB,OAAO2yB,KAAKm0L,GACnBC,EAAsB,CAAC,EAClBrnN,EAAI,EAAGA,EAAIizB,EAAKhzB,OAAQD,IAAK,CACpC,IAAIQ,EAAMyyB,EAAKjzB,GACXsnN,EAAgBF,EAAe5mN,GACN,mBAAlB8mN,IACTD,EAAoB7mN,GAAOqsN,EAAkBvF,EAAevgN,GAEhE,CACA,OAAOsgN,CACT,CAaA,SAAS2D,IACP,IAAK,IAAI8B,EAAO/pN,UAAU9C,OAAQooG,EAAQxiF,MAAMinM,GAAOL,EAAO,EAAGA,EAAOK,EAAML,IAC5EpkH,EAAMokH,GAAQ1pN,UAAU0pN,GAG1B,OAAqB,IAAjBpkH,EAAMpoG,OACD,SAAUkgC,GACf,OAAOA,CACT,EAGmB,IAAjBkoE,EAAMpoG,OACDooG,EAAM,GAGRA,EAAMhsF,QAAO,SAAUyL,EAAGzf,GAC/B,OAAO,WACL,OAAOyf,EAAEzf,EAAErF,WAAMkC,EAAWnC,WAC9B,CACF,GACF,CAkBA,SAAS29G,IACP,IAAK,IAAIosG,EAAO/pN,UAAU9C,OAAQ8sN,EAAclnM,MAAMinM,GAAOL,EAAO,EAAGA,EAAOK,EAAML,IAClFM,EAAYN,GAAQ1pN,UAAU0pN,GAGhC,OAAO,SAAUjsG,GACf,OAAO,WACL,IAAK,IAAIwsG,EAAQjqN,UAAU9C,OAAQigC,EAAOra,MAAMmnM,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChF/sL,EAAK+sL,GAASlqN,UAAUkqN,GAG1B,IAAI1sG,EAAQC,EAAYx9G,WAAMkC,EAAWg7B,GACrCgtL,EAAY,WACd,MAAM,IAAInnN,MAAM,yHAClB,EAEIonN,EAAgB,CAClBnmN,SAAUu5G,EAAMv5G,SAChBD,SAAU,WACR,OAAOmmN,EAAUlqN,WAAMkC,EAAWnC,UACpC,GAEEkmI,EAAQ8jF,EAAYziN,KAAI,SAAU8iN,GACpC,OAAOA,EAAWD,EACpB,IAGA,OAFAD,EAAYlC,EAAQhoN,WAAMkC,EAAW+jI,EAAzB+hF,CAAgCzqG,EAAMx5G,UAE3Co/F,EAAS,CAAC,EAAGoa,EAAO,CACzBx5G,SAAUmmN,GAEd,CACF,CACF,cCxjBC,SAAUriG,GACT,aAEA,IAEI3lH,EAFAmoN,EAAK/sN,OAAOM,UACZ0sN,EAASD,EAAGjqN,eAEZm/H,EAA4B,mBAAX97H,OAAwBA,OAAS,CAAC,EACnD8mN,EAAiBhrF,EAAQj7G,UAAY,aACrCkmM,EAAsBjrF,EAAQ5nC,eAAiB,kBAC/C8yH,EAAoBlrF,EAAQ77H,aAAe,gBAG3CgnN,EAAU7iG,EAAO8iG,mBACrB,GAAID,EAIAznG,EAAOC,QAAUwnG,MAJrB,EAaAA,EAAU7iG,EAAO8iG,mBAAgC1nG,EAAOC,SAchDrrB,KAAOA,EAoBf,IAAI+yH,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,CAAC,EAYpB99F,EAAoB,CAAC,EACzBA,EAAkBq9F,GAAkB,WAClC,OAAOzqN,IACT,EAEA,IAAI2oI,EAAWnrI,OAAOiB,eAClB0sN,EAA0BxiF,GAAYA,EAASA,EAASp3G,EAAO,MAC/D45L,GACAA,IAA4BZ,GAC5BC,EAAOprN,KAAK+rN,EAAyBV,KAGvCr9F,EAAoB+9F,GAGtB,IAAIC,EAAK/yH,EAA2Bv6F,UAClCk6F,EAAUl6F,UAAYN,OAAOU,OAAOkvH,GACtCh1B,EAAkBt6F,UAAYstN,EAAGjtN,YAAck6F,EAC/CA,EAA2Bl6F,YAAci6F,EACzCC,EAA2BsyH,GACzBvyH,EAAkByB,YAAc,oBAYlC+wH,EAAQ9wH,oBAAsB,SAASuxH,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOltN,YAClD,QAAOmtN,IACHA,IAASlzH,GAG2B,uBAAnCkzH,EAAKzxH,aAAeyxH,EAAKpoN,MAEhC,EAEA0nN,EAAQ7wH,KAAO,SAASsxH,GAUtB,OATI7tN,OAAOgB,eACThB,OAAOgB,eAAe6sN,EAAQhzH,IAE9BgzH,EAAO1sN,UAAY05F,EACbsyH,KAAqBU,IACzBA,EAAOV,GAAqB,sBAGhCU,EAAOvtN,UAAYN,OAAOU,OAAOktN,GAC1BC,CACT,EAMAT,EAAQ5wH,MAAQ,SAAS38D,GACvB,MAAO,CAAEs7D,QAASt7D,EACpB,EA6EAi7D,EAAsBE,EAAc16F,WACpC06F,EAAc16F,UAAU4sN,GAAuB,WAC7C,OAAO1qN,IACT,EACA4qN,EAAQpyH,cAAgBA,EAKxBoyH,EAAQ3wH,MAAQ,SAASsxH,EAASC,EAASjsN,EAAMksN,GAC/C,IAAIziG,EAAO,IAAIxwB,EACbT,EAAKwzH,EAASC,EAASjsN,EAAMksN,IAG/B,OAAOb,EAAQ9wH,oBAAoB0xH,GAC/BxiG,EACAA,EAAK18G,OAAO1K,MAAK,SAAS/B,GACxB,OAAOA,EAAOkkB,KAAOlkB,EAAOzB,MAAQ4qH,EAAK18G,MAC3C,GACN,EAoKAgsF,EAAsB8yH,GAEtBA,EAAGT,GAAqB,YAOxBS,EAAGX,GAAkB,WACnB,OAAOzqN,IACT,EAEAorN,EAAG5kM,SAAW,WACZ,MAAO,oBACT,EAiCAokM,EAAQz6L,KAAO,SAAS/vB,GACtB,IAAI+vB,EAAO,GACX,IAAK,IAAIzyB,KAAO0C,EACd+vB,EAAKjvB,KAAKxD,GAMZ,OAJAyyB,EAAK+pE,UAIE,SAAS5tF,IACd,KAAO6jB,EAAKhzB,QAAQ,CAClB,IAAIO,EAAMyyB,EAAKxL,MACf,GAAIjnB,KAAO0C,EAGT,OAFAkM,EAAKlO,MAAQV,EACb4O,EAAKyX,MAAO,EACLzX,CAEX,CAMA,OADAA,EAAKyX,MAAO,EACLzX,CACT,CACF,EAoCAs+M,EAAQr5L,OAASA,EAMjB0mE,EAAQn6F,UAAY,CAClBK,YAAa85F,EAEbjuC,MAAO,SAAS0hK,GAcd,GAbA1rN,KAAKutC,KAAO,EACZvtC,KAAKsM,KAAO,EAGZtM,KAAKokB,KAAOpkB,KAAK+4F,MAAQ32F,EACzBpC,KAAK+jB,MAAO,EACZ/jB,KAAK64F,SAAW,KAEhB74F,KAAK2T,OAAS,OACd3T,KAAKq9B,IAAMj7B,EAEXpC,KAAK05F,WAAWp0F,QAAQq0F,IAEnB+xH,EACH,IAAK,IAAIxoN,KAAQlD,KAEQ,MAAnBkD,EAAKi3F,OAAO,IACZqwH,EAAOprN,KAAKY,KAAMkD,KACjBwD,OAAOxD,EAAK1B,MAAM,MACrBxB,KAAKkD,GAAQd,EAIrB,EAEAg4F,KAAM,WACJp6F,KAAK+jB,MAAO,EAEZ,IACI4nM,EADY3rN,KAAK05F,WAAW,GACLE,WAC3B,GAAwB,UAApB+xH,EAAW7qN,KACb,MAAM6qN,EAAWtuL,IAGnB,OAAOr9B,KAAKq6F,IACd,EAEArB,kBAAmB,SAAS4yH,GAC1B,GAAI5rN,KAAK+jB,KACP,MAAM6nM,EAGR,IAAIp0L,EAAUx3B,KACd,SAASs6F,EAAOuxH,EAAKC,GAYnB,OAXAC,EAAOjrN,KAAO,QACdirN,EAAO1uL,IAAMuuL,EACbp0L,EAAQlrB,KAAOu/M,EAEXC,IAGFt0L,EAAQ7jB,OAAS,OACjB6jB,EAAQ6F,IAAMj7B,KAGN0pN,CACZ,CAEA,IAAK,IAAI5uN,EAAI8C,KAAK05F,WAAWv8F,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIynC,EAAQ3kC,KAAK05F,WAAWx8F,GACxB6uN,EAASpnL,EAAMi1D,WAEnB,GAAqB,SAAjBj1D,EAAM20D,OAIR,OAAOgB,EAAO,OAGhB,GAAI31D,EAAM20D,QAAUt5F,KAAKutC,KAAM,CAC7B,IAAIy+K,EAAWxB,EAAOprN,KAAKulC,EAAO,YAC9BsnL,EAAazB,EAAOprN,KAAKulC,EAAO,cAEpC,GAAIqnL,GAAYC,EAAY,CAC1B,GAAIjsN,KAAKutC,KAAO5I,EAAM40D,SACpB,OAAOe,EAAO31D,EAAM40D,UAAU,GACzB,GAAIv5F,KAAKutC,KAAO5I,EAAM60D,WAC3B,OAAOc,EAAO31D,EAAM60D,WAGxB,MAAO,GAAIwyH,GACT,GAAIhsN,KAAKutC,KAAO5I,EAAM40D,SACpB,OAAOe,EAAO31D,EAAM40D,UAAU,OAG3B,KAAI0yH,EAMT,MAAM,IAAIhpN,MAAM,0CALhB,GAAIjD,KAAKutC,KAAO5I,EAAM60D,WACpB,OAAOc,EAAO31D,EAAM60D,WAKxB,CACF,CACF,CACF,EAEAP,OAAQ,SAASn4F,EAAMu8B,GACrB,IAAK,IAAIngC,EAAI8C,KAAK05F,WAAWv8F,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIynC,EAAQ3kC,KAAK05F,WAAWx8F,GAC5B,GAAIynC,EAAM20D,QAAUt5F,KAAKutC,MACrBi9K,EAAOprN,KAAKulC,EAAO,eACnB3kC,KAAKutC,KAAO5I,EAAM60D,WAAY,CAChC,IAAI0yH,EAAevnL,EACnB,KACF,CACF,CAEIunL,IACU,UAATprN,GACS,aAATA,IACDorN,EAAa5yH,QAAUj8D,GACvBA,GAAO6uL,EAAa1yH,aAGtB0yH,EAAe,MAGjB,IAAIH,EAASG,EAAeA,EAAatyH,WAAa,CAAC,EAIvD,OAHAmyH,EAAOjrN,KAAOA,EACdirN,EAAO1uL,IAAMA,EAET6uL,GACFlsN,KAAK2T,OAAS,OACd3T,KAAKsM,KAAO4/M,EAAa1yH,WAClB0xH,GAGFlrN,KAAKu6F,SAASwxH,EACvB,EAEAxxH,SAAU,SAASwxH,EAAQtyH,GACzB,GAAoB,UAAhBsyH,EAAOjrN,KACT,MAAMirN,EAAO1uL,IAcf,MAXoB,UAAhB0uL,EAAOjrN,MACS,aAAhBirN,EAAOjrN,KACTd,KAAKsM,KAAOy/M,EAAO1uL,IACM,WAAhB0uL,EAAOjrN,MAChBd,KAAKq6F,KAAOr6F,KAAKq9B,IAAM0uL,EAAO1uL,IAC9Br9B,KAAK2T,OAAS,SACd3T,KAAKsM,KAAO,OACa,WAAhBy/M,EAAOjrN,MAAqB24F,IACrCz5F,KAAKsM,KAAOmtF,GAGPyxH,CACT,EAEA1wH,OAAQ,SAAShB,GACf,IAAK,IAAIt8F,EAAI8C,KAAK05F,WAAWv8F,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIynC,EAAQ3kC,KAAK05F,WAAWx8F,GAC5B,GAAIynC,EAAM60D,aAAeA,EAGvB,OAFAx5F,KAAKu6F,SAAS51D,EAAMi1D,WAAYj1D,EAAM80D,UACtCE,EAAch1D,GACPumL,CAEX,CACF,EAEA,MAAS,SAAS5xH,GAChB,IAAK,IAAIp8F,EAAI8C,KAAK05F,WAAWv8F,OAAS,EAAGD,GAAK,IAAKA,EAAG,CACpD,IAAIynC,EAAQ3kC,KAAK05F,WAAWx8F,GAC5B,GAAIynC,EAAM20D,SAAWA,EAAQ,CAC3B,IAAIyyH,EAASpnL,EAAMi1D,WACnB,GAAoB,UAAhBmyH,EAAOjrN,KAAkB,CAC3B,IAAIqrN,EAASJ,EAAO1uL,IACpBs8D,EAAch1D,EAChB,CACA,OAAOwnL,CACT,CACF,CAIA,MAAM,IAAIlpN,MAAM,wBAClB,EAEAw3F,cAAe,SAASusB,EAAU7tB,EAAYC,GAa5C,OAZAp5F,KAAK64F,SAAW,CACdr0E,SAAU+M,EAAOy1F,GACjB7tB,WAAYA,EACZC,QAASA,GAGS,SAAhBp5F,KAAK2T,SAGP3T,KAAKq9B,IAAMj7B,GAGN8oN,CACT,EAlrBF,CAMA,SAASnzH,EAAKwzH,EAASC,EAASjsN,EAAMksN,GAEpC,IAAIW,EAAiBZ,GAAWA,EAAQ1tN,qBAAqBk6F,EAAYwzH,EAAUxzH,EAC/Er0E,EAAYnmB,OAAOU,OAAOkuN,EAAetuN,WACzC05B,EAAU,IAAIygE,EAAQwzH,GAAe,IAMzC,OAFA9nM,EAAU40E,QA0MZ,SAA0BgzH,EAAShsN,EAAMi4B,GACvC,IAAI7pB,EAAQm9M,EAEZ,OAAO,SAAgBn3M,EAAQ0pB,GAC7B,GAAI1vB,IAAUq9M,EACZ,MAAM,IAAI/nN,MAAM,gCAGlB,GAAI0K,IAAUs9M,EAAmB,CAC/B,GAAe,UAAXt3M,EACF,MAAM0pB,EAKR,OAAOgvL,GACT,CAKA,IAHA70L,EAAQ7jB,OAASA,EACjB6jB,EAAQ6F,IAAMA,IAED,CACX,IAAIw7D,EAAWrhE,EAAQqhE,SACvB,GAAIA,EAAU,CACZ,IAAIyzH,EAAiBxzH,EAAoBD,EAAUrhE,GACnD,GAAI80L,EAAgB,CAClB,GAAIA,IAAmBpB,EAAkB,SACzC,OAAOoB,CACT,CACF,CAEA,GAAuB,SAAnB90L,EAAQ7jB,OAGV6jB,EAAQpT,KAAOoT,EAAQuhE,MAAQvhE,EAAQ6F,SAElC,GAAuB,UAAnB7F,EAAQ7jB,OAAoB,CACrC,GAAIhG,IAAUm9M,EAEZ,MADAn9M,EAAQs9M,EACFzzL,EAAQ6F,IAGhB7F,EAAQwhE,kBAAkBxhE,EAAQ6F,IAEpC,KAA8B,WAAnB7F,EAAQ7jB,QACjB6jB,EAAQyhE,OAAO,SAAUzhE,EAAQ6F,KAGnC1vB,EAAQq9M,EAER,IAAIe,EAAS5zH,EAASozH,EAAShsN,EAAMi4B,GACrC,GAAoB,WAAhBu0L,EAAOjrN,KAAmB,CAO5B,GAJA6M,EAAQ6pB,EAAQzT,KACZknM,EACAF,EAEAgB,EAAO1uL,MAAQ6tL,EACjB,SAGF,MAAO,CACL9sN,MAAO2tN,EAAO1uL,IACdtZ,KAAMyT,EAAQzT,KAGlB,CAA2B,UAAhBgoM,EAAOjrN,OAChB6M,EAAQs9M,EAGRzzL,EAAQ7jB,OAAS,QACjB6jB,EAAQ6F,IAAM0uL,EAAO1uL,IAEzB,CACF,CACF,CAtRsB66D,CAAiBqzH,EAAShsN,EAAMi4B,GAE7C7T,CACT,CAaA,SAASw0E,EAASstB,EAAI70F,EAAKyM,GACzB,IACE,MAAO,CAAEv8B,KAAM,SAAUu8B,IAAKooF,EAAGrmH,KAAKwxB,EAAKyM,GAC7C,CAAE,MAAOj6B,GACP,MAAO,CAAEtC,KAAM,QAASu8B,IAAKj6B,EAC/B,CACF,CAeA,SAAS40F,IAAa,CACtB,SAASI,IAAqB,CAC9B,SAASC,IAA8B,CA4BvC,SAASC,EAAsBx6F,GAC7B,CAAC,OAAQ,QAAS,UAAUwH,SAAQ,SAASqO,GAC3C7V,EAAU6V,GAAU,SAAS0pB,GAC3B,OAAOr9B,KAAKu4F,QAAQ5kF,EAAQ0pB,EAC9B,CACF,GACF,CAiCA,SAASm7D,EAAc70E,GACrB,SAAS80E,EAAO9kF,EAAQ0pB,EAAK17B,EAASiiB,GACpC,IAAImoM,EAAS5zH,EAASx0E,EAAUhQ,GAASgQ,EAAW0Z,GACpD,GAAoB,UAAhB0uL,EAAOjrN,KAEJ,CACL,IAAIjB,EAASksN,EAAO1uL,IAChBj/B,EAAQyB,EAAOzB,MACnB,OAAIA,GACiB,iBAAVA,GACPosN,EAAOprN,KAAKhB,EAAO,WACdsD,QAAQC,QAAQvD,EAAMu6F,SAAS/2F,MAAK,SAASxD,GAClDq6F,EAAO,OAAQr6F,EAAOuD,EAASiiB,EACjC,IAAG,SAASxgB,GACVq1F,EAAO,QAASr1F,EAAKzB,EAASiiB,EAChC,IAGKliB,QAAQC,QAAQvD,GAAOwD,MAAK,SAAS2qN,GAgB1C1sN,EAAOzB,MAAQmuN,EACf5qN,EAAQ9B,EACV,GAAG+jB,EACL,CAjCEA,EAAOmoM,EAAO1uL,IAkClB,CAEA,IAAImvL,EAgCJxsN,KAAKu4F,QA9BL,SAAiB5kF,EAAQ0pB,GACvB,SAASu7D,IACP,OAAO,IAAIl3F,SAAQ,SAASC,EAASiiB,GACnC60E,EAAO9kF,EAAQ0pB,EAAK17B,EAASiiB,EAC/B,GACF,CAEA,OAAO4oM,EAaLA,EAAkBA,EAAgB5qN,KAChCg3F,EAGAA,GACEA,GACR,CAKF,CAyGA,SAASE,EAAoBD,EAAUrhE,GACrC,IAAI7jB,EAASklF,EAASr0E,SAASgT,EAAQ7jB,QACvC,GAAIA,IAAWvR,EAAW,CAKxB,GAFAo1B,EAAQqhE,SAAW,KAEI,UAAnBrhE,EAAQ7jB,OAAoB,CAC9B,GAAIklF,EAASr0E,SAAS00E,SAGpB1hE,EAAQ7jB,OAAS,SACjB6jB,EAAQ6F,IAAMj7B,EACd02F,EAAoBD,EAAUrhE,GAEP,UAAnBA,EAAQ7jB,QAGV,OAAOu3M,EAIX1zL,EAAQ7jB,OAAS,QACjB6jB,EAAQ6F,IAAM,IAAIvgC,UAChB,iDACJ,CAEA,OAAOouN,CACT,CAEA,IAAIa,EAAS5zH,EAASxkF,EAAQklF,EAASr0E,SAAUgT,EAAQ6F,KAEzD,GAAoB,UAAhB0uL,EAAOjrN,KAIT,OAHA02B,EAAQ7jB,OAAS,QACjB6jB,EAAQ6F,IAAM0uL,EAAO1uL,IACrB7F,EAAQqhE,SAAW,KACZqyH,EAGT,IAAIj7H,EAAO87H,EAAO1uL,IAElB,OAAM4yD,EAOFA,EAAKlsE,MAGPyT,EAAQqhE,EAASM,YAAclJ,EAAK7xF,MAGpCo5B,EAAQlrB,KAAOusF,EAASO,QAQD,WAAnB5hE,EAAQ7jB,SACV6jB,EAAQ7jB,OAAS,OACjB6jB,EAAQ6F,IAAMj7B,GAUlBo1B,EAAQqhE,SAAW,KACZqyH,GANEj7H,GA3BPz4D,EAAQ7jB,OAAS,QACjB6jB,EAAQ6F,IAAM,IAAIvgC,UAAU,oCAC5B06B,EAAQqhE,SAAW,KACZqyH,EA+BX,CAqBA,SAAS7xH,EAAaozH,GACpB,IAAI9nL,EAAQ,CAAE20D,OAAQmzH,EAAK,IAEvB,KAAKA,IACP9nL,EAAM40D,SAAWkzH,EAAK,IAGpB,KAAKA,IACP9nL,EAAM60D,WAAaizH,EAAK,GACxB9nL,EAAM80D,SAAWgzH,EAAK,IAGxBzsN,KAAK05F,WAAWx4F,KAAKyjC,EACvB,CAEA,SAASg1D,EAAch1D,GACrB,IAAIonL,EAASpnL,EAAMi1D,YAAc,CAAC,EAClCmyH,EAAOjrN,KAAO,gBACPirN,EAAO1uL,IACdsH,EAAMi1D,WAAamyH,CACrB,CAEA,SAAS9zH,EAAQwzH,GAIfzrN,KAAK05F,WAAa,CAAC,CAAEJ,OAAQ,SAC7BmyH,EAAYnmN,QAAQ+zF,EAAcr5F,MAClCA,KAAKgqD,OAAM,EACb,CA6BA,SAASz4B,EAAOy1F,GACd,GAAIA,EAAU,CACZ,IAAI0lG,EAAiB1lG,EAASyjG,GAC9B,GAAIiC,EACF,OAAOA,EAAettN,KAAK4nH,GAG7B,GAA6B,mBAAlBA,EAAS16G,KAClB,OAAO06G,EAGT,IAAKtgH,MAAMsgH,EAAS7pH,QAAS,CAC3B,IAAID,GAAK,EAAGoP,EAAO,SAASA,IAC1B,OAASpP,EAAI8pH,EAAS7pH,QACpB,GAAIqtN,EAAOprN,KAAK4nH,EAAU9pH,GAGxB,OAFAoP,EAAKlO,MAAQ4oH,EAAS9pH,GACtBoP,EAAKyX,MAAO,EACLzX,EAOX,OAHAA,EAAKlO,MAAQgE,EACbkK,EAAKyX,MAAO,EAELzX,CACT,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAGA,MAAO,CAAEA,KAAM+/M,EACjB,CAGA,SAASA,IACP,MAAO,CAAEjuN,MAAOgE,EAAW2hB,MAAM,EACnC,CAyMD,CA1sBA,CA8sBC,WAAc,OAAO/jB,IAAM,CAA3B,IAAkC4xB,SAAS,cAATA,gCC7sBvB,IAAI1X,EAAE3d,EAAE05C,EAAElxB,EAAE,GAAG,iBAAkB4nM,aAAa,mBAAoBA,YAAY96M,IAAI,CAAC,IAAIzQ,EAAEurN,YAAYvpG,EAAQowE,aAAa,WAAW,OAAOpyL,EAAEyQ,KAAK,CAAC,KAAK,CAAC,IAAIjT,EAAEgT,KAAKoH,EAAEpa,EAAEiT,MAAMuxG,EAAQowE,aAAa,WAAW,OAAO50L,EAAEiT,MAAMmH,CAAC,CAAC,CAC7O,GAAG,oBAAqBnF,QAAQ,mBAAoBuiH,eAAe,CAAC,IAAIhzG,EAAE,KAAKm4B,EAAE,KAAKvF,EAAE,WAAW,GAAG,OAAO5yB,EAAE,IAAI,IAAI4B,EAAEo+F,EAAQowE,eAAepwK,GAAE,EAAG4B,GAAG5B,EAAE,IAAI,CAAC,MAAM7d,GAAG,MAAMoC,WAAWquC,EAAE,GAAGzwC,CAAE,CAAC,EAAE2U,EAAE,SAAS8K,GAAG,OAAO5B,EAAEzb,WAAWuS,EAAE,EAAE8K,IAAI5B,EAAE4B,EAAErd,WAAWquC,EAAE,GAAG,EAAEz5C,EAAE,SAASyoB,EAAEzf,GAAGg2C,EAAE5zC,WAAWqd,EAAEzf,EAAE,EAAE0wC,EAAE,WAAWitD,aAAa3nD,EAAE,EAAE6nE,EAAQq/E,qBAAqB,WAAW,OAAM,CAAE,EAAE19K,EAAEq+F,EAAQwpG,wBAAwB,WAAW,CAAC,KAAK,CAAC,IAAI3lN,EAAE4M,OAAOlM,WAAWsc,EAAEpQ,OAAOqvF,aAAa,GAAG,oBAAqBzmG,QAAQ,CAAC,IAAIy/C,EAC7froC,OAAOg5M,qBAAqB,mBAAoBh5M,OAAOi5M,uBAAuBrwN,QAAQiI,MAAM,sJAAsJ,mBAAoBw3C,GAAGz/C,QAAQiI,MAAM,oJAAoJ,CAAC,IAAI+2C,GAAE,EAAGqqE,EAAE,KAAK7qE,GAAG,EAAEe,EAAE,EAAE+mF,EAAE,EAAE3f,EAAQq/E,qBAAqB,WAAW,OAAOr/E,EAAQowE,gBAChgBzwD,CAAC,EAAEh+G,EAAE,WAAW,EAAEq+F,EAAQwpG,wBAAwB,SAAS5nM,GAAG,EAAEA,GAAG,IAAIA,EAAEvoB,QAAQiI,MAAM,mHAAmHs3C,EAAE,EAAEh3B,EAAE2G,KAAKC,MAAM,IAAI5G,GAAG,CAAC,EAAE,IAAIivB,EAAE,IAAImiF,eAAehN,EAAEn1E,EAAEyiF,MAAMziF,EAAE0iF,MAAMC,UAAU,WAAW,GAAG,OAAO9Q,EAAE,CAAC,IAAI9gG,EAAEo+F,EAAQowE,eAAezwD,EAAE/9G,EAAEg3B,EAAE,IAAI8pE,GAAE,EAAG9gG,GAAGokG,EAAEyN,YAAY,OAAOp7E,GAAE,EAAGqqE,EAAE,KAAK,CAAC,MAAMvgH,GAAG,MAAM6jH,EAAEyN,YAAY,MAAMtxH,CAAE,CAAC,MAAMk2C,GAAE,CAAE,EAAEvhC,EAAE,SAAS8K,GAAG8gG,EAAE9gG,EAAEy2B,IAAIA,GAAE,EAAG2tE,EAAEyN,YAAY,MAAM,EAAEt6H,EAAE,SAASyoB,EAAEzf,GAAG01C,EACtfh0C,GAAE,WAAW+d,EAAEo+F,EAAQowE,eAAe,GAAEjuL,EAAE,EAAE0wC,EAAE,WAAWhyB,EAAEg3B,GAAGA,GAAG,CAAC,CAAC,CAAC,SAASrF,EAAE5wB,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAE7nB,OAAO6nB,EAAE9jB,KAAKqE,GAAGyf,EAAE,OAAO,CAAC,IAAIlC,EAAE+4B,EAAE,IAAI,EAAEx8C,EAAE2lB,EAAElC,GAAG,UAAG,IAASzjB,GAAG,EAAEs8C,EAAEt8C,EAAEkG,IAA0B,MAAMyf,EAA7BA,EAAElC,GAAGvd,EAAEyf,EAAE62B,GAAGx8C,EAAEw8C,EAAE/4B,CAAc,CAAC,CAAC,SAASs4B,EAAEp2B,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,CAAC,CACjP,SAAS82B,EAAE92B,GAAG,IAAIzf,EAAEyf,EAAE,GAAG,QAAG,IAASzf,EAAE,CAAC,IAAIs2C,EAAE72B,EAAEL,MAAM,GAAGk3B,IAAIt2C,EAAE,CAACyf,EAAE,GAAG62B,EAAE72B,EAAE,IAAI,IAAIlC,EAAE,EAAEzjB,EAAE2lB,EAAE7nB,OAAO2lB,EAAEzjB,GAAG,CAAC,IAAI87C,EAAE,GAAGr4B,EAAE,GAAG,EAAEQ,EAAE0B,EAAEm2B,GAAG12B,EAAE02B,EAAE,EAAEr2B,EAAEE,EAAEP,GAAG,QAAG,IAASnB,GAAG,EAAEq4B,EAAEr4B,EAAEu4B,QAAG,IAAS/2B,GAAG,EAAE62B,EAAE72B,EAAExB,IAAI0B,EAAElC,GAAGgC,EAAEE,EAAEP,GAAGo3B,EAAE/4B,EAAE2B,IAAIO,EAAElC,GAAGQ,EAAE0B,EAAEm2B,GAAGU,EAAE/4B,EAAEq4B,OAAQ,WAAG,IAASr2B,GAAG,EAAE62B,EAAE72B,EAAE+2B,IAA0B,MAAM72B,EAA7BA,EAAElC,GAAGgC,EAAEE,EAAEP,GAAGo3B,EAAE/4B,EAAE2B,CAAaO,CAAC,CAAC,CAAC,OAAOzf,CAAC,CAAC,OAAO,IAAI,CAAC,SAASo2C,EAAE32B,EAAEzf,GAAG,IAAIs2C,EAAE72B,EAAE+nM,UAAUxnN,EAAEwnN,UAAU,OAAO,IAAIlxK,EAAEA,EAAE72B,EAAElW,GAAGvJ,EAAEuJ,EAAE,CAAC,IAAI62C,EAAE,GAAGjK,EAAE,GAAGrsB,EAAE,EAAEy0F,EAAE,KAAKpgG,EAAE,EAAE23B,GAAE,EAAGH,GAAE,EAAGa,GAAE,EACja,SAASE,EAAEj3B,GAAG,IAAI,IAAIzf,EAAE61C,EAAEM,GAAG,OAAOn2C,GAAG,CAAC,GAAG,OAAOA,EAAExE,SAAS+6C,EAAEJ,OAAQ,MAAGn2C,EAAEynN,WAAWhoM,GAAgD,MAA9C82B,EAAEJ,GAAGn2C,EAAEwnN,UAAUxnN,EAAE0nN,eAAer3K,EAAE+P,EAAEpgD,EAAa,CAACA,EAAE61C,EAAEM,EAAE,CAAC,CAAC,SAASwvE,EAAElmG,GAAa,GAAV+2B,GAAE,EAAGE,EAAEj3B,IAAOk2B,EAAE,GAAG,OAAOE,EAAEuK,GAAGzK,GAAE,EAAGhhC,EAAEshC,OAAO,CAAC,IAAIj2C,EAAE61C,EAAEM,GAAG,OAAOn2C,GAAGhJ,EAAE2uH,EAAE3lH,EAAEynN,UAAUhoM,EAAE,CAAC,CACzP,SAASw2B,EAAEx2B,EAAEzf,GAAG21C,GAAE,EAAGa,IAAIA,GAAE,EAAG9F,KAAKoF,GAAE,EAAG,IAAIQ,EAAEn4B,EAAE,IAAS,IAALu4B,EAAE12C,GAAOu+G,EAAE1oE,EAAEuK,GAAG,OAAOm+D,MAAMA,EAAEmpG,eAAe1nN,IAAIyf,IAAIo+F,EAAQq/E,yBAAyB,CAAC,IAAI3/K,EAAEghG,EAAE/iH,SAAS,GAAG,mBAAoB+hB,EAAE,CAACghG,EAAE/iH,SAAS,KAAK2iB,EAAEogG,EAAEopG,cAAc,IAAI7tN,EAAEyjB,EAAEghG,EAAEmpG,gBAAgB1nN,GAAGA,EAAE69G,EAAQowE,eAAe,mBAAoBn0L,EAAEykH,EAAE/iH,SAAS1B,EAAEykH,IAAI1oE,EAAEuK,IAAI7J,EAAE6J,GAAG1J,EAAE12C,EAAE,MAAMu2C,EAAE6J,GAAGm+D,EAAE1oE,EAAEuK,EAAE,CAAC,GAAG,OAAOm+D,EAAE,IAAI3oE,GAAE,MAAO,CAAC,IAAI73B,EAAE83B,EAAEM,GAAG,OAAOp4B,GAAG/mB,EAAE2uH,EAAE5nG,EAAE0pM,UAAUznN,GAAG41C,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ2oE,EAAE,KAAKpgG,EAAEm4B,EAAER,GAAE,CAAE,CAAC,CAAC,IAAI7L,EAAEzqB,EAAEq+F,EAAQkgF,sBAAsB,EACtelgF,EAAQ4/E,2BAA2B,EAAE5/E,EAAQggF,qBAAqB,EAAEhgF,EAAQ8uE,wBAAwB,EAAE9uE,EAAQ+pG,mBAAmB,KAAK/pG,EAAQsxE,8BAA8B,EAAEtxE,EAAQm/E,wBAAwB,SAASv9K,GAAGA,EAAEjkB,SAAS,IAAI,EAAEqiH,EAAQgqG,2BAA2B,WAAWlyK,GAAGG,IAAIH,GAAE,EAAGhhC,EAAEshC,GAAG,EAAE4nE,EAAQ0/E,iCAAiC,WAAW,OAAOp/K,CAAC,EAAE0/F,EAAQiqG,8BAA8B,WAAW,OAAOjyK,EAAEuK,EAAE,EACtay9D,EAAQkqG,cAAc,SAAStoM,GAAG,OAAOtB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIne,EAAE,EAAE,MAAM,QAAQA,EAAEme,EAAE,IAAIm4B,EAAEn4B,EAAEA,EAAEne,EAAE,IAAI,OAAOyf,GAAG,CAAC,QAAQtB,EAAEm4B,CAAC,CAAC,EAAEunE,EAAQmqG,wBAAwB,WAAW,EAAEnqG,EAAQu/E,sBAAsBnzJ,EAAE4zE,EAAQsuE,yBAAyB,SAAS1sK,EAAEzf,GAAG,OAAOyf,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAI62B,EAAEn4B,EAAEA,EAAEsB,EAAE,IAAI,OAAOzf,GAAG,CAAC,QAAQme,EAAEm4B,CAAC,CAAC,EACtWunE,EAAQ6uE,0BAA0B,SAASjtK,EAAEzf,EAAEs2C,GAAG,IAAI/4B,EAAEsgG,EAAQowE,eAA8F,OAA/E,iBAAkB33I,GAAG,OAAOA,EAAaA,EAAE,iBAAZA,EAAEA,EAAE1B,QAA6B,EAAE0B,EAAE/4B,EAAE+4B,EAAE/4B,EAAG+4B,EAAE/4B,EAASkC,GAAG,KAAK,EAAE,IAAI3lB,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAA2M,OAAjM2lB,EAAE,CAAClW,GAAGugB,IAAItuB,SAASwE,EAAE2nN,cAAcloM,EAAEgoM,UAAUnxK,EAAEoxK,eAAvD5tN,EAAEw8C,EAAEx8C,EAAoE0tN,WAAW,GAAGlxK,EAAE/4B,GAAGkC,EAAE+nM,UAAUlxK,EAAEjG,EAAE8F,EAAE12B,GAAG,OAAOo2B,EAAEuK,IAAI3gC,IAAIo2B,EAAEM,KAAKK,EAAE9F,IAAI8F,GAAE,EAAGx/C,EAAE2uH,EAAErvE,EAAE/4B,MAAMkC,EAAE+nM,UAAU1tN,EAAEu2C,EAAE+P,EAAE3gC,GAAGk2B,GAAGG,IAAIH,GAAE,EAAGhhC,EAAEshC,KAAYx2B,CAAC,EAC3do+F,EAAQoqG,sBAAsB,SAASxoM,GAAG,IAAIzf,EAAEme,EAAE,OAAO,WAAW,IAAIm4B,EAAEn4B,EAAEA,EAAEne,EAAE,IAAI,OAAOyf,EAAE9kB,MAAMF,KAAKC,UAAU,CAAC,QAAQyjB,EAAEm4B,CAAC,CAAC,CAAC,gCChB9HsnE,EAAOC,QAAU,EAAjB,8BCDF,IAAIqqG,EAAc,GAClB,SAASC,EAAqBC,GAE5B,IADA,IAAI9tN,GAAU,EACL3C,EAAI,EAAGA,EAAIuwN,EAAYtwN,OAAQD,IACtC,GAAIuwN,EAAYvwN,GAAGywN,aAAeA,EAAY,CAC5C9tN,EAAS3C,EACT,KACF,CAEF,OAAO2C,CACT,CACA,SAAS+tN,EAAa1xM,EAAMlb,GAG1B,IAFA,IAAI6sN,EAAa,CAAC,EACdC,EAAc,GACT5wN,EAAI,EAAGA,EAAIgf,EAAK/e,OAAQD,IAAK,CACpC,IAAI0S,EAAOsM,EAAKhf,GACZ4R,EAAK9N,EAAQN,KAAOkP,EAAK,GAAK5O,EAAQN,KAAOkP,EAAK,GAClD2nF,EAAQs2H,EAAW/+M,IAAO,EAC1B6+M,EAAa,GAAGz9M,OAAOpB,EAAI,KAAKoB,OAAOqnF,GAC3Cs2H,EAAW/+M,GAAMyoF,EAAQ,EACzB,IAAIw2H,EAAoBL,EAAqBC,GACzC/8L,EAAM,CACRo9L,IAAKp+M,EAAK,GACVqjI,MAAOrjI,EAAK,GACZq+M,UAAWr+M,EAAK,GAChBujI,SAAUvjI,EAAK,GACfwjI,MAAOxjI,EAAK,IAEd,IAA2B,IAAvBm+M,EACFN,EAAYM,GAAmBG,aAC/BT,EAAYM,GAAmB54D,QAAQvkI,OAClC,CACL,IAAIukI,EAAUg5D,EAAgBv9L,EAAK5vB,GACnCA,EAAQotN,QAAUlxN,EAClBuwN,EAAYpsN,OAAOnE,EAAG,EAAG,CACvBywN,WAAYA,EACZx4D,QAASA,EACT+4D,WAAY,GAEhB,CACAJ,EAAY5sN,KAAKysN,EACnB,CACA,OAAOG,CACT,CACA,SAASK,EAAgBv9L,EAAK5vB,GAC5B,IAAIqtN,EAAMrtN,EAAQujG,OAAOvjG,GACzBqtN,EAAItmN,OAAO6oB,GAWX,OAVc,SAAiB61E,GAC7B,GAAIA,EAAQ,CACV,GAAIA,EAAOunH,MAAQp9L,EAAIo9L,KAAOvnH,EAAOwsC,QAAUriH,EAAIqiH,OAASxsC,EAAOwnH,YAAcr9L,EAAIq9L,WAAaxnH,EAAO0sC,WAAaviH,EAAIuiH,UAAY1sC,EAAO2sC,QAAUxiH,EAAIwiH,MACzJ,OAEFi7E,EAAItmN,OAAO6oB,EAAM61E,EACnB,MACE4nH,EAAI79M,QAER,CAEF,CACA2yG,EAAOC,QAAU,SAAUlnG,EAAMlb,GAG/B,IAAIstN,EAAkBV,EADtB1xM,EAAOA,GAAQ,GADflb,EAAUA,GAAW,CAAC,GAGtB,OAAO,SAAgButN,GACrBA,EAAUA,GAAW,GACrB,IAAK,IAAIrxN,EAAI,EAAGA,EAAIoxN,EAAgBnxN,OAAQD,IAAK,CAC/C,IACImP,EAAQqhN,EADKY,EAAgBpxN,IAEjCuwN,EAAYphN,GAAO6hN,YACrB,CAEA,IADA,IAAIM,EAAqBZ,EAAaW,EAASvtN,GACtC8pB,EAAK,EAAGA,EAAKwjM,EAAgBnxN,OAAQ2tB,IAAM,CAClD,IACI2jM,EAASf,EADKY,EAAgBxjM,IAEK,IAAnC2iM,EAAYgB,GAAQP,aACtBT,EAAYgB,GAAQt5D,UACpBs4D,EAAYpsN,OAAOotN,EAAQ,GAE/B,CACAH,EAAkBE,CACpB,CACF,0BCjFA,IAAIrpG,EAAO,CAAC,EA+BZhC,EAAOC,QAPP,SAA0B3rF,EAAQplB,GAChC,IAAIrV,EAtBN,SAAmBA,GACjB,QAA4B,IAAjBmoH,EAAKnoH,GAAyB,CACvC,IAAI0xN,EAAchsN,SAAS0E,cAAcpK,GAGzC,GAAI6W,OAAOkqL,mBAAqB2wB,aAAuB76M,OAAOkqL,kBAC5D,IAGE2wB,EAAcA,EAAYC,gBAAgBx9K,IAC5C,CAAE,MAAO9xC,GAEPqvN,EAAc,IAChB,CAEFvpG,EAAKnoH,GAAU0xN,CACjB,CACA,OAAOvpG,EAAKnoH,EACd,CAIe4xN,CAAUn3L,GACvB,IAAKz6B,EACH,MAAM,IAAIiG,MAAM,2GAElBjG,EAAO6gG,YAAYxrF,EACrB,0BCvBA8wG,EAAOC,QANP,SAA4BpiH,GAC1B,IAAIsQ,EAAU5O,SAASk7F,cAAc,SAGrC,OAFA58F,EAAQsjG,cAAchzF,EAAStQ,EAAQmhB,YACvCnhB,EAAQy2B,OAAOnmB,EAAStQ,EAAQA,SACzBsQ,CACT,gCCCA6xG,EAAOC,QANP,SAAwCyrG,GACtC,IAAIC,EAAmD,KACnDA,GACFD,EAAarpN,aAAa,QAASspN,EAEvC,0BCoDA3rG,EAAOC,QAjBP,SAAgBpiH,GACd,GAAwB,oBAAb0B,SACT,MAAO,CACLqF,OAAQ,WAAmB,EAC3ByI,OAAQ,WAAmB,GAG/B,IAAIq+M,EAAe7tN,EAAQwjG,mBAAmBxjG,GAC9C,MAAO,CACL+G,OAAQ,SAAgB6oB,IAjD5B,SAAei+L,EAAc7tN,EAAS4vB,GACpC,IAAIo9L,EAAM,GACNp9L,EAAIuiH,WACN66E,GAAO,cAAc99M,OAAO0gB,EAAIuiH,SAAU,QAExCviH,EAAIqiH,QACN+6E,GAAO,UAAU99M,OAAO0gB,EAAIqiH,MAAO,OAErC,IAAIF,OAAiC,IAAdniH,EAAIwiH,MACvBL,IACFi7E,GAAO,SAAS99M,OAAO0gB,EAAIwiH,MAAMj2I,OAAS,EAAI,IAAI+S,OAAO0gB,EAAIwiH,OAAS,GAAI,OAE5E46E,GAAOp9L,EAAIo9L,IACPj7E,IACFi7E,GAAO,KAELp9L,EAAIqiH,QACN+6E,GAAO,KAELp9L,EAAIuiH,WACN66E,GAAO,KAET,IAAIC,EAAYr9L,EAAIq9L,UAChBA,GAA6B,oBAAT16E,OACtBy6E,GAAO,uDAAuD99M,OAAOqjI,KAAKC,SAASC,mBAAmB7lI,KAAKe,UAAUs/M,MAAe,QAKtIjtN,EAAQqjG,kBAAkB2pH,EAAKa,EAAc7tN,EAAQA,QACvD,CAoBMd,CAAM2uN,EAAc7tN,EAAS4vB,EAC/B,EACApgB,OAAQ,YArBZ,SAA4Bq+M,GAE1B,GAAgC,OAA5BA,EAAaptH,WACf,OAAO,EAETotH,EAAaptH,WAAWs1B,YAAY83F,EACtC,CAgBME,CAAmBF,EACrB,EAEJ,0BC9CA1rG,EAAOC,QAVP,SAA2B4qG,EAAKa,GAC9B,GAAIA,EAAaG,WACfH,EAAaG,WAAWC,QAAUjB,MAC7B,CACL,KAAOa,EAAankC,YAClBmkC,EAAa93F,YAAY83F,EAAankC,YAExCmkC,EAAahxH,YAAYn7F,SAAS4tH,eAAe09F,GACnD,CACF,4DCMA,QClBe,SAAkClpK,GAChD,IAAIjlD,EACA8D,EAASmhD,EAAKnhD,OAalB,MAXsB,mBAAXA,EACNA,EAAOurN,WACVrvN,EAAS8D,EAAOurN,YAEhBrvN,EAAS8D,EAAO,cAChBA,EAAOurN,WAAarvN,GAGrBA,EAAS,eAGHA,CACR,CDCa,CAZO,oBAATN,KACFA,KACoB,oBAAXsU,OACTA,YACoB,IAAX,EAAAtX,EACT,EAAAA,EAEA4mH,iCEHI,IAAI9jH,EAAE,EAAQ,OAAwE,IAAI0lB,EAAE,mBAAoBvnB,OAAO0sH,GAAG1sH,OAAO0sH,GAA1G,SAAWllG,EAAEzf,GAAG,OAAOyf,IAAIzf,IAAI,IAAIyf,GAAG,EAAEA,GAAI,EAAEzf,IAAIyf,GAAIA,GAAGzf,GAAIA,CAAC,EAAiDnE,EAAE/B,EAAEk9G,SAASphE,EAAE97C,EAAE4sM,UAAU3oL,EAAEjkB,EAAEmuM,gBAAgB5uM,EAAES,EAAEuuM,cACtM,SAAS9oL,EAAEE,GAAG,IAAIzf,EAAEyf,EAAE+mL,YAAY/mL,EAAEA,EAAE5mB,MAAM,IAAI,IAAI0kB,EAAEvd,IAAI,OAAOwf,EAAEC,EAAElC,EAAE,CAAC,MAAM5I,GAAG,OAAM,CAAE,CAAC,CAA4B,IAAIqhC,EAAE,oBAAqB1nC,aAAQ,IAAqBA,OAAOnR,eAAU,IAAqBmR,OAAOnR,SAASk7F,cAAzI,SAAW54E,EAAEzf,GAAG,OAAOA,GAAG,EAD+F,SAAWyf,EAAEzf,GAAG,IAAIud,EAAEvd,IAAI2U,EAAE9Y,EAAE,CAAC+tN,KAAK,CAAC/wN,MAAM0kB,EAAEipL,YAAYxmM,KAAKs2C,EAAE3hC,EAAE,GAAGi1M,KAAK5yN,EAAE2d,EAAE,GAAwJ,OAArJoJ,GAAE,WAAWu4B,EAAEz9C,MAAM0kB,EAAE+4B,EAAEkwJ,YAAYxmM,EAAEuf,EAAE+2B,IAAIt/C,EAAE,CAAC4yN,KAAKtzK,GAAG,GAAE,CAAC72B,EAAElC,EAAEvd,IAAI41C,GAAE,WAA6B,OAAlBr2B,EAAE+2B,IAAIt/C,EAAE,CAAC4yN,KAAKtzK,IAAW72B,GAAE,WAAWF,EAAE+2B,IAAIt/C,EAAE,CAAC4yN,KAAKtzK,GAAG,GAAE,GAAE,CAAC72B,IAAIpmB,EAAEkkB,GAAUA,CAAC,EAC5MsgG,EAAQmgG,0BAAqB,IAASlkN,EAAEkkN,qBAAqBlkN,EAAEkkN,qBAAqBhoK,gCCD7T,IAAItF,EAAE,EAAQ,OAAS3yB,EAAE,EAAQ,OAA+F,IAAItK,EAAE,mBAAoBxb,OAAO0sH,GAAG1sH,OAAO0sH,GAA1G,SAAWllG,EAAEzf,GAAG,OAAOyf,IAAIzf,IAAI,IAAIyf,GAAG,EAAEA,GAAI,EAAEzf,IAAIyf,GAAIA,GAAGzf,GAAIA,CAAC,EAAiDuf,EAAExB,EAAEigM,qBAAqBngM,EAAE6yB,EAAE03J,OAAOpyJ,EAAEtF,EAAEg2J,UAAUxnL,EAAEwxB,EAAEw3J,QAAQz3J,EAAEC,EAAE23J,cAC/PxqF,EAAQ67F,iCAAiC,SAASj6L,EAAEzf,EAAElG,EAAE+B,EAAE7E,GAAG,IAAIs/C,EAAEz4B,EAAE,MAAM,GAAG,OAAOy4B,EAAEpiC,QAAQ,CAAC,IAAIS,EAAE,CAACk1M,UAAS,EAAGhxN,MAAM,MAAMy9C,EAAEpiC,QAAQS,CAAC,MAAMA,EAAE2hC,EAAEpiC,QAAQoiC,EAAEp3B,GAAE,WAAW,SAASO,EAAEA,GAAG,IAAI62B,EAAE,CAAiB,GAAhBA,GAAE,EAAG/4B,EAAEkC,EAAEA,EAAE5jB,EAAE4jB,QAAM,IAASzoB,GAAG2d,EAAEk1M,SAAS,CAAC,IAAI7pN,EAAE2U,EAAE9b,MAAM,GAAG7B,EAAEgJ,EAAEyf,GAAG,OAAOD,EAAExf,CAAC,CAAC,OAAOwf,EAAEC,CAAC,CAAK,GAAJzf,EAAEwf,EAAK/L,EAAE8J,EAAEkC,GAAG,OAAOzf,EAAE,IAAIlG,EAAE+B,EAAE4jB,GAAG,YAAG,IAASzoB,GAAGA,EAAEgJ,EAAElG,GAAUkG,GAAEud,EAAEkC,EAASD,EAAE1lB,EAAC,CAAC,IAASyjB,EAAEiC,EAAP82B,GAAE,EAAOV,OAAE,IAAS97C,EAAE,KAAKA,EAAE,MAAM,CAAC,WAAW,OAAO2lB,EAAEzf,IAAI,EAAE,OAAO41C,OAAE,EAAO,WAAW,OAAOn2B,EAAEm2B,IAAI,EAAE,GAAE,CAAC51C,EAAElG,EAAE+B,EAAE7E,IAAI,IAAIumB,EAAEgC,EAAEE,EAAE62B,EAAE,GAAGA,EAAE,IACnc,OAAhDN,GAAE,WAAWrhC,EAAEk1M,UAAS,EAAGl1M,EAAE9b,MAAM0kB,CAAC,GAAE,CAACA,IAAIkzB,EAAElzB,GAAUA,CAAC,gCCRtDqgG,EAAOC,QAAU,EAAjB,qCCAAD,EAAOC,QAAU,EAAjB,qCCHF,IAAI2E,EACqB,oBAAf02F,YAA8BA,YACrB,oBAATl/M,MAAwBA,WACb,IAAXwoH,GAA0BA,EAEhCsnG,EACY,oBAAqBtnG,EADjCsnG,EAEQ,WAAYtnG,GAAU,aAAcpkH,OAF5C0rN,EAIA,eAAgBtnG,GAChB,SAAUA,GACV,WACE,IAEE,OADA,IAAIjqB,MACG,CACT,CAAE,MAAOz+F,GACP,OAAO,CACT,CACD,CAPD,GANAgwN,EAcQ,aAActnG,EAdtBsnG,EAeW,gBAAiBtnG,EAOhC,GAAIsnG,EACF,IAAIC,EAAc,CAChB,qBACA,sBACA,6BACA,sBACA,uBACA,sBACA,uBACA,wBACA,yBAGEC,EACFjjM,YAAYuiH,QACZ,SAASj+G,GACP,OAAOA,GAAO0+L,EAAYx/M,QAAQtS,OAAOM,UAAU0oB,SAASpnB,KAAKwxB,KAAS,CAC5E,EAGJ,SAAS4+L,EAActsN,GAIrB,GAHoB,iBAATA,IACTA,EAAOyjB,OAAOzjB,IAEZ,6BAA6Bwf,KAAKxf,IAAkB,KAATA,EAC7C,MAAM,IAAIpG,UAAU,4CAA8CoG,EAAO,KAE3E,OAAOA,EAAKo4F,aACd,CAEA,SAASm0H,EAAerxN,GAItB,MAHqB,iBAAVA,IACTA,EAAQuoB,OAAOvoB,IAEVA,CACT,CAGA,SAASsxN,EAAY5hN,GACnB,IAAI0W,EAAW,CACblY,KAAM,WACJ,IAAIlO,EAAQ0P,EAAMs3F,QAClB,MAAO,CAACrhF,UAAgB3hB,IAAVhE,EAAqBA,MAAOA,EAC5C,GASF,OANIixN,IACF7qM,EAAS7gB,OAAO6gB,UAAY,WAC1B,OAAOA,CACT,GAGKA,CACT,CAEO,SAASmrM,EAAQ/7M,GACtB5T,KAAKwH,IAAM,CAAC,EAERoM,aAAmB+7M,EACrB/7M,EAAQtO,SAAQ,SAASlH,EAAO8E,GAC9BlD,KAAKikC,OAAO/gC,EAAM9E,EACpB,GAAG4B,MACM+iB,MAAMuO,QAAQ1d,GACvBA,EAAQtO,SAAQ,SAASk5B,GACvBx+B,KAAKikC,OAAOzF,EAAO,GAAIA,EAAO,GAChC,GAAGx+B,MACM4T,GACTpW,OAAOu0H,oBAAoBn+G,GAAStO,SAAQ,SAASpC,GACnDlD,KAAKikC,OAAO/gC,EAAM0Q,EAAQ1Q,GAC5B,GAAGlD,KAEP,CA8DA,SAAS4vN,EAAS37M,GAChB,GAAIA,EAAK47M,SACP,OAAOnuN,QAAQkiB,OAAO,IAAI9mB,UAAU,iBAEtCmX,EAAK47M,UAAW,CAClB,CAEA,SAASC,EAAgBC,GACvB,OAAO,IAAIruN,SAAQ,SAASC,EAASiiB,GACnCmsM,EAAOC,OAAS,WACdruN,EAAQouN,EAAOlwN,OACjB,EACAkwN,EAAOE,QAAU,WACfrsM,EAAOmsM,EAAOrrN,MAChB,CACF,GACF,CAEA,SAASwrN,EAAsB9yH,GAC7B,IAAI2yH,EAAS,IAAII,WACb9/F,EAAUy/F,EAAgBC,GAE9B,OADAA,EAAOK,kBAAkBhzH,GAClBizB,CACT,CAmBA,SAASggG,EAAY5rK,GACnB,GAAIA,EAAIjjD,MACN,OAAOijD,EAAIjjD,MAAM,GAEjB,IAAI08H,EAAO,IAAI74G,WAAWo/B,EAAIpP,YAE9B,OADA6oF,EAAKxmG,IAAI,IAAIrS,WAAWo/B,IACjBy5E,EAAKh3G,MAEhB,CAEA,SAASopM,IAkHP,OAjHAtwN,KAAK6vN,UAAW,EAEhB7vN,KAAKuwN,UAAY,SAASt8M,GAhM5B,IAAoB2c,EA2MhB5wB,KAAK6vN,SAAW7vN,KAAK6vN,SACrB7vN,KAAKwwN,UAAYv8M,EACZA,EAEsB,iBAATA,EAChBjU,KAAKywN,UAAYx8M,EACRo7M,GAAgBvxH,KAAKhgG,UAAU4yN,cAAcz8M,GACtDjU,KAAK2wN,UAAY18M,EACRo7M,GAAoBuB,SAAS9yN,UAAU4yN,cAAcz8M,GAC9DjU,KAAK6wN,cAAgB58M,EACZo7M,GAAwByB,gBAAgBhzN,UAAU4yN,cAAcz8M,GACzEjU,KAAKywN,UAAYx8M,EAAKuS,WACb6oM,GAAuBA,KAvNlBz+L,EAuN6C3c,IAtNjDkhC,SAASr3C,UAAU4yN,cAAc9/L,KAuN3C5wB,KAAK+wN,iBAAmBV,EAAYp8M,EAAKiT,QAEzClnB,KAAKwwN,UAAY,IAAI1yH,KAAK,CAAC99F,KAAK+wN,oBACvB1B,IAAwB/iM,YAAYxuB,UAAU4yN,cAAcz8M,IAASs7M,EAAkBt7M,IAChGjU,KAAK+wN,iBAAmBV,EAAYp8M,GAEpCjU,KAAKywN,UAAYx8M,EAAOzW,OAAOM,UAAU0oB,SAASpnB,KAAK6U,GAhBvDjU,KAAKywN,UAAY,GAmBdzwN,KAAK4T,QAAQpT,IAAI,kBACA,iBAATyT,EACTjU,KAAK4T,QAAQ8jB,IAAI,eAAgB,4BACxB13B,KAAK2wN,WAAa3wN,KAAK2wN,UAAU7vN,KAC1Cd,KAAK4T,QAAQ8jB,IAAI,eAAgB13B,KAAK2wN,UAAU7vN,MACvCuuN,GAAwByB,gBAAgBhzN,UAAU4yN,cAAcz8M,IACzEjU,KAAK4T,QAAQ8jB,IAAI,eAAgB,mDAGvC,EAEI23L,IACFrvN,KAAKo9F,KAAO,WACV,IAAIt5E,EAAW8rM,EAAS5vN,MACxB,GAAI8jB,EACF,OAAOA,EAGT,GAAI9jB,KAAK2wN,UACP,OAAOjvN,QAAQC,QAAQ3B,KAAK2wN,WACvB,GAAI3wN,KAAK+wN,iBACd,OAAOrvN,QAAQC,QAAQ,IAAIm8F,KAAK,CAAC99F,KAAK+wN,oBACjC,GAAI/wN,KAAK6wN,cACd,MAAM,IAAI5tN,MAAM,wCAEhB,OAAOvB,QAAQC,QAAQ,IAAIm8F,KAAK,CAAC99F,KAAKywN,YAE1C,EAEAzwN,KAAKw7F,YAAc,WACjB,GAAIx7F,KAAK+wN,iBAAkB,CACzB,IAAIC,EAAapB,EAAS5vN,MAC1B,OAAIgxN,IAGA1kM,YAAYuiH,OAAO7uI,KAAK+wN,kBACnBrvN,QAAQC,QACb3B,KAAK+wN,iBAAiB7pM,OAAO1lB,MAC3BxB,KAAK+wN,iBAAiB10K,WACtBr8C,KAAK+wN,iBAAiB10K,WAAar8C,KAAK+wN,iBAAiB17K,aAItD3zC,QAAQC,QAAQ3B,KAAK+wN,kBAEhC,CACE,OAAO/wN,KAAKo9F,OAAOx7F,KAAKsuN,EAE5B,GAGFlwN,KAAK2M,KAAO,WACV,IAnHoBywF,EAClB2yH,EACA1/F,EAiHEvsG,EAAW8rM,EAAS5vN,MACxB,GAAI8jB,EACF,OAAOA,EAGT,GAAI9jB,KAAK2wN,UACP,OAzHkBvzH,EAyHIp9F,KAAK2wN,UAxH3BZ,EAAS,IAAII,WACb9/F,EAAUy/F,EAAgBC,GAC9BA,EAAOkB,WAAW7zH,GACXizB,EAsHE,GAAIrwH,KAAK+wN,iBACd,OAAOrvN,QAAQC,QApHrB,SAA+B8iD,GAI7B,IAHA,IAAIy5E,EAAO,IAAI74G,WAAWo/B,GACtBt/B,EAAQ,IAAIpC,MAAMm7G,EAAK/gI,QAElBD,EAAI,EAAGA,EAAIghI,EAAK/gI,OAAQD,IAC/BioB,EAAMjoB,GAAKypB,OAAOC,aAAas3G,EAAKhhI,IAEtC,OAAOioB,EAAMjM,KAAK,GACpB,CA4G6Bg4M,CAAsBlxN,KAAK+wN,mBAC7C,GAAI/wN,KAAK6wN,cACd,MAAM,IAAI5tN,MAAM,wCAEhB,OAAOvB,QAAQC,QAAQ3B,KAAKywN,UAEhC,EAEIpB,IACFrvN,KAAKmxN,SAAW,WACd,OAAOnxN,KAAK2M,OAAO/K,KAAKy1C,EAC1B,GAGFr3C,KAAKoE,KAAO,WACV,OAAOpE,KAAK2M,OAAO/K,KAAKgM,KAAKC,MAC/B,EAEO7N,IACT,CAnOA2vN,EAAQ7xN,UAAUmmC,OAAS,SAAS/gC,EAAM9E,GACxC8E,EAAOssN,EAActsN,GACrB9E,EAAQqxN,EAAerxN,GACvB,IAAIgzN,EAAWpxN,KAAKwH,IAAItE,GACxBlD,KAAKwH,IAAItE,GAAQkuN,EAAWA,EAAW,KAAOhzN,EAAQA,CACxD,EAEAuxN,EAAQ7xN,UAAkB,OAAI,SAASoF,UAC9BlD,KAAKwH,IAAIgoN,EAActsN,GAChC,EAEAysN,EAAQ7xN,UAAU0C,IAAM,SAAS0C,GAE/B,OADAA,EAAOssN,EAActsN,GACdlD,KAAK67B,IAAI34B,GAAQlD,KAAKwH,IAAItE,GAAQ,IAC3C,EAEAysN,EAAQ7xN,UAAU+9B,IAAM,SAAS34B,GAC/B,OAAOlD,KAAKwH,IAAIlH,eAAekvN,EAActsN,GAC/C,EAEAysN,EAAQ7xN,UAAU45B,IAAM,SAASx0B,EAAM9E,GACrC4B,KAAKwH,IAAIgoN,EAActsN,IAASusN,EAAerxN,EACjD,EAEAuxN,EAAQ7xN,UAAUwH,QAAU,SAASvE,EAAUyiB,GAC7C,IAAK,IAAItgB,KAAQlD,KAAKwH,IAChBxH,KAAKwH,IAAIlH,eAAe4C,IAC1BnC,EAAS3B,KAAKokB,EAASxjB,KAAKwH,IAAItE,GAAOA,EAAMlD,KAGnD,EAEA2vN,EAAQ7xN,UAAUqyB,KAAO,WACvB,IAAIriB,EAAQ,GAIZ,OAHA9N,KAAKsF,SAAQ,SAASlH,EAAO8E,GAC3B4K,EAAM5M,KAAKgC,EACb,IACOwsN,EAAY5hN,EACrB,EAEA6hN,EAAQ7xN,UAAUyzB,OAAS,WACzB,IAAIzjB,EAAQ,GAIZ,OAHA9N,KAAKsF,SAAQ,SAASlH,GACpB0P,EAAM5M,KAAK9C,EACb,IACOsxN,EAAY5hN,EACrB,EAEA6hN,EAAQ7xN,UAAU69B,QAAU,WAC1B,IAAI7tB,EAAQ,GAIZ,OAHA9N,KAAKsF,SAAQ,SAASlH,EAAO8E,GAC3B4K,EAAM5M,KAAK,CAACgC,EAAM9E,GACpB,IACOsxN,EAAY5hN,EACrB,EAEIuhN,IACFM,EAAQ7xN,UAAU6F,OAAO6gB,UAAYmrM,EAAQ7xN,UAAU69B,SA6KzD,IAAI4sF,EAAU,CAAC,SAAU,MAAO,OAAQ,UAAW,OAAQ,OAOpD,SAAS7kH,EAAQ2c,EAAOrf,GAC7B,KAAMhB,gBAAgB0D,GACpB,MAAM,IAAI5G,UAAU,8FAItB,IAXuB6W,EACnB09M,EAUAp9M,GADJjT,EAAUA,GAAW,CAAC,GACHiT,KAEnB,GAAIoM,aAAiB3c,EAAS,CAC5B,GAAI2c,EAAMwvM,SACR,MAAM,IAAI/yN,UAAU,gBAEtBkD,KAAKqL,IAAMgV,EAAMhV,IACjBrL,KAAKgU,YAAcqM,EAAMrM,YACpBhT,EAAQ4S,UACX5T,KAAK4T,QAAU,IAAI+7M,EAAQtvM,EAAMzM,UAEnC5T,KAAK2T,OAAS0M,EAAM1M,OACpB3T,KAAKmc,KAAOkE,EAAMlE,KAClBnc,KAAKqD,OAASgd,EAAMhd,OACf4Q,GAA2B,MAAnBoM,EAAMmwM,YACjBv8M,EAAOoM,EAAMmwM,UACbnwM,EAAMwvM,UAAW,EAErB,MACE7vN,KAAKqL,IAAMsb,OAAOtG,GAYpB,GATArgB,KAAKgU,YAAchT,EAAQgT,aAAehU,KAAKgU,aAAe,eAC1DhT,EAAQ4S,SAAY5T,KAAK4T,UAC3B5T,KAAK4T,QAAU,IAAI+7M,EAAQ3uN,EAAQ4S,UAErC5T,KAAK2T,QArCkBA,EAqCO3S,EAAQ2S,QAAU3T,KAAK2T,QAAU,MApC3D09M,EAAU19M,EAAO5D,cACdw4G,EAAQz4G,QAAQuhN,IAAY,EAAIA,EAAU19M,GAoCjD3T,KAAKmc,KAAOnb,EAAQmb,MAAQnc,KAAKmc,MAAQ,KACzCnc,KAAKqD,OAASrC,EAAQqC,QAAUrD,KAAKqD,OACrCrD,KAAKsxN,SAAW,MAEK,QAAhBtxN,KAAK2T,QAAoC,SAAhB3T,KAAK2T,SAAsBM,EACvD,MAAM,IAAInX,UAAU,6CAItB,GAFAkD,KAAKuwN,UAAUt8M,KAEK,QAAhBjU,KAAK2T,QAAoC,SAAhB3T,KAAK2T,QACV,aAAlB3S,EAAQsW,OAA0C,aAAlBtW,EAAQsW,OAAsB,CAEhE,IAAIi6M,EAAgB,gBACpB,GAAIA,EAAc7uM,KAAK1iB,KAAKqL,KAE1BrL,KAAKqL,IAAMrL,KAAKqL,IAAIgc,QAAQkqM,EAAe,QAAS,IAAI3/M,MAAOkF,eAC1D,CAGL9W,KAAKqL,MADe,KACOqX,KAAK1iB,KAAKqL,KAAO,IAAM,KAAO,MAAO,IAAIuG,MAAOkF,SAC7E,CACF,CAEJ,CAMA,SAASugC,EAAOpjC,GACd,IAAI42E,EAAO,IAAI+lI,SAYf,OAXA38M,EACG8C,OACA4B,MAAM,KACNrT,SAAQ,SAAS0gB,GAChB,GAAIA,EAAO,CACT,IAAIrN,EAAQqN,EAAMrN,MAAM,KACpBzV,EAAOyV,EAAMysF,QAAQ/9E,QAAQ,MAAO,KACpCjpB,EAAQua,EAAMO,KAAK,KAAKmO,QAAQ,MAAO,KAC3CwjE,EAAK5mD,OAAOga,mBAAmB/6C,GAAO+6C,mBAAmB7/C,GAC3D,CACF,IACKysF,CACT,CA4BO,SAAS2mI,EAASC,EAAUzwN,GACjC,KAAMhB,gBAAgBwxN,GACpB,MAAM,IAAI10N,UAAU,8FAEjBkE,IACHA,EAAU,CAAC,GAGbhB,KAAKc,KAAO,UACZd,KAAKsU,YAA4BlS,IAAnBpB,EAAQsT,OAAuB,IAAMtT,EAAQsT,OAC3DtU,KAAKqmI,GAAKrmI,KAAKsU,QAAU,KAAOtU,KAAKsU,OAAS,IAC9CtU,KAAKuU,gBAAoCnS,IAAvBpB,EAAQuT,WAA2B,GAAK,GAAKvT,EAAQuT,WACvEvU,KAAK4T,QAAU,IAAI+7M,EAAQ3uN,EAAQ4S,SACnC5T,KAAKqL,IAAMrK,EAAQqK,KAAO,GAC1BrL,KAAKuwN,UAAUkB,EACjB,CA7DA/tN,EAAQ5F,UAAU24B,MAAQ,WACxB,OAAO,IAAI/yB,EAAQ1D,KAAM,CAACiU,KAAMjU,KAAKwwN,WACvC,EA0CAF,EAAKlxN,KAAKsE,EAAQ5F,WAmBlBwyN,EAAKlxN,KAAKoyN,EAAS1zN,WAEnB0zN,EAAS1zN,UAAU24B,MAAQ,WACzB,OAAO,IAAI+6L,EAASxxN,KAAKwwN,UAAW,CAClCl8M,OAAQtU,KAAKsU,OACbC,WAAYvU,KAAKuU,WACjBX,QAAS,IAAI+7M,EAAQ3vN,KAAK4T,SAC1BvI,IAAKrL,KAAKqL,KAEd,EAEAmmN,EAAS9sN,MAAQ,WACf,IAAIP,EAAW,IAAIqtN,EAAS,KAAM,CAACl9M,OAAQ,EAAGC,WAAY,KAE1D,OADApQ,EAASrD,KAAO,QACTqD,CACT,EAEA,IAAIutN,EAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,KAE5CF,EAASG,SAAW,SAAStmN,EAAKiJ,GAChC,IAA0C,IAAtCo9M,EAAiB5hN,QAAQwE,GAC3B,MAAM,IAAIu1G,WAAW,uBAGvB,OAAO,IAAI2nG,EAAS,KAAM,CAACl9M,OAAQA,EAAQV,QAAS,CAAC4E,SAAUnN,IACjE,EAEO,IAAIlI,EAAe4kH,EAAO5kH,aACjC,IACE,IAAIA,CACN,CAAE,MAAOC,IACPD,EAAe,SAAS+D,EAAShE,GAC/BlD,KAAKkH,QAAUA,EACflH,KAAKkD,KAAOA,EACZ,IAAIwB,EAAQzB,MAAMiE,GAClBlH,KAAKmB,MAAQuD,EAAMvD,KACrB,GACarD,UAAYN,OAAOU,OAAO+E,MAAMnF,WAC7CqF,EAAarF,UAAUK,YAAcgF,CACvC,CAEO,SAASiR,EAAMiM,EAAO4uH,GAC3B,OAAO,IAAIvtI,SAAQ,SAASC,EAASiiB,GACnC,IAAIguM,EAAU,IAAIluN,EAAQ2c,EAAO4uH,GAEjC,GAAI2iF,EAAQvuN,QAAUuuN,EAAQvuN,OAAOhB,QACnC,OAAOuhB,EAAO,IAAIzgB,EAAa,UAAW,eAG5C,IAAI0uN,EAAM,IAAIC,eAEd,SAASC,IACPF,EAAI5wM,OACN,CAEA4wM,EAAI7B,OAAS,WACX,IAnGgBgC,EAChBp+M,EAkGI5S,EAAU,CACZsT,OAAQu9M,EAAIv9M,OACZC,WAAYs9M,EAAIt9M,WAChBX,SAtGco+M,EAsGQH,EAAII,yBAA2B,GArGvDr+M,EAAU,IAAI+7M,EAGQqC,EAAW3qM,QAAQ,eAAgB,KAK1D1O,MAAM,MACNnR,KAAI,SAASg3B,GACZ,OAAgC,IAAzBA,EAAO1uB,QAAQ,MAAc0uB,EAAO9lB,OAAO,EAAG8lB,EAAOrhC,QAAUqhC,CACxE,IACCl5B,SAAQ,SAAS2vB,GAChB,IAAI8d,EAAQ9d,EAAKtc,MAAM,KACnBjb,EAAMq1C,EAAMqyD,QAAQruF,OACxB,GAAIrZ,EAAK,CACP,IAAIU,EAAQ20C,EAAM75B,KAAK,KAAKnC,OAC5BnD,EAAQqwB,OAAOvmC,EAAKU,EACtB,CACF,IACKwV,IAmFH5S,EAAQqK,IAAM,gBAAiBwmN,EAAMA,EAAIK,YAAclxN,EAAQ4S,QAAQpT,IAAI,iBAC3E,IAAIyT,EAAO,aAAc49M,EAAMA,EAAI1tN,SAAW0tN,EAAIM,aAClDxqN,YAAW,WACThG,EAAQ,IAAI6vN,EAASv9M,EAAMjT,GAC7B,GAAG,EACL,EAEA6wN,EAAI5B,QAAU,WACZtoN,YAAW,WACTic,EAAO,IAAI9mB,UAAU,0BACvB,GAAG,EACL,EAEA+0N,EAAIO,UAAY,WACdzqN,YAAW,WACTic,EAAO,IAAI9mB,UAAU,0BACvB,GAAG,EACL,EAEA+0N,EAAIvvN,QAAU,WACZqF,YAAW,WACTic,EAAO,IAAIzgB,EAAa,UAAW,cACrC,GAAG,EACL,EAUA0uN,EAAI3zH,KAAK0zH,EAAQj+M,OARjB,SAAgBtI,GACd,IACE,MAAe,KAARA,GAAc08G,EAAOvvG,SAASuG,KAAOgpG,EAAOvvG,SAASuG,KAAO1T,CACrE,CAAE,MAAOhM,GACP,OAAOgM,CACT,CACF,CAEyBgnN,CAAOT,EAAQvmN,MAAM,GAElB,YAAxBumN,EAAQ59M,YACV69M,EAAIS,iBAAkB,EACW,SAAxBV,EAAQ59M,cACjB69M,EAAIS,iBAAkB,GAGpB,iBAAkBT,IAChBxC,EACFwC,EAAIU,aAAe,OAEnBlD,GACAuC,EAAQh+M,QAAQpT,IAAI,kBACyD,IAA7EoxN,EAAQh+M,QAAQpT,IAAI,gBAAgBsP,QAAQ,8BAE5C+hN,EAAIU,aAAe,iBAInBtjF,GAAgC,iBAAjBA,EAAKr7H,SAA0Bq7H,EAAKr7H,mBAAmB+7M,EAKxEiC,EAAQh+M,QAAQtO,SAAQ,SAASlH,EAAO8E,GACtC2uN,EAAIW,iBAAiBtvN,EAAM9E,EAC7B,IANAZ,OAAOu0H,oBAAoBkd,EAAKr7H,SAAStO,SAAQ,SAASpC,GACxD2uN,EAAIW,iBAAiBtvN,EAAMusN,EAAexgF,EAAKr7H,QAAQ1Q,IACzD,IAOE0uN,EAAQvuN,SACVuuN,EAAQvuN,OAAOqd,iBAAiB,QAASqxM,GAEzCF,EAAIY,mBAAqB,WAEA,IAAnBZ,EAAIa,YACNd,EAAQvuN,OAAOvB,oBAAoB,QAASiwN,EAEhD,GAGFF,EAAIc,UAAkC,IAAtBf,EAAQpB,UAA4B,KAAOoB,EAAQpB,UACrE,GACF,CAEAp8M,EAAMw+M,UAAW,EAEZ7qG,EAAO3zG,QACV2zG,EAAO3zG,MAAQA,EACf2zG,EAAO4nG,QAAUA,EACjB5nG,EAAOrkH,QAAUA,EACjBqkH,EAAOypG,SAAWA,kBC3lBpB,OAOC,WACA,aAEA,IAAIhH,EAAS,CAAC,EAAElqN,eAEhB,SAASuyN,IAGR,IAFA,IAAI/+G,EAAU,GAEL52G,EAAI,EAAGA,EAAI+C,UAAU9C,OAAQD,IAAK,CAC1C,IAAImgC,EAAMp9B,UAAU/C,GAChBmgC,IACHy2E,EAAUg/G,EAAYh/G,EAASi/G,EAAW11L,IAE5C,CAEA,OAAOy2E,CACR,CAEA,SAASi/G,EAAY11L,GACpB,GAAmB,iBAARA,GAAmC,iBAARA,EACrC,OAAOA,EAGR,GAAmB,iBAARA,EACV,MAAO,GAGR,GAAIta,MAAMuO,QAAQ+L,GACjB,OAAOw1L,EAAW3yN,MAAM,KAAMm9B,GAG/B,GAAIA,EAAI7W,WAAahpB,OAAOM,UAAU0oB,WAAa6W,EAAI7W,SAASA,WAAWzN,SAAS,iBACnF,OAAOskB,EAAI7W,WAGZ,IAAIstF,EAAU,GAEd,IAAK,IAAIp2G,KAAO2/B,EACXmtL,EAAOprN,KAAKi+B,EAAK3/B,IAAQ2/B,EAAI3/B,KAChCo2G,EAAUg/G,EAAYh/G,EAASp2G,IAIjC,OAAOo2G,CACR,CAEA,SAASg/G,EAAa10N,EAAO40N,GAC5B,OAAKA,EAID50N,EACIA,EAAQ,IAAM40N,EAGf50N,EAAQ40N,EAPP50N,CAQT,CAEqC+kH,EAAOC,SAC3CyvG,EAAWxW,QAAUwW,EACrB1vG,EAAOC,QAAUyvG,QAKhB,KAFwB,EAAF,WACtB,OAAOA,CACP,UAFoB,OAEpB,YAIH,CArEA,KCNII,EAA2B,CAAC,EAGhC,SAASC,EAAoBtW,GAE5B,IAAIuW,EAAeF,EAAyBrW,GAC5C,QAAqBx6M,IAAjB+wN,EACH,OAAOA,EAAa/vG,QAGrB,IAAID,EAAS8vG,EAAyBrW,GAAY,CACjD9tM,GAAI8tM,EACJX,QAAQ,EACR74F,QAAS,CAAC,GAUX,OANAgwG,EAAoBxW,GAAUx9M,KAAK+jH,EAAOC,QAASD,EAAQA,EAAOC,QAAS8vG,GAG3E/vG,EAAO84F,QAAS,EAGT94F,EAAOC,OACf,CAGA8vG,EAAoB/3K,EAAIi4K,EC3BxBF,EAAoB5vM,EAAK6/F,IACxB,IAAI6Y,EAAS7Y,GAAUA,EAAOi5F,WAC7B,IAAOj5F,EAAiB,QACxB,IAAM,EAEP,OADA+vG,EAAoBpwM,EAAEk5G,EAAQ,CAAEh3G,EAAGg3G,IAC5BA,CAAM,ECLdk3F,EAAoBpwM,EAAI,CAACsgG,EAASiwG,KACjC,IAAI,IAAI31N,KAAO21N,EACXH,EAAoB30N,EAAE80N,EAAY31N,KAASw1N,EAAoB30N,EAAE6kH,EAAS1lH,IAC5EF,OAAOC,eAAe2lH,EAAS1lH,EAAK,CAAEL,YAAY,EAAMmD,IAAK6yN,EAAW31N,IAE1E,ECNDw1N,EAAoBh5M,EAAI,CAAC,EAGzBg5M,EAAoB7zN,EAAKi0N,GACjB5xN,QAAQ8lI,IAAIhqI,OAAO2yB,KAAK+iM,EAAoBh5M,GAAGX,QAAO,CAAC4iM,EAAUz+M,KACvEw1N,EAAoBh5M,EAAExc,GAAK41N,EAASnX,GAC7BA,IACL,KCNJ+W,EAAoB33K,EAAK+3K,GAEZA,EAAU,IAAM,CAAC,GAAK,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,mBAAmB,IAAM,oBAAoBA,GAAW,MCF3eJ,EAAoBK,SAAYD,GAExB,mBCHRJ,EAAoB32N,EAAI,WACvB,GAA0B,iBAAfkiN,WAAyB,OAAOA,WAC3C,IACC,OAAOz+M,MAAQ,IAAI4xB,SAAS,cAAb,EAChB,CAAE,MAAOvyB,GACR,GAAsB,iBAAXwU,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBq/M,EAAoBM,IAAOrwG,KAC1BA,EAAS3lH,OAAOU,OAAOilH,IACXhjB,WAAUgjB,EAAOhjB,SAAW,IACxC3iG,OAAOC,eAAe0lH,EAAQ,UAAW,CACxC9lH,YAAY,EACZq6B,IAAK,KACJ,MAAM,IAAIz0B,MAAM,0FAA4FkgH,EAAOr0G,GAAG,IAGjHq0G,GCTR+vG,EAAoB30N,EAAI,CAACqyB,EAAKqwI,IAAUzjK,OAAOM,UAAUwC,eAAelB,KAAKwxB,EAAKqwI,GtjBA9E3kK,EAAa,CAAC,EAGlB42N,EAAoB9xN,EAAI,CAACiK,EAAK0Y,EAAMrmB,EAAK41N,KACxC,GAAGh3N,EAAW+O,GAAQ/O,EAAW+O,GAAKnK,KAAK6iB,OAA3C,CACA,IAAI4sB,EAAQ8iL,EACZ,QAAWrxN,IAAR1E,EAEF,IADA,IAAIg2N,EAAUhxN,SAASixN,qBAAqB,UACpCz2N,EAAI,EAAGA,EAAIw2N,EAAQv2N,OAAQD,IAAK,CACvC,IAAImmB,EAAIqwM,EAAQx2N,GAChB,GAAGmmB,EAAE47F,aAAa,QAAU5zG,EAAK,CAAEslC,EAASttB,EAAG,KAAO,CACvD,CAEGstB,IACH8iL,GAAa,GACb9iL,EAASjuC,SAASk7F,cAAc,WAEzBg2H,QAAU,QACjBjjL,EAAO8rK,QAAU,IACbyW,EAAoBviC,IACvBhgJ,EAAOnrC,aAAa,QAAS0tN,EAAoBviC,IAGlDhgJ,EAAOnxB,IAAMnU,GAEd/O,EAAW+O,GAAO,CAAC0Y,GACnB,IAAI8vM,EAAmB,CAACtmL,EAAMjsC,KAE7BqvC,EAAOs/K,QAAUt/K,EAAOq/K,OAAS,KACjC9sH,aAAau5G,GACb,IAAIqX,EAAUx3N,EAAW+O,GAIzB,UAHO/O,EAAW+O,GAClBslC,EAAO8wD,YAAc9wD,EAAO8wD,WAAWs1B,YAAYpmF,GACnDmjL,GAAWA,EAAQxuN,SAASmgH,GAAQA,EAAGnkH,KACpCisC,EAAM,OAAOA,EAAKjsC,EAAM,EAGxBm7M,EAAU90M,WAAWksN,EAAiBn1N,KAAK,UAAM0D,EAAW,CAAEtB,KAAM,UAAW9D,OAAQ2zC,IAAW,MACtGA,EAAOs/K,QAAU4D,EAAiBn1N,KAAK,KAAMiyC,EAAOs/K,SACpDt/K,EAAOq/K,OAAS6D,EAAiBn1N,KAAK,KAAMiyC,EAAOq/K,QACnDyD,GAAc/wN,SAASyuC,KAAK0sD,YAAYltD,EApCkB,CAoCX,EujBvChDuiL,EAAoBpuM,EAAKs+F,IACH,oBAAXz/G,QAA0BA,OAAOC,aAC1CpG,OAAOC,eAAe2lH,EAASz/G,OAAOC,YAAa,CAAExF,MAAO,WAE7DZ,OAAOC,eAAe2lH,EAAS,aAAc,CAAEhlH,OAAO,GAAO,ECL9D80N,EAAoBa,IAAO5wG,IAC1BA,EAAOkmC,MAAQ,GACVlmC,EAAOhjB,WAAUgjB,EAAOhjB,SAAW,IACjCgjB,GCHR+vG,EAAoBt0N,EAAI,aCKxB,IAAIo1N,EAAkB,CACrB,IAAK,GAGNd,EAAoBh5M,EAAE+K,EAAI,CAACquM,EAASnX,KAElC,IAAI8X,EAAqBf,EAAoB30N,EAAEy1N,EAAiBV,GAAWU,EAAgBV,QAAWlxN,EACtG,GAA0B,IAAvB6xN,EAGF,GAAGA,EACF9X,EAASj7M,KAAK+yN,EAAmB,QAC3B,CAGL,IAAI5jG,EAAU,IAAI3uH,SAAQ,CAACC,EAASiiB,IAAYqwM,EAAqBD,EAAgBV,GAAW,CAAC3xN,EAASiiB,KAC1Gu4L,EAASj7M,KAAK+yN,EAAmB,GAAK5jG,GAGtC,IAAIhlH,EAAM6nN,EAAoBt0N,EAAIs0N,EAAoB33K,EAAE+3K,GAEpD5uN,EAAQ,IAAIzB,MAgBhBiwN,EAAoB9xN,EAAEiK,GAfF/J,IACnB,GAAG4xN,EAAoB30N,EAAEy1N,EAAiBV,KAEf,KAD1BW,EAAqBD,EAAgBV,MACRU,EAAgBV,QAAWlxN,GACrD6xN,GAAoB,CACtB,IAAIC,EAAY5yN,IAAyB,SAAfA,EAAMR,KAAkB,UAAYQ,EAAMR,MAChEqzN,EAAU7yN,GAASA,EAAMtE,QAAUsE,EAAMtE,OAAOwiB,IACpD9a,EAAMwC,QAAU,iBAAmBosN,EAAU,cAAgBY,EAAY,KAAOC,EAAU,IAC1FzvN,EAAMxB,KAAO,iBACbwB,EAAM5D,KAAOozN,EACbxvN,EAAMktN,QAAUuC,EAChBF,EAAmB,GAAGvvN,EACvB,CACD,GAEwC,SAAW4uN,EAASA,EAE/D,CACD,EAcF,IAAIc,EAAuB,CAACC,EAA4B/qN,KACvD,IAGIszM,EAAU0W,GAHTgB,EAAUC,EAAa3J,GAAWthN,EAGhBpM,EAAI,EAC3B,GAAGo3N,EAASlsK,MAAMt5C,GAAgC,IAAxBklN,EAAgBllN,KAAa,CACtD,IAAI8tM,KAAY2X,EACZrB,EAAoB30N,EAAEg2N,EAAa3X,KACrCsW,EAAoB/3K,EAAEyhK,GAAY2X,EAAY3X,IAGhD,GAAGgO,EAAsBA,EAAQsI,EAClC,CAEA,IADGmB,GAA4BA,EAA2B/qN,GACrDpM,EAAIo3N,EAASn3N,OAAQD,IACzBo2N,EAAUgB,EAASp3N,GAChBg2N,EAAoB30N,EAAEy1N,EAAiBV,IAAYU,EAAgBV,IACrEU,EAAgBV,GAAS,KAE1BU,EAAgBM,EAASp3N,IAAM,CAChC,EAIGs3N,EAAqBj1N,KAAmB,aAAIA,KAAmB,cAAK,GACxEi1N,EAAmBlvN,QAAQ8uN,EAAqB11N,KAAK,KAAM,IAC3D81N,EAAmBtzN,KAAOkzN,EAAqB11N,KAAK,KAAM81N,EAAmBtzN,KAAKxC,KAAK81N,QClFvFtB,EAAoB,OACpBA,EAAoB,OACMA,EAAoB","sources":["webpack:///webpack/runtime/load script","webpack:///../node_modules/@babel/polyfill/lib/index.js","webpack:///../node_modules/abortcontroller-polyfill/dist/abortcontroller-polyfill-only.js","webpack:///./Scripts/Actions/Cart.action.js","webpack:///./Scripts/Actions/Checkout.action.js","webpack:///./Scripts/Actions/Error.action.js","webpack:///./Scripts/Actions/LightboxImages.action.js","webpack:///./Scripts/Actions/Notification.action.js","webpack:///./Scripts/Components/DynamicComponent.js","webpack:///./Scripts/Components/QuickOrder.js","webpack:///./Scripts/Containers/QuickOrder.container.js","webpack:///./Scripts/Services/http.js","webpack:///./Scripts/Services/translation.js","webpack:///./Scripts/constants.js","webpack:///./Scripts/Actions/FacetedSearch.action.js","webpack:///../node_modules/redux-thunk/es/index.js","webpack:///./Scripts/Reducers/Cart.reducer.js","webpack:///./Scripts/Actions/QuickSearch.action.js","webpack:///./Scripts/Reducers/QuickSearch.reducer.js","webpack:///./Scripts/Actions/Navigation.action.js","webpack:///./Scripts/Reducers/Navigation.reducer.js","webpack:///./Scripts/Actions/UIState.action.js","webpack:///./Scripts/Reducers/FacetedSearch.reducer.js","webpack:///./Scripts/Reducers/UIState.reducer.js","webpack:///./Scripts/Reducers/Error.reducer.js","webpack:///./Scripts/Reducers/Person.reducer.js","webpack:///./Scripts/Reducers/Address.reducer.js","webpack:///./Scripts/Reducers/Order.reducer.js","webpack:///./Scripts/Reducers/MyPage.reducer.js","webpack:///./Scripts/Reducers/Checkout.reducer.js","webpack:///./Scripts/Reducers/LightboxImages.reducer.js","webpack:///./Scripts/Reducers/QuickOrder.reducer.js","webpack:///./Scripts/reducers.js","webpack:///./Scripts/Reducers/Notification.reducer.js","webpack:///./Scripts/Components/GreyOut.js","webpack:///./Scripts/Containers/UIState.container.js","webpack:///./Scripts/Components/MiniCart.js","webpack:///./Scripts/Containers/MiniCart.container.js","webpack:///./Scripts/Components/QuickSearchResult.js","webpack:///./Scripts/Components/QuickSearch.js","webpack:///./Scripts/Containers/QuickSearch.container.js","webpack:///./Scripts/Components/Navigation.js","webpack:///./Scripts/Containers/Navigation.container.js","webpack:///../node_modules/pdf-lib/node_modules/tslib/tslib.es6.js","webpack:///../node_modules/pdf-lib/es/utils/base64.js","webpack:///../node_modules/pdf-lib/es/utils/unicode.js","webpack:///../node_modules/pdf-lib/es/utils/strings.js","webpack:///../node_modules/pdf-lib/es/utils/arrays.js","webpack:///../node_modules/pdf-lib/es/utils/async.js","webpack:///../node_modules/@pdf-lib/standard-fonts/es/utils.js","webpack:///../node_modules/pdf-lib/es/utils/numbers.js","webpack:///../node_modules/pdf-lib/es/utils/errors.js","webpack:///../node_modules/@pdf-lib/standard-fonts/es/Font.js","webpack:///../node_modules/pdf-lib/es/utils/pdfDocEncoding.js","webpack:///../node_modules/@pdf-lib/standard-fonts/es/Encoding.js","webpack:///../node_modules/pdf-lib/es/utils/objects.js","webpack:///../node_modules/pdf-lib/es/utils/validators.js","webpack:///../node_modules/pdf-lib/es/utils/Cache.js","webpack:///../node_modules/pdf-lib/es/core/errors.js","webpack:///../node_modules/pdf-lib/es/core/syntax/CharCodes.js","webpack:///../node_modules/pdf-lib/es/core/document/PDFHeader.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFObject.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFNumber.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFArray.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFBool.js","webpack:///../node_modules/pdf-lib/es/core/syntax/Delimiters.js","webpack:///../node_modules/pdf-lib/es/core/syntax/Whitespace.js","webpack:///../node_modules/pdf-lib/es/core/syntax/Irregular.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFName.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFNull.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFDict.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFStream.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFRawStream.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFRef.js","webpack:///../node_modules/pdf-lib/es/core/operators/PDFOperator.js","webpack:///../node_modules/pdf-lib/es/core/operators/PDFOperatorNames.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFFlateStream.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFContentStream.js","webpack:///../node_modules/pdf-lib/es/utils/rng.js","webpack:///../node_modules/pdf-lib/es/core/PDFContext.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFPageLeaf.js","webpack:///../node_modules/pdf-lib/es/core/PDFObjectCopier.js","webpack:///../node_modules/pdf-lib/es/core/document/PDFCrossRefSection.js","webpack:///../node_modules/pdf-lib/es/core/document/PDFTrailer.js","webpack:///../node_modules/pdf-lib/es/core/document/PDFTrailerDict.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFObjectStream.js","webpack:///../node_modules/pdf-lib/es/core/writers/PDFWriter.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFInvalidObject.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFCrossRefStream.js","webpack:///../node_modules/pdf-lib/es/core/writers/PDFStreamWriter.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFHexString.js","webpack:///../node_modules/pdf-lib/es/core/embedders/StandardFontEmbedder.js","webpack:///../node_modules/pdf-lib/es/core/embedders/CMap.js","webpack:///../node_modules/pdf-lib/es/core/objects/PDFString.js","webpack:///../node_modules/pdf-lib/es/core/embedders/CustomFontEmbedder.js","webpack:///../node_modules/pdf-lib/es/core/embedders/FontFlags.js","webpack:///../node_modules/pdf-lib/es/core/embedders/CustomFontSubsetEmbedder.js","webpack:///../node_modules/pdf-lib/es/core/embedders/FileEmbedder.js","webpack:///../node_modules/pdf-lib/es/core/embedders/JpegEmbedder.js","webpack:///../node_modules/@pdf-lib/upng/UPNG.js","webpack:///../node_modules/pdf-lib/es/utils/png.js","webpack:///../node_modules/pdf-lib/es/core/embedders/PngEmbedder.js","webpack:///../node_modules/pdf-lib/es/core/streams/Stream.js","webpack:///../node_modules/pdf-lib/es/core/streams/DecodeStream.js","webpack:///../node_modules/pdf-lib/es/core/streams/Ascii85Stream.js","webpack:///../node_modules/pdf-lib/es/core/streams/AsciiHexStream.js","webpack:///../node_modules/pdf-lib/es/core/streams/FlateStream.js","webpack:///../node_modules/pdf-lib/es/core/streams/LZWStream.js","webpack:///../node_modules/pdf-lib/es/core/streams/RunLengthStream.js","webpack:///../node_modules/pdf-lib/es/core/streams/decode.js","webpack:///../node_modules/pdf-lib/es/core/embedders/PDFPageEmbedder.js","webpack:///../node_modules/pdf-lib/es/core/interactive/ViewerPreferences.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroField.js","webpack:///../node_modules/pdf-lib/es/core/annotation/BorderStyle.js","webpack:///../node_modules/pdf-lib/es/core/annotation/PDFAnnotation.js","webpack:///../node_modules/pdf-lib/es/core/annotation/AppearanceCharacteristics.js","webpack:///../node_modules/pdf-lib/es/core/annotation/PDFWidgetAnnotation.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroTerminal.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroButton.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroCheckBox.js","webpack:///../node_modules/pdf-lib/es/core/acroform/flags.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroChoice.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroComboBox.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroNonTerminal.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroSignature.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroText.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroPushButton.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroRadioButton.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroListBox.js","webpack:///../node_modules/pdf-lib/es/core/acroform/utils.js","webpack:///../node_modules/pdf-lib/es/core/acroform/PDFAcroForm.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFCatalog.js","webpack:///../node_modules/pdf-lib/es/core/structures/PDFPageTree.js","webpack:///../node_modules/pdf-lib/es/core/syntax/Numeric.js","webpack:///../node_modules/pdf-lib/es/core/parser/BaseParser.js","webpack:///../node_modules/pdf-lib/es/core/parser/ByteStream.js","webpack:///../node_modules/pdf-lib/es/core/syntax/Keywords.js","webpack:///../node_modules/pdf-lib/es/core/parser/PDFObjectParser.js","webpack:///../node_modules/pdf-lib/es/core/parser/PDFObjectStreamParser.js","webpack:///../node_modules/pdf-lib/es/core/parser/PDFXRefStreamParser.js","webpack:///../node_modules/pdf-lib/es/core/parser/PDFParser.js","webpack:///../node_modules/pdf-lib/es/core/annotation/flags.js","webpack:///../node_modules/pdf-lib/es/api/objects.js","webpack:///../node_modules/pdf-lib/es/api/rotations.js","webpack:///../node_modules/pdf-lib/es/api/operators.js","webpack:///../node_modules/pdf-lib/es/api/colors.js","webpack:///../node_modules/pdf-lib/es/api/text/alignment.js","webpack:///../node_modules/pdf-lib/es/api/svgPath.js","webpack:///../node_modules/pdf-lib/es/api/operations.js","webpack:///../node_modules/pdf-lib/es/api/errors.js","webpack:///../node_modules/pdf-lib/es/api/text/layout.js","webpack:///../node_modules/pdf-lib/es/api/form/appearances.js","webpack:///../node_modules/pdf-lib/es/api/PDFEmbeddedPage.js","webpack:///../node_modules/pdf-lib/es/api/PDFFont.js","webpack:///../node_modules/pdf-lib/es/api/PDFImage.js","webpack:///../node_modules/pdf-lib/es/api/image/alignment.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFField.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFCheckBox.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFDropdown.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFOptionList.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFRadioGroup.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFSignature.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFTextField.js","webpack:///../node_modules/pdf-lib/es/api/StandardFonts.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFForm.js","webpack:///../node_modules/pdf-lib/es/api/PDFDocumentOptions.js","webpack:///../node_modules/pdf-lib/es/api/sizes.js","webpack:///../node_modules/pdf-lib/es/api/PDFEmbeddedFile.js","webpack:///../node_modules/pdf-lib/es/api/PDFJavaScript.js","webpack:///../node_modules/pdf-lib/es/core/embedders/JavaScriptEmbedder.js","webpack:///../node_modules/pdf-lib/es/api/PDFDocument.js","webpack:///../node_modules/pdf-lib/es/api/PDFPageOptions.js","webpack:///../node_modules/pdf-lib/es/api/PDFPage.js","webpack:///../node_modules/pdf-lib/es/api/form/PDFButton.js","webpack:///../node_modules/detect-browser/es/index.js","webpack:///./Scripts/Components/ProductSheet.js","webpack:///./Scripts/Components/FacetedSearch.js","webpack:///./Scripts/Containers/FacetedSearch.container.js","webpack:///./Scripts/Components/FacetedSearchCompact.js","webpack:///./Scripts/Containers/Accordion.container.js","webpack:///./Scripts/Components/SubNavCompact.js","webpack:///./Scripts/Components/SortCriteriaCompact.js","webpack:///./Scripts/Components/FilterTags.js","webpack:///./Scripts/Containers/FacetedSearchCompact.container.js","webpack:///./Scripts/Components/Notification.js","webpack:///./Scripts/Containers/Notification.container.js","webpack:///./Scripts/Components/CompanyLinkSelector.js","webpack:///../node_modules/react-table-v6/react-table.css?89ee","webpack:///./Scripts/Components/CustomPanel/ExcelImportPanel.js","webpack:///../node_modules/react-table-v6/es/utils.js","webpack:///../node_modules/react-table-v6/es/lifecycle.js","webpack:///../node_modules/react-table-v6/es/methods.js","webpack:///../node_modules/react-table-v6/es/pagination.js","webpack:///../node_modules/react-table-v6/es/defaultProps.js","webpack:///../node_modules/react-table-v6/es/propTypes.js","webpack:///../node_modules/react-table-v6/es/index.js","webpack:///./Scripts/Components/CustomPanel/NavController.js","webpack:///./Scripts/Components/CustomPanel/CustomPanels.js","webpack:///./Scripts/index.js","webpack:///./Scripts/Middlewares/History.middleware.js","webpack:///../node_modules/core-js/es6/index.js","webpack:///../node_modules/core-js/fn/array/includes.js","webpack:///../node_modules/core-js/fn/object/entries.js","webpack:///../node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack:///../node_modules/core-js/fn/object/values.js","webpack:///../node_modules/core-js/fn/promise/finally.js","webpack:///../node_modules/core-js/fn/string/pad-end.js","webpack:///../node_modules/core-js/fn/string/pad-start.js","webpack:///../node_modules/core-js/fn/symbol/async-iterator.js","webpack:///../node_modules/core-js/modules/_a-function.js","webpack:///../node_modules/core-js/modules/_a-number-value.js","webpack:///../node_modules/core-js/modules/_add-to-unscopables.js","webpack:///../node_modules/core-js/modules/_advance-string-index.js","webpack:///../node_modules/core-js/modules/_an-instance.js","webpack:///../node_modules/core-js/modules/_an-object.js","webpack:///../node_modules/core-js/modules/_array-copy-within.js","webpack:///../node_modules/core-js/modules/_array-fill.js","webpack:///../node_modules/core-js/modules/_array-includes.js","webpack:///../node_modules/core-js/modules/_array-methods.js","webpack:///../node_modules/core-js/modules/_array-reduce.js","webpack:///../node_modules/core-js/modules/_array-species-constructor.js","webpack:///../node_modules/core-js/modules/_array-species-create.js","webpack:///../node_modules/core-js/modules/_bind.js","webpack:///../node_modules/core-js/modules/_classof.js","webpack:///../node_modules/core-js/modules/_cof.js","webpack:///../node_modules/core-js/modules/_collection-strong.js","webpack:///../node_modules/core-js/modules/_collection-weak.js","webpack:///../node_modules/core-js/modules/_collection.js","webpack:///../node_modules/core-js/modules/_core.js","webpack:///../node_modules/core-js/modules/_create-property.js","webpack:///../node_modules/core-js/modules/_ctx.js","webpack:///../node_modules/core-js/modules/_date-to-iso-string.js","webpack:///../node_modules/core-js/modules/_date-to-primitive.js","webpack:///../node_modules/core-js/modules/_defined.js","webpack:///../node_modules/core-js/modules/_descriptors.js","webpack:///../node_modules/core-js/modules/_dom-create.js","webpack:///../node_modules/core-js/modules/_enum-bug-keys.js","webpack:///../node_modules/core-js/modules/_enum-keys.js","webpack:///../node_modules/core-js/modules/_export.js","webpack:///../node_modules/core-js/modules/_fails-is-regexp.js","webpack:///../node_modules/core-js/modules/_fails.js","webpack:///../node_modules/core-js/modules/_fix-re-wks.js","webpack:///../node_modules/core-js/modules/_flags.js","webpack:///../node_modules/core-js/modules/_for-of.js","webpack:///../node_modules/core-js/modules/_function-to-string.js","webpack:///../node_modules/core-js/modules/_global.js","webpack:///../node_modules/core-js/modules/_has.js","webpack:///../node_modules/core-js/modules/_hide.js","webpack:///../node_modules/core-js/modules/_html.js","webpack:///../node_modules/core-js/modules/_ie8-dom-define.js","webpack:///../node_modules/core-js/modules/_inherit-if-required.js","webpack:///../node_modules/core-js/modules/_invoke.js","webpack:///../node_modules/core-js/modules/_iobject.js","webpack:///../node_modules/core-js/modules/_is-array-iter.js","webpack:///../node_modules/core-js/modules/_is-array.js","webpack:///../node_modules/core-js/modules/_is-integer.js","webpack:///../node_modules/core-js/modules/_is-object.js","webpack:///../node_modules/core-js/modules/_is-regexp.js","webpack:///../node_modules/core-js/modules/_iter-call.js","webpack:///../node_modules/core-js/modules/_iter-create.js","webpack:///../node_modules/core-js/modules/_iter-define.js","webpack:///../node_modules/core-js/modules/_iter-detect.js","webpack:///../node_modules/core-js/modules/_iter-step.js","webpack:///../node_modules/core-js/modules/_iterators.js","webpack:///../node_modules/core-js/modules/_library.js","webpack:///../node_modules/core-js/modules/_math-expm1.js","webpack:///../node_modules/core-js/modules/_math-fround.js","webpack:///../node_modules/core-js/modules/_math-log1p.js","webpack:///../node_modules/core-js/modules/_math-sign.js","webpack:///../node_modules/core-js/modules/_meta.js","webpack:///../node_modules/core-js/modules/_microtask.js","webpack:///../node_modules/core-js/modules/_new-promise-capability.js","webpack:///../node_modules/core-js/modules/_object-assign.js","webpack:///../node_modules/core-js/modules/_object-create.js","webpack:///../node_modules/core-js/modules/_object-dp.js","webpack:///../node_modules/core-js/modules/_object-dps.js","webpack:///../node_modules/core-js/modules/_object-gopd.js","webpack:///../node_modules/core-js/modules/_object-gopn-ext.js","webpack:///../node_modules/core-js/modules/_object-gopn.js","webpack:///../node_modules/core-js/modules/_object-gops.js","webpack:///../node_modules/core-js/modules/_object-gpo.js","webpack:///../node_modules/core-js/modules/_object-keys-internal.js","webpack:///../node_modules/core-js/modules/_object-keys.js","webpack:///../node_modules/core-js/modules/_object-pie.js","webpack:///../node_modules/core-js/modules/_object-sap.js","webpack:///../node_modules/core-js/modules/_object-to-array.js","webpack:///../node_modules/core-js/modules/_own-keys.js","webpack:///../node_modules/core-js/modules/_parse-float.js","webpack:///../node_modules/core-js/modules/_parse-int.js","webpack:///../node_modules/core-js/modules/_perform.js","webpack:///../node_modules/core-js/modules/_promise-resolve.js","webpack:///../node_modules/core-js/modules/_property-desc.js","webpack:///../node_modules/core-js/modules/_redefine-all.js","webpack:///../node_modules/core-js/modules/_redefine.js","webpack:///../node_modules/core-js/modules/_regexp-exec-abstract.js","webpack:///../node_modules/core-js/modules/_regexp-exec.js","webpack:///../node_modules/core-js/modules/_same-value.js","webpack:///../node_modules/core-js/modules/_set-proto.js","webpack:///../node_modules/core-js/modules/_set-species.js","webpack:///../node_modules/core-js/modules/_set-to-string-tag.js","webpack:///../node_modules/core-js/modules/_shared-key.js","webpack:///../node_modules/core-js/modules/_shared.js","webpack:///../node_modules/core-js/modules/_species-constructor.js","webpack:///../node_modules/core-js/modules/_strict-method.js","webpack:///../node_modules/core-js/modules/_string-at.js","webpack:///../node_modules/core-js/modules/_string-context.js","webpack:///../node_modules/core-js/modules/_string-html.js","webpack:///../node_modules/core-js/modules/_string-pad.js","webpack:///../node_modules/core-js/modules/_string-repeat.js","webpack:///../node_modules/core-js/modules/_string-trim.js","webpack:///../node_modules/core-js/modules/_string-ws.js","webpack:///../node_modules/core-js/modules/_task.js","webpack:///../node_modules/core-js/modules/_to-absolute-index.js","webpack:///../node_modules/core-js/modules/_to-index.js","webpack:///../node_modules/core-js/modules/_to-integer.js","webpack:///../node_modules/core-js/modules/_to-iobject.js","webpack:///../node_modules/core-js/modules/_to-length.js","webpack:///../node_modules/core-js/modules/_to-object.js","webpack:///../node_modules/core-js/modules/_to-primitive.js","webpack:///../node_modules/core-js/modules/_typed-array.js","webpack:///../node_modules/core-js/modules/_typed-buffer.js","webpack:///../node_modules/core-js/modules/_typed.js","webpack:///../node_modules/core-js/modules/_uid.js","webpack:///../node_modules/core-js/modules/_user-agent.js","webpack:///../node_modules/core-js/modules/_validate-collection.js","webpack:///../node_modules/core-js/modules/_wks-define.js","webpack:///../node_modules/core-js/modules/_wks-ext.js","webpack:///../node_modules/core-js/modules/_wks.js","webpack:///../node_modules/core-js/modules/core.get-iterator-method.js","webpack:///../node_modules/core-js/modules/es6.array.copy-within.js","webpack:///../node_modules/core-js/modules/es6.array.every.js","webpack:///../node_modules/core-js/modules/es6.array.fill.js","webpack:///../node_modules/core-js/modules/es6.array.filter.js","webpack:///../node_modules/core-js/modules/es6.array.find-index.js","webpack:///../node_modules/core-js/modules/es6.array.find.js","webpack:///../node_modules/core-js/modules/es6.array.for-each.js","webpack:///../node_modules/core-js/modules/es6.array.from.js","webpack:///../node_modules/core-js/modules/es6.array.index-of.js","webpack:///../node_modules/core-js/modules/es6.array.is-array.js","webpack:///../node_modules/core-js/modules/es6.array.iterator.js","webpack:///../node_modules/core-js/modules/es6.array.join.js","webpack:///../node_modules/core-js/modules/es6.array.last-index-of.js","webpack:///../node_modules/core-js/modules/es6.array.map.js","webpack:///../node_modules/core-js/modules/es6.array.of.js","webpack:///../node_modules/core-js/modules/es6.array.reduce-right.js","webpack:///../node_modules/core-js/modules/es6.array.reduce.js","webpack:///../node_modules/core-js/modules/es6.array.slice.js","webpack:///../node_modules/core-js/modules/es6.array.some.js","webpack:///../node_modules/core-js/modules/es6.array.sort.js","webpack:///../node_modules/core-js/modules/es6.array.species.js","webpack:///../node_modules/core-js/modules/es6.date.now.js","webpack:///../node_modules/core-js/modules/es6.date.to-iso-string.js","webpack:///../node_modules/core-js/modules/es6.date.to-json.js","webpack:///../node_modules/core-js/modules/es6.date.to-primitive.js","webpack:///../node_modules/core-js/modules/es6.date.to-string.js","webpack:///../node_modules/core-js/modules/es6.function.bind.js","webpack:///../node_modules/core-js/modules/es6.function.has-instance.js","webpack:///../node_modules/core-js/modules/es6.function.name.js","webpack:///../node_modules/core-js/modules/es6.map.js","webpack:///../node_modules/core-js/modules/es6.math.acosh.js","webpack:///../node_modules/core-js/modules/es6.math.asinh.js","webpack:///../node_modules/core-js/modules/es6.math.atanh.js","webpack:///../node_modules/core-js/modules/es6.math.cbrt.js","webpack:///../node_modules/core-js/modules/es6.math.clz32.js","webpack:///../node_modules/core-js/modules/es6.math.cosh.js","webpack:///../node_modules/core-js/modules/es6.math.expm1.js","webpack:///../node_modules/core-js/modules/es6.math.fround.js","webpack:///../node_modules/core-js/modules/es6.math.hypot.js","webpack:///../node_modules/core-js/modules/es6.math.imul.js","webpack:///../node_modules/core-js/modules/es6.math.log10.js","webpack:///../node_modules/core-js/modules/es6.math.log1p.js","webpack:///../node_modules/core-js/modules/es6.math.log2.js","webpack:///../node_modules/core-js/modules/es6.math.sign.js","webpack:///../node_modules/core-js/modules/es6.math.sinh.js","webpack:///../node_modules/core-js/modules/es6.math.tanh.js","webpack:///../node_modules/core-js/modules/es6.math.trunc.js","webpack:///../node_modules/core-js/modules/es6.number.constructor.js","webpack:///../node_modules/core-js/modules/es6.number.epsilon.js","webpack:///../node_modules/core-js/modules/es6.number.is-finite.js","webpack:///../node_modules/core-js/modules/es6.number.is-integer.js","webpack:///../node_modules/core-js/modules/es6.number.is-nan.js","webpack:///../node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack:///../node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack:///../node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack:///../node_modules/core-js/modules/es6.number.parse-float.js","webpack:///../node_modules/core-js/modules/es6.number.parse-int.js","webpack:///../node_modules/core-js/modules/es6.number.to-fixed.js","webpack:///../node_modules/core-js/modules/es6.number.to-precision.js","webpack:///../node_modules/core-js/modules/es6.object.assign.js","webpack:///../node_modules/core-js/modules/es6.object.create.js","webpack:///../node_modules/core-js/modules/es6.object.define-properties.js","webpack:///../node_modules/core-js/modules/es6.object.define-property.js","webpack:///../node_modules/core-js/modules/es6.object.freeze.js","webpack:///../node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack:///../node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack:///../node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack:///../node_modules/core-js/modules/es6.object.is-extensible.js","webpack:///../node_modules/core-js/modules/es6.object.is-frozen.js","webpack:///../node_modules/core-js/modules/es6.object.is-sealed.js","webpack:///../node_modules/core-js/modules/es6.object.is.js","webpack:///../node_modules/core-js/modules/es6.object.keys.js","webpack:///../node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack:///../node_modules/core-js/modules/es6.object.seal.js","webpack:///../node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack:///../node_modules/core-js/modules/es6.object.to-string.js","webpack:///../node_modules/core-js/modules/es6.parse-float.js","webpack:///../node_modules/core-js/modules/es6.parse-int.js","webpack:///../node_modules/core-js/modules/es6.promise.js","webpack:///../node_modules/core-js/modules/es6.reflect.apply.js","webpack:///../node_modules/core-js/modules/es6.reflect.construct.js","webpack:///../node_modules/core-js/modules/es6.reflect.define-property.js","webpack:///../node_modules/core-js/modules/es6.reflect.delete-property.js","webpack:///../node_modules/core-js/modules/es6.reflect.enumerate.js","webpack:///../node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack:///../node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack:///../node_modules/core-js/modules/es6.reflect.get.js","webpack:///../node_modules/core-js/modules/es6.reflect.has.js","webpack:///../node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack:///../node_modules/core-js/modules/es6.reflect.own-keys.js","webpack:///../node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack:///../node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack:///../node_modules/core-js/modules/es6.reflect.set.js","webpack:///../node_modules/core-js/modules/es6.regexp.constructor.js","webpack:///../node_modules/core-js/modules/es6.regexp.exec.js","webpack:///../node_modules/core-js/modules/es6.regexp.flags.js","webpack:///../node_modules/core-js/modules/es6.regexp.match.js","webpack:///../node_modules/core-js/modules/es6.regexp.replace.js","webpack:///../node_modules/core-js/modules/es6.regexp.search.js","webpack:///../node_modules/core-js/modules/es6.regexp.split.js","webpack:///../node_modules/core-js/modules/es6.regexp.to-string.js","webpack:///../node_modules/core-js/modules/es6.set.js","webpack:///../node_modules/core-js/modules/es6.string.anchor.js","webpack:///../node_modules/core-js/modules/es6.string.big.js","webpack:///../node_modules/core-js/modules/es6.string.blink.js","webpack:///../node_modules/core-js/modules/es6.string.bold.js","webpack:///../node_modules/core-js/modules/es6.string.code-point-at.js","webpack:///../node_modules/core-js/modules/es6.string.ends-with.js","webpack:///../node_modules/core-js/modules/es6.string.fixed.js","webpack:///../node_modules/core-js/modules/es6.string.fontcolor.js","webpack:///../node_modules/core-js/modules/es6.string.fontsize.js","webpack:///../node_modules/core-js/modules/es6.string.from-code-point.js","webpack:///../node_modules/core-js/modules/es6.string.includes.js","webpack:///../node_modules/core-js/modules/es6.string.italics.js","webpack:///../node_modules/core-js/modules/es6.string.iterator.js","webpack:///../node_modules/core-js/modules/es6.string.link.js","webpack:///../node_modules/core-js/modules/es6.string.raw.js","webpack:///../node_modules/core-js/modules/es6.string.repeat.js","webpack:///../node_modules/core-js/modules/es6.string.small.js","webpack:///../node_modules/core-js/modules/es6.string.starts-with.js","webpack:///../node_modules/core-js/modules/es6.string.strike.js","webpack:///../node_modules/core-js/modules/es6.string.sub.js","webpack:///../node_modules/core-js/modules/es6.string.sup.js","webpack:///../node_modules/core-js/modules/es6.string.trim.js","webpack:///../node_modules/core-js/modules/es6.symbol.js","webpack:///../node_modules/core-js/modules/es6.typed.array-buffer.js","webpack:///../node_modules/core-js/modules/es6.typed.data-view.js","webpack:///../node_modules/core-js/modules/es6.typed.float32-array.js","webpack:///../node_modules/core-js/modules/es6.typed.float64-array.js","webpack:///../node_modules/core-js/modules/es6.typed.int16-array.js","webpack:///../node_modules/core-js/modules/es6.typed.int32-array.js","webpack:///../node_modules/core-js/modules/es6.typed.int8-array.js","webpack:///../node_modules/core-js/modules/es6.typed.uint16-array.js","webpack:///../node_modules/core-js/modules/es6.typed.uint32-array.js","webpack:///../node_modules/core-js/modules/es6.typed.uint8-array.js","webpack:///../node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack:///../node_modules/core-js/modules/es6.weak-map.js","webpack:///../node_modules/core-js/modules/es6.weak-set.js","webpack:///../node_modules/core-js/modules/es7.array.includes.js","webpack:///../node_modules/core-js/modules/es7.object.entries.js","webpack:///../node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack:///../node_modules/core-js/modules/es7.object.values.js","webpack:///../node_modules/core-js/modules/es7.promise.finally.js","webpack:///../node_modules/core-js/modules/es7.string.pad-end.js","webpack:///../node_modules/core-js/modules/es7.string.pad-start.js","webpack:///../node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack:///../node_modules/core-js/modules/web.dom.iterable.js","webpack:///../node_modules/core-js/modules/web.immediate.js","webpack:///../node_modules/core-js/modules/web.timers.js","webpack:///../node_modules/core-js/web/index.js","webpack:///../node_modules/react-table-v6/react-table.css","webpack:///../node_modules/css-loader/dist/runtime/api.js","webpack:///../node_modules/css-loader/dist/runtime/sourceMaps.js","webpack:///../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack:///../node_modules/lodash.debounce/index.js","webpack:///../node_modules/lodash/lodash.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/pako/index.js","webpack:///../node_modules/pako/lib/deflate.js","webpack:///../node_modules/pako/lib/inflate.js","webpack:///../node_modules/pako/lib/utils/common.js","webpack:///../node_modules/pako/lib/utils/strings.js","webpack:///../node_modules/pako/lib/zlib/adler32.js","webpack:///../node_modules/pako/lib/zlib/constants.js","webpack:///../node_modules/pako/lib/zlib/crc32.js","webpack:///../node_modules/pako/lib/zlib/deflate.js","webpack:///../node_modules/pako/lib/zlib/gzheader.js","webpack:///../node_modules/pako/lib/zlib/inffast.js","webpack:///../node_modules/pako/lib/zlib/inflate.js","webpack:///../node_modules/pako/lib/zlib/inftrees.js","webpack:///../node_modules/pako/lib/zlib/messages.js","webpack:///../node_modules/pako/lib/zlib/trees.js","webpack:///../node_modules/pako/lib/zlib/zstream.js","webpack:///../node_modules/prop-types/factoryWithThrowingShims.js","webpack:///../node_modules/prop-types/index.js","webpack:///../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///../node_modules/react-dom/cjs/react-dom.production.min.js","webpack:///../node_modules/react-dom/index.js","webpack:///../node_modules/react-is/cjs/react-is.production.min.js","webpack:///../node_modules/react-is/index.js","webpack:///../node_modules/react-loadable/lib/index.js","webpack:///../node_modules/react-loadable/node_modules/prop-types/factoryWithThrowingShims.js","webpack:///../node_modules/react-loadable/node_modules/prop-types/index.js","webpack:///../node_modules/react-loadable/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///../node_modules/react-redux/es/utils/batch.js","webpack:///../node_modules/react-redux/es/components/Context.js","webpack:///../node_modules/react-redux/es/hooks/useReduxContext.js","webpack:///../node_modules/react-redux/es/utils/useSyncExternalStore.js","webpack:///../node_modules/react-redux/es/hooks/useSelector.js","webpack:///../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///../node_modules/react-redux/es/connect/selectorFactory.js","webpack:///../node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///../node_modules/react-redux/es/connect/invalidArgFactory.js","webpack:///../node_modules/react-redux/es/connect/mergeProps.js","webpack:///../node_modules/react-redux/es/utils/Subscription.js","webpack:///../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack:///../node_modules/react-redux/es/utils/shallowEqual.js","webpack:///../node_modules/react-redux/es/components/connect.js","webpack:///../node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///../node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///../node_modules/react-redux/es/utils/bindActionCreators.js","webpack:///../node_modules/react-redux/es/components/Provider.js","webpack:///../node_modules/react-redux/es/hooks/useStore.js","webpack:///../node_modules/react-redux/es/hooks/useDispatch.js","webpack:///../node_modules/react-redux/es/index.js","webpack:///../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack:///../node_modules/react-redux/node_modules/react-is/index.js","webpack:///../node_modules/react/cjs/react.production.min.js","webpack:///../node_modules/react/index.js","webpack:///../node_modules/redux-devtools-extension/developmentOnly.js","webpack:///../node_modules/redux/es/redux.js","webpack:///../node_modules/regenerator-runtime/runtime.js","webpack:///../node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///../node_modules/scheduler/index.js","webpack:///../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack:///../node_modules/style-loader/dist/runtime/insertBySelector.js","webpack:///../node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack:///../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack:///../node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack:///../node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack:///../node_modules/symbol-observable/es/index.js","webpack:///../node_modules/symbol-observable/es/ponyfill.js","webpack:///../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack:///../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack:///../node_modules/use-sync-external-store/shim/index.js","webpack:///../node_modules/use-sync-external-store/shim/with-selector.js","webpack:///../node_modules/whatwg-fetch/fetch.js","webpack:///../node_modules/classnames/index.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/get mini-css chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/harmony module decorator","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");\n\nif (global._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\nglobal._babelPolyfill = true;","(function (factory) {\n typeof define === 'function' && define.amd ? define(factory) :\n factory();\n})((function () { 'use strict';\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n }\n\n function _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n }\n\n var Emitter = /*#__PURE__*/function () {\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n Object.defineProperty(this, 'listeners', {\n value: {},\n writable: true,\n configurable: true\n });\n }\n\n _createClass(Emitter, [{\n key: \"addEventListener\",\n value: function addEventListener(type, callback, options) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push({\n callback: callback,\n options: options\n });\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[type];\n\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i].callback === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (!(event.type in this.listeners)) {\n return;\n }\n\n var stack = this.listeners[event.type];\n var stackToCall = stack.slice();\n\n for (var i = 0, l = stackToCall.length; i < l; i++) {\n var listener = stackToCall[i];\n\n try {\n listener.callback.call(this, event);\n } catch (e) {\n Promise.resolve().then(function () {\n throw e;\n });\n }\n\n if (listener.options && listener.options.once) {\n this.removeEventListener(event.type, listener.callback);\n }\n }\n\n return !event.defaultPrevented;\n }\n }]);\n\n return Emitter;\n }();\n\n var AbortSignal = /*#__PURE__*/function (_Emitter) {\n _inherits(AbortSignal, _Emitter);\n\n var _super = _createSuper(AbortSignal);\n\n function AbortSignal() {\n var _this;\n\n _classCallCheck(this, AbortSignal);\n\n _this = _super.call(this); // Some versions of babel does not transpile super() correctly for IE <= 10, if the parent\n // constructor has failed to run, then \"this.listeners\" will still be undefined and then we call\n // the parent constructor directly instead as a workaround. For general details, see babel bug:\n // https://github.com/babel/babel/issues/3041\n // This hack was added as a fix for the issue described here:\n // https://github.com/Financial-Times/polyfill-library/pull/59#issuecomment-477558042\n\n if (!_this.listeners) {\n Emitter.call(_assertThisInitialized(_this));\n } // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController().signal) to be [] for compat with the native impl\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'aborted', {\n value: false,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'onabort', {\n value: null,\n writable: true,\n configurable: true\n });\n Object.defineProperty(_assertThisInitialized(_this), 'reason', {\n value: undefined,\n writable: true,\n configurable: true\n });\n return _this;\n }\n\n _createClass(AbortSignal, [{\n key: \"toString\",\n value: function toString() {\n return '[object AbortSignal]';\n }\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(event) {\n if (event.type === 'abort') {\n this.aborted = true;\n\n if (typeof this.onabort === 'function') {\n this.onabort.call(this, event);\n }\n }\n\n _get(_getPrototypeOf(AbortSignal.prototype), \"dispatchEvent\", this).call(this, event);\n }\n }]);\n\n return AbortSignal;\n }(Emitter);\n var AbortController = /*#__PURE__*/function () {\n function AbortController() {\n _classCallCheck(this, AbortController);\n\n // Compared to assignment, Object.defineProperty makes properties non-enumerable by default and\n // we want Object.keys(new AbortController()) to be [] for compat with the native impl\n Object.defineProperty(this, 'signal', {\n value: new AbortSignal(),\n writable: true,\n configurable: true\n });\n }\n\n _createClass(AbortController, [{\n key: \"abort\",\n value: function abort(reason) {\n var event;\n\n try {\n event = new Event('abort');\n } catch (e) {\n if (typeof document !== 'undefined') {\n if (!document.createEvent) {\n // For Internet Explorer 8:\n event = document.createEventObject();\n event.type = 'abort';\n } else {\n // For Internet Explorer 11:\n event = document.createEvent('Event');\n event.initEvent('abort', false, false);\n }\n } else {\n // Fallback where document isn't available:\n event = {\n type: 'abort',\n bubbles: false,\n cancelable: false\n };\n }\n }\n\n var signalReason = reason;\n\n if (signalReason === undefined) {\n if (typeof document === 'undefined') {\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n } else {\n try {\n signalReason = new DOMException('signal is aborted without reason');\n } catch (err) {\n // IE 11 does not support calling the DOMException constructor, use a\n // regular error object on it instead.\n signalReason = new Error('This operation was aborted');\n signalReason.name = 'AbortError';\n }\n }\n }\n\n this.signal.reason = signalReason;\n this.signal.dispatchEvent(event);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n return '[object AbortController]';\n }\n }]);\n\n return AbortController;\n }();\n\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n // These are necessary to make sure that we get correct output for:\n // Object.prototype.toString.call(new AbortController())\n AbortController.prototype[Symbol.toStringTag] = 'AbortController';\n AbortSignal.prototype[Symbol.toStringTag] = 'AbortSignal';\n }\n\n function polyfillNeeded(self) {\n if (self.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL) {\n console.log('__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill');\n return true;\n } // Note that the \"unfetch\" minimal fetch polyfill defines fetch() without\n // defining window.Request, and this polyfill need to work on top of unfetch\n // so the below feature detection needs the !self.AbortController part.\n // The Request.prototype check is also needed because Safari versions 11.1.2\n // up to and including 12.1.x has a window.AbortController present but still\n // does NOT correctly implement abortable fetch:\n // https://bugs.webkit.org/show_bug.cgi?id=174980#c2\n\n\n return typeof self.Request === 'function' && !self.Request.prototype.hasOwnProperty('signal') || !self.AbortController;\n }\n\n (function (self) {\n\n if (!polyfillNeeded(self)) {\n return;\n }\n\n self.AbortController = AbortController;\n self.AbortSignal = AbortSignal;\n })(typeof self !== 'undefined' ? self : global);\n\n}));\n","import { get, post, put } from '../Services/http';\nimport { catchError } from './Error.action';\nimport { show as showNotification, hide as hideNotification } from './Notification.action';\nimport { translate } from '../Services/translation';\nimport { set } from 'lodash';\nimport { error } from '../Reducers/Error.reducer';\nimport { useEffect } from 'react';\n\nexport const CART_LOAD = 'CART_LOAD';\nexport const CART_LOAD_ERROR = 'CART_LOAD_ERROR';\nexport const CART_RECEIVE = 'CART_RECEIVE';\nexport const CART_SHOW_INFO = 'CART_SHOW_INFO';\nexport const CART_HIDE = 'CART_HIDE';\nexport const QUICK_ORDER_ISLOADING = 'QUICK_ORDER_ISLOADING';\nexport const CART_DISABLE_BUY_BUTTON = 'CART_DISABLE_BUY_BUTTON';\n\nexport const load = () => (dispatch, getState) => {\n return get('/api/cart')\n .then(response => response.json())\n .then(cart => dispatch(receive(cart)))\n .catch(ex => dispatch(catchError(ex, error => loadError(error))))\n ;\n}\n\nexport const loadError = error => ({\n type: CART_LOAD_ERROR,\n payload: {\n error,\n }\n})\n\nexport const setIsLoading = (isLoading) => ({\n type: QUICK_ORDER_ISLOADING,\n payload: {\n isLoading,\n }\n})\n\nexport const receive = cart => ({\n type: CART_RECEIVE,\n payload: cart,\n})\n\nexport const toggle = () => (dispatch, getState) => {\n dispatch(show(!getState().cart.showInfo));\n}\n\nconst show = visible => ({\n type: CART_SHOW_INFO,\n payload: {\n showInfo: visible,\n }\n})\n\nconst disableBuyButton = (articleNumber) => {\n document.querySelectorAll(\".buy-button[data-article-number='\" + articleNumber + \"']\").forEach(b => b.setAttribute(\"disabled\", \"disabled\"))\n}\n\n\nexport const add = ({ articleNumber, minText = null, maxText = null, quantity = 1, nodeIdToShowNotification = null, notificationMessage = null, hash = '', packageQuantity = 1, minQuant = 1, maxQuant = 1 }) => {\n return (dispatch) => {\n if (!quantity || isNaN(quantity) || parseInt(quantity) <= 0) {\n return;\n }\n return post('/api/cart/add', { articleNumber, quantity: parseInt(quantity), minimumQuantity: parseInt(packageQuantity) })\n .then(response => response.json())\n .then(cart => {\n dispatch(receive(cart))\n nodeIdToShowNotification && dispatch(showNotification(nodeIdToShowNotification, notificationMessage, hash))\n\n var recentlyAddedItem = cart.orderRows.filter(x => x.articleNumber == articleNumber);\n var recentlyAddedItemQuant = (recentlyAddedItem[0].quantity / packageQuantity);\n\n if (recentlyAddedItemQuant >= maxQuant) {\n disableBuyButton(articleNumber)\n }\n })\n .catch(ex => {\n dispatch(catchError(ex, error => {\n loadError(error);\n if (error.message === \"MaxQuantityReached\") {\n disableBuyButton(articleNumber);\n } else if (error.message === \"MinQuantityNotReached\") {\n dispatch(showNotification(nodeIdToShowNotification, translate('buybutton.mintext'), hash));\n document.querySelector(\".product-detail__quantity-input\").focus();\n } else if (error.message === \"MaxQuantityExceeded\") {\n dispatch(showNotification(nodeIdToShowNotification, translate('buybutton.maxtext'), hash));\n document.querySelector(\".product-detail__quantity-input\").focus();\n }\n }))\n })\n }\n}\n\nexport const addMultiple = (products, nodeIdToShowNotification = null, hash = '') => {\n return (dispatch) => {\n if (products.filter(p => !p.quantity || isNaN(p.quantity) || parseInt(p.quantity) <= 0).length > 0) {\n return;\n }\n try {\n dispatch(setIsLoading(true));\n return post('/api/cart/addMultiple', products.map(product => {\n return {\n articleNumber: product.articlenumber,\n quantity: parseInt(product.quantity)\n }\n }))\n .then(response => response.json())\n .then(cart => {\n dispatch(receive(cart));\n dispatch(setIsLoading(false));\n })\n .catch(ex => dispatch(catchError(ex, error => {\n loadError(error);\n if (error.message === \"MaxQuantityExceeded\") {\n dispatch(showNotification(nodeIdToShowNotification, translate('buybutton.maxtext'), hash))\n dispatch(setIsLoading(false));\n setTimeout(() => {\n dispatch(hideNotification(nodeIdToShowNotification, translate('buybutton.maxtext'), hash))\n }, 5000)\n }\n })));\n }\n catch (ex) {\n return dispatch(catchError(ex, error => loadError(error)));\n }\n }\n}\n\nexport const reorder = (orderid, nodeIdToShowNotification = 'miniCart', notificationMessage = translate('tooltip.addedtocart'), hash = '') => {\n if (orderid) {\n return (dispatch) => {\n return post('/api/cart/reorder', { orderid })\n .then(response => response.json())\n .then(cart => {\n dispatch(receive(cart));\n dispatch(showNotification(nodeIdToShowNotification, notificationMessage, hash))\n })\n }\n }\n}\n\nexport const update = (rowSystemId, quantity) => (dispatch) => {\n return put(`/api/cart/update`, { rowSystemId, quantity })\n .then(response => response.json())\n .then(cart => dispatch(receive(cart)))\n .catch(ex => dispatch(catchError(ex, error => { loadError(error); })));\n}","import { post, put } from '../Services/http';\nimport { load as loadCart } from './Cart.action';\nimport { catchError } from './Error.action';\n\nexport const CHECKOUT_SET_SELECTED_COMPANY_ADDRESS = 'CHECKOUT_SET_SELECTED_COMPANY_ADDRESS';\nexport const CHECKOUT_SET_CUSTOMER_INFO = 'CHECKOUT_SET_CUSTOMER_INFO';\nexport const CHECKOUT_SET_PRIVATE_CUSTOMER = 'CHECKOUT_SET_PRIVATE_CUSTOMER';\nexport const CHECKOUT_SET_SIGN_UP = 'CHECKOUT_SET_SIGN_UP';\nexport const CHECKOUT_SET_DELIVERY = 'CHECKOUT_SET_DELIVERY';\nexport const CHECKOUT_SET_PAYMENT = 'CHECKOUT_SET_PAYMENT';\nexport const CHECKOUT_SET_CAMPAIGN_CODE = 'CHECKOUT_SET_CAMPAIGN_CODE';\nexport const CHECKOUT_SET_ORDER_NOTE = 'CHECKOUT_SET_ORDER_NOTE';\nexport const CHECKOUT_ACCEPT_TERMS_OF_CONDITION = 'CHECKOUT_ACCEPT_TERMS_OF_CONDITION';\nexport const CHECKOUT_SUBMIT = 'CHECKOUT_SUBMIT';\nexport const CHECKOUT_SUBMIT_DONE = 'CHECKOUT_SUBMIT_DONE';\nexport const CHECKOUT_SUBMIT_ERROR = 'CHECKOUT_SUBMIT_ERROR';\nexport const CHECKOUT_SET_PAYMENT_WIDGET = 'CHECKOUT_SET_PAYMENT_WIDGET';\nexport const CHECKOUT_SET_ORDER_REF = 'CHECKOUT_SET_ORDER_REF';\nexport const CHECKOUT_CAMPAIGN_CODE_IS_SUCCESS = 'CHECKOUT_CAMPAIGN_CODE_IS_SUCCESS';\n\nexport const setBusinessCustomer = (isBusinessCustomer) => ({\n type: CHECKOUT_SET_PRIVATE_CUSTOMER,\n payload: {\n isBusinessCustomer,\n }\n})\n\nexport const setSignUp = (signUp) => ({\n type: CHECKOUT_SET_SIGN_UP,\n payload: {\n signUp,\n }\n})\n\nexport const setAlternativeAddress = (propName, value) => ({\n type: CHECKOUT_SET_CUSTOMER_INFO,\n payload: {\n key: 'alternativeAddress',\n data: {\n [propName]: value,\n },\n }\n})\n\nexport const setCustomerDetails = (propName, value) => ({\n type: CHECKOUT_SET_CUSTOMER_INFO,\n payload: {\n key: 'customerDetails',\n data: {\n [propName]: value,\n },\n }\n})\n\nexport const setSelectedCompanyAddress = (selectedCompanyAddressId) => ({\n type: CHECKOUT_SET_SELECTED_COMPANY_ADDRESS,\n payload: {\n selectedCompanyAddressId,\n }\n})\n\nexport const setDelivery = (systemId) => (dispatch, getState) => {\n dispatch({\n type: CHECKOUT_SET_DELIVERY,\n payload: {\n selectedDeliveryMethod: systemId,\n }\n });\n const { payload } = getState().checkout;\n return put('/api/checkout/setDeliveryProvider', payload)\n .then(response => response.json())\n .then(() => dispatch(loadCart()))\n .catch(ex => dispatch(catchError(ex, error => submitError(error))))\n}\n\nexport const setPayment = (systemId) => (dispatch, getState) => {\n dispatch({\n type: CHECKOUT_SET_PAYMENT,\n payload: {\n selectedPaymentMethod: systemId,\n }\n });\n const { payload } = getState().checkout;\n return put('/api/checkout/setPaymentProvider', payload)\n .then(response => response.json())\n .then(result => {\n dispatch(loadCart());\n dispatch(setPaymentWidget(result.paymentWidget));\n })\n .catch(ex => dispatch(catchError(ex, error => submitError(error))))\n}\n\nexport const reloadPayment = () => (dispatch, getState) => {\n const { paymentWidget, selectedPaymentMethod } = getState().checkout.payload;\n if (!paymentWidget) {\n return;\n }\n return dispatch(setPayment(selectedPaymentMethod));\n}\n\nconst setPaymentWidget = (paymentWidget) => ({\n type: CHECKOUT_SET_PAYMENT_WIDGET,\n payload: {\n paymentWidget,\n }\n})\n\nexport const setOrderNote = (orderNote) => ({\n type: CHECKOUT_SET_ORDER_NOTE,\n payload: {\n orderNote,\n }\n})\n\nexport const setOrderRef = (orderReference) => ({\n type: CHECKOUT_SET_ORDER_REF,\n payload: {\n orderReference,\n }\n})\n\nexport const acceptTermsOfCondition = (acceptTermsOfCondition) => ({\n type: CHECKOUT_ACCEPT_TERMS_OF_CONDITION,\n payload: {\n acceptTermsOfCondition,\n }\n})\n\nexport const setCampaignCode = (campaignCode) => ({\n type: CHECKOUT_SET_CAMPAIGN_CODE,\n payload: {\n campaignCode,\n }\n})\n\n\nexport const submitCampaignCode = (campaignCode) => (dispatch, getState) => {\n const { payload } = getState().checkout;\n return put('/api/checkout/setCampaignCode', { ...payload, campaignCode })\n .then(response => response.json())\n .then(result => {\n dispatch({\n type: CHECKOUT_CAMPAIGN_CODE_IS_SUCCESS,\n payload: {\n success: result.success,\n }\n })\n dispatch(loadCart());\n // reset error of campaign code\n dispatch(submitError({\n modelState: {\n 'campaignCode': []\n }\n }))\n })\n .catch(ex => {\n dispatch({\n type: CHECKOUT_CAMPAIGN_CODE_IS_SUCCESS,\n payload: {\n success: false,\n }\n })\n dispatch(catchError(ex, error => submitError(error)));\n // restore the initial cart\n dispatch(loadCart());\n })\n}\n\nexport const submit = () => (dispatch, getState) => {\n const { payload } = getState().checkout;\n return _submit('/api/checkout', payload, dispatch);\n}\n\nexport const verify = (url, orderId, payload) => (dispatch, getState) => {\n const model = getState().checkout.payload;\n model.orderId = orderId;\n model.payload = payload;\n return _submit(url, model, dispatch);\n}\n\nconst _submit = (url, model, dispatch) => {\n return post(url, model)\n .then(response => response.json())\n .then(result => {\n dispatch(submitDone(result));\n })\n .catch(ex => {\n if (ex.response) {\n ex.response.json().then(error => {\n dispatch(submitError(error));\n dispatch(submitDone(null));\n });\n } else {\n dispatch(submitError(ex));\n }\n })\n ;\n}\n\nexport const submitRequest = () => ({\n type: CHECKOUT_SUBMIT,\n payload: {\n isSubmitting: true,\n errors: [],\n },\n})\n\nexport const submitDone = result => ({\n type: CHECKOUT_SUBMIT,\n payload: {\n result,\n isSubmitting: false,\n },\n})\n\nexport const submitError = error => ({\n type: CHECKOUT_SUBMIT_ERROR,\n payload: {\n error,\n },\n})\n","export const catchError = (ex, onError) => dispatch => {\n if (ex.response) {\n ex.response.json().then(error => dispatch(onError(error)));\n } else {\n dispatch(onError(ex));\n }\n}","export const LIGHTBOX_IMAGES_SET_IMAGES = 'LIGHTBOX_IMAGES_SET_IMAGES';\nexport const LIGHTBOX_IMAGES_SET_CURRENT_IMAGE = 'LIGHTBOX_IMAGES_SET_CURRENT_IMAGE';\nexport const LIGHTBOX_IMAGES_SHOW = 'LIGHTBOX_IMAGES_SHOW';\nexport const LIGHTBOX_IMAGES_NEXT = 'LIGHTBOX_IMAGES_NEXT';\nexport const LIGHTBOX_IMAGES_PREVIOUS = 'LIGHTBOX_IMAGES_PREVIOUS';\n\nexport const setImages = (images) => ({\n type: LIGHTBOX_IMAGES_SET_IMAGES,\n payload: {\n images,\n }\n})\n\nexport const setCurrentIndex = (index) => ({\n type: LIGHTBOX_IMAGES_SET_CURRENT_IMAGE,\n payload: {\n index,\n }\n})\n\nexport const show = (visible) => ({\n type: LIGHTBOX_IMAGES_SHOW,\n payload: {\n visible,\n }\n})\n\nexport const next = () => ({\n type: LIGHTBOX_IMAGES_NEXT,\n})\n\nexport const previous = () => ({\n type: LIGHTBOX_IMAGES_PREVIOUS,\n})","export const NOTIFICATION_SHOW = 'NOTIFICATION_SHOW';\nexport const NOTIFICATION_HIDE = 'NOTIFICATION_HIDE';\n\nexport const show = (nodeId, text, hash) => ({\n type: NOTIFICATION_SHOW,\n payload: {\n nodeId,\n text,\n hash,\n }\n})\n\nexport const hide = (nodeId, hash) => ({\n type: NOTIFICATION_HIDE,\n payload: {\n nodeId,\n hash,\n }\n})","import React, {lazy, Suspense} from 'react';\n\nconst DynamicComponent = ({loader, loading=
}) => {\n const Component = lazy(loader);\n return props =>\n \n \n \n}\n\nexport default DynamicComponent;","import React, { Component, Fragment } from 'react';\nimport { get } from '../Services/http';\nimport { translate } from '../Services/translation';\n\n\nclass QuickOrder extends Component {\n constructor(props) {\n super(props);\n let existing = sessionStorage.getItem('quickOrderState');\n if (existing) {\n this.state = JSON.parse(existing);\n }\n else {\n this.state = {\n items: this.getEmptyList(),\n errormessage: null,\n showItemOutOfStockMessage: false,\n quantityErrorExists: false,\n isLoading: false\n }\n }\n this.handleAddClick = this.handleAddClick.bind(this);\n this.handleRemoveClick = this.handleRemoveClick.bind(this);\n this.handleOnInputChange = this.handleOnInputChange.bind(this);\n this.handleOnBlur = this.handleOnBlur.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleOnKeyPressQuantity = this.handleOnKeyPressQuantity.bind(this);\n this.handleHideMsgClick = this.handleHideMsgClick.bind(this);\n }\n setItemsToStorage(state) {\n sessionStorage.setItem(\"quickOrderState\", JSON.stringify(state));\n }\n getEmptyList() {\n let startUp = [];\n\n for (let index = 0; index < 11; index++) {\n var newItem = {\n id: index,\n articlenumber: \"\",\n name: null,\n price: null,\n oldprice: null,\n quantity: 0,\n minquantity: 1,\n instock: false,\n dirty: false,\n statusmessage: null,\n loading: false,\n iscampaign: false,\n displayDuplicateMessage: false\n };\n this.handleHideMsgClick(newItem);\n startUp.push(newItem);\n }\n return startUp;\n }\n\n handleAddClick() {\n this.setState((oldState) => {\n let newItems = oldState.items;\n if (newItems.length == 0) {\n newItems.push({\n id: 1,\n articlenumber: \"\",\n name: null,\n price: null,\n oldprice: null,\n quantity: 0,\n minquantity: 1,\n instock: false,\n dirty: false,\n statusmessage: null,\n loading: false,\n iscampaign: false,\n displayDuplicateMessage: false\n })\n } else {\n for (let index = 1; index < 6; index++) {\n newItems.push(\n {\n id: newItems[newItems.length - 1].id + 1,\n articlenumber: \"\",\n name: null,\n price: null,\n oldprice: null,\n quantity: 0,\n minquantity: 1,\n instock: false,\n dirty: false,\n statusmessage: null,\n loading: false,\n iscampaign: false,\n displayDuplicateMessage: false\n }\n )\n }\n }\n\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n });\n return {\n ...oldState,\n items: newItems,\n }\n })\n }\n\n handleRemoveClick(item) {\n this.setState((oldState) => {\n let newItems = oldState.items;\n var index = newItems.indexOf(item);\n newItems.splice(index, 1);\n\n newItems.forEach(i => {\n if (newItems.filter(x => x.articlenumber.length > 0 && x.articlenumber.toUpperCase() == i.articlenumber.toUpperCase()).length > 1) {\n i.displayDuplicateMessage = true;\n }\n else {\n i.displayDuplicateMessage = false;\n }\n });\n\n this.setItemsToStorage({\n ...oldState,\n items: newItems\n });\n return {\n ...oldState,\n items: newItems\n }\n })\n }\n\n handleHideMsgClick(item) {\n var qytMsg = document.getElementById(`qty-msg-${item.id}`);\n if (qytMsg)\n qytMsg.classList.add(\"hide\");\n }\n\n handleOnInputChange(event, product) {\n let foo = event.target;\n this.setState((oldState) => {\n let newItems = oldState.items;\n var index = newItems.find(x => x.id == product.id);\n index.articlenumber = foo.value;\n index.dirty = true;\n\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n });\n\n return {\n ...oldState,\n items: newItems\n }\n })\n }\n\n handleOnQuantityChange(event, product) {\n let foo = event.target;\n var qytMsg = document.getElementById(`qty-msg-${product.id}`);\n if (parseInt(foo.value) % parseInt(product.minquantity) > 0) {\n if (qytMsg)\n this.setState({ quantityErrorExists: true });\n qytMsg.classList.remove(\"hide\");\n } else {\n this.setState({ quantityErrorExists: false });\n qytMsg.classList.add(\"hide\");\n }\n this.setState((oldState) => {\n let newItems = oldState.items;\n var index = newItems.find(x => x.id == product.id);\n index.quantity = foo.value;\n index.dirty = true;\n\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n });\n\n return {\n ...oldState,\n items: newItems\n }\n })\n }\n\n handleOnKeyPress(event, product) {\n if (event.key == 'Enter') {\n this.handleOnBlur(product);\n\n var nextInput = document.getElementById(`p-input-qty-${product.id}`);\n if (nextInput)\n nextInput.focus();\n }\n }\n\n handleOnKeyPressQuantity(event, product) {\n if (event.key == 'Enter') {\n this.handleOnBlur(product);\n\n var nextInput = document.getElementById(`p-input-${product.id + 1}`);\n if (nextInput)\n nextInput.focus();\n }\n }\n\n handleOnBlur(product) {\n if (!product.articlenumber)\n return;\n\n this.setState((oldState) => {\n let newItems = oldState.items;\n product.displayDuplicateMessage = false;\n if (product.dirty && this.state.items.filter(x => x.articlenumber.toUpperCase() == product.articlenumber.toUpperCase()).length == 1) {\n var index = newItems.find(x => x.id == product.id);\n index.loading = true;\n this.getArticleData(product);\n }\n else if (product.dirty) {\n product.displayDuplicateMessage = true;\n }\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n });\n return {\n ...oldState,\n items: newItems\n }\n });\n }\n\n handleFetchSuccessResponse(result, product) {\n if (result.success) {\n this.setState((oldState) => {\n let newItems = oldState.items;\n var rowItem = newItems.find(x => x.articlenumber.toUpperCase() == result.product.ArticleNumber);\n rowItem.name = result.product.Name;\n rowItem.price = result.product.Price;\n rowItem.instock = result.product.IsInStock;\n rowItem.statusmessage = result.product.StatusMessage;\n rowItem.quantity = result.product.MinQuantity || 1;\n rowItem.dirty = false;\n rowItem.loading = false;\n rowItem.minquantity = result.product.MinQuantity || 1;\n rowItem.iscampaign = result.product.IsCampaign;\n rowItem.oldprice = result.product.OldPrice;\n\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n errormessage: null,\n showItemOutOfStockMessage: rowItem.instock ? false : true\n });\n\n return {\n ...oldState,\n items: newItems,\n errormessage: null,\n showItemOutOfStockMessage: rowItem.instock ? false : true\n }\n })\n }\n else {\n this.setState((oldState) => {\n let newItems = oldState.items;\n newItems.forEach(element => {\n element.loading = false;\n });\n var rowItem = newItems.find(x => x.articlenumber.toUpperCase() == product.articlenumber);\n if (rowItem) {\n rowItem.articlenumber = \"\";\n rowItem.price = null;\n rowItem.oldprice = null;\n rowItem.iscampaign = false;\n rowItem.loading = false;\n rowItem.name = null;\n rowItem.quantity = 1;\n rowItem.minquantity = 1;\n rowItem.minPurchase = 1;\n rowItem.maxPurchase = 999;\n\n }\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n errormessage: result.message\n });\n\n return {\n ...oldState,\n items: newItems,\n errormessage: result.message\n }\n })\n }\n\n }\n\n handleFetchErrorResponse(error, product) {\n this.setState((oldState) => {\n let newItems = oldState.items;\n var index = newItems.find(x => x.id == product.id);\n index.loading = false;\n this.setItemsToStorage({\n ...oldState,\n items: newItems,\n errormessage: \"Something went wrong\",\n showItemOutOfStockMessage: false\n });\n return {\n ...oldState,\n items: newItems,\n errormessage: \"Something went wrong\",\n showItemOutOfStockMessage: false\n }\n })\n }\n\n handleSubmit(e) {\n let products = this.state.items.filter(x => x.instock && x.quantity > 0 && x.quantity % x.minquantity == 0);\n this.addMultipleProductsToCart(products, e.target.id, Date.now());\n this.setState((oldState) => {\n this.setItemsToStorage({\n ...oldState,\n items: this.getEmptyList(),\n showItemOutOfStockMessage: false\n });\n return {\n ...oldState,\n items: this.getEmptyList(),\n showItemOutOfStockMessage: false\n }\n })\n }\n addMultipleProductsToCart(products, nodeIdToShowNotification) {\n if (products.length > 0) {\n this.props.addMultipleToCart(products, nodeIdToShowNotification)\n }\n }\n\n addProductToCart(product) {\n if (product.articlenumber) {\n this.props.addToCart({\n articleNumber: product.articlenumber,\n quantity: product.quantity,\n });\n }\n }\n\n getArticleData(product) {\n get(`/api/quickorder?query=${product.articlenumber}`)\n .then(response => response.json())\n .then(result => this.handleFetchSuccessResponse(result, product))\n .catch(ex => this.handleFetchErrorResponse(ex, product));\n }\n\n getDuplicateMsg(product) {\n if (product.displayDuplicateMessage) {\n let msg = translate(\"quickorder.duplicate-item-message\");\n return msg += ` ${product.articlenumber}`;\n // var allDuplicates = this.state.items.filter(x => this.state.items.indexOf(c => c.articlenumber == x.articlenumber))\n\n // return msg+=` ${allDuplicates.filter(x => x.articlenumber.length > 0).map(x => x.articlenumber)[0]}`;\n }\n return \"\";\n }\n\n tableRow(product) {\n return (\n
\n
\n
\n this.handleOnInputChange(event, product)} onKeyPress={event => this.handleOnKeyPress(event, product)} onBlur={event => this.handleOnBlur(product)}>\n \n
\n
{product.name}
\n
{product.price} {product.oldprice}{product.iscampaign ?
{translate(\"project.campaign-sticker\")}
: null}
\n
{product.minquantity}
\n
\n this.handleOnQuantityChange(event, product)} onKeyPress={event => this.handleOnKeyPressQuantity(event, product)}>\n {translate(\"quickorder.item-min-quantity-msg\")} {product.minquantity || 1}\n
\n
{product.statusmessage ? {product.statusmessage} : null}
\n
\n
\n
\n {product.displayDuplicateMessage ? {this.getDuplicateMsg(product)} : null}\n
\n
\n )\n }\n\n render() {\n return (\n \n
\n {this.state.errormessage ? {this.state.errormessage} : null}\n {this.state.showItemOutOfStockMessage ? {translate(\"quickorder.item-out-of-stock-message\")} : null}\n {/* {this.state.displayDuplicateMessage ? {this.getDuplicateMsg()} : null} */}\n
\n
\n
\n
{translate(\"quickorder.articlenumber\")}
\n
{translate(\"quickorder.name\")}
\n
{translate(\"checkout.cart.header.price\")}
\n
{translate(\"quickorder.header.quantity-in-pack\")}
\n
{translate(\"quickorder.header.quantity\")}
\n
\n
\n
\n {this.state.items.map(item => this.tableRow(item))}\n
\n
\n \n \n {this.state.quantityErrorExists ? translate('quickorder.formerrorsexist') : \"\"}\n {this.props.isLoading ? translate('quickorder.addingtocartinfo') : \"\"}\n
\n
\n
\n );\n }\n}\n\n\nexport default QuickOrder;","import React, { Component } from 'react';\nimport QuickOrder from '../Components/QuickOrder';\nimport { add as addToCart, addMultiple as addMultipleToCart } from '../Actions/Cart.action';\nimport { connect } from 'react-redux';\n\nclass QuickOrderContainer extends Component {\n constructor(props) {\n super(props);\n this.state = { ...props };\n }\n\n render() {\n return ();\n }\n}\n\nconst mapStateToProps = state => {\n return {\n isLoading: state.quickOrder.isLoading,\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n addToCart: (article) => dispatch(addToCart(article)),\n addMultipleToCart: (products, id, hash) => dispatch(addMultipleToCart(products, id, hash)),\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(QuickOrderContainer);","export const get = url => _fetch(url, \"GET\");\n\nexport const post = (url, data) => _fetch(url, \"POST\", data);\nexport const put = (url, data) => _fetch(url, \"PUT\", data);\nexport const patch = (url, data) => _fetch(url, \"PATCH\", data);\nexport const remove = (url, data) => _fetch(url, \"DELETE\", data);\n\nconst _fetch = (url, method, data = null) => {\n let options = {\n method,\n headers: {\n 'litium-request-context': JSON.stringify(window.__litium.requestContext),\n },\n credentials: 'include',\n };\n if (method !== \"GET\") {\n options = {\n ...options,\n body: data ? JSON.stringify(data) : null,\n headers: {\n ...options.headers,\n 'content-type': 'application/json',\n }\n };\n \n const token = window.localStorage.getItem('requestVerificationToken');\n if (token) {\n options = {\n ...options,\n headers: {\n ...options.headers,\n 'RequestVerificationToken': token,\n }\n }\n }\n }\n return fetch(url, options)\n .then(_checkStatus);\n};\n\nconst _checkStatus = response => {\n if (response.status >= 200 && response.status < 300) {\n return response;\n } else {\n let error = new Error(response.statusText);\n error.response = response;\n throw error;\n }\n};","export const translate = key => window.__litium.translation[key] || key;","window.__litium = window.__litium || {};\nwindow.__litium.constants = window.__litium.constants || {};\nexport default window.__litium.constants || window.__litium || window || {};\nexport const ViewMode = {\n List: 'list',\n Edit: 'edit',\n Detail: 'detail',\n };\n \n export const ADDRESS_RECEIVE = 'ADDRESS_RECEIVE';\n export const ADDRESS_ERROR = 'ADDRESS_ERROR';\n export const ADDRESS_CHANGE_MODE = 'ADDRESS_CHANGE_MODE';\n \n export const NAVIGATION_LOAD_ERROR = 'NAVIGATION_LOAD_ERROR';\n export const NAVIGATION_RECEIVE = 'NAVIGATION_RECEIVE';\n \n export const PERSON_RECEIVE = 'PERSON_RECEIVE';\n export const PERSON_ERROR = 'PERSON_ERROR';\n export const PERSON_CHANGE_MODE = 'PERSON_CHANGE_MODE';\n \n export const ORDER_RECEIVE = 'ORDER_RECEIVE';\n export const ORDER_ERROR = 'ORDER_ERROR';\n export const ORDER_CHANGE_MODE = 'ORDER_CHANGE_MODE';\n export const ORDER_CHANGE_CURRENTPAGE = 'ORDER_CHANGE_CURRENTPAGE';\n export const ORDER_SET_ORDER = 'ORDER_SET_ORDER';\n \n export const MY_PAGES_DETAILS = 'MY_PAGES_DETAILS';\n export const MY_PAGES_ORDER_HISTORY = 'MY_PAGES_ORDER_HISTORY';\n export const MY_PAGES_PERSONLIST = 'MY_PAGES_PERSONLIST';\n export const MY_PAGES_SET_ACTIVE_TAB = 'MY_PAGES_SET_ACTIVE_TAB';\n export const MY_PAGES_SHOW_DROPDOWN = 'MY_PAGES_SHOW_DROPDOWN';\n export const MY_PAGES_QUICKORDER = 'MY_PAGES_QUICKORDER';\n export const MY_PAGES_ADDRESS = \"MY_PAGES_ADDRESS\";\n export const MY_PAGES_START_PAGE = \"MY_PAGES_START_PAGE\";\n\nexport const PaginationOptions = {\n PageSize: 5, // Number of items per page\n DisplayedEntries: 4, // Specifies how many links to show excluding possible EdgeEntries\n EdgeEntries: 2, // Specifies how many links from beginning and end to show ex. 1 2 3 ... 10 20 30 ... 97 98 99 where \"1 2 3\" and \"97 98 99\" are edge entries\n };","import { get } from '../Services/http';\nimport { catchError } from './Error.action';\n\nexport const FACETED_SEARCH_QUERY = \"FACETED_SEARCH_QUERY\";\nexport const FACETED_SEARCH_RECEIVE = \"FACETED_SEARCH_RECEIVE\";\nexport const FACETED_SEARCH_ERROR = \"FACETED_SEARCH_ERROR\";\nexport const FACETED_SEARCH_TOGGLE_VALUE = \"FACETED_SEARCH_TOGGLE_VALUE\";\nexport const FACETED_SEARCH_TOGGLE_COMPACT = \"FACETED_SEARCH_TOGGLE_COMPACT\";\nexport const PRODUCT_VIEW_CACHED = \"PRODUCT_VIEW_CACHED\";\n\nexport const query = (queryString = '', withHtmlResult = true, productsViewCachedId = (new Date()).getTime()+'') => (dispatch, getState) => {\n dispatch({\n type: FACETED_SEARCH_QUERY,\n payload: {\n query: queryString,\n }\n });\n\n let url = withHtmlResult ? '/api/productFilter/withHtmlResult' : '/api/productFilter'\n if (queryString && queryString.trim() !== '') {\n url += `?${queryString}`;\n }\n return get(url)\n .then(response => response.json())\n .then(result => {\n const {productsView, sortCriteria, subNavigation, ...others} = result;\n if (withHtmlResult) {\n window.__litium.cache[PRODUCT_VIEW_CACHED] = {\n productsViewCachedId,\n productsView,\n };\n }\n result = {\n ...others,\n sortCriteria : transformSortCriteria(sortCriteria),\n subNavigation : transformSubNavigation(subNavigation),\n productsViewCachedId,\n }\n dispatch(receive(result));\n })\n .catch(ex =>{\n dispatch(catchError(ex, error => searchError(error)))\n })\n ;\n}\n\nconst transformSortCriteria = (sortCriteria) => !sortCriteria || !sortCriteria.sortingVisible ? [] : sortCriteria.sortItems;\n\nconst transformSubNavigation = subNavigation => {\n if (!subNavigation || !subNavigation.contentLinks || !subNavigation.contentLinks[0] || !subNavigation.contentLinks[0].links)\n return [];\n const rootLink = subNavigation.contentLinks[0].links;\n const subTransform = parentLinks => parentLinks.map(({name, url, isSelected, links}) => ({\n name, url, isSelected,\n links: subTransform(links || [])\n }));\n return subTransform(rootLink);\n}\n\nconst submit = (facetFilters) => (dispatch, getState) => {\n const filterCriteria = toFilterCriteria(facetFilters);\n const filterIds = facetFilters.map(filter => filter.id);\n const ignoredParams = ['page'];\n const unChangedParams = (window.location.search.substr(1)||'').split('&').filter(param => {\n const [id, value] = param.split('=');\n return param.length > 0 && !filterIds.includes(id) && !ignoredParams.includes(id);\n });\n const q = [...unChangedParams, ...filterCriteria].join('&');\n return dispatch(query(q));\n}\n\nconst toFilterCriteria = groups => groups\n .map(group => group.selectedOptions\n .filter(val => val.length > 0)\n .map(val => `${group.id}=${val}`)\n )\n .reduce((flat, current) => [...flat, ...current], []);\n\n/**\n *\n * @param filter : the group has changed facet\n * @param option : changed facet\n */\nexport const searchFacetChange = (filter = null, option = null) => (dispatch, getState) => {\n if (filter) {\n const allFilters = getState().facetedSearch.facetFilters;\n const newFilters = updateFilterOption(allFilters, filter, option);\n return dispatch(submit(newFilters));\n }\n}\n\nexport const updateFilterOption = (allFilters = [], filter = null, option = null) => {\n if (!filter) return allFilters;\n const filterIndex = allFilters.findIndex(f => f.id === filter.id);\n const newFilter = option ? toggleFilterValue(filter, option) : {...filter, selectedOptions : [] };\n const newFilters = [\n ...allFilters.slice(0, filterIndex),\n newFilter,\n ...allFilters.slice(filterIndex + 1)\n ];\n return newFilters;\n}\n\nconst toggleFilterValue = (filter, option) => {\n const { singleSelect, selectedOptions } = filter;\n const optionIndex = selectedOptions.indexOf(option.value);\n const newSelectedOptions = optionIndex < 0\n // not yet selected, select it\n ? singleSelect ? [option.value] : [...selectedOptions, option.value]\n // selected, deSelect it\n : [...selectedOptions.slice(0, optionIndex), ...selectedOptions.slice(optionIndex + 1)];\n return { ...filter, selectedOptions: newSelectedOptions};\n}\n\nexport const submitSearchFacet = allFilters => (dispatch, getState) => {\n dispatch(facetClientChanged(allFilters));\n return dispatch(submit(allFilters));\n}\n\nexport const facetClientChanged = facetFilters => ({\n type: FACETED_SEARCH_TOGGLE_VALUE,\n payload: {\n facetFilters,\n }\n})\n\nexport const toggleVisibleDropdownMenu = ({id}) => ({\n type: FACETED_SEARCH_TOGGLE_COMPACT,\n payload: {\n visibleDropdownMenu: id,\n }\n})\n\nexport const searchError = error => ({\n type: FACETED_SEARCH_ERROR,\n payload: {\n error,\n }\n})\n\nexport const receive = (payload) => {\n return {\n type: FACETED_SEARCH_RECEIVE,\n payload,\n }\n}","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","import { CART_RECEIVE, CART_SHOW_INFO } from '../Actions/Cart.action';\n\nexport const cart = (state = { quantity: 0, orderTotal: 0, showInfo: false }, action) => {\n switch (action.type) {\n case CART_RECEIVE:\n case CART_SHOW_INFO:\n return {\n ...state,\n ...action.payload,\n };\n default:\n return state;\n }\n}","import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only';\nimport { post } from '../Services/http';\nimport { catchError } from './Error.action';\n\nexport const QUICK_SEARCH_QUERY = \"QUICK_SEARCH_QUERY\";\nexport const QUICK_SEARCH_RECEIVE = \"QUICK_SEARCH_RECEIVE\";\nexport const QUICK_SEARCH_ERROR = \"QUICK_SEARCH_ERROR\";\nexport const QUICK_SEARCH_SHOW_FULL_FORM = 'QUICK_SEARCH_SHOW_FULL_FORM';\nexport const QUICK_SEARCH_SELECT_ITEM = \"QUICK_SEARCH_SELECT_ITEM\";\n\nlet abortController;\n\nexport const query = q => (dispatch, getState) => {\n // abort any existing, pending request.\n // It's ok to call .abort() after the fetch has already completed, fetch simply ignores it.\n abortController && abortController.abort();\n abortController = new AbortController();\n return post('/api/quickSearch', q, abortController)\n .then(response => response.json())\n .then(result => dispatch(receive(result)))\n .catch(ex => dispatch(catchError(ex, error => searchError(error))))\n ;\n}\n\nexport const setSearchQuery = query => ({\n type: QUICK_SEARCH_QUERY,\n payload: {\n query,\n }\n})\n\nexport const searchError = error => ({\n type: QUICK_SEARCH_ERROR,\n payload: {\n error,\n }\n})\n\nexport const receive = result => ({\n type: QUICK_SEARCH_RECEIVE,\n payload: {\n result,\n showResult: result && result.length > 0\n }\n})\n\nexport const toggleShowFullForm = () => (dispatch, getState) => {\n dispatch(show(!getState().quickSearch.showFullForm));\n}\n\nconst show = visible => ({\n type: QUICK_SEARCH_SHOW_FULL_FORM,\n payload: {\n showFullForm: visible,\n }\n})\n\nexport const handleKeyDown = (event, opt) => (dispatch, getState) => {\n const { result, selectedItem } = getState().quickSearch;\n\n if (!result || !result.length) {\n return;\n }\n const max = result.length - 2, /* skip show all button in the end */\n clip = index => index < 0 ? max : index > max ? 0 : index;\n switch (event.keyCode) {\n case 38: \n dispatch(selectItem(clip(selectedItem - 1)));\n break;\n case 40: \n dispatch(selectItem(clip(selectedItem + 1)));\n break;\n case 13:\n const selectedObject = result[selectedItem];\n if (selectedObject && selectedObject.url) {\n location.href = selectedObject.url;\n } else {\n location.href = opt.searchUrl;\n }\n break;\n default: \n break;\n }\n}\n\nexport const handleButtonClick = (opt) => { \n if(opt.searchInput && opt.searchInput.length > 0)\n location.href = opt.searchUrl;\n}\n\nconst selectItem = selectedItem => ({\n type: QUICK_SEARCH_SELECT_ITEM,\n payload: {\n selectedItem,\n }\n})","import { QUICK_SEARCH_QUERY, QUICK_SEARCH_RECEIVE, QUICK_SEARCH_SHOW_FULL_FORM, QUICK_SEARCH_SELECT_ITEM } from '../Actions/QuickSearch.action';\n\nconst DEFAULT_STATE = { \n query: '', \n result: [], \n showResult: false, \n showFullForm: false,\n selectedItem: -1 \n};\n\nexport const quickSearch = (state = DEFAULT_STATE, action) => {\n switch (action.type) {\n case QUICK_SEARCH_QUERY:\n case QUICK_SEARCH_RECEIVE:\n case QUICK_SEARCH_SHOW_FULL_FORM:\n case QUICK_SEARCH_SELECT_ITEM:\n return {\n ...state,\n ...action.payload,\n }\n default:\n return state;\n }\n}","import { get } from '../Services/http';\nimport { catchError } from './Error.action';\n\nexport const NAVIGATION_LOAD = 'NAVIGATION_LOAD';\nexport const NAVIGATION_LOAD_ERROR = 'NAVIGATION_LOAD_ERROR';\nexport const NAVIGATION_RECEIVE = 'NAVIGATION_RECEIVE';\nexport const NAVIGATION_TOGGLE = 'NAVIGATION_TOGGLE';\n\nexport const load = () => (dispatch, getState) => {\n return get('/api/navigation')\n .then(response => response.json())\n .then(data => dispatch(receive(data)))\n .catch(ex => dispatch(catchError(ex, error => loadError(error))))\n}\n\nexport const loadError = error => ({\n type: NAVIGATION_LOAD_ERROR,\n payload: {\n error,\n }\n})\n\nexport const receive = data => ({\n type: NAVIGATION_RECEIVE,\n payload: {\n contentLinks : data.contentLinks,\n additionalLinks : data.additionalLinks,\n },\n})\n","import { NAVIGATION_RECEIVE } from '../Actions/Navigation.action';\n\nexport const navigation = (state = { menu:[] }, action) => {\n switch (action.type) {\n case NAVIGATION_RECEIVE:\n return {\n ...state,\n ...action.payload,\n };\n default:\n return state;\n }\n}","export const GREY_OUT_CLICKED = 'GREY_OUT_CLICKED';\nexport const GREY_OUT_TOGGLE = 'GREY_OUT_TOGGLE';\nexport const COLLAPSE_ALL = 'COLLAPSE_ALL';\nexport const SET_ACTIVE_FACET_TAB = 'SET_ACTIVE_FACET_TAB';\n\nexport const toggleGreyOut = () => (dispatch) =>\n dispatch({\n type: GREY_OUT_TOGGLE,\n });\n\nexport const collapseAll = () => (dispatch) =>\n dispatch({\n type: COLLAPSE_ALL,\n });\n\nexport const setActiveFacetTab = (facetTab) => (dispatch) =>\n dispatch({\n type: SET_ACTIVE_FACET_TAB,\n facetTab: facetTab,\n });\n\nexport const outsideClicked = () => (dispatch) =>\n dispatch({\n type: GREY_OUT_CLICKED,\n });\n\n","import { FACETED_SEARCH_RECEIVE, FACETED_SEARCH_TOGGLE_VALUE, FACETED_SEARCH_TOGGLE_COMPACT } from '../Actions/FacetedSearch.action';\nimport { GREY_OUT_CLICKED } from '../Actions/UIState.action';\n\nconst defaultState = {\n subNavigation: [],\n sortCriteria: [],\n facetFilters: [],\n visibleDropdownMenu: [],\n navigationTheme: 'filter',\n productsViewCachedId: null,\n}\n\nexport const facetedSearch = ( state = defaultState, action ) => {\n const { type, payload } = action;\n switch (type) {\n case FACETED_SEARCH_RECEIVE:\n return {\n ...state,\n ...payload,\n };\n case FACETED_SEARCH_TOGGLE_VALUE:\n return {\n ...state,\n facetFilters: payload.facetFilters,\n }\n case FACETED_SEARCH_TOGGLE_COMPACT: {\n const { visibleDropdownMenu } = payload;\n return {\n ...state,\n visibleDropdownMenu: state.visibleDropdownMenu.includes(visibleDropdownMenu) ? [] : [visibleDropdownMenu],\n }\n }\n case GREY_OUT_CLICKED:{\n return{\n ...state,\n isToggleOn: false\n }\n }\n default:\n return state;\n }\n}","import { GREY_OUT_TOGGLE, SET_ACTIVE_FACET_TAB, GREY_OUT_CLICKED } from '../Actions/UIState.action';\n\nconst defaultState = {\n isGreyedOut: false,\n activeFacetTab: '',\n}\n\nexport const UIState = (state = defaultState, action) => {\n const { type } = action;\n switch (type) {\n case GREY_OUT_TOGGLE:\n return {\n ...state,\n isGreyedOut: !state.isGreyedOut,\n };\n case SET_ACTIVE_FACET_TAB:\n return {\n ...state,\n activeFacetTab: action.facetTab,\n isGreyedOut: true,\n };\n case GREY_OUT_CLICKED:\n return {\n ...state,\n activeFacetTab: '',\n isGreyedOut: false,\n };\n default:\n return state;\n }\n}","\n\nexport const error = (state = {}, action) => {\n const { error } = action.payload;\n if (!error) {\n return state;\n }\n if (error.modelState) {\n return error.modelState;\n }\n if (error.name === 'ValidationError') {\n return {\n [error.path]: error.errors,\n };\n }\n return state;\n}","import { \n PERSON_RECEIVE, \n PERSON_ERROR, \n PERSON_CHANGE_MODE ,\n ViewMode,\n} from '../constants';\nimport { error as errorReducer } from './Error.reducer';\n\nconst defaultState = {\n list: [],\n mode: ViewMode.List,\n errors: {},\n}\n\nexport const person = (state = defaultState, action) => {\n const { type, payload } = action;\n switch (type) {\n case PERSON_RECEIVE:\n case PERSON_CHANGE_MODE:\n return {\n ...state,\n errors: {},\n ...payload,\n };\n case PERSON_ERROR:\n return {\n ...state,\n errors: errorReducer(state.errors, action)\n }\n default:\n return state;\n }\n}","import { \n ADDRESS_RECEIVE, \n ADDRESS_ERROR, \n ADDRESS_CHANGE_MODE \n} from '../constants';\nimport { ViewMode } from '../constants';\nimport { error as errorReducer } from './Error.reducer';\n\nconst defaultState = {\n list: [],\n mode: ViewMode.List,\n errors: {},\n}\n\nexport const address = (state = defaultState, action) => {\n const { type, payload } = action;\n switch (type) {\n case ADDRESS_RECEIVE:\n case ADDRESS_CHANGE_MODE:\n return {\n ...state,\n errors: {},\n ...payload,\n };\n case ADDRESS_ERROR:\n return {\n ...state,\n errors: errorReducer(state.errors, action)\n }\n default:\n return state;\n }\n};","import {\n ORDER_RECEIVE,\n ORDER_ERROR,\n ORDER_CHANGE_MODE,\n ORDER_CHANGE_CURRENTPAGE,\n ORDER_SET_ORDER,\n ViewMode,\n} from '../constants';\nimport { error as errorReducer } from './Error.reducer';\n\nconst defaultState = {\n mode: ViewMode.List,\n list: [],\n order: {},\n totalCount: 0,\n showOnlyMyOrders: false,\n errors: {},\n};\n\nexport const order = (state = defaultState, action) => {\n const { type, payload } = action;\n switch (type) {\n case ORDER_RECEIVE:\n case ORDER_CHANGE_MODE:\n case ORDER_CHANGE_CURRENTPAGE:\n case ORDER_SET_ORDER:\n return {\n ...state,\n errors: {},\n ...payload,\n };\n case ORDER_ERROR:\n return {\n ...state,\n errors: errorReducer(state.errors, action),\n };\n default:\n return state;\n }\n};\n","import {\n PERSON_RECEIVE,\n PERSON_ERROR,\n PERSON_CHANGE_MODE,\n ADDRESS_RECEIVE,\n ADDRESS_ERROR,\n ADDRESS_CHANGE_MODE,\n ORDER_RECEIVE,\n ORDER_ERROR,\n ORDER_CHANGE_MODE,\n ORDER_CHANGE_CURRENTPAGE,\n ORDER_SET_ORDER,\n MY_PAGES_DETAILS,\n MY_PAGES_START_PAGE,\n MY_PAGES_SET_ACTIVE_TAB,\n MY_PAGES_SHOW_DROPDOWN,\n } from '../constants';\n import { person as personReducer } from './Person.reducer';\n import { address as addressReducer } from './Address.reducer';\n import { order as orderReducer } from './Order.reducer';\n \n const defaultState = {\n activeTab: MY_PAGES_START_PAGE,\n persons: {},\n addresses: {},\n orders: {\n currentPage: 1\n },\n };\n \n export const myPage = (state = defaultState, action) => {\n const { type, payload } = action;\n switch (type) {\n case PERSON_RECEIVE:\n case PERSON_ERROR:\n case PERSON_CHANGE_MODE:\n return {\n ...state,\n persons: personReducer(state.persons, action),\n };\n case ADDRESS_RECEIVE:\n case ADDRESS_ERROR:\n case ADDRESS_CHANGE_MODE:\n return {\n ...state,\n addresses: addressReducer(state.addresses, action),\n };\n case ORDER_RECEIVE:\n case ORDER_ERROR:\n case ORDER_CHANGE_MODE:\n case ORDER_CHANGE_CURRENTPAGE:\n case ORDER_SET_ORDER:\n return {\n ...state,\n orders: orderReducer(state.orders, action),\n };\n case MY_PAGES_SET_ACTIVE_TAB:\n case MY_PAGES_SHOW_DROPDOWN:\n return {\n ...state,\n ...action.payload,\n };\n default:\n return state;\n }\n };","import {\n CHECKOUT_SUBMIT,\n CHECKOUT_SUBMIT_ERROR,\n CHECKOUT_SET_CUSTOMER_INFO,\n CHECKOUT_SET_CAMPAIGN_CODE,\n CHECKOUT_SET_DELIVERY,\n CHECKOUT_SET_PAYMENT,\n CHECKOUT_SET_ORDER_NOTE,\n CHECKOUT_ACCEPT_TERMS_OF_CONDITION,\n CHECKOUT_SET_PRIVATE_CUSTOMER,\n CHECKOUT_SET_PAYMENT_WIDGET,\n CHECKOUT_SET_SELECTED_COMPANY_ADDRESS,\n CHECKOUT_SET_SIGN_UP,\n CHECKOUT_SET_ORDER_REF,\n CHECKOUT_CAMPAIGN_CODE_IS_SUCCESS\n} from '../Actions/Checkout.action';\nimport { error as errorReducer } from './Error.reducer';\n\nconst defaultState = {\n payload: {\n alternativeAddress: {},\n customerDetails: {},\n selectedCompanyAddressId: null,\n selectedDeliveryMethod: {},\n selectedPaymentMethod: {},\n campaignCode: '',\n orderNote: {},\n paymentWidget: null,\n isBusinessCustomer: false,\n signUp: false,\n acceptTermsOfCondition: false,\n success: false,\n\n authenticated: false,\n deliveryMethods: [],\n paymentMethods: [],\n companyAddresses: [],\n responseUrl: '',\n cancelUrl: '',\n redirectUrl: '',\n orderReference: {}\n },\n errors: {},\n result: {},\n isSubmitting: false,\n}\n\nexport const checkout = (state = defaultState, action) => {\n const { type, payload } = action;\n switch (type) {\n case CHECKOUT_SUBMIT_ERROR:\n return {\n ...state,\n errors: errorReducer(state.errors, action)\n }\n case CHECKOUT_SUBMIT:\n return {\n ...state,\n ...payload,\n };\n case CHECKOUT_SET_CUSTOMER_INFO:\n return {\n ...state,\n payload: {\n ...state.payload,\n [payload.key]: {\n ...state.payload[payload.key],\n ...payload.data,\n }\n },\n }\n case CHECKOUT_SET_DELIVERY:\n case CHECKOUT_SET_PAYMENT:\n case CHECKOUT_SET_ORDER_NOTE:\n case CHECKOUT_SET_PAYMENT_WIDGET:\n case CHECKOUT_SET_PRIVATE_CUSTOMER:\n case CHECKOUT_SET_SIGN_UP:\n case CHECKOUT_SET_SELECTED_COMPANY_ADDRESS:\n case CHECKOUT_ACCEPT_TERMS_OF_CONDITION:\n case CHECKOUT_SET_CAMPAIGN_CODE:\n case CHECKOUT_CAMPAIGN_CODE_IS_SUCCESS:\n case CHECKOUT_SET_ORDER_REF:\n return {\n ...state,\n payload: {\n ...state.payload,\n ...payload,\n }\n }\n default:\n return state;\n }\n}","import { \n LIGHTBOX_IMAGES_SET_IMAGES,\n LIGHTBOX_IMAGES_SET_CURRENT_IMAGE,\n LIGHTBOX_IMAGES_SHOW,\n LIGHTBOX_IMAGES_NEXT,\n LIGHTBOX_IMAGES_PREVIOUS,\n} from '../Actions/LightboxImages.action';\n\nconst defaultState = { \n images: [],\n index: 0,\n visible: false,\n}\n\nexport const lightboxImages = (state = defaultState, action) => {\n const { type, payload } = action;\n switch (type) {\n case LIGHTBOX_IMAGES_SET_IMAGES:\n case LIGHTBOX_IMAGES_SET_CURRENT_IMAGE:\n case LIGHTBOX_IMAGES_SHOW:\n return {\n ...state,\n ...payload,\n };\n case LIGHTBOX_IMAGES_NEXT:\n return {\n ...state,\n index: state.index < state.images.length ? state.index + 1 : state.index,\n }\n case LIGHTBOX_IMAGES_PREVIOUS:\n return {\n ...state,\n index: state.index > 0 ? state.index - 1 : 0,\n }\n default:\n return state;\n }\n}","import { QUICK_ORDER_ISLOADING } from '../Actions/Cart.action';\n\nconst DEFAULT_STATE = { \n isLoading: false \n};\n\nexport const quickOrder = (state = DEFAULT_STATE, action) => {\n switch (action.type) {\n case QUICK_ORDER_ISLOADING:\n return {\n ...state,\n ...action.payload,\n }\n default:\n return state;\n }\n}","import { combineReducers } from 'redux';\nimport { cart } from './Reducers/Cart.reducer';\nimport { quickSearch } from './Reducers/QuickSearch.reducer';\nimport { navigation } from './Reducers/Navigation.reducer';\nimport { facetedSearch } from \"./Reducers/FacetedSearch.reducer\";\nimport { UIState } from \"./Reducers/UIState.reducer\";\nimport { myPage } from './Reducers/MyPage.reducer';\nimport { checkout } from \"./Reducers/Checkout.reducer\";\nimport { lightboxImages } from './Reducers/LightboxImages.reducer';\nimport { notification } from './Reducers/Notification.reducer';\nimport { quickOrder } from './Reducers/QuickOrder.reducer';\nimport { order } from './Reducers/Order.reducer';\nimport { person } from './Reducers/Person.reducer';\nimport { address } from './Reducers/Address.reducer';\n\nconst staticReducers = {\n cart,\n checkout,\n quickSearch,\n navigation,\n myPage,\n order,\n facetedSearch,\n lightboxImages,\n notification,\n UIState,\n quickOrder,\n person,\n address,\n };\n\nconst app = combineReducers(staticReducers);\n\nexport const createReducer = (asyncReducers) => {\n return combineReducers({\n ...staticReducers,\n ...asyncReducers,\n });\n };\n\nexport default app;","import { NOTIFICATION_SHOW, NOTIFICATION_HIDE } from '../Actions/Notification.action';\n\nexport const notification = (state = { byId: {}, hash: '' }, action) => {\n const { type, payload } = action;\n switch (type) {\n case NOTIFICATION_SHOW:\n return {\n ...state,\n byId: {\n ...state.byId,\n [payload.nodeId]: {\n text: payload.text,\n }\n },\n hash: payload.hash,\n };\n case NOTIFICATION_HIDE:\n const newState = { ...state, hash: payload.hash };\n delete newState.byId[payload.nodeId];\n return newState;\n default:\n return state;\n }\n}","import React, { Fragment, Component } from 'react';\nimport { translate } from '../Services/translation';\n\nclass GreyOut extends Component {\n constructor(props) {\n super(props);\n this.outsideClicked = this.outsideClicked.bind(this);\n }\n\n componentDidMount() {\n \n }\n\n outsideClicked() {\n this.props.outsideClicked();\n }\n render() {\n const { isGreyedOut} = this.props;\n return (\n \n
\n
\n )\n }\n}\nexport default GreyOut;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport GreyOut from '../Components/GreyOut';\nimport { outsideClicked } from '../Actions/UIState.action';\n\nclass UIState extends Component {\n render() {\n return ;\n }\n}\nconst mapStateToProps = ({ facetedSearch: { facetFilters, navigationTheme }, UIState}) => {\n return {\n isGreyedOut: UIState.isGreyedOut,\n }\n}\nconst mapDispatchToProps = dispatch => {\n return {\n outsideClicked: () => dispatch(outsideClicked()),\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UIState);","import React from 'react';\nimport { translate } from '../Services/translation';\n\nconst MiniCart = ({ quantity, orderTotal, checkoutUrl, showInfo, toggle }) => (\n
\n toggle()}>\n 0 ? \"fal fa-shopping-bag cart-icon quantity-circle\" : \"fal fa-shopping-bag cart-icon\"}>\n { quantity }\n \n { translate('minicart.checkout') }\n \n
\n toggle()}>\n \n

{ quantity } { translate('minicart.numberofproduct') }

\n

{ translate('minicart.total') } { orderTotal }

\n { translate('minicart.checkout') }\n
\n
\n)\n\nexport default MiniCart;","import React from 'react';\nimport { connect } from 'react-redux';\nimport MiniCart from '../Components/MiniCart';\nimport { toggle } from '../Actions/Cart.action';\n\nconst MiniCartContainer = props => (\n \n)\n\nconst mapStateToProps = state => {\n const { cart } = state;\n return {\n ...cart,\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n toggle: () => dispatch(toggle()),\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MiniCartContainer);","import React, { Fragment } from 'react';\n\nconst sameCategory = (item, index, array) => index > 0 && array[index-1].category === array[index].category || item.showAll;\n\nconst QuickSearchResult = ({ result, selectedItem, searchUrl }) => (\n \n)\n\nexport default QuickSearchResult;","import React, { Component } from 'react';\nimport QuickSearchResult from './QuickSearchResult';\nimport { translate } from '../Services/translation';\n\nclass QuickSearch extends Component {\n focusOnInput() {\n setTimeout(() => {\n this.searchInput && this.searchInput.focus();\n }, 0);\n }\n \n render () {\n const { query, result, showResult, showFullForm, onSearch, onBlur, onKeyDown, toggleShowFullForm, selectedItem, searchUrl, onButtonClick } = this.props;\n return (\n
\n {toggleShowFullForm(); this.focusOnInput()}}>\n \n {translate('general.search')}\n \n
\n toggleShowFullForm()}>\n onSearch(event.target.value)}\n onKeyDown={event => onKeyDown(event, {searchUrl})} ref={(input) => { this.searchInput = input; }} \n onBlur={() => onBlur() } />\n \n
\n {showResult && }\n
\n )\n }\n}\n\nexport default QuickSearch;","import React, { Component } from 'react';\nimport * as debounce from 'lodash.debounce';\nimport { connect } from 'react-redux';\nimport QuickSearch from '../Components/QuickSearch';\nimport { query, setSearchQuery, toggleShowFullForm, handleKeyDown, handleButtonClick } from '../Actions/QuickSearch.action';\n\nclass QuickSearchContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {...props};\n this.clickHandler = this.clickHandler.bind(this);\n this.lastClickedNode = null;\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.clickHandler);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.clickHandler);\n }\n\n componentWillUpdate({ showFullForm } = props) {\n if (this.state.showFullForm !== showFullForm) {\n this.setState({...this.state, showFullForm});\n }\n }\n\n clickHandler(event) {\n this.lastClickedNode = event.target;\n }\n\n onBlur() {\n const { showFullForm, toggleShowFullForm } = this.props;\n if (this.searchContainer && !this.searchContainer.contains(this.lastClickedNode)) {\n showFullForm && toggleShowFullForm();\n }\n }\n\n render() {\n const { query } = this.props;\n const searchUrl = window.__litium.quickSearchUrl + (query.length > 0 ? `?q=${query}` : '');\n return (\n
this.searchContainer = elem} >\n this.onBlur() }} />\n
\n )\n }\n}\n\nconst mapStateToProps = state => {\n return {\n query: state.quickSearch.query,\n result: state.quickSearch.result,\n showResult: state.quickSearch.showResult,\n showFullForm: state.quickSearch.showFullForm,\n selectedItem: state.quickSearch.selectedItem,\n }\n}\n\n// debouncing function to 200ms so we don't send query request on every key stroke\nconst debouncedQuery = debounce((dispatch, text) => dispatch(query(text)), 200);\n\nconst mapDispatchToProps = dispatch => {\n return {\n onSearch: (text) => {\n dispatch(setSearchQuery(text));\n debouncedQuery(dispatch, text);\n },\n toggleShowFullForm: () => dispatch(toggleShowFullForm()),\n onKeyDown: (event, opt) => dispatch(handleKeyDown(event, opt)),\n onButtonClick: (opt) => dispatch(handleButtonClick(opt))\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(QuickSearchContainer);","import React, { Fragment, useEffect, useState } from \"react\";\n\nconst Navigation = ({ links = [], contentLink = null, additionalLinks }) => {\n let menuRef = React.createRef();\n function toggleMenu() {\n menuRef.current.classList.toggle(\"navbar__menu--show\");\n }\n const additionClass =\n contentLink && contentLink.attributes\n ? contentLink.attributes.cssValue\n : null;\n const hasChildrenClass = links.length > 0 ? \"has-children\" : null;\n const imgExists =\n contentLink && contentLink.imageUrl && contentLink.imageUrl.length > 0;\n\n function getImgLink() {\n return {\n __html: `${contentLink.name}`,\n };\n }\n\n return (\n \n {!contentLink ? (\n \n \n \n ) : (\n \n \n {links.length > 0 && (\n \n )}\n \n )}\n\n {links.length > 0 && (\n
    \n
    \n {!contentLink ? (\n \n ) : (\n \n \n \n \n )}\n
    \n {links.length > 0 &&\n links.map((link, i) =>\n !link.name ? null : (\n
  • \n \n
  • \n )\n )}\n {additionalLinks &&\n additionalLinks.length > 0 &&\n additionalLinks.map((link, i) =>\n !link.text ? null : (\n
  • \n \n {link.text}\n \n
  • \n )\n )}\n
\n )}\n
\n );\n};\n\nexport default Navigation;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport Navigation from '../Components/Navigation';\n\nconst NavigationContainer = props => (\n \n)\n\nconst mapStateToProps = state => {\n return {\n links: state.navigation.contentLinks,\n additionalLinks: state.navigation.additionalLinks,\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NavigationContainer);","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\n * The `chars`, `lookup`, `encode`, and `decode` members of this file are\n * licensed under the following:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n *\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport var encodeToBase64 = function (bytes) {\n var base64 = '';\n var len = bytes.length;\n for (var i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport var decodeFromBase64 = function (base64) {\n var bufferLength = base64.length * 0.75;\n var len = base64.length;\n var i;\n var p = 0;\n var encoded1;\n var encoded2;\n var encoded3;\n var encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var bytes = new Uint8Array(bufferLength);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return bytes;\n};\n// This regex is designed to be as flexible as possible. It will parse certain\n// invalid data URIs.\nvar DATA_URI_PREFIX_REGEX = /^(data)?:?([\\w\\/\\+]+)?;?(charset=[\\w-]+|base64)?.*,/i;\n/**\n * If the `dataUri` input is a data URI, then the data URI prefix must not be\n * longer than 100 characters, or this function will fail to decode it.\n *\n * @param dataUri a base64 data URI or plain base64 string\n * @returns a Uint8Array containing the decoded input\n */\nexport var decodeFromBase64DataUri = function (dataUri) {\n var trimmedUri = dataUri.trim();\n var prefix = trimmedUri.substring(0, 100);\n var res = prefix.match(DATA_URI_PREFIX_REGEX);\n // Assume it's not a data URI - just a plain base64 string\n if (!res)\n return decodeFromBase64(trimmedUri);\n // Remove the data URI prefix and parse the remainder as a base64 string\n var fullMatch = res[0];\n var data = trimmedUri.substring(fullMatch.length);\n return decodeFromBase64(data);\n};\n//# sourceMappingURL=base64.js.map","import { toHexString } from \"./strings\";\n/**\n * Encodes a string to UTF-8.\n *\n * @param input The string to be encoded.\n * @param byteOrderMark Whether or not a byte order marker (BOM) should be added\n * to the start of the encoding. (default `true`)\n * @returns A Uint8Array containing the UTF-8 encoding of the input string.\n *\n * -----------------------------------------------------------------------------\n *\n * JavaScript strings are composed of Unicode code points. Code points are\n * integers in the range 0 to 1,114,111 (0x10FFFF). When serializing a string,\n * it must be encoded as a sequence of words. A word is typically 8, 16, or 32\n * bytes in size. As such, Unicode defines three encoding forms: UTF-8, UTF-16,\n * and UTF-32. These encoding forms are described in the Unicode standard [1].\n * This function implements the UTF-8 encoding form.\n *\n * -----------------------------------------------------------------------------\n *\n * In UTF-8, each code point is mapped to a sequence of 1, 2, 3, or 4 bytes.\n * Note that the logic which defines this mapping is slightly convoluted, and\n * not as straightforward as the mapping logic for UTF-16 or UTF-32. The UTF-8\n * mapping logic is as follows [2]:\n *\n * • If a code point is in the range U+0000..U+007F, then view it as a 7-bit\n * integer: 0bxxxxxxx. Map the code point to 1 byte with the first high order\n * bit set to 0:\n *\n * b1=0b0xxxxxxx\n *\n * • If a code point is in the range U+0080..U+07FF, then view it as an 11-bit\n * integer: 0byyyyyxxxxxx. Map the code point to 2 bytes with the first 5 bits\n * of the code point stored in the first byte, and the last 6 bits stored in\n * the second byte:\n *\n * b1=0b110yyyyy b2=0b10xxxxxx\n *\n * • If a code point is in the range U+0800..U+FFFF, then view it as a 16-bit\n * integer, 0bzzzzyyyyyyxxxxxx. Map the code point to 3 bytes with the first\n * 4 bits stored in the first byte, the next 6 bits stored in the second byte,\n * and the last 6 bits in the third byte:\n *\n * b1=0b1110zzzz b2=0b10yyyyyy b3=0b10xxxxxx\n *\n * • If a code point is in the range U+10000...U+10FFFF, then view it as a\n * 21-bit integer, 0bvvvzzzzzzyyyyyyxxxxxx. Map the code point to 4 bytes with\n * the first 3 bits stored in the first byte, the next 6 bits stored in the\n * second byte, the next 6 bits stored in the third byte, and the last 6 bits\n * stored in the fourth byte:\n *\n * b1=0b11110xxx b2=0b10zzzzzz b3=0b10yyyyyy b4=0b10xxxxxx\n *\n * -----------------------------------------------------------------------------\n *\n * It is important to note, when iterating through the code points of a string\n * in JavaScript, that if a character is encoded as a surrogate pair it will\n * increase the string's length by 2 instead of 1 [4]. For example:\n *\n * ```\n * > 'a'.length\n * 1\n * > '💩'.length\n * 2\n * > '語'.length\n * 1\n * > 'a💩語'.length\n * 4\n * ```\n *\n * The results of the above example are explained by the fact that the\n * characters 'a' and '語' are not represented by surrogate pairs, but '💩' is.\n *\n * Because of this idiosyncrasy in JavaScript's string implementation and APIs,\n * we must \"jump\" an extra index after encoding a character as a surrogate\n * pair. In practice, this means we must increment the index of our for loop by\n * 2 if we encode a surrogate pair, and 1 in all other cases.\n *\n * -----------------------------------------------------------------------------\n *\n * References:\n * - [1] https://www.unicode.org/versions/Unicode12.0.0/UnicodeStandard-12.0.pdf\n * 3.9 Unicode Encoding Forms - UTF-8\n * - [2] http://www.herongyang.com/Unicode/UTF-8-UTF-8-Encoding.html\n * - [3] http://www.herongyang.com/Unicode/UTF-8-UTF-8-Encoding-Algorithm.html\n * - [4] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length#Description\n *\n */\nexport var utf8Encode = function (input, byteOrderMark) {\n if (byteOrderMark === void 0) { byteOrderMark = true; }\n var encoded = [];\n if (byteOrderMark)\n encoded.push(0xef, 0xbb, 0xbf);\n for (var idx = 0, len = input.length; idx < len;) {\n var codePoint = input.codePointAt(idx);\n // One byte encoding\n if (codePoint < 0x80) {\n var byte1 = codePoint & 0x7f;\n encoded.push(byte1);\n idx += 1;\n }\n // Two byte encoding\n else if (codePoint < 0x0800) {\n var byte1 = ((codePoint >> 6) & 0x1f) | 0xc0;\n var byte2 = (codePoint & 0x3f) | 0x80;\n encoded.push(byte1, byte2);\n idx += 1;\n }\n // Three byte encoding\n else if (codePoint < 0x010000) {\n var byte1 = ((codePoint >> 12) & 0x0f) | 0xe0;\n var byte2 = ((codePoint >> 6) & 0x3f) | 0x80;\n var byte3 = (codePoint & 0x3f) | 0x80;\n encoded.push(byte1, byte2, byte3);\n idx += 1;\n }\n // Four byte encoding (surrogate pair)\n else if (codePoint < 0x110000) {\n var byte1 = ((codePoint >> 18) & 0x07) | 0xf0;\n var byte2 = ((codePoint >> 12) & 0x3f) | 0x80;\n var byte3 = ((codePoint >> 6) & 0x3f) | 0x80;\n var byte4 = ((codePoint >> 0) & 0x3f) | 0x80;\n encoded.push(byte1, byte2, byte3, byte4);\n idx += 2;\n }\n // Should never reach this case\n else\n throw new Error(\"Invalid code point: 0x\" + toHexString(codePoint));\n }\n return new Uint8Array(encoded);\n};\n/**\n * Encodes a string to UTF-16.\n *\n * @param input The string to be encoded.\n * @param byteOrderMark Whether or not a byte order marker (BOM) should be added\n * to the start of the encoding. (default `true`)\n * @returns A Uint16Array containing the UTF-16 encoding of the input string.\n *\n * -----------------------------------------------------------------------------\n *\n * JavaScript strings are composed of Unicode code points. Code points are\n * integers in the range 0 to 1,114,111 (0x10FFFF). When serializing a string,\n * it must be encoded as a sequence of words. A word is typically 8, 16, or 32\n * bytes in size. As such, Unicode defines three encoding forms: UTF-8, UTF-16,\n * and UTF-32. These encoding forms are described in the Unicode standard [1].\n * This function implements the UTF-16 encoding form.\n *\n * -----------------------------------------------------------------------------\n *\n * In UTF-16, each code point is mapped to one or two 16-bit integers. The\n * UTF-16 mapping logic is as follows [2]:\n *\n * • If a code point is in the range U+0000..U+FFFF, then map the code point to\n * a 16-bit integer with the most significant byte first.\n *\n * • If a code point is in the range U+10000..U+10000, then map the code point\n * to two 16-bit integers. The first integer should contain the high surrogate\n * and the second integer should contain the low surrogate. Both surrogates\n * should be written with the most significant byte first.\n *\n * -----------------------------------------------------------------------------\n *\n * It is important to note, when iterating through the code points of a string\n * in JavaScript, that if a character is encoded as a surrogate pair it will\n * increase the string's length by 2 instead of 1 [4]. For example:\n *\n * ```\n * > 'a'.length\n * 1\n * > '💩'.length\n * 2\n * > '語'.length\n * 1\n * > 'a💩語'.length\n * 4\n * ```\n *\n * The results of the above example are explained by the fact that the\n * characters 'a' and '語' are not represented by surrogate pairs, but '💩' is.\n *\n * Because of this idiosyncrasy in JavaScript's string implementation and APIs,\n * we must \"jump\" an extra index after encoding a character as a surrogate\n * pair. In practice, this means we must increment the index of our for loop by\n * 2 if we encode a surrogate pair, and 1 in all other cases.\n *\n * -----------------------------------------------------------------------------\n *\n * References:\n * - [1] https://www.unicode.org/versions/Unicode12.0.0/UnicodeStandard-12.0.pdf\n * 3.9 Unicode Encoding Forms - UTF-8\n * - [2] http://www.herongyang.com/Unicode/UTF-16-UTF-16-Encoding.html\n * - [3] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length#Description\n *\n */\nexport var utf16Encode = function (input, byteOrderMark) {\n if (byteOrderMark === void 0) { byteOrderMark = true; }\n var encoded = [];\n if (byteOrderMark)\n encoded.push(0xfeff);\n for (var idx = 0, len = input.length; idx < len;) {\n var codePoint = input.codePointAt(idx);\n // Two byte encoding\n if (codePoint < 0x010000) {\n encoded.push(codePoint);\n idx += 1;\n }\n // Four byte encoding (surrogate pair)\n else if (codePoint < 0x110000) {\n encoded.push(highSurrogate(codePoint), lowSurrogate(codePoint));\n idx += 2;\n }\n // Should never reach this case\n else\n throw new Error(\"Invalid code point: 0x\" + toHexString(codePoint));\n }\n return new Uint16Array(encoded);\n};\n/**\n * Returns `true` if the `codePoint` is within the\n * Basic Multilingual Plane (BMP). Code points inside the BMP are not encoded\n * with surrogate pairs.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nexport var isWithinBMP = function (codePoint) {\n return codePoint >= 0 && codePoint <= 0xffff;\n};\n/**\n * Returns `true` if the given `codePoint` is valid and must be represented\n * with a surrogate pair when encoded.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nexport var hasSurrogates = function (codePoint) {\n return codePoint >= 0x010000 && codePoint <= 0x10ffff;\n};\n// From Unicode 3.0 spec, section 3.7:\n// http://unicode.org/versions/Unicode3.0.0/ch03.pdf\nexport var highSurrogate = function (codePoint) {\n return Math.floor((codePoint - 0x10000) / 0x400) + 0xd800;\n};\n// From Unicode 3.0 spec, section 3.7:\n// http://unicode.org/versions/Unicode3.0.0/ch03.pdf\nexport var lowSurrogate = function (codePoint) {\n return ((codePoint - 0x10000) % 0x400) + 0xdc00;\n};\nvar ByteOrder;\n(function (ByteOrder) {\n ByteOrder[\"BigEndian\"] = \"BigEndian\";\n ByteOrder[\"LittleEndian\"] = \"LittleEndian\";\n})(ByteOrder || (ByteOrder = {}));\nvar REPLACEMENT = '�'.codePointAt(0);\n/**\n * Decodes a Uint8Array of data to a string using UTF-16.\n *\n * Note that this function attempts to recover from erronous input by\n * inserting the replacement character (�) to mark invalid code points\n * and surrogate pairs.\n *\n * @param input A Uint8Array containing UTF-16 encoded data\n * @param byteOrderMark Whether or not a byte order marker (BOM) should be read\n * at the start of the encoding. (default `true`)\n * @returns The decoded string.\n */\nexport var utf16Decode = function (input, byteOrderMark) {\n if (byteOrderMark === void 0) { byteOrderMark = true; }\n // Need at least 2 bytes of data in UTF-16 encodings\n if (input.length <= 1)\n return String.fromCodePoint(REPLACEMENT);\n var byteOrder = byteOrderMark ? readBOM(input) : ByteOrder.BigEndian;\n // Skip byte order mark if needed\n var idx = byteOrderMark ? 2 : 0;\n var codePoints = [];\n while (input.length - idx >= 2) {\n var first = decodeValues(input[idx++], input[idx++], byteOrder);\n if (isHighSurrogate(first)) {\n if (input.length - idx < 2) {\n // Need at least 2 bytes left for the low surrogate that is required\n codePoints.push(REPLACEMENT);\n }\n else {\n var second = decodeValues(input[idx++], input[idx++], byteOrder);\n if (isLowSurrogate(second)) {\n codePoints.push(first, second);\n }\n else {\n // Low surrogates should always follow high surrogates\n codePoints.push(REPLACEMENT);\n }\n }\n }\n else if (isLowSurrogate(first)) {\n // High surrogates should always come first since `decodeValues()`\n // accounts for the byte ordering\n idx += 2;\n codePoints.push(REPLACEMENT);\n }\n else {\n codePoints.push(first);\n }\n }\n // There shouldn't be extra byte(s) left over\n if (idx < input.length)\n codePoints.push(REPLACEMENT);\n return String.fromCodePoint.apply(String, codePoints);\n};\n/**\n * Returns `true` if the given `codePoint` is a high surrogate.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nvar isHighSurrogate = function (codePoint) {\n return codePoint >= 0xd800 && codePoint <= 0xdbff;\n};\n/**\n * Returns `true` if the given `codePoint` is a low surrogate.\n * @param codePoint The code point to be evaluated.\n *\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Description\n */\nvar isLowSurrogate = function (codePoint) {\n return codePoint >= 0xdc00 && codePoint <= 0xdfff;\n};\n/**\n * Decodes the given utf-16 values first and second using the specified\n * byte order.\n * @param first The first byte of the encoding.\n * @param second The second byte of the encoding.\n * @param byteOrder The byte order of the encoding.\n * Reference: https://en.wikipedia.org/wiki/UTF-16#Examples\n */\nvar decodeValues = function (first, second, byteOrder) {\n // Append the binary representation of the preceding byte by shifting the\n // first one 8 to the left and than applying a bitwise or-operator to append\n // the second one.\n if (byteOrder === ByteOrder.LittleEndian)\n return (second << 8) | first;\n if (byteOrder === ByteOrder.BigEndian)\n return (first << 8) | second;\n throw new Error(\"Invalid byteOrder: \" + byteOrder);\n};\n/**\n * Returns whether the given array contains a byte order mark for the\n * UTF-16BE or UTF-16LE encoding. If it has neither, BigEndian is assumed.\n *\n * Reference: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-16\n *\n * @param bytes The byte array to be evaluated.\n */\n// prettier-ignore\nvar readBOM = function (bytes) { return (hasUtf16BigEndianBOM(bytes) ? ByteOrder.BigEndian\n : hasUtf16LittleEndianBOM(bytes) ? ByteOrder.LittleEndian\n : ByteOrder.BigEndian); };\nvar hasUtf16BigEndianBOM = function (bytes) {\n return bytes[0] === 0xfe && bytes[1] === 0xff;\n};\nvar hasUtf16LittleEndianBOM = function (bytes) {\n return bytes[0] === 0xff && bytes[1] === 0xfe;\n};\nexport var hasUtf16BOM = function (bytes) {\n return hasUtf16BigEndianBOM(bytes) || hasUtf16LittleEndianBOM(bytes);\n};\n//# sourceMappingURL=unicode.js.map","export var toCharCode = function (character) { return character.charCodeAt(0); };\nexport var toCodePoint = function (character) { return character.codePointAt(0); };\nexport var toHexStringOfMinLength = function (num, minLength) {\n return padStart(num.toString(16), minLength, '0').toUpperCase();\n};\nexport var toHexString = function (num) { return toHexStringOfMinLength(num, 2); };\nexport var charFromCode = function (code) { return String.fromCharCode(code); };\nexport var charFromHexCode = function (hex) { return charFromCode(parseInt(hex, 16)); };\nexport var padStart = function (value, length, padChar) {\n var padding = '';\n for (var idx = 0, len = length - value.length; idx < len; idx++) {\n padding += padChar;\n }\n return padding + value;\n};\nexport var copyStringIntoBuffer = function (str, buffer, offset) {\n var length = str.length;\n for (var idx = 0; idx < length; idx++) {\n buffer[offset++] = str.charCodeAt(idx);\n }\n return length;\n};\nexport var addRandomSuffix = function (prefix, suffixLength) {\n if (suffixLength === void 0) { suffixLength = 4; }\n return prefix + \"-\" + Math.floor(Math.random() * Math.pow(10, suffixLength));\n};\nexport var escapeRegExp = function (str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\nexport var cleanText = function (text) {\n return text.replace(/\\t|\\u0085|\\u2028|\\u2029/g, ' ').replace(/[\\b\\v]/g, '');\n};\nexport var escapedNewlineChars = ['\\\\n', '\\\\f', '\\\\r', '\\\\u000B'];\nexport var newlineChars = ['\\n', '\\f', '\\r', '\\u000B'];\nexport var isNewlineChar = function (text) { return /^[\\n\\f\\r\\u000B]$/.test(text); };\nexport var lineSplit = function (text) { return text.split(/[\\n\\f\\r\\u000B]/); };\nexport var mergeLines = function (text) {\n return text.replace(/[\\n\\f\\r\\u000B]/g, ' ');\n};\n// JavaScript's String.charAt() method doesn work on strings containing UTF-16\n// characters (with high and low surrogate pairs), such as 💩 (poo emoji). This\n// `charAtIndex()` function does.\n//\n// Credit: https://github.com/mathiasbynens/String.prototype.at/blob/master/at.js#L14-L48\nexport var charAtIndex = function (text, index) {\n // Get the first code unit and code unit value\n var cuFirst = text.charCodeAt(index);\n var cuSecond;\n var nextIndex = index + 1;\n var length = 1;\n if (\n // Check if it's the start of a surrogate pair.\n cuFirst >= 0xd800 &&\n cuFirst <= 0xdbff && // high surrogate\n text.length > nextIndex // there is a next code unit\n ) {\n cuSecond = text.charCodeAt(nextIndex);\n if (cuSecond >= 0xdc00 && cuSecond <= 0xdfff)\n length = 2; // low surrogate\n }\n return [text.slice(index, index + length), length];\n};\nexport var charSplit = function (text) {\n var chars = [];\n for (var idx = 0, len = text.length; idx < len;) {\n var _a = charAtIndex(text, idx), c = _a[0], cLen = _a[1];\n chars.push(c);\n idx += cLen;\n }\n return chars;\n};\nvar buildWordBreakRegex = function (wordBreaks) {\n var newlineCharUnion = escapedNewlineChars.join('|');\n var escapedRules = ['$'];\n for (var idx = 0, len = wordBreaks.length; idx < len; idx++) {\n var wordBreak = wordBreaks[idx];\n if (isNewlineChar(wordBreak)) {\n throw new TypeError(\"`wordBreak` must not include \" + newlineCharUnion);\n }\n escapedRules.push(wordBreak === '' ? '.' : escapeRegExp(wordBreak));\n }\n var breakRules = escapedRules.join('|');\n return new RegExp(\"(\" + newlineCharUnion + \")|((.*?)(\" + breakRules + \"))\", 'gm');\n};\nexport var breakTextIntoLines = function (text, wordBreaks, maxWidth, computeWidthOfText) {\n var regex = buildWordBreakRegex(wordBreaks);\n var words = cleanText(text).match(regex);\n var currLine = '';\n var currWidth = 0;\n var lines = [];\n var pushCurrLine = function () {\n if (currLine !== '')\n lines.push(currLine);\n currLine = '';\n currWidth = 0;\n };\n for (var idx = 0, len = words.length; idx < len; idx++) {\n var word = words[idx];\n if (isNewlineChar(word)) {\n pushCurrLine();\n }\n else {\n var width = computeWidthOfText(word);\n if (currWidth + width > maxWidth)\n pushCurrLine();\n currLine += word;\n currWidth += width;\n }\n }\n pushCurrLine();\n return lines;\n};\n// See section \"7.9.4 Dates\" of the PDF specification\nvar dateRegex = /^D:(\\d\\d\\d\\d)(\\d\\d)?(\\d\\d)?(\\d\\d)?(\\d\\d)?(\\d\\d)?([+\\-Z])?(\\d\\d)?'?(\\d\\d)?'?$/;\nexport var parseDate = function (dateStr) {\n var match = dateStr.match(dateRegex);\n if (!match)\n return undefined;\n var year = match[1], _a = match[2], month = _a === void 0 ? '01' : _a, _b = match[3], day = _b === void 0 ? '01' : _b, _c = match[4], hours = _c === void 0 ? '00' : _c, _d = match[5], mins = _d === void 0 ? '00' : _d, _e = match[6], secs = _e === void 0 ? '00' : _e, _f = match[7], offsetSign = _f === void 0 ? 'Z' : _f, _g = match[8], offsetHours = _g === void 0 ? '00' : _g, _h = match[9], offsetMins = _h === void 0 ? '00' : _h;\n // http://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.15\n var tzOffset = offsetSign === 'Z' ? 'Z' : \"\" + offsetSign + offsetHours + \":\" + offsetMins;\n var date = new Date(year + \"-\" + month + \"-\" + day + \"T\" + hours + \":\" + mins + \":\" + secs + tzOffset);\n return date;\n};\nexport var findLastMatch = function (value, regex) {\n var _a;\n var position = 0;\n var lastMatch;\n while (position < value.length) {\n var match = value.substring(position).match(regex);\n if (!match)\n return { match: lastMatch, pos: position };\n lastMatch = match;\n position += ((_a = match.index) !== null && _a !== void 0 ? _a : 0) + match[0].length;\n }\n return { match: lastMatch, pos: position };\n};\n//# sourceMappingURL=strings.js.map","import { decodeFromBase64DataUri } from \"./base64\";\nimport { charFromCode } from \"./strings\";\nexport var last = function (array) { return array[array.length - 1]; };\n// export const dropLast = (array: T[]): T[] =>\n// array.slice(0, array.length - 1);\nexport var typedArrayFor = function (value) {\n if (value instanceof Uint8Array)\n return value;\n var length = value.length;\n var typedArray = new Uint8Array(length);\n for (var idx = 0; idx < length; idx++) {\n typedArray[idx] = value.charCodeAt(idx);\n }\n return typedArray;\n};\nexport var mergeIntoTypedArray = function () {\n var arrays = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n arrays[_i] = arguments[_i];\n }\n var arrayCount = arrays.length;\n var typedArrays = [];\n for (var idx = 0; idx < arrayCount; idx++) {\n var element = arrays[idx];\n typedArrays[idx] =\n element instanceof Uint8Array ? element : typedArrayFor(element);\n }\n var totalSize = 0;\n for (var idx = 0; idx < arrayCount; idx++) {\n totalSize += arrays[idx].length;\n }\n var merged = new Uint8Array(totalSize);\n var offset = 0;\n for (var arrIdx = 0; arrIdx < arrayCount; arrIdx++) {\n var arr = typedArrays[arrIdx];\n for (var byteIdx = 0, arrLen = arr.length; byteIdx < arrLen; byteIdx++) {\n merged[offset++] = arr[byteIdx];\n }\n }\n return merged;\n};\nexport var mergeUint8Arrays = function (arrays) {\n var totalSize = 0;\n for (var idx = 0, len = arrays.length; idx < len; idx++) {\n totalSize += arrays[idx].length;\n }\n var mergedBuffer = new Uint8Array(totalSize);\n var offset = 0;\n for (var idx = 0, len = arrays.length; idx < len; idx++) {\n var array = arrays[idx];\n mergedBuffer.set(array, offset);\n offset += array.length;\n }\n return mergedBuffer;\n};\nexport var arrayAsString = function (array) {\n var str = '';\n for (var idx = 0, len = array.length; idx < len; idx++) {\n str += charFromCode(array[idx]);\n }\n return str;\n};\nexport var byAscendingId = function (a, b) { return a.id - b.id; };\nexport var sortedUniq = function (array, indexer) {\n var uniq = [];\n for (var idx = 0, len = array.length; idx < len; idx++) {\n var curr = array[idx];\n var prev = array[idx - 1];\n if (idx === 0 || indexer(curr) !== indexer(prev)) {\n uniq.push(curr);\n }\n }\n return uniq;\n};\n// Arrays and TypedArrays in JS both have .reverse() methods, which would seem\n// to negate the need for this function. However, not all runtimes support this\n// method (e.g. React Native). This function compensates for that fact.\nexport var reverseArray = function (array) {\n var arrayLen = array.length;\n for (var idx = 0, len = Math.floor(arrayLen / 2); idx < len; idx++) {\n var leftIdx = idx;\n var rightIdx = arrayLen - idx - 1;\n var temp = array[idx];\n array[leftIdx] = array[rightIdx];\n array[rightIdx] = temp;\n }\n return array;\n};\nexport var sum = function (array) {\n var total = 0;\n for (var idx = 0, len = array.length; idx < len; idx++) {\n total += array[idx];\n }\n return total;\n};\nexport var range = function (start, end) {\n var arr = new Array(end - start);\n for (var idx = 0, len = arr.length; idx < len; idx++) {\n arr[idx] = start + idx;\n }\n return arr;\n};\nexport var pluckIndices = function (arr, indices) {\n var plucked = new Array(indices.length);\n for (var idx = 0, len = indices.length; idx < len; idx++) {\n plucked[idx] = arr[indices[idx]];\n }\n return plucked;\n};\nexport var canBeConvertedToUint8Array = function (input) {\n return input instanceof Uint8Array ||\n input instanceof ArrayBuffer ||\n typeof input === 'string';\n};\nexport var toUint8Array = function (input) {\n if (typeof input === 'string') {\n return decodeFromBase64DataUri(input);\n }\n else if (input instanceof ArrayBuffer) {\n return new Uint8Array(input);\n }\n else if (input instanceof Uint8Array) {\n return input;\n }\n else {\n throw new TypeError('`input` must be one of `string | ArrayBuffer | Uint8Array`');\n }\n};\n//# sourceMappingURL=arrays.js.map","/**\n * Returns a Promise that resolves after at least one tick of the\n * Macro Task Queue occurs.\n */\nexport var waitForTick = function () {\n return new Promise(function (resolve) {\n setTimeout(function () { return resolve(); }, 0);\n });\n};\n//# sourceMappingURL=async.js.map","/*\n * The `chars`, `lookup`, and `decodeFromBase64` members of this file are\n * licensed under the following:\n *\n * base64-arraybuffer\n * https://github.com/niklasvh/base64-arraybuffer\n *\n * Copyright (c) 2012 Niklas von Hertzen\n * Licensed under the MIT license.\n *\n */\nimport pako from 'pako';\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport var decodeFromBase64 = function (base64) {\n var bufferLength = base64.length * 0.75;\n var len = base64.length;\n var i;\n var p = 0;\n var encoded1;\n var encoded2;\n var encoded3;\n var encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var bytes = new Uint8Array(bufferLength);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return bytes;\n};\nvar arrayToString = function (array) {\n var str = '';\n for (var i = 0; i < array.length; i++) {\n str += String.fromCharCode(array[i]);\n }\n return str;\n};\nexport var decompressJson = function (compressedJson) {\n return arrayToString(pako.inflate(decodeFromBase64(compressedJson)));\n};\nexport var padStart = function (value, length, padChar) {\n var padding = '';\n for (var idx = 0, len = length - value.length; idx < len; idx++) {\n padding += padChar;\n }\n return padding + value;\n};\n","// tslint:disable radix\n/**\n * Converts a number to its string representation in decimal. This function\n * differs from simply converting a number to a string with `.toString()`\n * because this function's output string will **not** contain exponential\n * notation.\n *\n * Credit: https://stackoverflow.com/a/46545519\n */\nexport var numberToString = function (num) {\n var numStr = String(num);\n if (Math.abs(num) < 1.0) {\n var e = parseInt(num.toString().split('e-')[1]);\n if (e) {\n var negative = num < 0;\n if (negative)\n num *= -1;\n num *= Math.pow(10, e - 1);\n numStr = '0.' + new Array(e).join('0') + num.toString().substring(2);\n if (negative)\n numStr = '-' + numStr;\n }\n }\n else {\n var e = parseInt(num.toString().split('+')[1]);\n if (e > 20) {\n e -= 20;\n num /= Math.pow(10, e);\n numStr = num.toString() + new Array(e + 1).join('0');\n }\n }\n return numStr;\n};\nexport var sizeInBytes = function (n) { return Math.ceil(n.toString(2).length / 8); };\n/**\n * Converts a number into its constituent bytes and returns them as\n * a number[].\n *\n * Returns most significant byte as first element in array. It may be necessary\n * to call .reverse() to get the bits in the desired order.\n *\n * Example:\n * bytesFor(0x02A41E) => [ 0b10, 0b10100100, 0b11110 ]\n *\n * Credit for algorithm: https://stackoverflow.com/a/1936865\n */\nexport var bytesFor = function (n) {\n var bytes = new Uint8Array(sizeInBytes(n));\n for (var i = 1; i <= bytes.length; i++) {\n bytes[i - 1] = n >> ((bytes.length - i) * 8);\n }\n return bytes;\n};\n//# sourceMappingURL=numbers.js.map","export var error = function (msg) {\n throw new Error(msg);\n};\n//# sourceMappingURL=errors.js.map","import { decompressJson } from './utils';\nimport CourierBoldCompressed from './Courier-Bold.compressed.json';\nimport CourierBoldObliqueCompressed from './Courier-BoldOblique.compressed.json';\nimport CourierObliqueCompressed from './Courier-Oblique.compressed.json';\nimport CourierCompressed from './Courier.compressed.json';\nimport HelveticaBoldCompressed from './Helvetica-Bold.compressed.json';\nimport HelveticaBoldObliqueCompressed from './Helvetica-BoldOblique.compressed.json';\nimport HelveticaObliqueCompressed from './Helvetica-Oblique.compressed.json';\nimport HelveticaCompressed from './Helvetica.compressed.json';\nimport TimesBoldCompressed from './Times-Bold.compressed.json';\nimport TimesBoldItalicCompressed from './Times-BoldItalic.compressed.json';\nimport TimesItalicCompressed from './Times-Italic.compressed.json';\nimport TimesRomanCompressed from './Times-Roman.compressed.json';\nimport SymbolCompressed from './Symbol.compressed.json';\nimport ZapfDingbatsCompressed from './ZapfDingbats.compressed.json';\n// prettier-ignore\nvar compressedJsonForFontName = {\n 'Courier': CourierCompressed,\n 'Courier-Bold': CourierBoldCompressed,\n 'Courier-Oblique': CourierObliqueCompressed,\n 'Courier-BoldOblique': CourierBoldObliqueCompressed,\n 'Helvetica': HelveticaCompressed,\n 'Helvetica-Bold': HelveticaBoldCompressed,\n 'Helvetica-Oblique': HelveticaObliqueCompressed,\n 'Helvetica-BoldOblique': HelveticaBoldObliqueCompressed,\n 'Times-Roman': TimesRomanCompressed,\n 'Times-Bold': TimesBoldCompressed,\n 'Times-Italic': TimesItalicCompressed,\n 'Times-BoldItalic': TimesBoldItalicCompressed,\n 'Symbol': SymbolCompressed,\n 'ZapfDingbats': ZapfDingbatsCompressed,\n};\nexport var FontNames;\n(function (FontNames) {\n FontNames[\"Courier\"] = \"Courier\";\n FontNames[\"CourierBold\"] = \"Courier-Bold\";\n FontNames[\"CourierOblique\"] = \"Courier-Oblique\";\n FontNames[\"CourierBoldOblique\"] = \"Courier-BoldOblique\";\n FontNames[\"Helvetica\"] = \"Helvetica\";\n FontNames[\"HelveticaBold\"] = \"Helvetica-Bold\";\n FontNames[\"HelveticaOblique\"] = \"Helvetica-Oblique\";\n FontNames[\"HelveticaBoldOblique\"] = \"Helvetica-BoldOblique\";\n FontNames[\"TimesRoman\"] = \"Times-Roman\";\n FontNames[\"TimesRomanBold\"] = \"Times-Bold\";\n FontNames[\"TimesRomanItalic\"] = \"Times-Italic\";\n FontNames[\"TimesRomanBoldItalic\"] = \"Times-BoldItalic\";\n FontNames[\"Symbol\"] = \"Symbol\";\n FontNames[\"ZapfDingbats\"] = \"ZapfDingbats\";\n})(FontNames || (FontNames = {}));\nvar fontCache = {};\nvar Font = /** @class */ (function () {\n function Font() {\n var _this = this;\n this.getWidthOfGlyph = function (glyphName) {\n return _this.CharWidths[glyphName];\n };\n this.getXAxisKerningForPair = function (leftGlyphName, rightGlyphName) {\n return (_this.KernPairXAmounts[leftGlyphName] || {})[rightGlyphName];\n };\n }\n Font.load = function (fontName) {\n var cachedFont = fontCache[fontName];\n if (cachedFont)\n return cachedFont;\n var json = decompressJson(compressedJsonForFontName[fontName]);\n var font = Object.assign(new Font(), JSON.parse(json));\n font.CharWidths = font.CharMetrics.reduce(function (acc, metric) {\n acc[metric.N] = metric.WX;\n return acc;\n }, {});\n font.KernPairXAmounts = font.KernPairs.reduce(function (acc, _a) {\n var name1 = _a[0], name2 = _a[1], width = _a[2];\n if (!acc[name1])\n acc[name1] = {};\n acc[name1][name2] = width;\n return acc;\n }, {});\n fontCache[fontName] = font;\n return font;\n };\n return Font;\n}());\nexport { Font };\n","import { toCharCode } from \"./strings\";\n// Mapping from PDFDocEncoding to Unicode code point\nvar pdfDocEncodingToUnicode = new Uint16Array(256);\n// Initialize the code points which are the same\nfor (var idx = 0; idx < 256; idx++) {\n pdfDocEncodingToUnicode[idx] = idx;\n}\n// Set differences (see \"Table D.2 – PDFDocEncoding Character Set\" of the PDF spec)\npdfDocEncodingToUnicode[0x16] = toCharCode('\\u0017'); // SYNCRONOUS IDLE\npdfDocEncodingToUnicode[0x18] = toCharCode('\\u02D8'); // BREVE\npdfDocEncodingToUnicode[0x19] = toCharCode('\\u02C7'); // CARON\npdfDocEncodingToUnicode[0x1a] = toCharCode('\\u02C6'); // MODIFIER LETTER CIRCUMFLEX ACCENT\npdfDocEncodingToUnicode[0x1b] = toCharCode('\\u02D9'); // DOT ABOVE\npdfDocEncodingToUnicode[0x1c] = toCharCode('\\u02DD'); // DOUBLE ACUTE ACCENT\npdfDocEncodingToUnicode[0x1d] = toCharCode('\\u02DB'); // OGONEK\npdfDocEncodingToUnicode[0x1e] = toCharCode('\\u02DA'); // RING ABOVE\npdfDocEncodingToUnicode[0x1f] = toCharCode('\\u02DC'); // SMALL TILDE\npdfDocEncodingToUnicode[0x7f] = toCharCode('\\uFFFD'); // REPLACEMENT CHARACTER (box with questionmark)\npdfDocEncodingToUnicode[0x80] = toCharCode('\\u2022'); // BULLET\npdfDocEncodingToUnicode[0x81] = toCharCode('\\u2020'); // DAGGER\npdfDocEncodingToUnicode[0x82] = toCharCode('\\u2021'); // DOUBLE DAGGER\npdfDocEncodingToUnicode[0x83] = toCharCode('\\u2026'); // HORIZONTAL ELLIPSIS\npdfDocEncodingToUnicode[0x84] = toCharCode('\\u2014'); // EM DASH\npdfDocEncodingToUnicode[0x85] = toCharCode('\\u2013'); // EN DASH\npdfDocEncodingToUnicode[0x86] = toCharCode('\\u0192'); // LATIN SMALL LETTER SCRIPT F\npdfDocEncodingToUnicode[0x87] = toCharCode('\\u2044'); // FRACTION SLASH (solidus)\npdfDocEncodingToUnicode[0x88] = toCharCode('\\u2039'); // SINGLE LEFT-POINTING ANGLE QUOTATION MARK\npdfDocEncodingToUnicode[0x89] = toCharCode('\\u203A'); // SINGLE RIGHT-POINTING ANGLE QUOTATION MARK\npdfDocEncodingToUnicode[0x8a] = toCharCode('\\u2212'); // MINUS SIGN\npdfDocEncodingToUnicode[0x8b] = toCharCode('\\u2030'); // PER MILLE SIGN\npdfDocEncodingToUnicode[0x8c] = toCharCode('\\u201E'); // DOUBLE LOW-9 QUOTATION MARK (quotedblbase)\npdfDocEncodingToUnicode[0x8d] = toCharCode('\\u201C'); // LEFT DOUBLE QUOTATION MARK (quotedblleft)\npdfDocEncodingToUnicode[0x8e] = toCharCode('\\u201D'); // RIGHT DOUBLE QUOTATION MARK (quotedblright)\npdfDocEncodingToUnicode[0x8f] = toCharCode('\\u2018'); // LEFT SINGLE QUOTATION MARK (quoteleft)\npdfDocEncodingToUnicode[0x90] = toCharCode('\\u2019'); // RIGHT SINGLE QUOTATION MARK (quoteright)\npdfDocEncodingToUnicode[0x91] = toCharCode('\\u201A'); // SINGLE LOW-9 QUOTATION MARK (quotesinglbase)\npdfDocEncodingToUnicode[0x92] = toCharCode('\\u2122'); // TRADE MARK SIGN\npdfDocEncodingToUnicode[0x93] = toCharCode('\\uFB01'); // LATIN SMALL LIGATURE FI\npdfDocEncodingToUnicode[0x94] = toCharCode('\\uFB02'); // LATIN SMALL LIGATURE FL\npdfDocEncodingToUnicode[0x95] = toCharCode('\\u0141'); // LATIN CAPITAL LETTER L WITH STROKE\npdfDocEncodingToUnicode[0x96] = toCharCode('\\u0152'); // LATIN CAPITAL LIGATURE OE\npdfDocEncodingToUnicode[0x97] = toCharCode('\\u0160'); // LATIN CAPITAL LETTER S WITH CARON\npdfDocEncodingToUnicode[0x98] = toCharCode('\\u0178'); // LATIN CAPITAL LETTER Y WITH DIAERESIS\npdfDocEncodingToUnicode[0x99] = toCharCode('\\u017D'); // LATIN CAPITAL LETTER Z WITH CARON\npdfDocEncodingToUnicode[0x9a] = toCharCode('\\u0131'); // LATIN SMALL LETTER DOTLESS I\npdfDocEncodingToUnicode[0x9b] = toCharCode('\\u0142'); // LATIN SMALL LETTER L WITH STROKE\npdfDocEncodingToUnicode[0x9c] = toCharCode('\\u0153'); // LATIN SMALL LIGATURE OE\npdfDocEncodingToUnicode[0x9d] = toCharCode('\\u0161'); // LATIN SMALL LETTER S WITH CARON\npdfDocEncodingToUnicode[0x9e] = toCharCode('\\u017E'); // LATIN SMALL LETTER Z WITH CARON\npdfDocEncodingToUnicode[0x9f] = toCharCode('\\uFFFD'); // REPLACEMENT CHARACTER (box with questionmark)\npdfDocEncodingToUnicode[0xa0] = toCharCode('\\u20AC'); // EURO SIGN\npdfDocEncodingToUnicode[0xad] = toCharCode('\\uFFFD'); // REPLACEMENT CHARACTER (box with questionmark)\n/**\n * Decode a byte array into a string using PDFDocEncoding.\n *\n * @param bytes a byte array (decimal representation) containing a string\n * encoded with PDFDocEncoding.\n */\nexport var pdfDocEncodingDecode = function (bytes) {\n var codePoints = new Array(bytes.length);\n for (var idx = 0, len = bytes.length; idx < len; idx++) {\n codePoints[idx] = pdfDocEncodingToUnicode[bytes[idx]];\n }\n return String.fromCodePoint.apply(String, codePoints);\n};\n//# sourceMappingURL=pdfDocEncoding.js.map","/* tslint:disable max-classes-per-file */\nimport { decompressJson, padStart } from './utils';\nimport AllEncodingsCompressed from './all-encodings.compressed.json';\nvar decompressedEncodings = decompressJson(AllEncodingsCompressed);\nvar allUnicodeMappings = JSON.parse(decompressedEncodings);\nvar Encoding = /** @class */ (function () {\n function Encoding(name, unicodeMappings) {\n var _this = this;\n this.canEncodeUnicodeCodePoint = function (codePoint) {\n return codePoint in _this.unicodeMappings;\n };\n this.encodeUnicodeCodePoint = function (codePoint) {\n var mapped = _this.unicodeMappings[codePoint];\n if (!mapped) {\n var str = String.fromCharCode(codePoint);\n var hexCode = \"0x\" + padStart(codePoint.toString(16), 4, '0');\n var msg = _this.name + \" cannot encode \\\"\" + str + \"\\\" (\" + hexCode + \")\";\n throw new Error(msg);\n }\n return { code: mapped[0], name: mapped[1] };\n };\n this.name = name;\n this.supportedCodePoints = Object.keys(unicodeMappings)\n .map(Number)\n .sort(function (a, b) { return a - b; });\n this.unicodeMappings = unicodeMappings;\n }\n return Encoding;\n}());\nexport var Encodings = {\n Symbol: new Encoding('Symbol', allUnicodeMappings.symbol),\n ZapfDingbats: new Encoding('ZapfDingbats', allUnicodeMappings.zapfdingbats),\n WinAnsi: new Encoding('WinAnsi', allUnicodeMappings.win1252),\n};\n","import { FontNames } from '@pdf-lib/standard-fonts';\nexport var values = function (obj) { return Object.keys(obj).map(function (k) { return obj[k]; }); };\nexport var StandardFontValues = values(FontNames);\nexport var isStandardFont = function (input) {\n return StandardFontValues.includes(input);\n};\nexport var rectanglesAreEqual = function (a, b) { return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height; };\n//# sourceMappingURL=objects.js.map","/* tslint:disable:ban-types */\nimport { values as objectValues } from \"./objects\";\nexport var backtick = function (val) { return \"`\" + val + \"`\"; };\nexport var singleQuote = function (val) { return \"'\" + val + \"'\"; };\n// prettier-ignore\nvar formatValue = function (value) {\n var type = typeof value;\n if (type === 'string')\n return singleQuote(value);\n else if (type === 'undefined')\n return backtick(value);\n else\n return value;\n};\nexport var createValueErrorMsg = function (value, valueName, values) {\n var allowedValues = new Array(values.length);\n for (var idx = 0, len = values.length; idx < len; idx++) {\n var v = values[idx];\n allowedValues[idx] = formatValue(v);\n }\n var joinedValues = allowedValues.join(' or ');\n // prettier-ignore\n return backtick(valueName) + \" must be one of \" + joinedValues + \", but was actually \" + formatValue(value);\n};\nexport var assertIsOneOf = function (value, valueName, allowedValues) {\n if (!Array.isArray(allowedValues)) {\n allowedValues = objectValues(allowedValues);\n }\n for (var idx = 0, len = allowedValues.length; idx < len; idx++) {\n if (value === allowedValues[idx])\n return;\n }\n throw new TypeError(createValueErrorMsg(value, valueName, allowedValues));\n};\nexport var assertIsOneOfOrUndefined = function (value, valueName, allowedValues) {\n if (!Array.isArray(allowedValues)) {\n allowedValues = objectValues(allowedValues);\n }\n assertIsOneOf(value, valueName, allowedValues.concat(undefined));\n};\nexport var assertIsSubset = function (values, valueName, allowedValues) {\n if (!Array.isArray(allowedValues)) {\n allowedValues = objectValues(allowedValues);\n }\n for (var idx = 0, len = values.length; idx < len; idx++) {\n assertIsOneOf(values[idx], valueName, allowedValues);\n }\n};\nexport var getType = function (val) {\n if (val === null)\n return 'null';\n if (val === undefined)\n return 'undefined';\n if (typeof val === 'string')\n return 'string';\n if (isNaN(val))\n return 'NaN';\n if (typeof val === 'number')\n return 'number';\n if (typeof val === 'boolean')\n return 'boolean';\n if (typeof val === 'symbol')\n return 'symbol';\n if (typeof val === 'bigint')\n return 'bigint';\n if (val.constructor && val.constructor.name)\n return val.constructor.name;\n if (val.name)\n return val.name;\n if (val.constructor)\n return String(val.constructor);\n return String(val);\n};\nexport var isType = function (value, type) {\n if (type === 'null')\n return value === null;\n if (type === 'undefined')\n return value === undefined;\n if (type === 'string')\n return typeof value === 'string';\n if (type === 'number')\n return typeof value === 'number' && !isNaN(value);\n if (type === 'boolean')\n return typeof value === 'boolean';\n if (type === 'symbol')\n return typeof value === 'symbol';\n if (type === 'bigint')\n return typeof value === 'bigint';\n if (type === Date)\n return value instanceof Date;\n if (type === Array)\n return value instanceof Array;\n if (type === Uint8Array)\n return value instanceof Uint8Array;\n if (type === ArrayBuffer)\n return value instanceof ArrayBuffer;\n if (type === Function)\n return value instanceof Function;\n return value instanceof type[0];\n};\nexport var createTypeErrorMsg = function (value, valueName, types) {\n var allowedTypes = new Array(types.length);\n for (var idx = 0, len = types.length; idx < len; idx++) {\n var type = types[idx];\n if (type === 'null')\n allowedTypes[idx] = backtick('null');\n if (type === 'undefined')\n allowedTypes[idx] = backtick('undefined');\n if (type === 'string')\n allowedTypes[idx] = backtick('string');\n else if (type === 'number')\n allowedTypes[idx] = backtick('number');\n else if (type === 'boolean')\n allowedTypes[idx] = backtick('boolean');\n else if (type === 'symbol')\n allowedTypes[idx] = backtick('symbol');\n else if (type === 'bigint')\n allowedTypes[idx] = backtick('bigint');\n else if (type === Array)\n allowedTypes[idx] = backtick('Array');\n else if (type === Uint8Array)\n allowedTypes[idx] = backtick('Uint8Array');\n else if (type === ArrayBuffer)\n allowedTypes[idx] = backtick('ArrayBuffer');\n else\n allowedTypes[idx] = backtick(type[1]);\n }\n var joinedTypes = allowedTypes.join(' or ');\n // prettier-ignore\n return backtick(valueName) + \" must be of type \" + joinedTypes + \", but was actually of type \" + backtick(getType(value));\n};\nexport var assertIs = function (value, valueName, types) {\n for (var idx = 0, len = types.length; idx < len; idx++) {\n if (isType(value, types[idx]))\n return;\n }\n throw new TypeError(createTypeErrorMsg(value, valueName, types));\n};\nexport var assertOrUndefined = function (value, valueName, types) {\n assertIs(value, valueName, types.concat('undefined'));\n};\nexport var assertEachIs = function (values, valueName, types) {\n for (var idx = 0, len = values.length; idx < len; idx++) {\n assertIs(values[idx], valueName, types);\n }\n};\nexport var assertRange = function (value, valueName, min, max) {\n assertIs(value, valueName, ['number']);\n assertIs(min, 'min', ['number']);\n assertIs(max, 'max', ['number']);\n max = Math.max(min, max);\n if (value < min || value > max) {\n // prettier-ignore\n throw new Error(backtick(valueName) + \" must be at least \" + min + \" and at most \" + max + \", but was actually \" + value);\n }\n};\nexport var assertRangeOrUndefined = function (value, valueName, min, max) {\n assertIs(value, valueName, ['number', 'undefined']);\n if (typeof value === 'number')\n assertRange(value, valueName, min, max);\n};\nexport var assertMultiple = function (value, valueName, multiplier) {\n assertIs(value, valueName, ['number']);\n if (value % multiplier !== 0) {\n // prettier-ignore\n throw new Error(backtick(valueName) + \" must be a multiple of \" + multiplier + \", but was actually \" + value);\n }\n};\nexport var assertInteger = function (value, valueName) {\n if (!Number.isInteger(value)) {\n throw new Error(backtick(valueName) + \" must be an integer, but was actually \" + value);\n }\n};\nexport var assertPositive = function (value, valueName) {\n if (![1, 0].includes(Math.sign(value))) {\n // prettier-ignore\n throw new Error(backtick(valueName) + \" must be a positive number or 0, but was actually \" + value);\n }\n};\n//# sourceMappingURL=validators.js.map","var Cache = /** @class */ (function () {\n function Cache(populate) {\n this.populate = populate;\n this.value = undefined;\n }\n Cache.prototype.getValue = function () {\n return this.value;\n };\n Cache.prototype.access = function () {\n if (!this.value)\n this.value = this.populate();\n return this.value;\n };\n Cache.prototype.invalidate = function () {\n this.value = undefined;\n };\n Cache.populatedBy = function (populate) { return new Cache(populate); };\n return Cache;\n}());\nexport default Cache;\n//# sourceMappingURL=Cache.js.map","import { __extends } from \"tslib\";\nimport { arrayAsString } from \"../utils\";\nvar MethodNotImplementedError = /** @class */ (function (_super) {\n __extends(MethodNotImplementedError, _super);\n function MethodNotImplementedError(className, methodName) {\n var _this = this;\n var msg = \"Method \" + className + \".\" + methodName + \"() not implemented\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MethodNotImplementedError;\n}(Error));\nexport { MethodNotImplementedError };\nvar PrivateConstructorError = /** @class */ (function (_super) {\n __extends(PrivateConstructorError, _super);\n function PrivateConstructorError(className) {\n var _this = this;\n var msg = \"Cannot construct \" + className + \" - it has a private constructor\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PrivateConstructorError;\n}(Error));\nexport { PrivateConstructorError };\nvar UnexpectedObjectTypeError = /** @class */ (function (_super) {\n __extends(UnexpectedObjectTypeError, _super);\n function UnexpectedObjectTypeError(expected, actual) {\n var _this = this;\n var name = function (t) { var _a, _b; return (_a = t === null || t === void 0 ? void 0 : t.name) !== null && _a !== void 0 ? _a : (_b = t === null || t === void 0 ? void 0 : t.constructor) === null || _b === void 0 ? void 0 : _b.name; };\n var expectedTypes = Array.isArray(expected)\n ? expected.map(name)\n : [name(expected)];\n var msg = \"Expected instance of \" + expectedTypes.join(' or ') + \", \" +\n (\"but got instance of \" + (actual ? name(actual) : actual));\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnexpectedObjectTypeError;\n}(Error));\nexport { UnexpectedObjectTypeError };\nvar UnsupportedEncodingError = /** @class */ (function (_super) {\n __extends(UnsupportedEncodingError, _super);\n function UnsupportedEncodingError(encoding) {\n var _this = this;\n var msg = encoding + \" stream encoding not supported\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnsupportedEncodingError;\n}(Error));\nexport { UnsupportedEncodingError };\nvar ReparseError = /** @class */ (function (_super) {\n __extends(ReparseError, _super);\n function ReparseError(className, methodName) {\n var _this = this;\n var msg = \"Cannot call \" + className + \".\" + methodName + \"() more than once\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ReparseError;\n}(Error));\nexport { ReparseError };\nvar MissingCatalogError = /** @class */ (function (_super) {\n __extends(MissingCatalogError, _super);\n function MissingCatalogError(ref) {\n var _this = this;\n var msg = \"Missing catalog (ref=\" + ref + \")\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingCatalogError;\n}(Error));\nexport { MissingCatalogError };\nvar MissingPageContentsEmbeddingError = /** @class */ (function (_super) {\n __extends(MissingPageContentsEmbeddingError, _super);\n function MissingPageContentsEmbeddingError() {\n var _this = this;\n var msg = \"Can't embed page with missing Contents\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingPageContentsEmbeddingError;\n}(Error));\nexport { MissingPageContentsEmbeddingError };\nvar UnrecognizedStreamTypeError = /** @class */ (function (_super) {\n __extends(UnrecognizedStreamTypeError, _super);\n function UnrecognizedStreamTypeError(stream) {\n var _a, _b, _c;\n var _this = this;\n var streamType = (_c = (_b = (_a = stream === null || stream === void 0 ? void 0 : stream.contructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : stream === null || stream === void 0 ? void 0 : stream.name) !== null && _c !== void 0 ? _c : stream;\n var msg = \"Unrecognized stream type: \" + streamType;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnrecognizedStreamTypeError;\n}(Error));\nexport { UnrecognizedStreamTypeError };\nvar PageEmbeddingMismatchedContextError = /** @class */ (function (_super) {\n __extends(PageEmbeddingMismatchedContextError, _super);\n function PageEmbeddingMismatchedContextError() {\n var _this = this;\n var msg = \"Found mismatched contexts while embedding pages. All pages in the array passed to `PDFDocument.embedPages()` must be from the same document.\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PageEmbeddingMismatchedContextError;\n}(Error));\nexport { PageEmbeddingMismatchedContextError };\nvar PDFArrayIsNotRectangleError = /** @class */ (function (_super) {\n __extends(PDFArrayIsNotRectangleError, _super);\n function PDFArrayIsNotRectangleError(size) {\n var _this = this;\n var msg = \"Attempted to convert PDFArray with \" + size + \" elements to rectangle, but must have exactly 4 elements.\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PDFArrayIsNotRectangleError;\n}(Error));\nexport { PDFArrayIsNotRectangleError };\nvar InvalidPDFDateStringError = /** @class */ (function (_super) {\n __extends(InvalidPDFDateStringError, _super);\n function InvalidPDFDateStringError(value) {\n var _this = this;\n var msg = \"Attempted to convert \\\"\" + value + \"\\\" to a date, but it does not match the PDF date string format.\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidPDFDateStringError;\n}(Error));\nexport { InvalidPDFDateStringError };\nvar InvalidTargetIndexError = /** @class */ (function (_super) {\n __extends(InvalidTargetIndexError, _super);\n function InvalidTargetIndexError(targetIndex, Count) {\n var _this = this;\n var msg = \"Invalid targetIndex specified: targetIndex=\" + targetIndex + \" must be less than Count=\" + Count;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidTargetIndexError;\n}(Error));\nexport { InvalidTargetIndexError };\nvar CorruptPageTreeError = /** @class */ (function (_super) {\n __extends(CorruptPageTreeError, _super);\n function CorruptPageTreeError(targetIndex, operation) {\n var _this = this;\n var msg = \"Failed to \" + operation + \" at targetIndex=\" + targetIndex + \" due to corrupt page tree: It is likely that one or more 'Count' entries are invalid\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return CorruptPageTreeError;\n}(Error));\nexport { CorruptPageTreeError };\nvar IndexOutOfBoundsError = /** @class */ (function (_super) {\n __extends(IndexOutOfBoundsError, _super);\n function IndexOutOfBoundsError(index, min, max) {\n var _this = this;\n var msg = \"index should be at least \" + min + \" and at most \" + max + \", but was actually \" + index;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return IndexOutOfBoundsError;\n}(Error));\nexport { IndexOutOfBoundsError };\nvar InvalidAcroFieldValueError = /** @class */ (function (_super) {\n __extends(InvalidAcroFieldValueError, _super);\n function InvalidAcroFieldValueError() {\n var _this = this;\n var msg = \"Attempted to set invalid field value\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidAcroFieldValueError;\n}(Error));\nexport { InvalidAcroFieldValueError };\nvar MultiSelectValueError = /** @class */ (function (_super) {\n __extends(MultiSelectValueError, _super);\n function MultiSelectValueError() {\n var _this = this;\n var msg = \"Attempted to select multiple values for single-select field\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MultiSelectValueError;\n}(Error));\nexport { MultiSelectValueError };\nvar MissingDAEntryError = /** @class */ (function (_super) {\n __extends(MissingDAEntryError, _super);\n function MissingDAEntryError(fieldName) {\n var _this = this;\n var msg = \"No /DA (default appearance) entry found for field: \" + fieldName;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingDAEntryError;\n}(Error));\nexport { MissingDAEntryError };\nvar MissingTfOperatorError = /** @class */ (function (_super) {\n __extends(MissingTfOperatorError, _super);\n function MissingTfOperatorError(fieldName) {\n var _this = this;\n var msg = \"No Tf operator found for DA of field: \" + fieldName;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingTfOperatorError;\n}(Error));\nexport { MissingTfOperatorError };\nvar NumberParsingError = /** @class */ (function (_super) {\n __extends(NumberParsingError, _super);\n function NumberParsingError(pos, value) {\n var _this = this;\n var msg = \"Failed to parse number \" +\n (\"(line:\" + pos.line + \" col:\" + pos.column + \" offset=\" + pos.offset + \"): \\\"\" + value + \"\\\"\");\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return NumberParsingError;\n}(Error));\nexport { NumberParsingError };\nvar PDFParsingError = /** @class */ (function (_super) {\n __extends(PDFParsingError, _super);\n function PDFParsingError(pos, details) {\n var _this = this;\n var msg = \"Failed to parse PDF document \" +\n (\"(line:\" + pos.line + \" col:\" + pos.column + \" offset=\" + pos.offset + \"): \" + details);\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return PDFParsingError;\n}(Error));\nexport { PDFParsingError };\nvar NextByteAssertionError = /** @class */ (function (_super) {\n __extends(NextByteAssertionError, _super);\n function NextByteAssertionError(pos, expectedByte, actualByte) {\n var _this = this;\n var msg = \"Expected next byte to be \" + expectedByte + \" but it was actually \" + actualByte;\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return NextByteAssertionError;\n}(PDFParsingError));\nexport { NextByteAssertionError };\nvar PDFObjectParsingError = /** @class */ (function (_super) {\n __extends(PDFObjectParsingError, _super);\n function PDFObjectParsingError(pos, byte) {\n var _this = this;\n var msg = \"Failed to parse PDF object starting with the following byte: \" + byte;\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return PDFObjectParsingError;\n}(PDFParsingError));\nexport { PDFObjectParsingError };\nvar PDFInvalidObjectParsingError = /** @class */ (function (_super) {\n __extends(PDFInvalidObjectParsingError, _super);\n function PDFInvalidObjectParsingError(pos) {\n var _this = this;\n var msg = \"Failed to parse invalid PDF object\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return PDFInvalidObjectParsingError;\n}(PDFParsingError));\nexport { PDFInvalidObjectParsingError };\nvar PDFStreamParsingError = /** @class */ (function (_super) {\n __extends(PDFStreamParsingError, _super);\n function PDFStreamParsingError(pos) {\n var _this = this;\n var msg = \"Failed to parse PDF stream\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return PDFStreamParsingError;\n}(PDFParsingError));\nexport { PDFStreamParsingError };\nvar UnbalancedParenthesisError = /** @class */ (function (_super) {\n __extends(UnbalancedParenthesisError, _super);\n function UnbalancedParenthesisError(pos) {\n var _this = this;\n var msg = \"Failed to parse PDF literal string due to unbalanced parenthesis\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return UnbalancedParenthesisError;\n}(PDFParsingError));\nexport { UnbalancedParenthesisError };\nvar StalledParserError = /** @class */ (function (_super) {\n __extends(StalledParserError, _super);\n function StalledParserError(pos) {\n var _this = this;\n var msg = \"Parser stalled\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return StalledParserError;\n}(PDFParsingError));\nexport { StalledParserError };\nvar MissingPDFHeaderError = /** @class */ (function (_super) {\n __extends(MissingPDFHeaderError, _super);\n function MissingPDFHeaderError(pos) {\n var _this = this;\n var msg = \"No PDF header found\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return MissingPDFHeaderError;\n}(PDFParsingError));\nexport { MissingPDFHeaderError };\nvar MissingKeywordError = /** @class */ (function (_super) {\n __extends(MissingKeywordError, _super);\n function MissingKeywordError(pos, keyword) {\n var _this = this;\n var msg = \"Did not find expected keyword '\" + arrayAsString(keyword) + \"'\";\n _this = _super.call(this, pos, msg) || this;\n return _this;\n }\n return MissingKeywordError;\n}(PDFParsingError));\nexport { MissingKeywordError };\n//# sourceMappingURL=errors.js.map","var CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"Null\"] = 0] = \"Null\";\n CharCodes[CharCodes[\"Backspace\"] = 8] = \"Backspace\";\n CharCodes[CharCodes[\"Tab\"] = 9] = \"Tab\";\n CharCodes[CharCodes[\"Newline\"] = 10] = \"Newline\";\n CharCodes[CharCodes[\"FormFeed\"] = 12] = \"FormFeed\";\n CharCodes[CharCodes[\"CarriageReturn\"] = 13] = \"CarriageReturn\";\n CharCodes[CharCodes[\"Space\"] = 32] = \"Space\";\n CharCodes[CharCodes[\"ExclamationPoint\"] = 33] = \"ExclamationPoint\";\n CharCodes[CharCodes[\"Hash\"] = 35] = \"Hash\";\n CharCodes[CharCodes[\"Percent\"] = 37] = \"Percent\";\n CharCodes[CharCodes[\"LeftParen\"] = 40] = \"LeftParen\";\n CharCodes[CharCodes[\"RightParen\"] = 41] = \"RightParen\";\n CharCodes[CharCodes[\"Plus\"] = 43] = \"Plus\";\n CharCodes[CharCodes[\"Minus\"] = 45] = \"Minus\";\n CharCodes[CharCodes[\"Dash\"] = 45] = \"Dash\";\n CharCodes[CharCodes[\"Period\"] = 46] = \"Period\";\n CharCodes[CharCodes[\"ForwardSlash\"] = 47] = \"ForwardSlash\";\n CharCodes[CharCodes[\"Zero\"] = 48] = \"Zero\";\n CharCodes[CharCodes[\"One\"] = 49] = \"One\";\n CharCodes[CharCodes[\"Two\"] = 50] = \"Two\";\n CharCodes[CharCodes[\"Three\"] = 51] = \"Three\";\n CharCodes[CharCodes[\"Four\"] = 52] = \"Four\";\n CharCodes[CharCodes[\"Five\"] = 53] = \"Five\";\n CharCodes[CharCodes[\"Six\"] = 54] = \"Six\";\n CharCodes[CharCodes[\"Seven\"] = 55] = \"Seven\";\n CharCodes[CharCodes[\"Eight\"] = 56] = \"Eight\";\n CharCodes[CharCodes[\"Nine\"] = 57] = \"Nine\";\n CharCodes[CharCodes[\"LessThan\"] = 60] = \"LessThan\";\n CharCodes[CharCodes[\"GreaterThan\"] = 62] = \"GreaterThan\";\n CharCodes[CharCodes[\"A\"] = 65] = \"A\";\n CharCodes[CharCodes[\"D\"] = 68] = \"D\";\n CharCodes[CharCodes[\"E\"] = 69] = \"E\";\n CharCodes[CharCodes[\"F\"] = 70] = \"F\";\n CharCodes[CharCodes[\"O\"] = 79] = \"O\";\n CharCodes[CharCodes[\"P\"] = 80] = \"P\";\n CharCodes[CharCodes[\"R\"] = 82] = \"R\";\n CharCodes[CharCodes[\"LeftSquareBracket\"] = 91] = \"LeftSquareBracket\";\n CharCodes[CharCodes[\"BackSlash\"] = 92] = \"BackSlash\";\n CharCodes[CharCodes[\"RightSquareBracket\"] = 93] = \"RightSquareBracket\";\n CharCodes[CharCodes[\"a\"] = 97] = \"a\";\n CharCodes[CharCodes[\"b\"] = 98] = \"b\";\n CharCodes[CharCodes[\"d\"] = 100] = \"d\";\n CharCodes[CharCodes[\"e\"] = 101] = \"e\";\n CharCodes[CharCodes[\"f\"] = 102] = \"f\";\n CharCodes[CharCodes[\"i\"] = 105] = \"i\";\n CharCodes[CharCodes[\"j\"] = 106] = \"j\";\n CharCodes[CharCodes[\"l\"] = 108] = \"l\";\n CharCodes[CharCodes[\"m\"] = 109] = \"m\";\n CharCodes[CharCodes[\"n\"] = 110] = \"n\";\n CharCodes[CharCodes[\"o\"] = 111] = \"o\";\n CharCodes[CharCodes[\"r\"] = 114] = \"r\";\n CharCodes[CharCodes[\"s\"] = 115] = \"s\";\n CharCodes[CharCodes[\"t\"] = 116] = \"t\";\n CharCodes[CharCodes[\"u\"] = 117] = \"u\";\n CharCodes[CharCodes[\"x\"] = 120] = \"x\";\n CharCodes[CharCodes[\"LeftCurly\"] = 123] = \"LeftCurly\";\n CharCodes[CharCodes[\"RightCurly\"] = 125] = \"RightCurly\";\n CharCodes[CharCodes[\"Tilde\"] = 126] = \"Tilde\";\n})(CharCodes || (CharCodes = {}));\nexport default CharCodes;\n//# sourceMappingURL=CharCodes.js.map","import CharCodes from \"../syntax/CharCodes\";\nimport { charFromCode, copyStringIntoBuffer } from \"../../utils\";\nvar PDFHeader = /** @class */ (function () {\n function PDFHeader(major, minor) {\n this.major = String(major);\n this.minor = String(minor);\n }\n PDFHeader.prototype.toString = function () {\n var bc = charFromCode(129);\n return \"%PDF-\" + this.major + \".\" + this.minor + \"\\n%\" + bc + bc + bc + bc;\n };\n PDFHeader.prototype.sizeInBytes = function () {\n return 12 + this.major.length + this.minor.length;\n };\n PDFHeader.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.P;\n buffer[offset++] = CharCodes.D;\n buffer[offset++] = CharCodes.F;\n buffer[offset++] = CharCodes.Dash;\n offset += copyStringIntoBuffer(this.major, buffer, offset);\n buffer[offset++] = CharCodes.Period;\n offset += copyStringIntoBuffer(this.minor, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n buffer[offset++] = 129;\n return offset - initialOffset;\n };\n PDFHeader.forVersion = function (major, minor) {\n return new PDFHeader(major, minor);\n };\n return PDFHeader;\n}());\nexport default PDFHeader;\n//# sourceMappingURL=PDFHeader.js.map","import { MethodNotImplementedError } from \"../errors\";\nvar PDFObject = /** @class */ (function () {\n function PDFObject() {\n }\n PDFObject.prototype.clone = function (_context) {\n throw new MethodNotImplementedError(this.constructor.name, 'clone');\n };\n PDFObject.prototype.toString = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'toString');\n };\n PDFObject.prototype.sizeInBytes = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'sizeInBytes');\n };\n PDFObject.prototype.copyBytesInto = function (_buffer, _offset) {\n throw new MethodNotImplementedError(this.constructor.name, 'copyBytesInto');\n };\n return PDFObject;\n}());\nexport default PDFObject;\n//# sourceMappingURL=PDFObject.js.map","import { __extends } from \"tslib\";\nimport { copyStringIntoBuffer, numberToString } from \"../../utils/index\";\nimport PDFObject from \"./PDFObject\";\nvar PDFNumber = /** @class */ (function (_super) {\n __extends(PDFNumber, _super);\n function PDFNumber(value) {\n var _this = _super.call(this) || this;\n _this.numberValue = value;\n _this.stringValue = numberToString(value);\n return _this;\n }\n PDFNumber.prototype.asNumber = function () {\n return this.numberValue;\n };\n /** @deprecated in favor of [[PDFNumber.asNumber]] */\n PDFNumber.prototype.value = function () {\n return this.numberValue;\n };\n PDFNumber.prototype.clone = function () {\n return PDFNumber.of(this.numberValue);\n };\n PDFNumber.prototype.toString = function () {\n return this.stringValue;\n };\n PDFNumber.prototype.sizeInBytes = function () {\n return this.stringValue.length;\n };\n PDFNumber.prototype.copyBytesInto = function (buffer, offset) {\n offset += copyStringIntoBuffer(this.stringValue, buffer, offset);\n return this.stringValue.length;\n };\n PDFNumber.of = function (value) { return new PDFNumber(value); };\n return PDFNumber;\n}(PDFObject));\nexport default PDFNumber;\n//# sourceMappingURL=PDFNumber.js.map","import { __extends, __spreadArrays } from \"tslib\";\nimport PDFNumber from \"./PDFNumber\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { PDFArrayIsNotRectangleError } from \"../errors\";\nvar PDFArray = /** @class */ (function (_super) {\n __extends(PDFArray, _super);\n function PDFArray(context) {\n var _this = _super.call(this) || this;\n _this.array = [];\n _this.context = context;\n return _this;\n }\n PDFArray.prototype.size = function () {\n return this.array.length;\n };\n PDFArray.prototype.push = function (object) {\n this.array.push(object);\n };\n PDFArray.prototype.insert = function (index, object) {\n this.array.splice(index, 0, object);\n };\n PDFArray.prototype.indexOf = function (object) {\n var index = this.array.indexOf(object);\n return index === -1 ? undefined : index;\n };\n PDFArray.prototype.remove = function (index) {\n this.array.splice(index, 1);\n };\n PDFArray.prototype.set = function (idx, object) {\n this.array[idx] = object;\n };\n PDFArray.prototype.get = function (index) {\n return this.array[index];\n };\n PDFArray.prototype.lookupMaybe = function (index) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n return (_a = this.context).lookupMaybe.apply(_a, __spreadArrays([this.get(index)], types));\n };\n PDFArray.prototype.lookup = function (index) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n return (_a = this.context).lookup.apply(_a, __spreadArrays([this.get(index)], types));\n };\n PDFArray.prototype.asRectangle = function () {\n if (this.size() !== 4)\n throw new PDFArrayIsNotRectangleError(this.size());\n var lowerLeftX = this.lookup(0, PDFNumber).asNumber();\n var lowerLeftY = this.lookup(1, PDFNumber).asNumber();\n var upperRightX = this.lookup(2, PDFNumber).asNumber();\n var upperRightY = this.lookup(3, PDFNumber).asNumber();\n var x = lowerLeftX;\n var y = lowerLeftY;\n var width = upperRightX - lowerLeftX;\n var height = upperRightY - lowerLeftY;\n return { x: x, y: y, width: width, height: height };\n };\n PDFArray.prototype.asArray = function () {\n return this.array.slice();\n };\n PDFArray.prototype.clone = function (context) {\n var clone = PDFArray.withContext(context || this.context);\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n clone.push(this.array[idx]);\n }\n return clone;\n };\n PDFArray.prototype.toString = function () {\n var arrayString = '[ ';\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n arrayString += this.get(idx).toString();\n arrayString += ' ';\n }\n arrayString += ']';\n return arrayString;\n };\n PDFArray.prototype.sizeInBytes = function () {\n var size = 3;\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n size += this.get(idx).sizeInBytes() + 1;\n }\n return size;\n };\n PDFArray.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.LeftSquareBracket;\n buffer[offset++] = CharCodes.Space;\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n offset += this.get(idx).copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Space;\n }\n buffer[offset++] = CharCodes.RightSquareBracket;\n return offset - initialOffset;\n };\n PDFArray.prototype.scalePDFNumbers = function (x, y) {\n for (var idx = 0, len = this.size(); idx < len; idx++) {\n var el = this.lookup(idx);\n if (el instanceof PDFNumber) {\n var factor = idx % 2 === 0 ? x : y;\n this.set(idx, PDFNumber.of(el.asNumber() * factor));\n }\n }\n };\n PDFArray.withContext = function (context) { return new PDFArray(context); };\n return PDFArray;\n}(PDFObject));\nexport default PDFArray;\n//# sourceMappingURL=PDFArray.js.map","import { __extends } from \"tslib\";\nimport { PrivateConstructorError } from \"../errors\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar ENFORCER = {};\nvar PDFBool = /** @class */ (function (_super) {\n __extends(PDFBool, _super);\n function PDFBool(enforcer, value) {\n var _this = this;\n if (enforcer !== ENFORCER)\n throw new PrivateConstructorError('PDFBool');\n _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n PDFBool.prototype.asBoolean = function () {\n return this.value;\n };\n PDFBool.prototype.clone = function () {\n return this;\n };\n PDFBool.prototype.toString = function () {\n return String(this.value);\n };\n PDFBool.prototype.sizeInBytes = function () {\n return this.value ? 4 : 5;\n };\n PDFBool.prototype.copyBytesInto = function (buffer, offset) {\n if (this.value) {\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.u;\n buffer[offset++] = CharCodes.e;\n return 4;\n }\n else {\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.e;\n return 5;\n }\n };\n PDFBool.True = new PDFBool(ENFORCER, true);\n PDFBool.False = new PDFBool(ENFORCER, false);\n return PDFBool;\n}(PDFObject));\nexport default PDFBool;\n//# sourceMappingURL=PDFBool.js.map","import CharCodes from \"./CharCodes\";\nexport var IsDelimiter = new Uint8Array(256);\nIsDelimiter[CharCodes.LeftParen] = 1;\nIsDelimiter[CharCodes.RightParen] = 1;\nIsDelimiter[CharCodes.LessThan] = 1;\nIsDelimiter[CharCodes.GreaterThan] = 1;\nIsDelimiter[CharCodes.LeftSquareBracket] = 1;\nIsDelimiter[CharCodes.RightSquareBracket] = 1;\nIsDelimiter[CharCodes.LeftCurly] = 1;\nIsDelimiter[CharCodes.RightCurly] = 1;\nIsDelimiter[CharCodes.ForwardSlash] = 1;\nIsDelimiter[CharCodes.Percent] = 1;\n//# sourceMappingURL=Delimiters.js.map","import CharCodes from \"./CharCodes\";\nexport var IsWhitespace = new Uint8Array(256);\nIsWhitespace[CharCodes.Null] = 1;\nIsWhitespace[CharCodes.Tab] = 1;\nIsWhitespace[CharCodes.Newline] = 1;\nIsWhitespace[CharCodes.FormFeed] = 1;\nIsWhitespace[CharCodes.CarriageReturn] = 1;\nIsWhitespace[CharCodes.Space] = 1;\n//# sourceMappingURL=Whitespace.js.map","import CharCodes from \"./CharCodes\";\nimport { IsDelimiter } from \"./Delimiters\";\nimport { IsWhitespace } from \"./Whitespace\";\nexport var IsIrregular = new Uint8Array(256);\nfor (var idx = 0, len = 256; idx < len; idx++) {\n IsIrregular[idx] = IsWhitespace[idx] || IsDelimiter[idx] ? 1 : 0;\n}\nIsIrregular[CharCodes.Hash] = 1;\n//# sourceMappingURL=Irregular.js.map","import { __extends } from \"tslib\";\nimport { PrivateConstructorError } from \"../errors\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { IsIrregular } from \"../syntax/Irregular\";\nimport { charFromHexCode, copyStringIntoBuffer, toCharCode, toHexString, } from \"../../utils\";\nvar decodeName = function (name) {\n return name.replace(/#([\\dABCDEF]{2})/g, function (_, hex) { return charFromHexCode(hex); });\n};\nvar isRegularChar = function (charCode) {\n return charCode >= CharCodes.ExclamationPoint &&\n charCode <= CharCodes.Tilde &&\n !IsIrregular[charCode];\n};\nvar ENFORCER = {};\nvar pool = new Map();\nvar PDFName = /** @class */ (function (_super) {\n __extends(PDFName, _super);\n function PDFName(enforcer, name) {\n var _this = this;\n if (enforcer !== ENFORCER)\n throw new PrivateConstructorError('PDFName');\n _this = _super.call(this) || this;\n var encodedName = '/';\n for (var idx = 0, len = name.length; idx < len; idx++) {\n var character = name[idx];\n var code = toCharCode(character);\n encodedName += isRegularChar(code) ? character : \"#\" + toHexString(code);\n }\n _this.encodedName = encodedName;\n return _this;\n }\n PDFName.prototype.asBytes = function () {\n var bytes = [];\n var hex = '';\n var escaped = false;\n var pushByte = function (byte) {\n if (byte !== undefined)\n bytes.push(byte);\n escaped = false;\n };\n for (var idx = 1, len = this.encodedName.length; idx < len; idx++) {\n var char = this.encodedName[idx];\n var byte = toCharCode(char);\n var nextChar = this.encodedName[idx + 1];\n if (!escaped) {\n if (byte === CharCodes.Hash)\n escaped = true;\n else\n pushByte(byte);\n }\n else {\n if ((byte >= CharCodes.Zero && byte <= CharCodes.Nine) ||\n (byte >= CharCodes.a && byte <= CharCodes.f) ||\n (byte >= CharCodes.A && byte <= CharCodes.F)) {\n hex += char;\n if (hex.length === 2 ||\n !((nextChar >= '0' && nextChar <= '9') ||\n (nextChar >= 'a' && nextChar <= 'f') ||\n (nextChar >= 'A' && nextChar <= 'F'))) {\n pushByte(parseInt(hex, 16));\n hex = '';\n }\n }\n else {\n pushByte(byte);\n }\n }\n }\n return new Uint8Array(bytes);\n };\n // TODO: This should probably use `utf8Decode()`\n // TODO: Polyfill Array.from?\n PDFName.prototype.decodeText = function () {\n var bytes = this.asBytes();\n return String.fromCharCode.apply(String, Array.from(bytes));\n };\n PDFName.prototype.asString = function () {\n return this.encodedName;\n };\n /** @deprecated in favor of [[PDFName.asString]] */\n PDFName.prototype.value = function () {\n return this.encodedName;\n };\n PDFName.prototype.clone = function () {\n return this;\n };\n PDFName.prototype.toString = function () {\n return this.encodedName;\n };\n PDFName.prototype.sizeInBytes = function () {\n return this.encodedName.length;\n };\n PDFName.prototype.copyBytesInto = function (buffer, offset) {\n offset += copyStringIntoBuffer(this.encodedName, buffer, offset);\n return this.encodedName.length;\n };\n PDFName.of = function (name) {\n var decodedValue = decodeName(name);\n var instance = pool.get(decodedValue);\n if (!instance) {\n instance = new PDFName(ENFORCER, decodedValue);\n pool.set(decodedValue, instance);\n }\n return instance;\n };\n /* tslint:disable member-ordering */\n PDFName.Length = PDFName.of('Length');\n PDFName.FlateDecode = PDFName.of('FlateDecode');\n PDFName.Resources = PDFName.of('Resources');\n PDFName.Font = PDFName.of('Font');\n PDFName.XObject = PDFName.of('XObject');\n PDFName.ExtGState = PDFName.of('ExtGState');\n PDFName.Contents = PDFName.of('Contents');\n PDFName.Type = PDFName.of('Type');\n PDFName.Parent = PDFName.of('Parent');\n PDFName.MediaBox = PDFName.of('MediaBox');\n PDFName.Page = PDFName.of('Page');\n PDFName.Annots = PDFName.of('Annots');\n PDFName.TrimBox = PDFName.of('TrimBox');\n PDFName.ArtBox = PDFName.of('ArtBox');\n PDFName.BleedBox = PDFName.of('BleedBox');\n PDFName.CropBox = PDFName.of('CropBox');\n PDFName.Rotate = PDFName.of('Rotate');\n PDFName.Title = PDFName.of('Title');\n PDFName.Author = PDFName.of('Author');\n PDFName.Subject = PDFName.of('Subject');\n PDFName.Creator = PDFName.of('Creator');\n PDFName.Keywords = PDFName.of('Keywords');\n PDFName.Producer = PDFName.of('Producer');\n PDFName.CreationDate = PDFName.of('CreationDate');\n PDFName.ModDate = PDFName.of('ModDate');\n return PDFName;\n}(PDFObject));\nexport default PDFName;\n//# sourceMappingURL=PDFName.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFNull = /** @class */ (function (_super) {\n __extends(PDFNull, _super);\n function PDFNull() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFNull.prototype.asNull = function () {\n return null;\n };\n PDFNull.prototype.clone = function () {\n return this;\n };\n PDFNull.prototype.toString = function () {\n return 'null';\n };\n PDFNull.prototype.sizeInBytes = function () {\n return 4;\n };\n PDFNull.prototype.copyBytesInto = function (buffer, offset) {\n buffer[offset++] = CharCodes.n;\n buffer[offset++] = CharCodes.u;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.l;\n return 4;\n };\n return PDFNull;\n}(PDFObject));\nexport default new PDFNull();\n//# sourceMappingURL=PDFNull.js.map","import { __extends, __spreadArrays } from \"tslib\";\nimport PDFName from \"./PDFName\";\nimport PDFNull from \"./PDFNull\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFDict = /** @class */ (function (_super) {\n __extends(PDFDict, _super);\n function PDFDict(map, context) {\n var _this = _super.call(this) || this;\n _this.dict = map;\n _this.context = context;\n return _this;\n }\n PDFDict.prototype.keys = function () {\n return Array.from(this.dict.keys());\n };\n PDFDict.prototype.values = function () {\n return Array.from(this.dict.values());\n };\n PDFDict.prototype.entries = function () {\n return Array.from(this.dict.entries());\n };\n PDFDict.prototype.set = function (key, value) {\n this.dict.set(key, value);\n };\n PDFDict.prototype.get = function (key, \n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n preservePDFNull) {\n if (preservePDFNull === void 0) { preservePDFNull = false; }\n var value = this.dict.get(key);\n if (value === PDFNull && !preservePDFNull)\n return undefined;\n return value;\n };\n PDFDict.prototype.has = function (key) {\n var value = this.dict.get(key);\n return value !== undefined && value !== PDFNull;\n };\n PDFDict.prototype.lookupMaybe = function (key) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n var preservePDFNull = types.includes(PDFNull);\n var value = (_a = this.context).lookupMaybe.apply(_a, __spreadArrays([this.get(key, preservePDFNull)], types));\n if (value === PDFNull && !preservePDFNull)\n return undefined;\n return value;\n };\n PDFDict.prototype.lookup = function (key) {\n var _a;\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n var preservePDFNull = types.includes(PDFNull);\n var value = (_a = this.context).lookup.apply(_a, __spreadArrays([this.get(key, preservePDFNull)], types));\n if (value === PDFNull && !preservePDFNull)\n return undefined;\n return value;\n };\n PDFDict.prototype.delete = function (key) {\n return this.dict.delete(key);\n };\n PDFDict.prototype.asMap = function () {\n return new Map(this.dict);\n };\n /** Generate a random key that doesn't exist in current key set */\n PDFDict.prototype.uniqueKey = function (tag) {\n if (tag === void 0) { tag = ''; }\n var existingKeys = this.keys();\n var key = PDFName.of(this.context.addRandomSuffix(tag, 10));\n while (existingKeys.includes(key)) {\n key = PDFName.of(this.context.addRandomSuffix(tag, 10));\n }\n return key;\n };\n PDFDict.prototype.clone = function (context) {\n var clone = PDFDict.withContext(context || this.context);\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clone.set(key, value);\n }\n return clone;\n };\n PDFDict.prototype.toString = function () {\n var dictString = '<<\\n';\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n dictString += key.toString() + ' ' + value.toString() + '\\n';\n }\n dictString += '>>';\n return dictString;\n };\n PDFDict.prototype.sizeInBytes = function () {\n var size = 5;\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n size += key.sizeInBytes() + value.sizeInBytes() + 2;\n }\n return size;\n };\n PDFDict.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.LessThan;\n buffer[offset++] = CharCodes.LessThan;\n buffer[offset++] = CharCodes.Newline;\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n offset += key.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Space;\n offset += value.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n buffer[offset++] = CharCodes.GreaterThan;\n buffer[offset++] = CharCodes.GreaterThan;\n return offset - initialOffset;\n };\n PDFDict.withContext = function (context) { return new PDFDict(new Map(), context); };\n PDFDict.fromMapWithContext = function (map, context) {\n return new PDFDict(map, context);\n };\n return PDFDict;\n}(PDFObject));\nexport default PDFDict;\n//# sourceMappingURL=PDFDict.js.map","import { __extends } from \"tslib\";\nimport { MethodNotImplementedError } from \"../errors\";\nimport PDFName from \"./PDFName\";\nimport PDFNumber from \"./PDFNumber\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFStream = /** @class */ (function (_super) {\n __extends(PDFStream, _super);\n function PDFStream(dict) {\n var _this = _super.call(this) || this;\n _this.dict = dict;\n return _this;\n }\n PDFStream.prototype.clone = function (_context) {\n throw new MethodNotImplementedError(this.constructor.name, 'clone');\n };\n PDFStream.prototype.getContentsString = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getContentsString');\n };\n PDFStream.prototype.getContents = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getContents');\n };\n PDFStream.prototype.getContentsSize = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getContentsSize');\n };\n PDFStream.prototype.updateDict = function () {\n var contentsSize = this.getContentsSize();\n this.dict.set(PDFName.Length, PDFNumber.of(contentsSize));\n };\n PDFStream.prototype.sizeInBytes = function () {\n this.updateDict();\n return this.dict.sizeInBytes() + this.getContentsSize() + 18;\n };\n PDFStream.prototype.toString = function () {\n this.updateDict();\n var streamString = this.dict.toString();\n streamString += '\\nstream\\n';\n streamString += this.getContentsString();\n streamString += '\\nendstream';\n return streamString;\n };\n PDFStream.prototype.copyBytesInto = function (buffer, offset) {\n this.updateDict();\n var initialOffset = offset;\n offset += this.dict.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.m;\n buffer[offset++] = CharCodes.Newline;\n var contents = this.getContents();\n for (var idx = 0, len = contents.length; idx < len; idx++) {\n buffer[offset++] = contents[idx];\n }\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.n;\n buffer[offset++] = CharCodes.d;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.m;\n return offset - initialOffset;\n };\n return PDFStream;\n}(PDFObject));\nexport default PDFStream;\n//# sourceMappingURL=PDFStream.js.map","import { __extends } from \"tslib\";\nimport PDFStream from \"./PDFStream\";\nimport { arrayAsString } from \"../../utils\";\nvar PDFRawStream = /** @class */ (function (_super) {\n __extends(PDFRawStream, _super);\n function PDFRawStream(dict, contents) {\n var _this = _super.call(this, dict) || this;\n _this.contents = contents;\n return _this;\n }\n PDFRawStream.prototype.asUint8Array = function () {\n return this.contents.slice();\n };\n PDFRawStream.prototype.clone = function (context) {\n return PDFRawStream.of(this.dict.clone(context), this.contents.slice());\n };\n PDFRawStream.prototype.getContentsString = function () {\n return arrayAsString(this.contents);\n };\n PDFRawStream.prototype.getContents = function () {\n return this.contents;\n };\n PDFRawStream.prototype.getContentsSize = function () {\n return this.contents.length;\n };\n PDFRawStream.of = function (dict, contents) {\n return new PDFRawStream(dict, contents);\n };\n return PDFRawStream;\n}(PDFStream));\nexport default PDFRawStream;\n//# sourceMappingURL=PDFRawStream.js.map","import { __extends } from \"tslib\";\nimport { PrivateConstructorError } from \"../errors\";\nimport PDFObject from \"./PDFObject\";\nimport { copyStringIntoBuffer } from \"../../utils\";\nvar ENFORCER = {};\nvar pool = new Map();\nvar PDFRef = /** @class */ (function (_super) {\n __extends(PDFRef, _super);\n function PDFRef(enforcer, objectNumber, generationNumber) {\n var _this = this;\n if (enforcer !== ENFORCER)\n throw new PrivateConstructorError('PDFRef');\n _this = _super.call(this) || this;\n _this.objectNumber = objectNumber;\n _this.generationNumber = generationNumber;\n _this.tag = objectNumber + \" \" + generationNumber + \" R\";\n return _this;\n }\n PDFRef.prototype.clone = function () {\n return this;\n };\n PDFRef.prototype.toString = function () {\n return this.tag;\n };\n PDFRef.prototype.sizeInBytes = function () {\n return this.tag.length;\n };\n PDFRef.prototype.copyBytesInto = function (buffer, offset) {\n offset += copyStringIntoBuffer(this.tag, buffer, offset);\n return this.tag.length;\n };\n PDFRef.of = function (objectNumber, generationNumber) {\n if (generationNumber === void 0) { generationNumber = 0; }\n var tag = objectNumber + \" \" + generationNumber + \" R\";\n var instance = pool.get(tag);\n if (!instance) {\n instance = new PDFRef(ENFORCER, objectNumber, generationNumber);\n pool.set(tag, instance);\n }\n return instance;\n };\n return PDFRef;\n}(PDFObject));\nexport default PDFRef;\n//# sourceMappingURL=PDFRef.js.map","import PDFObject from \"../objects/PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer } from \"../../utils\";\nvar PDFOperator = /** @class */ (function () {\n function PDFOperator(name, args) {\n this.name = name;\n this.args = args || [];\n }\n PDFOperator.prototype.clone = function (context) {\n var args = new Array(this.args.length);\n for (var idx = 0, len = args.length; idx < len; idx++) {\n var arg = this.args[idx];\n args[idx] = arg instanceof PDFObject ? arg.clone(context) : arg;\n }\n return PDFOperator.of(this.name, args);\n };\n PDFOperator.prototype.toString = function () {\n var value = '';\n for (var idx = 0, len = this.args.length; idx < len; idx++) {\n value += String(this.args[idx]) + ' ';\n }\n value += this.name;\n return value;\n };\n PDFOperator.prototype.sizeInBytes = function () {\n var size = 0;\n for (var idx = 0, len = this.args.length; idx < len; idx++) {\n var arg = this.args[idx];\n size += (arg instanceof PDFObject ? arg.sizeInBytes() : arg.length) + 1;\n }\n size += this.name.length;\n return size;\n };\n PDFOperator.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n for (var idx = 0, len = this.args.length; idx < len; idx++) {\n var arg = this.args[idx];\n if (arg instanceof PDFObject) {\n offset += arg.copyBytesInto(buffer, offset);\n }\n else {\n offset += copyStringIntoBuffer(arg, buffer, offset);\n }\n buffer[offset++] = CharCodes.Space;\n }\n offset += copyStringIntoBuffer(this.name, buffer, offset);\n return offset - initialOffset;\n };\n PDFOperator.of = function (name, args) {\n return new PDFOperator(name, args);\n };\n return PDFOperator;\n}());\nexport default PDFOperator;\n//# sourceMappingURL=PDFOperator.js.map","var PDFOperatorNames;\n(function (PDFOperatorNames) {\n // Non Stroking Color Operators\n PDFOperatorNames[\"NonStrokingColor\"] = \"sc\";\n PDFOperatorNames[\"NonStrokingColorN\"] = \"scn\";\n PDFOperatorNames[\"NonStrokingColorRgb\"] = \"rg\";\n PDFOperatorNames[\"NonStrokingColorGray\"] = \"g\";\n PDFOperatorNames[\"NonStrokingColorCmyk\"] = \"k\";\n PDFOperatorNames[\"NonStrokingColorspace\"] = \"cs\";\n // Stroking Color Operators\n PDFOperatorNames[\"StrokingColor\"] = \"SC\";\n PDFOperatorNames[\"StrokingColorN\"] = \"SCN\";\n PDFOperatorNames[\"StrokingColorRgb\"] = \"RG\";\n PDFOperatorNames[\"StrokingColorGray\"] = \"G\";\n PDFOperatorNames[\"StrokingColorCmyk\"] = \"K\";\n PDFOperatorNames[\"StrokingColorspace\"] = \"CS\";\n // Marked Content Operators\n PDFOperatorNames[\"BeginMarkedContentSequence\"] = \"BDC\";\n PDFOperatorNames[\"BeginMarkedContent\"] = \"BMC\";\n PDFOperatorNames[\"EndMarkedContent\"] = \"EMC\";\n PDFOperatorNames[\"MarkedContentPointWithProps\"] = \"DP\";\n PDFOperatorNames[\"MarkedContentPoint\"] = \"MP\";\n PDFOperatorNames[\"DrawObject\"] = \"Do\";\n // Graphics State Operators\n PDFOperatorNames[\"ConcatTransformationMatrix\"] = \"cm\";\n PDFOperatorNames[\"PopGraphicsState\"] = \"Q\";\n PDFOperatorNames[\"PushGraphicsState\"] = \"q\";\n PDFOperatorNames[\"SetFlatness\"] = \"i\";\n PDFOperatorNames[\"SetGraphicsStateParams\"] = \"gs\";\n PDFOperatorNames[\"SetLineCapStyle\"] = \"J\";\n PDFOperatorNames[\"SetLineDashPattern\"] = \"d\";\n PDFOperatorNames[\"SetLineJoinStyle\"] = \"j\";\n PDFOperatorNames[\"SetLineMiterLimit\"] = \"M\";\n PDFOperatorNames[\"SetLineWidth\"] = \"w\";\n PDFOperatorNames[\"SetTextMatrix\"] = \"Tm\";\n PDFOperatorNames[\"SetRenderingIntent\"] = \"ri\";\n // Graphics Operators\n PDFOperatorNames[\"AppendRectangle\"] = \"re\";\n PDFOperatorNames[\"BeginInlineImage\"] = \"BI\";\n PDFOperatorNames[\"BeginInlineImageData\"] = \"ID\";\n PDFOperatorNames[\"EndInlineImage\"] = \"EI\";\n PDFOperatorNames[\"ClipEvenOdd\"] = \"W*\";\n PDFOperatorNames[\"ClipNonZero\"] = \"W\";\n PDFOperatorNames[\"CloseAndStroke\"] = \"s\";\n PDFOperatorNames[\"CloseFillEvenOddAndStroke\"] = \"b*\";\n PDFOperatorNames[\"CloseFillNonZeroAndStroke\"] = \"b\";\n PDFOperatorNames[\"ClosePath\"] = \"h\";\n PDFOperatorNames[\"AppendBezierCurve\"] = \"c\";\n PDFOperatorNames[\"CurveToReplicateFinalPoint\"] = \"y\";\n PDFOperatorNames[\"CurveToReplicateInitialPoint\"] = \"v\";\n PDFOperatorNames[\"EndPath\"] = \"n\";\n PDFOperatorNames[\"FillEvenOddAndStroke\"] = \"B*\";\n PDFOperatorNames[\"FillEvenOdd\"] = \"f*\";\n PDFOperatorNames[\"FillNonZeroAndStroke\"] = \"B\";\n PDFOperatorNames[\"FillNonZero\"] = \"f\";\n PDFOperatorNames[\"LegacyFillNonZero\"] = \"F\";\n PDFOperatorNames[\"LineTo\"] = \"l\";\n PDFOperatorNames[\"MoveTo\"] = \"m\";\n PDFOperatorNames[\"ShadingFill\"] = \"sh\";\n PDFOperatorNames[\"StrokePath\"] = \"S\";\n // Text Operators\n PDFOperatorNames[\"BeginText\"] = \"BT\";\n PDFOperatorNames[\"EndText\"] = \"ET\";\n PDFOperatorNames[\"MoveText\"] = \"Td\";\n PDFOperatorNames[\"MoveTextSetLeading\"] = \"TD\";\n PDFOperatorNames[\"NextLine\"] = \"T*\";\n PDFOperatorNames[\"SetCharacterSpacing\"] = \"Tc\";\n PDFOperatorNames[\"SetFontAndSize\"] = \"Tf\";\n PDFOperatorNames[\"SetTextHorizontalScaling\"] = \"Tz\";\n PDFOperatorNames[\"SetTextLineHeight\"] = \"TL\";\n PDFOperatorNames[\"SetTextRenderingMode\"] = \"Tr\";\n PDFOperatorNames[\"SetTextRise\"] = \"Ts\";\n PDFOperatorNames[\"SetWordSpacing\"] = \"Tw\";\n PDFOperatorNames[\"ShowText\"] = \"Tj\";\n PDFOperatorNames[\"ShowTextAdjusted\"] = \"TJ\";\n PDFOperatorNames[\"ShowTextLine\"] = \"'\";\n PDFOperatorNames[\"ShowTextLineAndSpace\"] = \"\\\"\";\n // Type3 Font Operators\n PDFOperatorNames[\"Type3D0\"] = \"d0\";\n PDFOperatorNames[\"Type3D1\"] = \"d1\";\n // Compatibility Section Operators\n PDFOperatorNames[\"BeginCompatibilitySection\"] = \"BX\";\n PDFOperatorNames[\"EndCompatibilitySection\"] = \"EX\";\n})(PDFOperatorNames || (PDFOperatorNames = {}));\nexport default PDFOperatorNames;\n//# sourceMappingURL=PDFOperatorNames.js.map","import { __extends } from \"tslib\";\nimport pako from 'pako';\nimport { MethodNotImplementedError } from \"../errors\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFStream from \"../objects/PDFStream\";\nimport { Cache } from \"../../utils\";\nvar PDFFlateStream = /** @class */ (function (_super) {\n __extends(PDFFlateStream, _super);\n function PDFFlateStream(dict, encode) {\n var _this = _super.call(this, dict) || this;\n _this.computeContents = function () {\n var unencodedContents = _this.getUnencodedContents();\n return _this.encode ? pako.deflate(unencodedContents) : unencodedContents;\n };\n _this.encode = encode;\n if (encode)\n dict.set(PDFName.of('Filter'), PDFName.of('FlateDecode'));\n _this.contentsCache = Cache.populatedBy(_this.computeContents);\n return _this;\n }\n PDFFlateStream.prototype.getContents = function () {\n return this.contentsCache.access();\n };\n PDFFlateStream.prototype.getContentsSize = function () {\n return this.contentsCache.access().length;\n };\n PDFFlateStream.prototype.getUnencodedContents = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'getUnencodedContents');\n };\n return PDFFlateStream;\n}(PDFStream));\nexport default PDFFlateStream;\n//# sourceMappingURL=PDFFlateStream.js.map","import { __extends } from \"tslib\";\nimport PDFFlateStream from \"./PDFFlateStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nvar PDFContentStream = /** @class */ (function (_super) {\n __extends(PDFContentStream, _super);\n function PDFContentStream(dict, operators, encode) {\n if (encode === void 0) { encode = true; }\n var _this = _super.call(this, dict, encode) || this;\n _this.operators = operators;\n return _this;\n }\n PDFContentStream.prototype.push = function () {\n var _a;\n var operators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operators[_i] = arguments[_i];\n }\n (_a = this.operators).push.apply(_a, operators);\n };\n PDFContentStream.prototype.clone = function (context) {\n var operators = new Array(this.operators.length);\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n operators[idx] = this.operators[idx].clone(context);\n }\n var _a = this, dict = _a.dict, encode = _a.encode;\n return PDFContentStream.of(dict.clone(context), operators, encode);\n };\n PDFContentStream.prototype.getContentsString = function () {\n var value = '';\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n value += this.operators[idx] + \"\\n\";\n }\n return value;\n };\n PDFContentStream.prototype.getUnencodedContents = function () {\n var buffer = new Uint8Array(this.getUnencodedContentsSize());\n var offset = 0;\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n offset += this.operators[idx].copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n return buffer;\n };\n PDFContentStream.prototype.getUnencodedContentsSize = function () {\n var size = 0;\n for (var idx = 0, len = this.operators.length; idx < len; idx++) {\n size += this.operators[idx].sizeInBytes() + 1;\n }\n return size;\n };\n PDFContentStream.of = function (dict, operators, encode) {\n if (encode === void 0) { encode = true; }\n return new PDFContentStream(dict, operators, encode);\n };\n return PDFContentStream;\n}(PDFFlateStream));\nexport default PDFContentStream;\n//# sourceMappingURL=PDFContentStream.js.map","/**\n * Generates a pseudo random number. Although it is not cryptographically secure\n * and uniformly distributed, it is not a concern for the intended use-case,\n * which is to generate distinct numbers.\n *\n * Credit: https://stackoverflow.com/a/19303725/10254049\n */\nvar SimpleRNG = /** @class */ (function () {\n function SimpleRNG(seed) {\n this.seed = seed;\n }\n SimpleRNG.prototype.nextInt = function () {\n var x = Math.sin(this.seed++) * 10000;\n return x - Math.floor(x);\n };\n SimpleRNG.withSeed = function (seed) { return new SimpleRNG(seed); };\n return SimpleRNG;\n}());\nexport { SimpleRNG };\n//# sourceMappingURL=rng.js.map","import { __assign } from \"tslib\";\nimport pako from 'pako';\nimport PDFHeader from \"./document/PDFHeader\";\nimport { UnexpectedObjectTypeError } from \"./errors\";\nimport PDFArray from \"./objects/PDFArray\";\nimport PDFBool from \"./objects/PDFBool\";\nimport PDFDict from \"./objects/PDFDict\";\nimport PDFName from \"./objects/PDFName\";\nimport PDFNull from \"./objects/PDFNull\";\nimport PDFNumber from \"./objects/PDFNumber\";\nimport PDFObject from \"./objects/PDFObject\";\nimport PDFRawStream from \"./objects/PDFRawStream\";\nimport PDFRef from \"./objects/PDFRef\";\nimport PDFOperator from \"./operators/PDFOperator\";\nimport Ops from \"./operators/PDFOperatorNames\";\nimport PDFContentStream from \"./structures/PDFContentStream\";\nimport { typedArrayFor } from \"../utils\";\nimport { SimpleRNG } from \"../utils/rng\";\nvar byAscendingObjectNumber = function (_a, _b) {\n var a = _a[0];\n var b = _b[0];\n return a.objectNumber - b.objectNumber;\n};\nvar PDFContext = /** @class */ (function () {\n function PDFContext() {\n this.largestObjectNumber = 0;\n this.header = PDFHeader.forVersion(1, 7);\n this.trailerInfo = {};\n this.indirectObjects = new Map();\n this.rng = SimpleRNG.withSeed(1);\n }\n PDFContext.prototype.assign = function (ref, object) {\n this.indirectObjects.set(ref, object);\n if (ref.objectNumber > this.largestObjectNumber) {\n this.largestObjectNumber = ref.objectNumber;\n }\n };\n PDFContext.prototype.nextRef = function () {\n this.largestObjectNumber += 1;\n return PDFRef.of(this.largestObjectNumber);\n };\n PDFContext.prototype.register = function (object) {\n var ref = this.nextRef();\n this.assign(ref, object);\n return ref;\n };\n PDFContext.prototype.delete = function (ref) {\n return this.indirectObjects.delete(ref);\n };\n PDFContext.prototype.lookupMaybe = function (ref) {\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n // TODO: `preservePDFNull` is for backwards compatibility. Should be\n // removed in next breaking API change.\n var preservePDFNull = types.includes(PDFNull);\n var result = ref instanceof PDFRef ? this.indirectObjects.get(ref) : ref;\n if (!result || (result === PDFNull && !preservePDFNull))\n return undefined;\n for (var idx = 0, len = types.length; idx < len; idx++) {\n var type = types[idx];\n if (type === PDFNull) {\n if (result === PDFNull)\n return result;\n }\n else {\n if (result instanceof type)\n return result;\n }\n }\n throw new UnexpectedObjectTypeError(types, result);\n };\n PDFContext.prototype.lookup = function (ref) {\n var types = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n types[_i - 1] = arguments[_i];\n }\n var result = ref instanceof PDFRef ? this.indirectObjects.get(ref) : ref;\n if (types.length === 0)\n return result;\n for (var idx = 0, len = types.length; idx < len; idx++) {\n var type = types[idx];\n if (type === PDFNull) {\n if (result === PDFNull)\n return result;\n }\n else {\n if (result instanceof type)\n return result;\n }\n }\n throw new UnexpectedObjectTypeError(types, result);\n };\n PDFContext.prototype.getObjectRef = function (pdfObject) {\n var entries = Array.from(this.indirectObjects.entries());\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], ref = _a[0], object = _a[1];\n if (object === pdfObject) {\n return ref;\n }\n }\n return undefined;\n };\n PDFContext.prototype.enumerateIndirectObjects = function () {\n return Array.from(this.indirectObjects.entries()).sort(byAscendingObjectNumber);\n };\n PDFContext.prototype.obj = function (literal) {\n if (literal instanceof PDFObject) {\n return literal;\n }\n else if (literal === null || literal === undefined) {\n return PDFNull;\n }\n else if (typeof literal === 'string') {\n return PDFName.of(literal);\n }\n else if (typeof literal === 'number') {\n return PDFNumber.of(literal);\n }\n else if (typeof literal === 'boolean') {\n return literal ? PDFBool.True : PDFBool.False;\n }\n else if (Array.isArray(literal)) {\n var array = PDFArray.withContext(this);\n for (var idx = 0, len = literal.length; idx < len; idx++) {\n array.push(this.obj(literal[idx]));\n }\n return array;\n }\n else {\n var dict = PDFDict.withContext(this);\n var keys = Object.keys(literal);\n for (var idx = 0, len = keys.length; idx < len; idx++) {\n var key = keys[idx];\n var value = literal[key];\n if (value !== undefined)\n dict.set(PDFName.of(key), this.obj(value));\n }\n return dict;\n }\n };\n PDFContext.prototype.stream = function (contents, dict) {\n if (dict === void 0) { dict = {}; }\n return PDFRawStream.of(this.obj(dict), typedArrayFor(contents));\n };\n PDFContext.prototype.flateStream = function (contents, dict) {\n if (dict === void 0) { dict = {}; }\n return this.stream(pako.deflate(typedArrayFor(contents)), __assign(__assign({}, dict), { Filter: 'FlateDecode' }));\n };\n PDFContext.prototype.contentStream = function (operators, dict) {\n if (dict === void 0) { dict = {}; }\n return PDFContentStream.of(this.obj(dict), operators);\n };\n PDFContext.prototype.formXObject = function (operators, dict) {\n if (dict === void 0) { dict = {}; }\n return this.contentStream(operators, __assign(__assign({ BBox: this.obj([0, 0, 0, 0]), Matrix: this.obj([1, 0, 0, 1, 0, 0]) }, dict), { Type: 'XObject', Subtype: 'Form' }));\n };\n /*\n * Reference to PDFContentStream that contains a single PDFOperator: `q`.\n * Used by [[PDFPageLeaf]] instances to ensure that when content streams are\n * added to a modified PDF, they start in the default, unchanged graphics\n * state.\n */\n PDFContext.prototype.getPushGraphicsStateContentStream = function () {\n if (this.pushGraphicsStateContentStreamRef) {\n return this.pushGraphicsStateContentStreamRef;\n }\n var dict = this.obj({});\n var op = PDFOperator.of(Ops.PushGraphicsState);\n var stream = PDFContentStream.of(dict, [op]);\n this.pushGraphicsStateContentStreamRef = this.register(stream);\n return this.pushGraphicsStateContentStreamRef;\n };\n /*\n * Reference to PDFContentStream that contains a single PDFOperator: `Q`.\n * Used by [[PDFPageLeaf]] instances to ensure that when content streams are\n * added to a modified PDF, they start in the default, unchanged graphics\n * state.\n */\n PDFContext.prototype.getPopGraphicsStateContentStream = function () {\n if (this.popGraphicsStateContentStreamRef) {\n return this.popGraphicsStateContentStreamRef;\n }\n var dict = this.obj({});\n var op = PDFOperator.of(Ops.PopGraphicsState);\n var stream = PDFContentStream.of(dict, [op]);\n this.popGraphicsStateContentStreamRef = this.register(stream);\n return this.popGraphicsStateContentStreamRef;\n };\n PDFContext.prototype.addRandomSuffix = function (prefix, suffixLength) {\n if (suffixLength === void 0) { suffixLength = 4; }\n return prefix + \"-\" + Math.floor(this.rng.nextInt() * Math.pow(10, suffixLength));\n };\n PDFContext.create = function () { return new PDFContext(); };\n return PDFContext;\n}());\nexport default PDFContext;\n//# sourceMappingURL=PDFContext.js.map","import { __extends } from \"tslib\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFStream from \"../objects/PDFStream\";\nvar PDFPageLeaf = /** @class */ (function (_super) {\n __extends(PDFPageLeaf, _super);\n function PDFPageLeaf(map, context, autoNormalizeCTM) {\n if (autoNormalizeCTM === void 0) { autoNormalizeCTM = true; }\n var _this = _super.call(this, map, context) || this;\n _this.normalized = false;\n _this.autoNormalizeCTM = autoNormalizeCTM;\n return _this;\n }\n PDFPageLeaf.prototype.clone = function (context) {\n var clone = PDFPageLeaf.fromMapWithContext(new Map(), context || this.context, this.autoNormalizeCTM);\n var entries = this.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clone.set(key, value);\n }\n return clone;\n };\n PDFPageLeaf.prototype.Parent = function () {\n return this.lookupMaybe(PDFName.Parent, PDFDict);\n };\n PDFPageLeaf.prototype.Contents = function () {\n return this.lookup(PDFName.of('Contents'));\n };\n PDFPageLeaf.prototype.Annots = function () {\n return this.lookupMaybe(PDFName.Annots, PDFArray);\n };\n PDFPageLeaf.prototype.BleedBox = function () {\n return this.lookupMaybe(PDFName.BleedBox, PDFArray);\n };\n PDFPageLeaf.prototype.TrimBox = function () {\n return this.lookupMaybe(PDFName.TrimBox, PDFArray);\n };\n PDFPageLeaf.prototype.ArtBox = function () {\n return this.lookupMaybe(PDFName.ArtBox, PDFArray);\n };\n PDFPageLeaf.prototype.Resources = function () {\n var dictOrRef = this.getInheritableAttribute(PDFName.Resources);\n return this.context.lookupMaybe(dictOrRef, PDFDict);\n };\n PDFPageLeaf.prototype.MediaBox = function () {\n var arrayOrRef = this.getInheritableAttribute(PDFName.MediaBox);\n return this.context.lookup(arrayOrRef, PDFArray);\n };\n PDFPageLeaf.prototype.CropBox = function () {\n var arrayOrRef = this.getInheritableAttribute(PDFName.CropBox);\n return this.context.lookupMaybe(arrayOrRef, PDFArray);\n };\n PDFPageLeaf.prototype.Rotate = function () {\n var numberOrRef = this.getInheritableAttribute(PDFName.Rotate);\n return this.context.lookupMaybe(numberOrRef, PDFNumber);\n };\n PDFPageLeaf.prototype.getInheritableAttribute = function (name) {\n var attribute;\n this.ascend(function (node) {\n if (!attribute)\n attribute = node.get(name);\n });\n return attribute;\n };\n PDFPageLeaf.prototype.setParent = function (parentRef) {\n this.set(PDFName.Parent, parentRef);\n };\n PDFPageLeaf.prototype.addContentStream = function (contentStreamRef) {\n var Contents = this.normalizedEntries().Contents || this.context.obj([]);\n this.set(PDFName.Contents, Contents);\n Contents.push(contentStreamRef);\n };\n PDFPageLeaf.prototype.wrapContentStreams = function (startStream, endStream) {\n var Contents = this.Contents();\n if (Contents instanceof PDFArray) {\n Contents.insert(0, startStream);\n Contents.push(endStream);\n return true;\n }\n return false;\n };\n PDFPageLeaf.prototype.addAnnot = function (annotRef) {\n var Annots = this.normalizedEntries().Annots;\n Annots.push(annotRef);\n };\n PDFPageLeaf.prototype.removeAnnot = function (annotRef) {\n var Annots = this.normalizedEntries().Annots;\n var index = Annots.indexOf(annotRef);\n if (index !== undefined) {\n Annots.remove(index);\n }\n };\n PDFPageLeaf.prototype.setFontDictionary = function (name, fontDictRef) {\n var Font = this.normalizedEntries().Font;\n Font.set(name, fontDictRef);\n };\n PDFPageLeaf.prototype.newFontDictionaryKey = function (tag) {\n var Font = this.normalizedEntries().Font;\n return Font.uniqueKey(tag);\n };\n PDFPageLeaf.prototype.newFontDictionary = function (tag, fontDictRef) {\n var key = this.newFontDictionaryKey(tag);\n this.setFontDictionary(key, fontDictRef);\n return key;\n };\n PDFPageLeaf.prototype.setXObject = function (name, xObjectRef) {\n var XObject = this.normalizedEntries().XObject;\n XObject.set(name, xObjectRef);\n };\n PDFPageLeaf.prototype.newXObjectKey = function (tag) {\n var XObject = this.normalizedEntries().XObject;\n return XObject.uniqueKey(tag);\n };\n PDFPageLeaf.prototype.newXObject = function (tag, xObjectRef) {\n var key = this.newXObjectKey(tag);\n this.setXObject(key, xObjectRef);\n return key;\n };\n PDFPageLeaf.prototype.setExtGState = function (name, extGStateRef) {\n var ExtGState = this.normalizedEntries().ExtGState;\n ExtGState.set(name, extGStateRef);\n };\n PDFPageLeaf.prototype.newExtGStateKey = function (tag) {\n var ExtGState = this.normalizedEntries().ExtGState;\n return ExtGState.uniqueKey(tag);\n };\n PDFPageLeaf.prototype.newExtGState = function (tag, extGStateRef) {\n var key = this.newExtGStateKey(tag);\n this.setExtGState(key, extGStateRef);\n return key;\n };\n PDFPageLeaf.prototype.ascend = function (visitor) {\n visitor(this);\n var Parent = this.Parent();\n if (Parent)\n Parent.ascend(visitor);\n };\n PDFPageLeaf.prototype.normalize = function () {\n if (this.normalized)\n return;\n var context = this.context;\n var contentsRef = this.get(PDFName.Contents);\n var contents = this.context.lookup(contentsRef);\n if (contents instanceof PDFStream) {\n this.set(PDFName.Contents, context.obj([contentsRef]));\n }\n if (this.autoNormalizeCTM) {\n this.wrapContentStreams(this.context.getPushGraphicsStateContentStream(), this.context.getPopGraphicsStateContentStream());\n }\n // TODO: Clone `Resources` if it is inherited\n var dictOrRef = this.getInheritableAttribute(PDFName.Resources);\n var Resources = context.lookupMaybe(dictOrRef, PDFDict) || context.obj({});\n this.set(PDFName.Resources, Resources);\n // TODO: Clone `Font` if it is inherited\n var Font = Resources.lookupMaybe(PDFName.Font, PDFDict) || context.obj({});\n Resources.set(PDFName.Font, Font);\n // TODO: Clone `XObject` if it is inherited\n var XObject = Resources.lookupMaybe(PDFName.XObject, PDFDict) || context.obj({});\n Resources.set(PDFName.XObject, XObject);\n // TODO: Clone `ExtGState` if it is inherited\n var ExtGState = Resources.lookupMaybe(PDFName.ExtGState, PDFDict) || context.obj({});\n Resources.set(PDFName.ExtGState, ExtGState);\n var Annots = this.Annots() || context.obj([]);\n this.set(PDFName.Annots, Annots);\n this.normalized = true;\n };\n PDFPageLeaf.prototype.normalizedEntries = function () {\n this.normalize();\n var Annots = this.Annots();\n var Resources = this.Resources();\n var Contents = this.Contents();\n return {\n Annots: Annots,\n Resources: Resources,\n Contents: Contents,\n Font: Resources.lookup(PDFName.Font, PDFDict),\n XObject: Resources.lookup(PDFName.XObject, PDFDict),\n ExtGState: Resources.lookup(PDFName.ExtGState, PDFDict),\n };\n };\n PDFPageLeaf.InheritableEntries = [\n 'Resources',\n 'MediaBox',\n 'CropBox',\n 'Rotate',\n ];\n PDFPageLeaf.withContextAndParent = function (context, parent) {\n var dict = new Map();\n dict.set(PDFName.Type, PDFName.Page);\n dict.set(PDFName.Parent, parent);\n dict.set(PDFName.Resources, context.obj({}));\n dict.set(PDFName.MediaBox, context.obj([0, 0, 612, 792]));\n return new PDFPageLeaf(dict, context, false);\n };\n PDFPageLeaf.fromMapWithContext = function (map, context, autoNormalizeCTM) {\n if (autoNormalizeCTM === void 0) { autoNormalizeCTM = true; }\n return new PDFPageLeaf(map, context, autoNormalizeCTM);\n };\n return PDFPageLeaf;\n}(PDFDict));\nexport default PDFPageLeaf;\n//# sourceMappingURL=PDFPageLeaf.js.map","import PDFArray from \"./objects/PDFArray\";\nimport PDFDict from \"./objects/PDFDict\";\nimport PDFName from \"./objects/PDFName\";\nimport PDFRef from \"./objects/PDFRef\";\nimport PDFStream from \"./objects/PDFStream\";\nimport PDFPageLeaf from \"./structures/PDFPageLeaf\";\n/**\n * PDFObjectCopier copies PDFObjects from a src context to a dest context.\n * The primary use case for this is to copy pages between PDFs.\n *\n * _Copying_ an object with a PDFObjectCopier is different from _cloning_ an\n * object with its [[PDFObject.clone]] method:\n *\n * ```\n * const src: PDFContext = ...\n * const dest: PDFContext = ...\n * const originalObject: PDFObject = ...\n * const copiedObject = PDFObjectCopier.for(src, dest).copy(originalObject);\n * const clonedObject = originalObject.clone();\n * ```\n *\n * Copying an object is equivalent to cloning it and then copying over any other\n * objects that it references. Note that only dictionaries, arrays, and streams\n * (or structures build from them) can contain indirect references to other\n * objects. Copying a PDFObject that is not a dictionary, array, or stream is\n * supported, but is equivalent to cloning it.\n */\nvar PDFObjectCopier = /** @class */ (function () {\n function PDFObjectCopier(src, dest) {\n var _this = this;\n this.traversedObjects = new Map();\n // prettier-ignore\n this.copy = function (object) { return (object instanceof PDFPageLeaf ? _this.copyPDFPage(object)\n : object instanceof PDFDict ? _this.copyPDFDict(object)\n : object instanceof PDFArray ? _this.copyPDFArray(object)\n : object instanceof PDFStream ? _this.copyPDFStream(object)\n : object instanceof PDFRef ? _this.copyPDFIndirectObject(object)\n : object.clone()); };\n this.copyPDFPage = function (originalPage) {\n var clonedPage = originalPage.clone();\n // Move any entries that the originalPage is inheriting from its parent\n // tree nodes directly into originalPage so they are preserved during\n // the copy.\n var InheritableEntries = PDFPageLeaf.InheritableEntries;\n for (var idx = 0, len = InheritableEntries.length; idx < len; idx++) {\n var key = PDFName.of(InheritableEntries[idx]);\n var value = clonedPage.getInheritableAttribute(key);\n if (!clonedPage.get(key) && value)\n clonedPage.set(key, value);\n }\n // Remove the parent reference to prevent the whole donor document's page\n // tree from being copied when we only need a single page.\n clonedPage.delete(PDFName.of('Parent'));\n return _this.copyPDFDict(clonedPage);\n };\n this.copyPDFDict = function (originalDict) {\n if (_this.traversedObjects.has(originalDict)) {\n return _this.traversedObjects.get(originalDict);\n }\n var clonedDict = originalDict.clone(_this.dest);\n _this.traversedObjects.set(originalDict, clonedDict);\n var entries = originalDict.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clonedDict.set(key, _this.copy(value));\n }\n return clonedDict;\n };\n this.copyPDFArray = function (originalArray) {\n if (_this.traversedObjects.has(originalArray)) {\n return _this.traversedObjects.get(originalArray);\n }\n var clonedArray = originalArray.clone(_this.dest);\n _this.traversedObjects.set(originalArray, clonedArray);\n for (var idx = 0, len = originalArray.size(); idx < len; idx++) {\n var value = originalArray.get(idx);\n clonedArray.set(idx, _this.copy(value));\n }\n return clonedArray;\n };\n this.copyPDFStream = function (originalStream) {\n if (_this.traversedObjects.has(originalStream)) {\n return _this.traversedObjects.get(originalStream);\n }\n var clonedStream = originalStream.clone(_this.dest);\n _this.traversedObjects.set(originalStream, clonedStream);\n var entries = originalStream.dict.entries();\n for (var idx = 0, len = entries.length; idx < len; idx++) {\n var _a = entries[idx], key = _a[0], value = _a[1];\n clonedStream.dict.set(key, _this.copy(value));\n }\n return clonedStream;\n };\n this.copyPDFIndirectObject = function (ref) {\n var alreadyMapped = _this.traversedObjects.has(ref);\n if (!alreadyMapped) {\n var newRef = _this.dest.nextRef();\n _this.traversedObjects.set(ref, newRef);\n var dereferencedValue = _this.src.lookup(ref);\n if (dereferencedValue) {\n var cloned = _this.copy(dereferencedValue);\n _this.dest.assign(newRef, cloned);\n }\n }\n return _this.traversedObjects.get(ref);\n };\n this.src = src;\n this.dest = dest;\n }\n PDFObjectCopier.for = function (src, dest) {\n return new PDFObjectCopier(src, dest);\n };\n return PDFObjectCopier;\n}());\nexport default PDFObjectCopier;\n//# sourceMappingURL=PDFObjectCopier.js.map","import PDFRef from \"../objects/PDFRef\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, padStart } from \"../../utils\";\n/**\n * Entries should be added using the [[addEntry]] and [[addDeletedEntry]]\n * methods **in order of ascending object number**.\n */\nvar PDFCrossRefSection = /** @class */ (function () {\n function PDFCrossRefSection(firstEntry) {\n this.subsections = firstEntry ? [[firstEntry]] : [];\n this.chunkIdx = 0;\n this.chunkLength = firstEntry ? 1 : 0;\n }\n PDFCrossRefSection.prototype.addEntry = function (ref, offset) {\n this.append({ ref: ref, offset: offset, deleted: false });\n };\n PDFCrossRefSection.prototype.addDeletedEntry = function (ref, nextFreeObjectNumber) {\n this.append({ ref: ref, offset: nextFreeObjectNumber, deleted: true });\n };\n PDFCrossRefSection.prototype.toString = function () {\n var section = \"xref\\n\";\n for (var rangeIdx = 0, rangeLen = this.subsections.length; rangeIdx < rangeLen; rangeIdx++) {\n var range = this.subsections[rangeIdx];\n section += range[0].ref.objectNumber + \" \" + range.length + \"\\n\";\n for (var entryIdx = 0, entryLen = range.length; entryIdx < entryLen; entryIdx++) {\n var entry = range[entryIdx];\n section += padStart(String(entry.offset), 10, '0');\n section += ' ';\n section += padStart(String(entry.ref.generationNumber), 5, '0');\n section += ' ';\n section += entry.deleted ? 'f' : 'n';\n section += ' \\n';\n }\n }\n return section;\n };\n PDFCrossRefSection.prototype.sizeInBytes = function () {\n var size = 5;\n for (var idx = 0, len = this.subsections.length; idx < len; idx++) {\n var subsection = this.subsections[idx];\n var subsectionLength = subsection.length;\n var firstEntry = subsection[0];\n size += 2;\n size += String(firstEntry.ref.objectNumber).length;\n size += String(subsectionLength).length;\n size += 20 * subsectionLength;\n }\n return size;\n };\n PDFCrossRefSection.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.x;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.Newline;\n offset += this.copySubsectionsIntoBuffer(this.subsections, buffer, offset);\n return offset - initialOffset;\n };\n PDFCrossRefSection.prototype.copySubsectionsIntoBuffer = function (subsections, buffer, offset) {\n var initialOffset = offset;\n var length = subsections.length;\n for (var idx = 0; idx < length; idx++) {\n var subsection = this.subsections[idx];\n var firstObjectNumber = String(subsection[0].ref.objectNumber);\n offset += copyStringIntoBuffer(firstObjectNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n var rangeLength = String(subsection.length);\n offset += copyStringIntoBuffer(rangeLength, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n offset += this.copyEntriesIntoBuffer(subsection, buffer, offset);\n }\n return offset - initialOffset;\n };\n PDFCrossRefSection.prototype.copyEntriesIntoBuffer = function (entries, buffer, offset) {\n var length = entries.length;\n for (var idx = 0; idx < length; idx++) {\n var entry = entries[idx];\n var entryOffset = padStart(String(entry.offset), 10, '0');\n offset += copyStringIntoBuffer(entryOffset, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n var entryGen = padStart(String(entry.ref.generationNumber), 5, '0');\n offset += copyStringIntoBuffer(entryGen, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = entry.deleted ? CharCodes.f : CharCodes.n;\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = CharCodes.Newline;\n }\n return 20 * length;\n };\n PDFCrossRefSection.prototype.append = function (currEntry) {\n if (this.chunkLength === 0) {\n this.subsections.push([currEntry]);\n this.chunkIdx = 0;\n this.chunkLength = 1;\n return;\n }\n var chunk = this.subsections[this.chunkIdx];\n var prevEntry = chunk[this.chunkLength - 1];\n if (currEntry.ref.objectNumber - prevEntry.ref.objectNumber > 1) {\n this.subsections.push([currEntry]);\n this.chunkIdx += 1;\n this.chunkLength = 1;\n }\n else {\n chunk.push(currEntry);\n this.chunkLength += 1;\n }\n };\n PDFCrossRefSection.create = function () {\n return new PDFCrossRefSection({\n ref: PDFRef.of(0, 65535),\n offset: 0,\n deleted: true,\n });\n };\n PDFCrossRefSection.createEmpty = function () { return new PDFCrossRefSection(); };\n return PDFCrossRefSection;\n}());\nexport default PDFCrossRefSection;\n//# sourceMappingURL=PDFCrossRefSection.js.map","import CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer } from \"../../utils\";\nvar PDFTrailer = /** @class */ (function () {\n function PDFTrailer(lastXRefOffset) {\n this.lastXRefOffset = String(lastXRefOffset);\n }\n PDFTrailer.prototype.toString = function () {\n return \"startxref\\n\" + this.lastXRefOffset + \"\\n%%EOF\";\n };\n PDFTrailer.prototype.sizeInBytes = function () {\n return 16 + this.lastXRefOffset.length;\n };\n PDFTrailer.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.s;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.x;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.f;\n buffer[offset++] = CharCodes.Newline;\n offset += copyStringIntoBuffer(this.lastXRefOffset, buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.Percent;\n buffer[offset++] = CharCodes.E;\n buffer[offset++] = CharCodes.O;\n buffer[offset++] = CharCodes.F;\n return offset - initialOffset;\n };\n PDFTrailer.forLastCrossRefSectionOffset = function (offset) {\n return new PDFTrailer(offset);\n };\n return PDFTrailer;\n}());\nexport default PDFTrailer;\n//# sourceMappingURL=PDFTrailer.js.map","import CharCodes from \"../syntax/CharCodes\";\nvar PDFTrailerDict = /** @class */ (function () {\n function PDFTrailerDict(dict) {\n this.dict = dict;\n }\n PDFTrailerDict.prototype.toString = function () {\n return \"trailer\\n\" + this.dict.toString();\n };\n PDFTrailerDict.prototype.sizeInBytes = function () {\n return 8 + this.dict.sizeInBytes();\n };\n PDFTrailerDict.prototype.copyBytesInto = function (buffer, offset) {\n var initialOffset = offset;\n buffer[offset++] = CharCodes.t;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.a;\n buffer[offset++] = CharCodes.i;\n buffer[offset++] = CharCodes.l;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.r;\n buffer[offset++] = CharCodes.Newline;\n offset += this.dict.copyBytesInto(buffer, offset);\n return offset - initialOffset;\n };\n PDFTrailerDict.of = function (dict) { return new PDFTrailerDict(dict); };\n return PDFTrailerDict;\n}());\nexport default PDFTrailerDict;\n//# sourceMappingURL=PDFTrailerDict.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFFlateStream from \"./PDFFlateStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, last } from \"../../utils\";\nvar PDFObjectStream = /** @class */ (function (_super) {\n __extends(PDFObjectStream, _super);\n function PDFObjectStream(context, objects, encode) {\n if (encode === void 0) { encode = true; }\n var _this = _super.call(this, context.obj({}), encode) || this;\n _this.objects = objects;\n _this.offsets = _this.computeObjectOffsets();\n _this.offsetsString = _this.computeOffsetsString();\n _this.dict.set(PDFName.of('Type'), PDFName.of('ObjStm'));\n _this.dict.set(PDFName.of('N'), PDFNumber.of(_this.objects.length));\n _this.dict.set(PDFName.of('First'), PDFNumber.of(_this.offsetsString.length));\n return _this;\n }\n PDFObjectStream.prototype.getObjectsCount = function () {\n return this.objects.length;\n };\n PDFObjectStream.prototype.clone = function (context) {\n return PDFObjectStream.withContextAndObjects(context || this.dict.context, this.objects.slice(), this.encode);\n };\n PDFObjectStream.prototype.getContentsString = function () {\n var value = this.offsetsString;\n for (var idx = 0, len = this.objects.length; idx < len; idx++) {\n var _a = this.objects[idx], object = _a[1];\n value += object + \"\\n\";\n }\n return value;\n };\n PDFObjectStream.prototype.getUnencodedContents = function () {\n var buffer = new Uint8Array(this.getUnencodedContentsSize());\n var offset = copyStringIntoBuffer(this.offsetsString, buffer, 0);\n for (var idx = 0, len = this.objects.length; idx < len; idx++) {\n var _a = this.objects[idx], object = _a[1];\n offset += object.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n return buffer;\n };\n PDFObjectStream.prototype.getUnencodedContentsSize = function () {\n return (this.offsetsString.length +\n last(this.offsets)[1] +\n last(this.objects)[1].sizeInBytes() +\n 1);\n };\n PDFObjectStream.prototype.computeOffsetsString = function () {\n var offsetsString = '';\n for (var idx = 0, len = this.offsets.length; idx < len; idx++) {\n var _a = this.offsets[idx], objectNumber = _a[0], offset = _a[1];\n offsetsString += objectNumber + \" \" + offset + \" \";\n }\n return offsetsString;\n };\n PDFObjectStream.prototype.computeObjectOffsets = function () {\n var offset = 0;\n var offsets = new Array(this.objects.length);\n for (var idx = 0, len = this.objects.length; idx < len; idx++) {\n var _a = this.objects[idx], ref = _a[0], object = _a[1];\n offsets[idx] = [ref.objectNumber, offset];\n offset += object.sizeInBytes() + 1; // '\\n'\n }\n return offsets;\n };\n PDFObjectStream.withContextAndObjects = function (context, objects, encode) {\n if (encode === void 0) { encode = true; }\n return new PDFObjectStream(context, objects, encode);\n };\n return PDFObjectStream;\n}(PDFFlateStream));\nexport default PDFObjectStream;\n//# sourceMappingURL=PDFObjectStream.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFCrossRefSection from \"../document/PDFCrossRefSection\";\nimport PDFHeader from \"../document/PDFHeader\";\nimport PDFTrailer from \"../document/PDFTrailer\";\nimport PDFTrailerDict from \"../document/PDFTrailerDict\";\nimport PDFObjectStream from \"../structures/PDFObjectStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, waitForTick } from \"../../utils\";\nvar PDFWriter = /** @class */ (function () {\n function PDFWriter(context, objectsPerTick) {\n var _this = this;\n this.parsedObjects = 0;\n this.shouldWaitForTick = function (n) {\n _this.parsedObjects += n;\n return _this.parsedObjects % _this.objectsPerTick === 0;\n };\n this.context = context;\n this.objectsPerTick = objectsPerTick;\n }\n PDFWriter.prototype.serializeToBuffer = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, size, header, indirectObjects, xref, trailerDict, trailer, offset, buffer, idx, len, _b, ref, object, objectNumber, generationNumber, n;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0: return [4 /*yield*/, this.computeBufferSize()];\n case 1:\n _a = _c.sent(), size = _a.size, header = _a.header, indirectObjects = _a.indirectObjects, xref = _a.xref, trailerDict = _a.trailerDict, trailer = _a.trailer;\n offset = 0;\n buffer = new Uint8Array(size);\n offset += header.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Newline;\n idx = 0, len = indirectObjects.length;\n _c.label = 2;\n case 2:\n if (!(idx < len)) return [3 /*break*/, 5];\n _b = indirectObjects[idx], ref = _b[0], object = _b[1];\n objectNumber = String(ref.objectNumber);\n offset += copyStringIntoBuffer(objectNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n generationNumber = String(ref.generationNumber);\n offset += copyStringIntoBuffer(generationNumber, buffer, offset);\n buffer[offset++] = CharCodes.Space;\n buffer[offset++] = CharCodes.o;\n buffer[offset++] = CharCodes.b;\n buffer[offset++] = CharCodes.j;\n buffer[offset++] = CharCodes.Newline;\n offset += object.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.e;\n buffer[offset++] = CharCodes.n;\n buffer[offset++] = CharCodes.d;\n buffer[offset++] = CharCodes.o;\n buffer[offset++] = CharCodes.b;\n buffer[offset++] = CharCodes.j;\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Newline;\n n = object instanceof PDFObjectStream ? object.getObjectsCount() : 1;\n if (!this.shouldWaitForTick(n)) return [3 /*break*/, 4];\n return [4 /*yield*/, waitForTick()];\n case 3:\n _c.sent();\n _c.label = 4;\n case 4:\n idx++;\n return [3 /*break*/, 2];\n case 5:\n if (xref) {\n offset += xref.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n }\n if (trailerDict) {\n offset += trailerDict.copyBytesInto(buffer, offset);\n buffer[offset++] = CharCodes.Newline;\n buffer[offset++] = CharCodes.Newline;\n }\n offset += trailer.copyBytesInto(buffer, offset);\n return [2 /*return*/, buffer];\n }\n });\n });\n };\n PDFWriter.prototype.computeIndirectObjectSize = function (_a) {\n var ref = _a[0], object = _a[1];\n var refSize = ref.sizeInBytes() + 3; // 'R' -> 'obj\\n'\n var objectSize = object.sizeInBytes() + 9; // '\\nendobj\\n\\n'\n return refSize + objectSize;\n };\n PDFWriter.prototype.createTrailerDict = function () {\n return this.context.obj({\n Size: this.context.largestObjectNumber + 1,\n Root: this.context.trailerInfo.Root,\n Encrypt: this.context.trailerInfo.Encrypt,\n Info: this.context.trailerInfo.Info,\n ID: this.context.trailerInfo.ID,\n });\n };\n PDFWriter.prototype.computeBufferSize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var header, size, xref, indirectObjects, idx, len, indirectObject, ref, xrefOffset, trailerDict, trailer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n header = PDFHeader.forVersion(1, 7);\n size = header.sizeInBytes() + 2;\n xref = PDFCrossRefSection.create();\n indirectObjects = this.context.enumerateIndirectObjects();\n idx = 0, len = indirectObjects.length;\n _a.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n indirectObject = indirectObjects[idx];\n ref = indirectObject[0];\n xref.addEntry(ref, size);\n size += this.computeIndirectObjectSize(indirectObject);\n if (!this.shouldWaitForTick(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, waitForTick()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4:\n xrefOffset = size;\n size += xref.sizeInBytes() + 1; // '\\n'\n trailerDict = PDFTrailerDict.of(this.createTrailerDict());\n size += trailerDict.sizeInBytes() + 2; // '\\n\\n'\n trailer = PDFTrailer.forLastCrossRefSectionOffset(xrefOffset);\n size += trailer.sizeInBytes();\n return [2 /*return*/, { size: size, header: header, indirectObjects: indirectObjects, xref: xref, trailerDict: trailerDict, trailer: trailer }];\n }\n });\n });\n };\n PDFWriter.forContext = function (context, objectsPerTick) {\n return new PDFWriter(context, objectsPerTick);\n };\n return PDFWriter;\n}());\nexport default PDFWriter;\n//# sourceMappingURL=PDFWriter.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nvar PDFInvalidObject = /** @class */ (function (_super) {\n __extends(PDFInvalidObject, _super);\n function PDFInvalidObject(data) {\n var _this = _super.call(this) || this;\n _this.data = data;\n return _this;\n }\n PDFInvalidObject.prototype.clone = function () {\n return PDFInvalidObject.of(this.data.slice());\n };\n PDFInvalidObject.prototype.toString = function () {\n return \"PDFInvalidObject(\" + this.data.length + \" bytes)\";\n };\n PDFInvalidObject.prototype.sizeInBytes = function () {\n return this.data.length;\n };\n PDFInvalidObject.prototype.copyBytesInto = function (buffer, offset) {\n var length = this.data.length;\n for (var idx = 0; idx < length; idx++) {\n buffer[offset++] = this.data[idx];\n }\n return length;\n };\n PDFInvalidObject.of = function (data) { return new PDFInvalidObject(data); };\n return PDFInvalidObject;\n}(PDFObject));\nexport default PDFInvalidObject;\n//# sourceMappingURL=PDFInvalidObject.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFFlateStream from \"./PDFFlateStream\";\nimport { bytesFor, Cache, reverseArray, sizeInBytes, sum } from \"../../utils\";\nexport var EntryType;\n(function (EntryType) {\n EntryType[EntryType[\"Deleted\"] = 0] = \"Deleted\";\n EntryType[EntryType[\"Uncompressed\"] = 1] = \"Uncompressed\";\n EntryType[EntryType[\"Compressed\"] = 2] = \"Compressed\";\n})(EntryType || (EntryType = {}));\n/**\n * Entries should be added using the [[addDeletedEntry]],\n * [[addUncompressedEntry]], and [[addCompressedEntry]] methods\n * **in order of ascending object number**.\n */\nvar PDFCrossRefStream = /** @class */ (function (_super) {\n __extends(PDFCrossRefStream, _super);\n function PDFCrossRefStream(dict, entries, encode) {\n if (encode === void 0) { encode = true; }\n var _this = _super.call(this, dict, encode) || this;\n // Returns an array of integer pairs for each subsection of the cross ref\n // section, where each integer pair represents:\n // firstObjectNumber(OfSection), length(OfSection)\n _this.computeIndex = function () {\n var subsections = [];\n var subsectionLength = 0;\n for (var idx = 0, len = _this.entries.length; idx < len; idx++) {\n var currEntry = _this.entries[idx];\n var prevEntry = _this.entries[idx - 1];\n if (idx === 0) {\n subsections.push(currEntry.ref.objectNumber);\n }\n else if (currEntry.ref.objectNumber - prevEntry.ref.objectNumber > 1) {\n subsections.push(subsectionLength);\n subsections.push(currEntry.ref.objectNumber);\n subsectionLength = 0;\n }\n subsectionLength += 1;\n }\n subsections.push(subsectionLength);\n return subsections;\n };\n _this.computeEntryTuples = function () {\n var entryTuples = new Array(_this.entries.length);\n for (var idx = 0, len = _this.entries.length; idx < len; idx++) {\n var entry = _this.entries[idx];\n if (entry.type === EntryType.Deleted) {\n var type = entry.type, nextFreeObjectNumber = entry.nextFreeObjectNumber, ref = entry.ref;\n entryTuples[idx] = [type, nextFreeObjectNumber, ref.generationNumber];\n }\n if (entry.type === EntryType.Uncompressed) {\n var type = entry.type, offset = entry.offset, ref = entry.ref;\n entryTuples[idx] = [type, offset, ref.generationNumber];\n }\n if (entry.type === EntryType.Compressed) {\n var type = entry.type, objectStreamRef = entry.objectStreamRef, index = entry.index;\n entryTuples[idx] = [type, objectStreamRef.objectNumber, index];\n }\n }\n return entryTuples;\n };\n _this.computeMaxEntryByteWidths = function () {\n var entryTuples = _this.entryTuplesCache.access();\n var widths = [0, 0, 0];\n for (var idx = 0, len = entryTuples.length; idx < len; idx++) {\n var _a = entryTuples[idx], first = _a[0], second = _a[1], third = _a[2];\n var firstSize = sizeInBytes(first);\n var secondSize = sizeInBytes(second);\n var thirdSize = sizeInBytes(third);\n if (firstSize > widths[0])\n widths[0] = firstSize;\n if (secondSize > widths[1])\n widths[1] = secondSize;\n if (thirdSize > widths[2])\n widths[2] = thirdSize;\n }\n return widths;\n };\n _this.entries = entries || [];\n _this.entryTuplesCache = Cache.populatedBy(_this.computeEntryTuples);\n _this.maxByteWidthsCache = Cache.populatedBy(_this.computeMaxEntryByteWidths);\n _this.indexCache = Cache.populatedBy(_this.computeIndex);\n dict.set(PDFName.of('Type'), PDFName.of('XRef'));\n return _this;\n }\n PDFCrossRefStream.prototype.addDeletedEntry = function (ref, nextFreeObjectNumber) {\n var type = EntryType.Deleted;\n this.entries.push({ type: type, ref: ref, nextFreeObjectNumber: nextFreeObjectNumber });\n this.entryTuplesCache.invalidate();\n this.maxByteWidthsCache.invalidate();\n this.indexCache.invalidate();\n this.contentsCache.invalidate();\n };\n PDFCrossRefStream.prototype.addUncompressedEntry = function (ref, offset) {\n var type = EntryType.Uncompressed;\n this.entries.push({ type: type, ref: ref, offset: offset });\n this.entryTuplesCache.invalidate();\n this.maxByteWidthsCache.invalidate();\n this.indexCache.invalidate();\n this.contentsCache.invalidate();\n };\n PDFCrossRefStream.prototype.addCompressedEntry = function (ref, objectStreamRef, index) {\n var type = EntryType.Compressed;\n this.entries.push({ type: type, ref: ref, objectStreamRef: objectStreamRef, index: index });\n this.entryTuplesCache.invalidate();\n this.maxByteWidthsCache.invalidate();\n this.indexCache.invalidate();\n this.contentsCache.invalidate();\n };\n PDFCrossRefStream.prototype.clone = function (context) {\n var _a = this, dict = _a.dict, entries = _a.entries, encode = _a.encode;\n return PDFCrossRefStream.of(dict.clone(context), entries.slice(), encode);\n };\n PDFCrossRefStream.prototype.getContentsString = function () {\n var entryTuples = this.entryTuplesCache.access();\n var byteWidths = this.maxByteWidthsCache.access();\n var value = '';\n for (var entryIdx = 0, entriesLen = entryTuples.length; entryIdx < entriesLen; entryIdx++) {\n var _a = entryTuples[entryIdx], first = _a[0], second = _a[1], third = _a[2];\n var firstBytes = reverseArray(bytesFor(first));\n var secondBytes = reverseArray(bytesFor(second));\n var thirdBytes = reverseArray(bytesFor(third));\n for (var idx = byteWidths[0] - 1; idx >= 0; idx--) {\n value += (firstBytes[idx] || 0).toString(2);\n }\n for (var idx = byteWidths[1] - 1; idx >= 0; idx--) {\n value += (secondBytes[idx] || 0).toString(2);\n }\n for (var idx = byteWidths[2] - 1; idx >= 0; idx--) {\n value += (thirdBytes[idx] || 0).toString(2);\n }\n }\n return value;\n };\n PDFCrossRefStream.prototype.getUnencodedContents = function () {\n var entryTuples = this.entryTuplesCache.access();\n var byteWidths = this.maxByteWidthsCache.access();\n var buffer = new Uint8Array(this.getUnencodedContentsSize());\n var offset = 0;\n for (var entryIdx = 0, entriesLen = entryTuples.length; entryIdx < entriesLen; entryIdx++) {\n var _a = entryTuples[entryIdx], first = _a[0], second = _a[1], third = _a[2];\n var firstBytes = reverseArray(bytesFor(first));\n var secondBytes = reverseArray(bytesFor(second));\n var thirdBytes = reverseArray(bytesFor(third));\n for (var idx = byteWidths[0] - 1; idx >= 0; idx--) {\n buffer[offset++] = firstBytes[idx] || 0;\n }\n for (var idx = byteWidths[1] - 1; idx >= 0; idx--) {\n buffer[offset++] = secondBytes[idx] || 0;\n }\n for (var idx = byteWidths[2] - 1; idx >= 0; idx--) {\n buffer[offset++] = thirdBytes[idx] || 0;\n }\n }\n return buffer;\n };\n PDFCrossRefStream.prototype.getUnencodedContentsSize = function () {\n var byteWidths = this.maxByteWidthsCache.access();\n var entryWidth = sum(byteWidths);\n return entryWidth * this.entries.length;\n };\n PDFCrossRefStream.prototype.updateDict = function () {\n _super.prototype.updateDict.call(this);\n var byteWidths = this.maxByteWidthsCache.access();\n var index = this.indexCache.access();\n var context = this.dict.context;\n this.dict.set(PDFName.of('W'), context.obj(byteWidths));\n this.dict.set(PDFName.of('Index'), context.obj(index));\n };\n PDFCrossRefStream.create = function (dict, encode) {\n if (encode === void 0) { encode = true; }\n var stream = new PDFCrossRefStream(dict, [], encode);\n stream.addDeletedEntry(PDFRef.of(0, 65535), 0);\n return stream;\n };\n PDFCrossRefStream.of = function (dict, entries, encode) {\n if (encode === void 0) { encode = true; }\n return new PDFCrossRefStream(dict, entries, encode);\n };\n return PDFCrossRefStream;\n}(PDFFlateStream));\nexport default PDFCrossRefStream;\n//# sourceMappingURL=PDFCrossRefStream.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport PDFHeader from \"../document/PDFHeader\";\nimport PDFTrailer from \"../document/PDFTrailer\";\nimport PDFInvalidObject from \"../objects/PDFInvalidObject\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFStream from \"../objects/PDFStream\";\nimport PDFCrossRefStream from \"../structures/PDFCrossRefStream\";\nimport PDFObjectStream from \"../structures/PDFObjectStream\";\nimport PDFWriter from \"./PDFWriter\";\nimport { last, waitForTick } from \"../../utils\";\nvar PDFStreamWriter = /** @class */ (function (_super) {\n __extends(PDFStreamWriter, _super);\n function PDFStreamWriter(context, objectsPerTick, encodeStreams, objectsPerStream) {\n var _this = _super.call(this, context, objectsPerTick) || this;\n _this.encodeStreams = encodeStreams;\n _this.objectsPerStream = objectsPerStream;\n return _this;\n }\n PDFStreamWriter.prototype.computeBufferSize = function () {\n return __awaiter(this, void 0, void 0, function () {\n var objectNumber, header, size, xrefStream, uncompressedObjects, compressedObjects, objectStreamRefs, indirectObjects, idx, len, indirectObject, ref, object, shouldNotCompress, chunk, objectStreamRef, idx, len, chunk, ref, objectStream, xrefStreamRef, xrefOffset, trailer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n objectNumber = this.context.largestObjectNumber + 1;\n header = PDFHeader.forVersion(1, 7);\n size = header.sizeInBytes() + 2;\n xrefStream = PDFCrossRefStream.create(this.createTrailerDict(), this.encodeStreams);\n uncompressedObjects = [];\n compressedObjects = [];\n objectStreamRefs = [];\n indirectObjects = this.context.enumerateIndirectObjects();\n idx = 0, len = indirectObjects.length;\n _a.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 6];\n indirectObject = indirectObjects[idx];\n ref = indirectObject[0], object = indirectObject[1];\n shouldNotCompress = ref === this.context.trailerInfo.Encrypt ||\n object instanceof PDFStream ||\n object instanceof PDFInvalidObject ||\n ref.generationNumber !== 0;\n if (!shouldNotCompress) return [3 /*break*/, 4];\n uncompressedObjects.push(indirectObject);\n xrefStream.addUncompressedEntry(ref, size);\n size += this.computeIndirectObjectSize(indirectObject);\n if (!this.shouldWaitForTick(1)) return [3 /*break*/, 3];\n return [4 /*yield*/, waitForTick()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3: return [3 /*break*/, 5];\n case 4:\n chunk = last(compressedObjects);\n objectStreamRef = last(objectStreamRefs);\n if (!chunk || chunk.length % this.objectsPerStream === 0) {\n chunk = [];\n compressedObjects.push(chunk);\n objectStreamRef = PDFRef.of(objectNumber++);\n objectStreamRefs.push(objectStreamRef);\n }\n xrefStream.addCompressedEntry(ref, objectStreamRef, chunk.length);\n chunk.push(indirectObject);\n _a.label = 5;\n case 5:\n idx++;\n return [3 /*break*/, 1];\n case 6:\n idx = 0, len = compressedObjects.length;\n _a.label = 7;\n case 7:\n if (!(idx < len)) return [3 /*break*/, 10];\n chunk = compressedObjects[idx];\n ref = objectStreamRefs[idx];\n objectStream = PDFObjectStream.withContextAndObjects(this.context, chunk, this.encodeStreams);\n xrefStream.addUncompressedEntry(ref, size);\n size += this.computeIndirectObjectSize([ref, objectStream]);\n uncompressedObjects.push([ref, objectStream]);\n if (!this.shouldWaitForTick(chunk.length)) return [3 /*break*/, 9];\n return [4 /*yield*/, waitForTick()];\n case 8:\n _a.sent();\n _a.label = 9;\n case 9:\n idx++;\n return [3 /*break*/, 7];\n case 10:\n xrefStreamRef = PDFRef.of(objectNumber++);\n xrefStream.dict.set(PDFName.of('Size'), PDFNumber.of(objectNumber));\n xrefStream.addUncompressedEntry(xrefStreamRef, size);\n xrefOffset = size;\n size += this.computeIndirectObjectSize([xrefStreamRef, xrefStream]);\n uncompressedObjects.push([xrefStreamRef, xrefStream]);\n trailer = PDFTrailer.forLastCrossRefSectionOffset(xrefOffset);\n size += trailer.sizeInBytes();\n return [2 /*return*/, { size: size, header: header, indirectObjects: uncompressedObjects, trailer: trailer }];\n }\n });\n });\n };\n PDFStreamWriter.forContext = function (context, objectsPerTick, encodeStreams, objectsPerStream) {\n if (encodeStreams === void 0) { encodeStreams = true; }\n if (objectsPerStream === void 0) { objectsPerStream = 50; }\n return new PDFStreamWriter(context, objectsPerTick, encodeStreams, objectsPerStream);\n };\n return PDFStreamWriter;\n}(PDFWriter));\nexport default PDFStreamWriter;\n//# sourceMappingURL=PDFStreamWriter.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, toHexStringOfMinLength, utf16Decode, utf16Encode, pdfDocEncodingDecode, parseDate, hasUtf16BOM, } from \"../../utils\";\nimport { InvalidPDFDateStringError } from \"../errors\";\nvar PDFHexString = /** @class */ (function (_super) {\n __extends(PDFHexString, _super);\n function PDFHexString(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n PDFHexString.prototype.asBytes = function () {\n // Append a zero if the number of digits is odd. See PDF spec 7.3.4.3\n var hex = this.value + (this.value.length % 2 === 1 ? '0' : '');\n var hexLength = hex.length;\n var bytes = new Uint8Array(hex.length / 2);\n var hexOffset = 0;\n var bytesOffset = 0;\n // Interpret each pair of hex digits as a single byte\n while (hexOffset < hexLength) {\n var byte = parseInt(hex.substring(hexOffset, hexOffset + 2), 16);\n bytes[bytesOffset] = byte;\n hexOffset += 2;\n bytesOffset += 1;\n }\n return bytes;\n };\n PDFHexString.prototype.decodeText = function () {\n var bytes = this.asBytes();\n if (hasUtf16BOM(bytes))\n return utf16Decode(bytes);\n return pdfDocEncodingDecode(bytes);\n };\n PDFHexString.prototype.decodeDate = function () {\n var text = this.decodeText();\n var date = parseDate(text);\n if (!date)\n throw new InvalidPDFDateStringError(text);\n return date;\n };\n PDFHexString.prototype.asString = function () {\n return this.value;\n };\n PDFHexString.prototype.clone = function () {\n return PDFHexString.of(this.value);\n };\n PDFHexString.prototype.toString = function () {\n return \"<\" + this.value + \">\";\n };\n PDFHexString.prototype.sizeInBytes = function () {\n return this.value.length + 2;\n };\n PDFHexString.prototype.copyBytesInto = function (buffer, offset) {\n buffer[offset++] = CharCodes.LessThan;\n offset += copyStringIntoBuffer(this.value, buffer, offset);\n buffer[offset++] = CharCodes.GreaterThan;\n return this.value.length + 2;\n };\n PDFHexString.of = function (value) { return new PDFHexString(value); };\n PDFHexString.fromText = function (value) {\n var encoded = utf16Encode(value);\n var hex = '';\n for (var idx = 0, len = encoded.length; idx < len; idx++) {\n hex += toHexStringOfMinLength(encoded[idx], 4);\n }\n return new PDFHexString(hex);\n };\n return PDFHexString;\n}(PDFObject));\nexport default PDFHexString;\n//# sourceMappingURL=PDFHexString.js.map","import { Encodings, Font, FontNames, } from '@pdf-lib/standard-fonts';\nimport PDFHexString from \"../objects/PDFHexString\";\nimport { toCodePoint, toHexString } from \"../../utils\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/foliojs/pdfkit/blob/f91bdd61c164a72ea06be1a43dc0a412afc3925f/lib/font/afm.coffee\n */\nvar StandardFontEmbedder = /** @class */ (function () {\n function StandardFontEmbedder(fontName, customName) {\n // prettier-ignore\n this.encoding = (fontName === FontNames.ZapfDingbats ? Encodings.ZapfDingbats\n : fontName === FontNames.Symbol ? Encodings.Symbol\n : Encodings.WinAnsi);\n this.font = Font.load(fontName);\n this.fontName = this.font.FontName;\n this.customName = customName;\n }\n /**\n * Encode the JavaScript string into this font. (JavaScript encodes strings in\n * Unicode, but standard fonts use either WinAnsi, ZapfDingbats, or Symbol\n * encodings)\n */\n StandardFontEmbedder.prototype.encodeText = function (text) {\n var glyphs = this.encodeTextAsGlyphs(text);\n var hexCodes = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n hexCodes[idx] = toHexString(glyphs[idx].code);\n }\n return PDFHexString.of(hexCodes.join(''));\n };\n StandardFontEmbedder.prototype.widthOfTextAtSize = function (text, size) {\n var glyphs = this.encodeTextAsGlyphs(text);\n var totalWidth = 0;\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var left = glyphs[idx].name;\n var right = (glyphs[idx + 1] || {}).name;\n var kernAmount = this.font.getXAxisKerningForPair(left, right) || 0;\n totalWidth += this.widthOfGlyph(left) + kernAmount;\n }\n var scale = size / 1000;\n return totalWidth * scale;\n };\n StandardFontEmbedder.prototype.heightOfFontAtSize = function (size, options) {\n if (options === void 0) { options = {}; }\n var _a = options.descender, descender = _a === void 0 ? true : _a;\n var _b = this.font, Ascender = _b.Ascender, Descender = _b.Descender, FontBBox = _b.FontBBox;\n var yTop = Ascender || FontBBox[3];\n var yBottom = Descender || FontBBox[1];\n var height = yTop - yBottom;\n if (!descender)\n height += Descender || 0;\n return (height / 1000) * size;\n };\n StandardFontEmbedder.prototype.sizeOfFontAtHeight = function (height) {\n var _a = this.font, Ascender = _a.Ascender, Descender = _a.Descender, FontBBox = _a.FontBBox;\n var yTop = Ascender || FontBBox[3];\n var yBottom = Descender || FontBBox[1];\n return (1000 * height) / (yTop - yBottom);\n };\n StandardFontEmbedder.prototype.embedIntoContext = function (context, ref) {\n var fontDict = context.obj({\n Type: 'Font',\n Subtype: 'Type1',\n BaseFont: this.customName || this.fontName,\n Encoding: this.encoding === Encodings.WinAnsi ? 'WinAnsiEncoding' : undefined,\n });\n if (ref) {\n context.assign(ref, fontDict);\n return ref;\n }\n else {\n return context.register(fontDict);\n }\n };\n StandardFontEmbedder.prototype.widthOfGlyph = function (glyphName) {\n // Default to 250 if font doesn't specify a width\n return this.font.getWidthOfGlyph(glyphName) || 250;\n };\n StandardFontEmbedder.prototype.encodeTextAsGlyphs = function (text) {\n var codePoints = Array.from(text);\n var glyphs = new Array(codePoints.length);\n for (var idx = 0, len = codePoints.length; idx < len; idx++) {\n var codePoint = toCodePoint(codePoints[idx]);\n glyphs[idx] = this.encoding.encodeUnicodeCodePoint(codePoint);\n }\n return glyphs;\n };\n StandardFontEmbedder.for = function (fontName, customName) {\n return new StandardFontEmbedder(fontName, customName);\n };\n return StandardFontEmbedder;\n}());\nexport default StandardFontEmbedder;\n//# sourceMappingURL=StandardFontEmbedder.js.map","import { toHexString, toHexStringOfMinLength } from \"../../utils\";\nimport { hasSurrogates, highSurrogate, isWithinBMP, lowSurrogate, } from \"../../utils/unicode\";\n/** `glyphs` should be an array of unique glyphs */\nexport var createCmap = function (glyphs, glyphId) {\n var bfChars = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var glyph = glyphs[idx];\n var id = cmapHexFormat(cmapHexString(glyphId(glyph)));\n var unicode = cmapHexFormat.apply(void 0, glyph.codePoints.map(cmapCodePointFormat));\n bfChars[idx] = [id, unicode];\n }\n return fillCmapTemplate(bfChars);\n};\n/* =============================== Templates ================================ */\nvar fillCmapTemplate = function (bfChars) { return \"/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap\\n/CIDSystemInfo <<\\n /Registry (Adobe)\\n /Ordering (UCS)\\n /Supplement 0\\n>> def\\n/CMapName /Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange\\n<0000>\\nendcodespacerange\\n\" + bfChars.length + \" beginbfchar\\n\" + bfChars.map(function (_a) {\n var glyphId = _a[0], codePoint = _a[1];\n return glyphId + \" \" + codePoint;\n}).join('\\n') + \"\\nendbfchar\\nendcmap\\nCMapName currentdict /CMap defineresource pop\\nend\\nend\"; };\n/* =============================== Utilities ================================ */\nvar cmapHexFormat = function () {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n return \"<\" + values.join('') + \">\";\n};\nvar cmapHexString = function (value) { return toHexStringOfMinLength(value, 4); };\nvar cmapCodePointFormat = function (codePoint) {\n if (isWithinBMP(codePoint))\n return cmapHexString(codePoint);\n if (hasSurrogates(codePoint)) {\n var hs = highSurrogate(codePoint);\n var ls = lowSurrogate(codePoint);\n return \"\" + cmapHexString(hs) + cmapHexString(ls);\n }\n var hex = toHexString(codePoint);\n var msg = \"0x\" + hex + \" is not a valid UTF-8 or UTF-16 codepoint.\";\n throw new Error(msg);\n};\n//# sourceMappingURL=CMap.js.map","import { __extends } from \"tslib\";\nimport PDFObject from \"./PDFObject\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { copyStringIntoBuffer, padStart, utf16Decode, pdfDocEncodingDecode, toCharCode, parseDate, hasUtf16BOM, } from \"../../utils\";\nimport { InvalidPDFDateStringError } from \"../errors\";\nvar PDFString = /** @class */ (function (_super) {\n __extends(PDFString, _super);\n function PDFString(value) {\n var _this = _super.call(this) || this;\n _this.value = value;\n return _this;\n }\n PDFString.prototype.asBytes = function () {\n var bytes = [];\n var octal = '';\n var escaped = false;\n var pushByte = function (byte) {\n if (byte !== undefined)\n bytes.push(byte);\n escaped = false;\n };\n for (var idx = 0, len = this.value.length; idx < len; idx++) {\n var char = this.value[idx];\n var byte = toCharCode(char);\n var nextChar = this.value[idx + 1];\n if (!escaped) {\n if (byte === CharCodes.BackSlash)\n escaped = true;\n else\n pushByte(byte);\n }\n else {\n if (byte === CharCodes.Newline)\n pushByte();\n else if (byte === CharCodes.CarriageReturn)\n pushByte();\n else if (byte === CharCodes.n)\n pushByte(CharCodes.Newline);\n else if (byte === CharCodes.r)\n pushByte(CharCodes.CarriageReturn);\n else if (byte === CharCodes.t)\n pushByte(CharCodes.Tab);\n else if (byte === CharCodes.b)\n pushByte(CharCodes.Backspace);\n else if (byte === CharCodes.f)\n pushByte(CharCodes.FormFeed);\n else if (byte === CharCodes.LeftParen)\n pushByte(CharCodes.LeftParen);\n else if (byte === CharCodes.RightParen)\n pushByte(CharCodes.RightParen);\n else if (byte === CharCodes.Backspace)\n pushByte(CharCodes.BackSlash);\n else if (byte >= CharCodes.Zero && byte <= CharCodes.Seven) {\n octal += char;\n if (octal.length === 3 || !(nextChar >= '0' && nextChar <= '7')) {\n pushByte(parseInt(octal, 8));\n octal = '';\n }\n }\n else {\n pushByte(byte);\n }\n }\n }\n return new Uint8Array(bytes);\n };\n PDFString.prototype.decodeText = function () {\n var bytes = this.asBytes();\n if (hasUtf16BOM(bytes))\n return utf16Decode(bytes);\n return pdfDocEncodingDecode(bytes);\n };\n PDFString.prototype.decodeDate = function () {\n var text = this.decodeText();\n var date = parseDate(text);\n if (!date)\n throw new InvalidPDFDateStringError(text);\n return date;\n };\n PDFString.prototype.asString = function () {\n return this.value;\n };\n PDFString.prototype.clone = function () {\n return PDFString.of(this.value);\n };\n PDFString.prototype.toString = function () {\n return \"(\" + this.value + \")\";\n };\n PDFString.prototype.sizeInBytes = function () {\n return this.value.length + 2;\n };\n PDFString.prototype.copyBytesInto = function (buffer, offset) {\n buffer[offset++] = CharCodes.LeftParen;\n offset += copyStringIntoBuffer(this.value, buffer, offset);\n buffer[offset++] = CharCodes.RightParen;\n return this.value.length + 2;\n };\n // The PDF spec allows newlines and parens to appear directly within a literal\n // string. These character _may_ be escaped. But they do not _have_ to be. So\n // for simplicity, we will not bother escaping them.\n PDFString.of = function (value) { return new PDFString(value); };\n PDFString.fromDate = function (date) {\n var year = padStart(String(date.getUTCFullYear()), 4, '0');\n var month = padStart(String(date.getUTCMonth() + 1), 2, '0');\n var day = padStart(String(date.getUTCDate()), 2, '0');\n var hours = padStart(String(date.getUTCHours()), 2, '0');\n var mins = padStart(String(date.getUTCMinutes()), 2, '0');\n var secs = padStart(String(date.getUTCSeconds()), 2, '0');\n return new PDFString(\"D:\" + year + month + day + hours + mins + secs + \"Z\");\n };\n return PDFString;\n}(PDFObject));\nexport default PDFString;\n//# sourceMappingURL=PDFString.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { createCmap } from \"./CMap\";\nimport { deriveFontFlags } from \"./FontFlags\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFString from \"../objects/PDFString\";\nimport { byAscendingId, Cache, sortedUniq, toHexStringOfMinLength, } from \"../../utils\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/jpeg.coffee\n */\nvar CustomFontEmbedder = /** @class */ (function () {\n function CustomFontEmbedder(font, fontData, customName, fontFeatures) {\n var _this = this;\n this.allGlyphsInFontSortedById = function () {\n var glyphs = new Array(_this.font.characterSet.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var codePoint = _this.font.characterSet[idx];\n glyphs[idx] = _this.font.glyphForCodePoint(codePoint);\n }\n return sortedUniq(glyphs.sort(byAscendingId), function (g) { return g.id; });\n };\n this.font = font;\n this.scale = 1000 / this.font.unitsPerEm;\n this.fontData = fontData;\n this.fontName = this.font.postscriptName || 'Font';\n this.customName = customName;\n this.fontFeatures = fontFeatures;\n this.baseFontName = '';\n this.glyphCache = Cache.populatedBy(this.allGlyphsInFontSortedById);\n }\n CustomFontEmbedder.for = function (fontkit, fontData, customName, fontFeatures) {\n return __awaiter(this, void 0, void 0, function () {\n var font;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fontkit.create(fontData)];\n case 1:\n font = _a.sent();\n return [2 /*return*/, new CustomFontEmbedder(font, fontData, customName, fontFeatures)];\n }\n });\n });\n };\n /**\n * Encode the JavaScript string into this font. (JavaScript encodes strings in\n * Unicode, but embedded fonts use their own custom encodings)\n */\n CustomFontEmbedder.prototype.encodeText = function (text) {\n var glyphs = this.font.layout(text, this.fontFeatures).glyphs;\n var hexCodes = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n hexCodes[idx] = toHexStringOfMinLength(glyphs[idx].id, 4);\n }\n return PDFHexString.of(hexCodes.join(''));\n };\n // The advanceWidth takes into account kerning automatically, so we don't\n // have to do that manually like we do for the standard fonts.\n CustomFontEmbedder.prototype.widthOfTextAtSize = function (text, size) {\n var glyphs = this.font.layout(text, this.fontFeatures).glyphs;\n var totalWidth = 0;\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n totalWidth += glyphs[idx].advanceWidth * this.scale;\n }\n var scale = size / 1000;\n return totalWidth * scale;\n };\n CustomFontEmbedder.prototype.heightOfFontAtSize = function (size, options) {\n if (options === void 0) { options = {}; }\n var _a = options.descender, descender = _a === void 0 ? true : _a;\n var _b = this.font, ascent = _b.ascent, descent = _b.descent, bbox = _b.bbox;\n var yTop = (ascent || bbox.maxY) * this.scale;\n var yBottom = (descent || bbox.minY) * this.scale;\n var height = yTop - yBottom;\n if (!descender)\n height -= Math.abs(descent) || 0;\n return (height / 1000) * size;\n };\n CustomFontEmbedder.prototype.sizeOfFontAtHeight = function (height) {\n var _a = this.font, ascent = _a.ascent, descent = _a.descent, bbox = _a.bbox;\n var yTop = (ascent || bbox.maxY) * this.scale;\n var yBottom = (descent || bbox.minY) * this.scale;\n return (1000 * height) / (yTop - yBottom);\n };\n CustomFontEmbedder.prototype.embedIntoContext = function (context, ref) {\n this.baseFontName =\n this.customName || context.addRandomSuffix(this.fontName);\n return this.embedFontDict(context, ref);\n };\n CustomFontEmbedder.prototype.embedFontDict = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var cidFontDictRef, unicodeCMapRef, fontDict;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.embedCIDFontDict(context)];\n case 1:\n cidFontDictRef = _a.sent();\n unicodeCMapRef = this.embedUnicodeCmap(context);\n fontDict = context.obj({\n Type: 'Font',\n Subtype: 'Type0',\n BaseFont: this.baseFontName,\n Encoding: 'Identity-H',\n DescendantFonts: [cidFontDictRef],\n ToUnicode: unicodeCMapRef,\n });\n if (ref) {\n context.assign(ref, fontDict);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(fontDict)];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.isCFF = function () {\n return this.font.cff;\n };\n CustomFontEmbedder.prototype.embedCIDFontDict = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var fontDescriptorRef, cidFontDict;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.embedFontDescriptor(context)];\n case 1:\n fontDescriptorRef = _a.sent();\n cidFontDict = context.obj({\n Type: 'Font',\n Subtype: this.isCFF() ? 'CIDFontType0' : 'CIDFontType2',\n CIDToGIDMap: 'Identity',\n BaseFont: this.baseFontName,\n CIDSystemInfo: {\n Registry: PDFString.of('Adobe'),\n Ordering: PDFString.of('Identity'),\n Supplement: 0,\n },\n FontDescriptor: fontDescriptorRef,\n W: this.computeWidths(),\n });\n return [2 /*return*/, context.register(cidFontDict)];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.embedFontDescriptor = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var fontStreamRef, scale, _a, italicAngle, ascent, descent, capHeight, xHeight, _b, minX, minY, maxX, maxY, fontDescriptor;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0: return [4 /*yield*/, this.embedFontStream(context)];\n case 1:\n fontStreamRef = _d.sent();\n scale = this.scale;\n _a = this.font, italicAngle = _a.italicAngle, ascent = _a.ascent, descent = _a.descent, capHeight = _a.capHeight, xHeight = _a.xHeight;\n _b = this.font.bbox, minX = _b.minX, minY = _b.minY, maxX = _b.maxX, maxY = _b.maxY;\n fontDescriptor = context.obj((_c = {\n Type: 'FontDescriptor',\n FontName: this.baseFontName,\n Flags: deriveFontFlags(this.font),\n FontBBox: [minX * scale, minY * scale, maxX * scale, maxY * scale],\n ItalicAngle: italicAngle,\n Ascent: ascent * scale,\n Descent: descent * scale,\n CapHeight: (capHeight || ascent) * scale,\n XHeight: (xHeight || 0) * scale,\n // Not sure how to compute/find this, nor is anybody else really:\n // https://stackoverflow.com/questions/35485179/stemv-value-of-the-truetype-font\n StemV: 0\n },\n _c[this.isCFF() ? 'FontFile3' : 'FontFile2'] = fontStreamRef,\n _c));\n return [2 /*return*/, context.register(fontDescriptor)];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.serializeFont = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.fontData];\n });\n });\n };\n CustomFontEmbedder.prototype.embedFontStream = function (context) {\n return __awaiter(this, void 0, void 0, function () {\n var fontStream, _a, _b;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _b = (_a = context).flateStream;\n return [4 /*yield*/, this.serializeFont()];\n case 1:\n fontStream = _b.apply(_a, [_c.sent(), {\n Subtype: this.isCFF() ? 'CIDFontType0C' : undefined,\n }]);\n return [2 /*return*/, context.register(fontStream)];\n }\n });\n });\n };\n CustomFontEmbedder.prototype.embedUnicodeCmap = function (context) {\n var cmap = createCmap(this.glyphCache.access(), this.glyphId.bind(this));\n var cmapStream = context.flateStream(cmap);\n return context.register(cmapStream);\n };\n CustomFontEmbedder.prototype.glyphId = function (glyph) {\n return glyph ? glyph.id : -1;\n };\n CustomFontEmbedder.prototype.computeWidths = function () {\n var glyphs = this.glyphCache.access();\n var widths = [];\n var currSection = [];\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var currGlyph = glyphs[idx];\n var prevGlyph = glyphs[idx - 1];\n var currGlyphId = this.glyphId(currGlyph);\n var prevGlyphId = this.glyphId(prevGlyph);\n if (idx === 0) {\n widths.push(currGlyphId);\n }\n else if (currGlyphId - prevGlyphId !== 1) {\n widths.push(currSection);\n widths.push(currGlyphId);\n currSection = [];\n }\n currSection.push(currGlyph.advanceWidth * this.scale);\n }\n widths.push(currSection);\n return widths;\n };\n return CustomFontEmbedder;\n}());\nexport default CustomFontEmbedder;\n//# sourceMappingURL=CustomFontEmbedder.js.map","// prettier-ignore\nvar makeFontFlags = function (options) {\n var flags = 0;\n var flipBit = function (bit) { flags |= (1 << (bit - 1)); };\n if (options.fixedPitch)\n flipBit(1);\n if (options.serif)\n flipBit(2);\n if (options.symbolic)\n flipBit(3);\n if (options.script)\n flipBit(4);\n if (options.nonsymbolic)\n flipBit(6);\n if (options.italic)\n flipBit(7);\n if (options.allCap)\n flipBit(17);\n if (options.smallCap)\n flipBit(18);\n if (options.forceBold)\n flipBit(19);\n return flags;\n};\n// From: https://github.com/foliojs/pdfkit/blob/83f5f7243172a017adcf6a7faa5547c55982c57b/lib/font/embedded.js#L123-L129\nexport var deriveFontFlags = function (font) {\n var familyClass = font['OS/2'] ? font['OS/2'].sFamilyClass : 0;\n var flags = makeFontFlags({\n fixedPitch: font.post.isFixedPitch,\n serif: 1 <= familyClass && familyClass <= 7,\n symbolic: true,\n script: familyClass === 10,\n italic: font.head.macStyle.italic,\n });\n return flags;\n};\n//# sourceMappingURL=FontFlags.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport CustomFontEmbedder from \"./CustomFontEmbedder\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport { Cache, mergeUint8Arrays, toHexStringOfMinLength } from \"../../utils\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/jpeg.coffee\n */\nvar CustomFontSubsetEmbedder = /** @class */ (function (_super) {\n __extends(CustomFontSubsetEmbedder, _super);\n function CustomFontSubsetEmbedder(font, fontData, customFontName, fontFeatures) {\n var _this = _super.call(this, font, fontData, customFontName, fontFeatures) || this;\n _this.subset = _this.font.createSubset();\n _this.glyphs = [];\n _this.glyphCache = Cache.populatedBy(function () { return _this.glyphs; });\n _this.glyphIdMap = new Map();\n return _this;\n }\n CustomFontSubsetEmbedder.for = function (fontkit, fontData, customFontName, fontFeatures) {\n return __awaiter(this, void 0, void 0, function () {\n var font;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fontkit.create(fontData)];\n case 1:\n font = _a.sent();\n return [2 /*return*/, new CustomFontSubsetEmbedder(font, fontData, customFontName, fontFeatures)];\n }\n });\n });\n };\n CustomFontSubsetEmbedder.prototype.encodeText = function (text) {\n var glyphs = this.font.layout(text, this.fontFeatures).glyphs;\n var hexCodes = new Array(glyphs.length);\n for (var idx = 0, len = glyphs.length; idx < len; idx++) {\n var glyph = glyphs[idx];\n var subsetGlyphId = this.subset.includeGlyph(glyph);\n this.glyphs[subsetGlyphId - 1] = glyph;\n this.glyphIdMap.set(glyph.id, subsetGlyphId);\n hexCodes[idx] = toHexStringOfMinLength(subsetGlyphId, 4);\n }\n this.glyphCache.invalidate();\n return PDFHexString.of(hexCodes.join(''));\n };\n CustomFontSubsetEmbedder.prototype.isCFF = function () {\n return this.subset.cff;\n };\n CustomFontSubsetEmbedder.prototype.glyphId = function (glyph) {\n return glyph ? this.glyphIdMap.get(glyph.id) : -1;\n };\n CustomFontSubsetEmbedder.prototype.serializeFont = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var parts = [];\n _this.subset\n .encodeStream()\n .on('data', function (bytes) { return parts.push(bytes); })\n .on('end', function () { return resolve(mergeUint8Arrays(parts)); })\n .on('error', function (err) { return reject(err); });\n });\n };\n return CustomFontSubsetEmbedder;\n}(CustomFontEmbedder));\nexport default CustomFontSubsetEmbedder;\n//# sourceMappingURL=CustomFontSubsetEmbedder.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\n/**\n * From the PDF-A3 specification, section **3.1. Requirements - General**.\n * See:\n * * https://www.pdfa.org/wp-content/uploads/2018/10/PDF20_AN002-AF.pdf\n */\nexport var AFRelationship;\n(function (AFRelationship) {\n AFRelationship[\"Source\"] = \"Source\";\n AFRelationship[\"Data\"] = \"Data\";\n AFRelationship[\"Alternative\"] = \"Alternative\";\n AFRelationship[\"Supplement\"] = \"Supplement\";\n AFRelationship[\"EncryptedPayload\"] = \"EncryptedPayload\";\n AFRelationship[\"FormData\"] = \"EncryptedPayload\";\n AFRelationship[\"Schema\"] = \"Schema\";\n AFRelationship[\"Unspecified\"] = \"Unspecified\";\n})(AFRelationship || (AFRelationship = {}));\nvar FileEmbedder = /** @class */ (function () {\n function FileEmbedder(fileData, fileName, options) {\n if (options === void 0) { options = {}; }\n this.fileData = fileData;\n this.fileName = fileName;\n this.options = options;\n }\n FileEmbedder.for = function (bytes, fileName, options) {\n if (options === void 0) { options = {}; }\n return new FileEmbedder(bytes, fileName, options);\n };\n FileEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, mimeType, description, creationDate, modificationDate, afRelationship, embeddedFileStream, embeddedFileStreamRef, fileSpecDict;\n return __generator(this, function (_b) {\n _a = this.options, mimeType = _a.mimeType, description = _a.description, creationDate = _a.creationDate, modificationDate = _a.modificationDate, afRelationship = _a.afRelationship;\n embeddedFileStream = context.flateStream(this.fileData, {\n Type: 'EmbeddedFile',\n Subtype: mimeType !== null && mimeType !== void 0 ? mimeType : undefined,\n Params: {\n Size: this.fileData.length,\n CreationDate: creationDate\n ? PDFString.fromDate(creationDate)\n : undefined,\n ModDate: modificationDate\n ? PDFString.fromDate(modificationDate)\n : undefined,\n },\n });\n embeddedFileStreamRef = context.register(embeddedFileStream);\n fileSpecDict = context.obj({\n Type: 'Filespec',\n F: PDFString.of(this.fileName),\n UF: PDFHexString.fromText(this.fileName),\n EF: { F: embeddedFileStreamRef },\n Desc: description ? PDFHexString.fromText(description) : undefined,\n AFRelationship: afRelationship !== null && afRelationship !== void 0 ? afRelationship : undefined,\n });\n if (ref) {\n context.assign(ref, fileSpecDict);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(fileSpecDict)];\n }\n return [2 /*return*/];\n });\n });\n };\n return FileEmbedder;\n}());\nexport default FileEmbedder;\n//# sourceMappingURL=FileEmbedder.js.map","import { __awaiter, __generator } from \"tslib\";\n// prettier-ignore\nvar MARKERS = [\n 0xffc0, 0xffc1, 0xffc2,\n 0xffc3, 0xffc5, 0xffc6,\n 0xffc7, 0xffc8, 0xffc9,\n 0xffca, 0xffcb, 0xffcc,\n 0xffcd, 0xffce, 0xffcf,\n];\nvar ColorSpace;\n(function (ColorSpace) {\n ColorSpace[\"DeviceGray\"] = \"DeviceGray\";\n ColorSpace[\"DeviceRGB\"] = \"DeviceRGB\";\n ColorSpace[\"DeviceCMYK\"] = \"DeviceCMYK\";\n})(ColorSpace || (ColorSpace = {}));\nvar ChannelToColorSpace = {\n 1: ColorSpace.DeviceGray,\n 3: ColorSpace.DeviceRGB,\n 4: ColorSpace.DeviceCMYK,\n};\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/foliojs/pdfkit/blob/a6af76467ce06bd6a2af4aa7271ccac9ff152a7d/lib/image/jpeg.js\n */\nvar JpegEmbedder = /** @class */ (function () {\n function JpegEmbedder(imageData, bitsPerComponent, width, height, colorSpace) {\n this.imageData = imageData;\n this.bitsPerComponent = bitsPerComponent;\n this.width = width;\n this.height = height;\n this.colorSpace = colorSpace;\n }\n JpegEmbedder.for = function (imageData) {\n return __awaiter(this, void 0, void 0, function () {\n var dataView, soi, pos, marker, bitsPerComponent, height, width, channelByte, channelName, colorSpace;\n return __generator(this, function (_a) {\n dataView = new DataView(imageData.buffer);\n soi = dataView.getUint16(0);\n if (soi !== 0xffd8)\n throw new Error('SOI not found in JPEG');\n pos = 2;\n while (pos < dataView.byteLength) {\n marker = dataView.getUint16(pos);\n pos += 2;\n if (MARKERS.includes(marker))\n break;\n pos += dataView.getUint16(pos);\n }\n if (!MARKERS.includes(marker))\n throw new Error('Invalid JPEG');\n pos += 2;\n bitsPerComponent = dataView.getUint8(pos++);\n height = dataView.getUint16(pos);\n pos += 2;\n width = dataView.getUint16(pos);\n pos += 2;\n channelByte = dataView.getUint8(pos++);\n channelName = ChannelToColorSpace[channelByte];\n if (!channelName)\n throw new Error('Unknown JPEG channel.');\n colorSpace = channelName;\n return [2 /*return*/, new JpegEmbedder(imageData, bitsPerComponent, width, height, colorSpace)];\n });\n });\n };\n JpegEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var xObject;\n return __generator(this, function (_a) {\n xObject = context.stream(this.imageData, {\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.bitsPerComponent,\n Width: this.width,\n Height: this.height,\n ColorSpace: this.colorSpace,\n Filter: 'DCTDecode',\n // CMYK JPEG streams in PDF are typically stored complemented,\n // with 1 as 'off' and 0 as 'on' (PDF 32000-1:2008, 8.6.4.4).\n //\n // Standalone CMYK JPEG (usually exported by Photoshop) are\n // stored inverse, with 0 as 'off' and 1 as 'on', like RGB.\n //\n // Applying a swap here as a hedge that most bytes passing\n // through this method will benefit from it.\n Decode: this.colorSpace === ColorSpace.DeviceCMYK\n ? [1, 0, 1, 0, 1, 0, 1, 0]\n : undefined,\n });\n if (ref) {\n context.assign(ref, xObject);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(xObject)];\n }\n return [2 /*return*/];\n });\n });\n };\n return JpegEmbedder;\n}());\nexport default JpegEmbedder;\n//# sourceMappingURL=JpegEmbedder.js.map","import pako from 'pako';\n\nvar UPNG = {};\n\n\t\n\nUPNG.toRGBA8 = function(out)\n{\n\tvar w = out.width, h = out.height;\n\tif(out.tabs.acTL==null) return [UPNG.toRGBA8.decodeImage(out.data, w, h, out).buffer];\n\t\n\tvar frms = [];\n\tif(out.frames[0].data==null) out.frames[0].data = out.data;\n\t\n\tvar len = w*h*4, img = new Uint8Array(len), empty = new Uint8Array(len), prev=new Uint8Array(len);\n\tfor(var i=0; i>3)]>>(7-((i&7)<<0)))& 1), cj=3*j; bf[qi]=p[cj]; bf[qi+1]=p[cj+1]; bf[qi+2]=p[cj+2]; bf[qi+3]=(j>2)]>>(6-((i&3)<<1)))& 3), cj=3*j; bf[qi]=p[cj]; bf[qi+1]=p[cj+1]; bf[qi+2]=p[cj+2]; bf[qi+3]=(j>1)]>>(4-((i&1)<<2)))&15), cj=3*j; bf[qi]=p[cj]; bf[qi+1]=p[cj+1]; bf[qi+2]=p[cj+2]; bf[qi+3]=(j>>3)]>>>(7 -((x&7) )))& 1), al=(gr==tr*255)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }\n\t\t\telse if(depth== 2) for(var x=0; x>>2)]>>>(6 -((x&3)<<1)))& 3), al=(gr==tr* 85)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }\n\t\t\telse if(depth== 4) for(var x=0; x>>1)]>>>(4 -((x&1)<<2)))&15), al=(gr==tr* 17)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }\n\t\t\telse if(depth== 8) for(var x=0; x>>2<<3);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);\nvar D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R(N.buffer,N.byteOffset+D,q),w);d=D+q<<3;\nw+=q;continue}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b.J;C=b.h;X=(1<<9)-1;u=(1<<5)-1}if(m==2){J=A(N,d,5)+257;\nh=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var E=d,j=1;for(var c=0;c<38;c+=2){b.Q[c]=0;b.Q[c+1]=0}for(var c=0;\ncj)j=K}d+=3*Q;M(b.Q,j);I(b.Q,j,b.u);v=b.w;C=b.d;\nd=l(b.u,(1<>>4;if(p>>>8==0){W[w++]=p}else if(p==256){break}else{var z=w+p-254;\nif(p>264){var _=b.q[p-257];z=w+(_>>>3)+A(N,d,_&7);d+=_&7}var $=C[e(N,d)&u];d+=$&15;var s=$>>>4,Y=b.c[s],a=(Y>>>4)+n(N,d,Y&15);\nd+=Y&15;while(w>>4;\nif(b<=15){A[I]=b;I++}else{var Z=0,m=0;if(b==16){m=3+l(V,n,2);n+=2;Z=A[I-1]}else if(b==17){m=3+l(V,n,3);\nn+=3}else if(b==18){m=11+l(V,n,7);n+=7}var J=I+m;while(I>>1;\nwhile(An)n=M;A++}while(A>1,I=N[l+1],e=M<<4|I,b=W-I,Z=N[l]<>>15-W;R[J]=e;Z++}}};H.H.l=function(N,W){var R=H.H.m.r,V=15-W;for(var n=0;n>>V}};H.H.M=function(N,W,R){R=R<<(W&7);var V=W>>>3;N[V]|=R;N[V+1]|=R>>>8};\nH.H.I=function(N,W,R){R=R<<(W&7);var V=W>>>3;N[V]|=R;N[V+1]|=R>>>8;N[V+2]|=R>>>16};H.H.e=function(N,W,R){return(N[W>>>3]|N[(W>>>3)+1]<<8)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)&(1<>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16)>>>(W&7)};\nH.H.i=function(N,W){return(N[W>>>3]|N[(W>>>3)+1]<<8|N[(W>>>3)+2]<<16|N[(W>>>3)+3]<<24)>>>(W&7)};H.H.m=function(){var N=Uint16Array,W=Uint32Array;\nreturn{K:new N(16),j:new N(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new N(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new W(32),J:new N(512),_:[],h:new N(32),$:[],w:new N(32768),C:[],v:[],d:new N(32768),D:[],u:new N(512),Q:[],r:new N(1<<15),s:new W(286),Y:new W(30),a:new W(19),t:new W(15e3),k:new N(1<<16),g:new N(1<<15)}}();\n(function(){var N=H.H.m,W=1<<15;for(var R=0;R>>1|(V&1431655765)<<1;\nV=(V&3435973836)>>>2|(V&858993459)<<2;V=(V&4042322160)>>>4|(V&252645135)<<4;V=(V&4278255360)>>>8|(V&16711935)<<8;\nN.r[R]=(V>>>16|V<<16)>>>17}function n(A,l,M){while(l--!=0)A.push(0,M)}for(var R=0;R<32;R++){N.q[R]=N.S[R]<<3|N.T[R];\nN.c[R]=N.p[R]<<4|N.z[R]}n(N._,144,8);n(N._,255-143,9);n(N._,279-255,7);n(N._,287-279,8);H.H.n(N._,9);\nH.H.A(N._,9,N.J);H.H.l(N._,9);n(N.$,32,5);H.H.n(N.$,5);H.H.A(N.$,5,N.h);H.H.l(N.$,5);n(N.Q,19,0);n(N.C,286,0);\nn(N.D,30,0);n(N.v,320,0)}());return H.H.N}()\n\n\nUPNG.decode._readInterlace = function(data, out)\n{\n\tvar w = out.width, h = out.height;\n\tvar bpp = UPNG.decode._getBPP(out), cbpp = bpp>>3, bpl = Math.ceil(w*bpp/8);\n\tvar img = new Uint8Array( h * bpl );\n\tvar di = 0;\n\n\tvar starting_row = [ 0, 0, 4, 0, 2, 0, 1 ];\n\tvar starting_col = [ 0, 4, 0, 2, 0, 1, 0 ];\n\tvar row_increment = [ 8, 8, 8, 4, 4, 2, 2 ];\n\tvar col_increment = [ 8, 8, 4, 4, 2, 2, 1 ];\n\n\tvar pass=0;\n\twhile(pass<7)\n\t{\n\t\tvar ri = row_increment[pass], ci = col_increment[pass];\n\t\tvar sw = 0, sh = 0;\n\t\tvar cr = starting_row[pass]; while(cr>3]; val = (val>>(7-(cdi&7)))&1;\n\t\t\t\t\timg[row*bpl + (col>>3)] |= (val << (7-((col&7)<<0)));\n\t\t\t\t}\n\t\t\t\tif(bpp==2) {\n\t\t\t\t\tvar val = data[cdi>>3]; val = (val>>(6-(cdi&7)))&3;\n\t\t\t\t\timg[row*bpl + (col>>2)] |= (val << (6-((col&3)<<1)));\n\t\t\t\t}\n\t\t\t\tif(bpp==4) {\n\t\t\t\t\tvar val = data[cdi>>3]; val = (val>>(4-(cdi&7)))&15;\n\t\t\t\t\timg[row*bpl + (col>>1)] |= (val << (4-((col&1)<<2)));\n\t\t\t\t}\n\t\t\t\tif(bpp>=8) {\n\t\t\t\t\tvar ii = row*bpl+col*cbpp;\n\t\t\t\t\tfor(var j=0; j>3)+j];\n\t\t\t\t}\n\t\t\t\tcdi+=bpp; col+=ci;\n\t\t\t}\n\t\t\ty++; row += ri;\n\t\t}\n\t\tif(sw*sh!=0) di += sh * (1 + bpll);\n\t\tpass = pass + 1;\n\t}\n\treturn img;\n}\n\nUPNG.decode._getBPP = function(out) {\n\tvar noc = [1,null,3,1,2,null,4][out.ctype];\n\treturn noc * out.depth;\n}\n\nUPNG.decode._filterZero = function(data, out, off, w, h)\n{\n\tvar bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), paeth = UPNG.decode._paeth;\n\tbpp = Math.ceil(bpp/8);\n\t\n\tvar i=0, di=1, type=data[off], x=0;\n\t\n\tif(type>1) data[off]=[0,0,1][type-2]; \n\tif(type==3) for(x=bpp; x>>1) )&255;\n\n\tfor(var y=0; y>>1));\n\t\t\t for(; x>>1) ); }\n\t\telse { for(; x>8)&255; buff[p+1] = n&255; },\n\treadUint : function(buff,p) { return (buff[p]*(256*256*256)) + ((buff[p+1]<<16) | (buff[p+2]<< 8) | buff[p+3]); },\n\twriteUint : function(buff,p,n){ buff[p]=(n>>24)&255; buff[p+1]=(n>>16)&255; buff[p+2]=(n>>8)&255; buff[p+3]=n&255; },\n\treadASCII : function(buff,p,l){ var s = \"\"; for(var i=0; i=0 && yoff>=0) { si = (y*sw+x)<<2; ti = (( yoff+y)*tw+xoff+x)<<2; }\n\t\t\telse { si = ((-yoff+y)*sw-xoff+x)<<2; ti = (y*tw+x)<<2; }\n\t\t\t\n\t\t\tif (mode==0) { tb[ti] = sb[si]; tb[ti+1] = sb[si+1]; tb[ti+2] = sb[si+2]; tb[ti+3] = sb[si+3]; }\n\t\t\telse if(mode==1) {\n\t\t\t\tvar fa = sb[si+3]*(1/255), fr=sb[si]*fa, fg=sb[si+1]*fa, fb=sb[si+2]*fa; \n\t\t\t\tvar ba = tb[ti+3]*(1/255), br=tb[ti]*ba, bg=tb[ti+1]*ba, bb=tb[ti+2]*ba; \n\t\t\t\t\n\t\t\t\tvar ifa=1-fa, oa = fa+ba*ifa, ioa = (oa==0?0:1/oa);\n\t\t\t\ttb[ti+3] = 255*oa; \n\t\t\t\ttb[ti+0] = (fr+br*ifa)*ioa; \n\t\t\t\ttb[ti+1] = (fg+bg*ifa)*ioa; \n\t\t\t\ttb[ti+2] = (fb+bb*ifa)*ioa; \n\t\t\t}\n\t\t\telse if(mode==2){\t// copy only differences, otherwise zero\n\t\t\t\tvar fa = sb[si+3], fr=sb[si], fg=sb[si+1], fb=sb[si+2]; \n\t\t\t\tvar ba = tb[ti+3], br=tb[ti], bg=tb[ti+1], bb=tb[ti+2]; \n\t\t\t\tif(fa==ba && fr==br && fg==bg && fb==bb) { tb[ti]=0; tb[ti+1]=0; tb[ti+2]=0; tb[ti+3]=0; }\n\t\t\t\telse { tb[ti]=fr; tb[ti+1]=fg; tb[ti+2]=fb; tb[ti+3]=fa; }\n\t\t\t}\n\t\t\telse if(mode==3){\t// check if can be blended\n\t\t\t\tvar fa = sb[si+3], fr=sb[si], fg=sb[si+1], fb=sb[si+2]; \n\t\t\t\tvar ba = tb[ti+3], br=tb[ti], bg=tb[ti+1], bb=tb[ti+2]; \n\t\t\t\tif(fa==ba && fr==br && fg==bg && fb==bb) continue;\n\t\t\t\t//if(fa!=255 && ba!=0) return false;\n\t\t\t\tif(fa<220 && ba>20) return false;\n\t\t\t}\n\t\t}\n\treturn true;\n}\n\n\n\n\nUPNG.encode = function(bufs, w, h, ps, dels, tabs, forbidPlte)\n{\n\tif(ps==null) ps=0;\n\tif(forbidPlte==null) forbidPlte = false;\n\n\tvar nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte]);\n\tUPNG.encode.compressPNG(nimg, -1);\n\t\n\treturn UPNG.encode._main(nimg, w, h, dels, tabs);\n}\n\nUPNG.encodeLL = function(bufs, w, h, cc, ac, depth, dels, tabs) {\n\tvar nimg = { ctype: 0 + (cc==1 ? 0 : 2) + (ac==0 ? 0 : 4), depth: depth, frames: [] };\n\t\n\tvar time = Date.now();\n\tvar bipp = (cc+ac)*depth, bipl = bipp * w;\n\tfor(var i=0; i1, pltAlpha = false;\n\t\n\tvar leng = 8 + (16+5+4) /*+ (9+4)*/ + (anim ? 20 : 0);\n\tif(tabs[\"sRGB\"]!=null) leng += 8+1+4;\n\tif(tabs[\"pHYs\"]!=null) leng += 8+9+4;\n\tif(nimg.ctype==3) {\n\t\tvar dl = nimg.plte.length;\n\t\tfor(var i=0; i>>24)!=255) pltAlpha = true;\n\t\tleng += (8 + dl*3 + 4) + (pltAlpha ? (8 + dl*1 + 4) : 0);\n\t}\n\tfor(var j=0; j>>8)&255, b=(c>>>16)&255;\n\t\t\tdata[offset+ti+0]=r; data[offset+ti+1]=g; data[offset+ti+2]=b;\n\t\t}\n\t\toffset+=dl*3;\n\t\twUi(data,offset,crc(data,offset-dl*3-4,dl*3+4)); offset+=4; // crc\n\n\t\tif(pltAlpha) {\n\t\t\twUi(data,offset, dl); offset+=4;\n\t\t\twAs(data,offset,\"tRNS\"); offset+=4;\n\t\t\tfor(var i=0; i>>24)&255;\n\t\t\toffset+=dl;\n\t\t\twUi(data,offset,crc(data,offset-dl-4,dl+4)); offset+=4; // crc\n\t\t}\n\t}\n\t\n\tvar fi = 0;\n\tfor(var j=0; j>2, bln>>2));\n\t\t\tfor(var j=0; jnw && c==img32[i-nw]) ind[i]=ind[i-nw];\n\t\t\t\telse {\n\t\t\t\t\tvar cmc = cmap[c];\n\t\t\t\t\tif(cmc==null) { cmap[c]=cmc=plte.length; plte.push(c); if(plte.length>=300) break; }\n\t\t\t\t\tind[i]=cmc;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//console.log(\"make palette\", Date.now()-time); time = Date.now();\n\t}\n\t\n\tvar cc=plte.length; //console.log(\"colors:\",cc);\n\tif(cc<=256 && forbidPlte==false) {\n\t\tif(cc<= 2) depth=1; else if(cc<= 4) depth=2; else if(cc<=16) depth=4; else depth=8;\n\t\tdepth = Math.max(depth, minBits);\n\t}\n\t\n\tfor(var j=0; j>1)] |= (inj[ii+x]<<(4-(x&1)*4));\n\t\t\t\telse if(depth==2) for(var x=0; x>2)] |= (inj[ii+x]<<(6-(x&3)*2));\n\t\t\t\telse if(depth==1) for(var x=0; x>3)] |= (inj[ii+x]<<(7-(x&7)*1));\n\t\t\t}\n\t\t\tcimg=nimg; ctype=3; bpp=1;\n\t\t}\n\t\telse if(gotAlpha==false && frms.length==1) {\t// some next \"reduced\" frames may contain alpha for blending\n\t\t\tvar nimg = new Uint8Array(nw*nh*3), area=nw*nh;\n\t\t\tfor(var i=0; i palette indices\", Date.now()-time); time = Date.now();\n\t\n\treturn {ctype:ctype, depth:depth, plte:plte, frames:frms };\n}\nUPNG.encode.framize = function(bufs,w,h,alwaysBlend,evenCrd,forbidPrev) {\n\t/* DISPOSE\n\t - 0 : no change\n\t\t- 1 : clear to transparent\n\t\t- 2 : retstore to content before rendering (previous frame disposed)\n\t\tBLEND\n\t\t- 0 : replace\n\t\t- 1 : blend\n\t*/\n\tvar frms = [];\n\tfor(var j=0; jmax) max=x;\n\t\t\t\t\t\tif(ymay) may=y;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(max==-1) mix=miy=max=may=0;\n\t\t\t\tif(evenCrd) { if((mix&1)==1)mix--; if((miy&1)==1)miy--; }\n\t\t\t\tvar sarea = (max-mix+1)*(may-miy+1);\n\t\t\t\tif(sareamax) max=cx;\n\t\t\tif(cymay) may=cy;\n\t\t}\n\t}\n\tif(max==-1) mix=miy=max=may=0;\n\tif(evenCrd) { if((mix&1)==1)mix--; if((miy&1)==1)miy--; }\n\tr = {x:mix, y:miy, width:max-mix+1, height:may-miy+1};\n\t\n\tvar fr = frms[i]; fr.rect = r; fr.blend = 1; fr.img = new Uint8Array(r.width*r.height*4);\n\tif(frms[i-1].dispose==0) {\n\t\tUPNG._copyTile(pimg,w,h, fr.img,r.width,r.height, -r.x,-r.y, 0);\n\t\tUPNG.encode._prepareDiff(cimg,w,h,fr.img,r);\n\t\t//UPNG._copyTile(cimg,w,h, fr.img,r.width,r.height, -r.x,-r.y, 2);\n\t}\n\telse\n\t\tUPNG._copyTile(cimg,w,h, fr.img,r.width,r.height, -r.x,-r.y, 0);\n}\nUPNG.encode._prepareDiff = function(cimg, w,h, nimg, rec) {\n\tUPNG._copyTile(cimg,w,h, nimg,rec.width,rec.height, -rec.x,-rec.y, 2);\n\t/*\n\tvar n32 = new Uint32Array(nimg.buffer);\n\tvar og = new Uint8Array(rec.width*rec.height*4), o32 = new Uint32Array(og.buffer);\n\tUPNG._copyTile(cimg,w,h, og,rec.width,rec.height, -rec.x,-rec.y, 0);\n\tfor(var i=4; i>>2]==o32[(i>>>2)-1]) {\n\t\t\tn32[i>>>2]=o32[i>>>2];\n\t\t\t//var j = i, c=p32[(i>>>2)-1];\n\t\t\t//while(p32[j>>>2]==c) { n32[j>>>2]=c; j+=4; }\n\t\t}\n\t}\n\tfor(var i=nimg.length-8; i>0; i-=4) {\n\t\tif(nimg[i+7]!=0 && nimg[i+3]==0 && o32[i>>>2]==o32[(i>>>2)+1]) {\n\t\t\tn32[i>>>2]=o32[i>>>2];\n\t\t\t//var j = i, c=p32[(i>>>2)-1];\n\t\t\t//while(p32[j>>>2]==c) { n32[j>>>2]=c; j+=4; }\n\t\t}\n\t}*/\n}\n\nUPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)\n{\n\tvar fls = [], ftry=[0,1,2,3,4];\n\tif (filter!=-1) ftry=[filter];\n\telse if(h*bpl>500000 || bpp==1) ftry=[0];\n\tvar opts; if(levelZero) opts={level:0};\n\t\n\tvar CMPR = (levelZero && UZIP!=null) ? UZIP : pako;\n\t\n\tfor(var i=0; i>1) +256)&255;\n\t\tif(type==4) for(var x=bpp; x>1))&255;\n\t\t\t\t\t for(var x=bpp; x>1))&255; }\n\t\tif(type==4) { for(var x= 0; x>> 1);\n\t\t\t\telse c = c >>> 1;\n\t\t\t}\n\t\t\ttab[n] = c; }\n\t\treturn tab; })(),\n\tupdate : function(c, buf, off, len) {\n\t\tfor (var i=0; i>> 8);\n\t\treturn c;\n\t},\n\tcrc : function(b,o,l) { return UPNG.crc.update(0xffffffff,b,o,l) ^ 0xffffffff; }\n}\n\n\nUPNG.quantize = function(abuf, ps)\n{\t\n\tvar oimg = new Uint8Array(abuf), nimg = oimg.slice(0), nimg32 = new Uint32Array(nimg.buffer);\n\t\n\tvar KD = UPNG.quantize.getKDtree(nimg, ps);\n\tvar root = KD[0], leafs = KD[1];\n\t\n\tvar planeDst = UPNG.quantize.planeDst;\n\tvar sb = oimg, tb = nimg32, len=sb.length;\n\t\t\n\tvar inds = new Uint8Array(oimg.length>>2);\n\tfor(var i=0; i>2] = nd.ind;\n\t\ttb[i>>2] = nd.est.rgba;\n\t}\n\treturn { abuf:nimg.buffer, inds:inds, plte:leafs };\n}\n\nUPNG.quantize.getKDtree = function(nimg, ps, err) {\n\tif(err==null) err = 0.0001;\n\tvar nimg32 = new Uint32Array(nimg.buffer);\n\t\n\tvar root = {i0:0, i1:nimg.length, bst:null, est:null, tdst:0, left:null, right:null }; // basic statistic, extra statistic\n\troot.bst = UPNG.quantize.stats( nimg,root.i0, root.i1 ); root.est = UPNG.quantize.estats( root.bst );\n\tvar leafs = [root];\n\t\n\twhile(leafs.length maxL) { maxL=leafs[i].est.L; mi=i; }\n\t\tif(maxL=s0 || node.i1<=s0);\n\t\t//console.log(maxL, leafs.length, mi);\n\t\tif(s0wrong) { node.est.L=0; continue; }\n\t\t\n\t\t\n\t\tvar ln = {i0:node.i0, i1:s0, bst:null, est:null, tdst:0, left:null, right:null }; ln.bst = UPNG.quantize.stats( nimg, ln.i0, ln.i1 ); \n\t\tln.est = UPNG.quantize.estats( ln.bst );\n\t\tvar rn = {i0:s0, i1:node.i1, bst:null, est:null, tdst:0, left:null, right:null }; rn.bst = {R:[], m:[], N:node.bst.N-ln.bst.N};\n\t\tfor(var i=0; i<16; i++) rn.bst.R[i] = node.bst.R[i]-ln.bst.R[i];\n\t\tfor(var i=0; i< 4; i++) rn.bst.m[i] = node.bst.m[i]-ln.bst.m[i];\n\t\trn.est = UPNG.quantize.estats( rn.bst );\n\t\t\n\t\tnode.left = ln; node.right = rn;\n\t\tleafs[mi]=ln; leafs.push(rn);\n\t}\n\tleafs.sort(function(a,b) { return b.bst.N-a.bst.N; });\n\tfor(var i=0; i0) { node0=nd.right; node1=nd.left; }\n\t\n\tvar ln = UPNG.quantize.getNearest(node0, r,g,b,a);\n\tif(ln.tdst<=planeDst*planeDst) return ln;\n\tvar rn = UPNG.quantize.getNearest(node1, r,g,b,a);\n\treturn rn.tdst eMq) i1-=4;\n\t\tif(i0>=i1) break;\n\t\t\n\t\tvar t = nimg32[i0>>2]; nimg32[i0>>2] = nimg32[i1>>2]; nimg32[i1>>2]=t;\n\t\t\n\t\ti0+=4; i1-=4;\n\t}\n\twhile(vecDot(nimg, i0, e)>eMq) i0-=4;\n\treturn i0+4;\n}\nUPNG.quantize.vecDot = function(nimg, i, e)\n{\n\treturn nimg[i]*e[0] + nimg[i+1]*e[1] + nimg[i+2]*e[2] + nimg[i+3]*e[3];\n}\nUPNG.quantize.stats = function(nimg, i0, i1){\n\tvar R = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0];\n\tvar m = [0,0,0,0];\n\tvar N = (i1-i0)>>2;\n\tfor(var i=i0; i>>0) };\n}\nUPNG.M4 = {\n\tmultVec : function(m,v) {\n\t\t\treturn [\n\t\t\t\tm[ 0]*v[0] + m[ 1]*v[1] + m[ 2]*v[2] + m[ 3]*v[3],\n\t\t\t\tm[ 4]*v[0] + m[ 5]*v[1] + m[ 6]*v[2] + m[ 7]*v[3],\n\t\t\t\tm[ 8]*v[0] + m[ 9]*v[1] + m[10]*v[2] + m[11]*v[3],\n\t\t\t\tm[12]*v[0] + m[13]*v[1] + m[14]*v[2] + m[15]*v[3]\n\t\t\t];\n\t},\n\tdot : function(x,y) { return x[0]*y[0]+x[1]*y[1]+x[2]*y[2]+x[3]*y[3]; },\n\tsml : function(a,y) { return [a*y[0],a*y[1],a*y[2],a*y[3]]; }\n}\n\nUPNG.encode.concatRGBA = function(bufs) {\n\tvar tlen = 0;\n\tfor(var i=0; i 1)\n throw new Error(\"Animated PNGs are not supported\");\n var frame = new Uint8Array(frames[0]);\n var _a = splitAlphaChannel(frame), rgbChannel = _a.rgbChannel, alphaChannel = _a.alphaChannel;\n this.rgbChannel = rgbChannel;\n var hasAlphaValues = alphaChannel.some(function (a) { return a < 255; });\n if (hasAlphaValues)\n this.alphaChannel = alphaChannel;\n this.type = getImageType(upng.ctype);\n this.width = upng.width;\n this.height = upng.height;\n this.bitsPerComponent = 8;\n }\n PNG.load = function (pngData) { return new PNG(pngData); };\n return PNG;\n}());\nexport { PNG };\n//# sourceMappingURL=png.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PNG } from \"../../utils/png\";\n/**\n * A note of thanks to the developers of https://github.com/foliojs/pdfkit, as\n * this class borrows from:\n * https://github.com/devongovett/pdfkit/blob/e71edab0dd4657b5a767804ba86c94c58d01fbca/lib/image/png.coffee\n */\nvar PngEmbedder = /** @class */ (function () {\n function PngEmbedder(png) {\n this.image = png;\n this.bitsPerComponent = png.bitsPerComponent;\n this.width = png.width;\n this.height = png.height;\n this.colorSpace = 'DeviceRGB';\n }\n PngEmbedder.for = function (imageData) {\n return __awaiter(this, void 0, void 0, function () {\n var png;\n return __generator(this, function (_a) {\n png = PNG.load(imageData);\n return [2 /*return*/, new PngEmbedder(png)];\n });\n });\n };\n PngEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var SMask, xObject;\n return __generator(this, function (_a) {\n SMask = this.embedAlphaChannel(context);\n xObject = context.flateStream(this.image.rgbChannel, {\n Type: 'XObject',\n Subtype: 'Image',\n BitsPerComponent: this.image.bitsPerComponent,\n Width: this.image.width,\n Height: this.image.height,\n ColorSpace: this.colorSpace,\n SMask: SMask,\n });\n if (ref) {\n context.assign(ref, xObject);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(xObject)];\n }\n return [2 /*return*/];\n });\n });\n };\n PngEmbedder.prototype.embedAlphaChannel = function (context) {\n if (!this.image.alphaChannel)\n return undefined;\n var xObject = context.flateStream(this.image.alphaChannel, {\n Type: 'XObject',\n Subtype: 'Image',\n Height: this.image.height,\n Width: this.image.width,\n BitsPerComponent: this.image.bitsPerComponent,\n ColorSpace: 'DeviceGray',\n Decode: [0, 1],\n });\n return context.register(xObject);\n };\n return PngEmbedder;\n}());\nexport default PngEmbedder;\n//# sourceMappingURL=PngEmbedder.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The Stream class contained in this file is a TypeScript port of the\n * JavaScript Stream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nvar Stream = /** @class */ (function () {\n function Stream(buffer, start, length) {\n this.bytes = buffer;\n this.start = start || 0;\n this.pos = this.start;\n this.end = !!start && !!length ? start + length : this.bytes.length;\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.end - this.start;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Stream.prototype, \"isEmpty\", {\n get: function () {\n return this.length === 0;\n },\n enumerable: false,\n configurable: true\n });\n Stream.prototype.getByte = function () {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n };\n Stream.prototype.getUint16 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n };\n Stream.prototype.getInt32 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n };\n // Returns subarray of original buffer, should only be read.\n Stream.prototype.getBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n if (!length) {\n var subarray = bytes.subarray(pos, strEnd);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n else {\n var end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n var subarray = bytes.subarray(pos, end);\n // `this.bytes` is always a `Uint8Array` here.\n return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n }\n };\n Stream.prototype.peekByte = function () {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n };\n Stream.prototype.peekBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n };\n Stream.prototype.skip = function (n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n };\n Stream.prototype.reset = function () {\n this.pos = this.start;\n };\n Stream.prototype.moveStart = function () {\n this.start = this.pos;\n };\n Stream.prototype.makeSubStream = function (start, length) {\n return new Stream(this.bytes, start, length);\n };\n Stream.prototype.decode = function () {\n return this.bytes;\n };\n return Stream;\n}());\nexport default Stream;\n//# sourceMappingURL=Stream.js.map","import { MethodNotImplementedError } from \"../errors\";\nimport Stream from \"./Stream\";\n/*\n * Copyright 2012 Mozilla Foundation\n *\n * The DecodeStream class contained in this file is a TypeScript port of the\n * JavaScript DecodeStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\n// Lots of DecodeStreams are created whose buffers are never used. For these\n// we share a single empty buffer. This is (a) space-efficient and (b) avoids\n// having special cases that would be required if we used |null| for an empty\n// buffer.\nvar emptyBuffer = new Uint8Array(0);\n/**\n * Super class for the decoding streams\n */\nvar DecodeStream = /** @class */ (function () {\n function DecodeStream(maybeMinBufferLength) {\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n Object.defineProperty(DecodeStream.prototype, \"isEmpty\", {\n get: function () {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n },\n enumerable: false,\n configurable: true\n });\n DecodeStream.prototype.getByte = function () {\n var pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n };\n DecodeStream.prototype.getUint16 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n };\n DecodeStream.prototype.getInt32 = function () {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n };\n DecodeStream.prototype.getBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var end;\n var pos = this.pos;\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n var bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n }\n else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n this.pos = end;\n var subarray = this.buffer.subarray(pos, end);\n // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.\n return forceClamped && !(subarray instanceof Uint8ClampedArray)\n ? new Uint8ClampedArray(subarray)\n : subarray;\n };\n DecodeStream.prototype.peekByte = function () {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n };\n DecodeStream.prototype.peekBytes = function (length, forceClamped) {\n if (forceClamped === void 0) { forceClamped = false; }\n var bytes = this.getBytes(length, forceClamped);\n this.pos -= bytes.length;\n return bytes;\n };\n DecodeStream.prototype.skip = function (n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n };\n DecodeStream.prototype.reset = function () {\n this.pos = 0;\n };\n DecodeStream.prototype.makeSubStream = function (start, length /* dict */) {\n var end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n return new Stream(this.buffer, start, length /* dict */);\n };\n DecodeStream.prototype.decode = function () {\n while (!this.eof)\n this.readBlock();\n return this.buffer.subarray(0, this.bufferLength);\n };\n DecodeStream.prototype.readBlock = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'readBlock');\n };\n DecodeStream.prototype.ensureBuffer = function (requested) {\n var buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n var size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n var buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n };\n return DecodeStream;\n}());\nexport default DecodeStream;\n//# sourceMappingURL=DecodeStream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The Ascii85Stream class contained in this file is a TypeScript port of the\n * JavaScript Ascii85Stream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar isSpace = function (ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n};\nvar Ascii85Stream = /** @class */ (function (_super) {\n __extends(Ascii85Stream, _super);\n function Ascii85Stream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.input = new Uint8Array(5);\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength = 0.8 * maybeLength;\n }\n return _this;\n }\n Ascii85Stream.prototype.readBlock = function () {\n var TILDA_CHAR = 0x7e; // '~'\n var Z_LOWER_CHAR = 0x7a; // 'z'\n var EOF = -1;\n var stream = this.stream;\n var c = stream.getByte();\n while (isSpace(c)) {\n c = stream.getByte();\n }\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n var bufferLength = this.bufferLength;\n var buffer;\n var i;\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n }\n else {\n var input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = stream.getByte();\n while (isSpace(c)) {\n c = stream.getByte();\n }\n input[i] = c;\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n var t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xff;\n t >>= 8;\n }\n }\n };\n return Ascii85Stream;\n}(DecodeStream));\nexport default Ascii85Stream;\n//# sourceMappingURL=Ascii85Stream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The AsciiHexStream class contained in this file is a TypeScript port of the\n * JavaScript AsciiHexStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar AsciiHexStream = /** @class */ (function (_super) {\n __extends(AsciiHexStream, _super);\n function AsciiHexStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.firstDigit = -1;\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength = 0.5 * maybeLength;\n }\n return _this;\n }\n AsciiHexStream.prototype.readBlock = function () {\n var UPSTREAM_BLOCK_SIZE = 8000;\n var bytes = this.stream.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n var maxDecodeLength = (bytes.length + 1) >> 1;\n var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n var bufferLength = this.bufferLength;\n var firstDigit = this.firstDigit;\n for (var i = 0, ii = bytes.length; i < ii; i++) {\n var ch = bytes[i];\n var digit = void 0;\n if (ch >= 0x30 && ch <= 0x39) {\n // '0'-'9'\n digit = ch & 0x0f;\n }\n else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n // 'A'-'Z', 'a'-'z'\n digit = (ch & 0x0f) + 9;\n }\n else if (ch === 0x3e) {\n // '>'\n this.eof = true;\n break;\n }\n else {\n // probably whitespace\n continue; // ignoring\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n }\n else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = firstDigit << 4;\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n };\n return AsciiHexStream;\n}(DecodeStream));\nexport default AsciiHexStream;\n//# sourceMappingURL=AsciiHexStream.js.map","/*\n * Copyright 1996-2003 Glyph & Cog, LLC\n *\n * The flate stream implementation contained in this file is a JavaScript port\n * of XPDF's implementation, made available under the Apache 2.0 open source\n * license.\n */\nimport { __extends } from \"tslib\";\n/*\n * Copyright 2012 Mozilla Foundation\n *\n * The FlateStream class contained in this file is a TypeScript port of the\n * JavaScript FlateStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\n/* tslint:disable no-conditional-assignment */\nimport DecodeStream from \"./DecodeStream\";\n// prettier-ignore\nvar codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n]);\n// prettier-ignore\nvar lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n]);\n// prettier-ignore\nvar distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n]);\n// prettier-ignore\nvar fixedLitCodeTab = [new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n ]), 9];\n// prettier-ignore\nvar fixedDistCodeTab = [new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n ]), 5];\nvar FlateStream = /** @class */ (function (_super) {\n __extends(FlateStream, _super);\n function FlateStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n var cmf = stream.getByte();\n var flg = stream.getByte();\n if (cmf === -1 || flg === -1) {\n throw new Error(\"Invalid header in flate stream: \" + cmf + \", \" + flg);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new Error(\"Unknown compression method in flate stream: \" + cmf + \", \" + flg);\n }\n if (((cmf << 8) + flg) % 31 !== 0) {\n throw new Error(\"Bad FCHECK in flate stream: \" + cmf + \", \" + flg);\n }\n if (flg & 0x20) {\n throw new Error(\"FDICT bit set in flate stream: \" + cmf + \", \" + flg);\n }\n _this.codeSize = 0;\n _this.codeBuf = 0;\n return _this;\n }\n FlateStream.prototype.readBlock = function () {\n var buffer;\n var len;\n var str = this.stream;\n // read block header\n var hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n if (hdr === 0) {\n // uncompressed block\n var b = void 0;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n var blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n blockLen |= b << 8;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n var check = b;\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad block header in flate stream');\n }\n check |= b << 8;\n if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new Error('Bad uncompressed block length in flate stream');\n }\n this.codeBuf = 0;\n this.codeSize = 0;\n var bufferLength = this.bufferLength;\n buffer = this.ensureBuffer(bufferLength + blockLen);\n var end = bufferLength + blockLen;\n this.bufferLength = end;\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n }\n else {\n for (var n = bufferLength; n < end; ++n) {\n if ((b = str.getByte()) === -1) {\n this.eof = true;\n break;\n }\n buffer[n] = b;\n }\n }\n return;\n }\n var litCodeTable;\n var distCodeTable;\n if (hdr === 1) {\n // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n }\n else if (hdr === 2) {\n // compressed block, dynamic codes\n var numLitCodes = this.getBits(5) + 257;\n var numDistCodes = this.getBits(5) + 1;\n var numCodeLenCodes = this.getBits(4) + 4;\n // build the code lengths code table\n var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n var i = void 0;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n // build the literal and distance code tables\n len = 0;\n i = 0;\n var codes = numLitCodes + numDistCodes;\n var codeLengths = new Uint8Array(codes);\n var bitsLength = void 0;\n var bitsOffset = void 0;\n var what = void 0;\n while (i < codes) {\n var code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2;\n bitsOffset = 3;\n what = len;\n }\n else if (code === 17) {\n bitsLength = 3;\n bitsOffset = 3;\n what = len = 0;\n }\n else if (code === 18) {\n bitsLength = 7;\n bitsOffset = 11;\n what = len = 0;\n }\n else {\n codeLengths[i++] = len = code;\n continue;\n }\n var repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n }\n else {\n throw new Error('Unknown block type in flate stream');\n }\n buffer = this.buffer;\n var limit = buffer ? buffer.length : 0;\n var pos = this.bufferLength;\n while (true) {\n var code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n var code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n var dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (var k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n };\n FlateStream.prototype.getBits = function (bits) {\n var str = this.stream;\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new Error('Bad encoding in flate stream');\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n return b;\n };\n FlateStream.prototype.getCode = function (table) {\n var str = this.stream;\n var codes = table[0];\n var maxLen = table[1];\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n var b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n var code = codes[codeBuf & ((1 << maxLen) - 1)];\n if (typeof codes === 'number') {\n console.log('FLATE:', code);\n }\n var codeLen = code >> 16;\n var codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new Error('Bad encoding in flate stream');\n }\n this.codeBuf = codeBuf >> codeLen;\n this.codeSize = codeSize - codeLen;\n return codeVal;\n };\n FlateStream.prototype.generateHuffmanTable = function (lengths) {\n var n = lengths.length;\n // find max code length\n var maxLen = 0;\n var i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n // build the table\n var size = 1 << maxLen;\n var codes = new Int32Array(size);\n for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n for (var val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n var code2 = 0;\n var t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n return [codes, maxLen];\n };\n return FlateStream;\n}(DecodeStream));\nexport default FlateStream;\n//# sourceMappingURL=FlateStream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The LZWStream class contained in this file is a TypeScript port of the\n * JavaScript LZWStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar LZWStream = /** @class */ (function (_super) {\n __extends(LZWStream, _super);\n function LZWStream(stream, maybeLength, earlyChange) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n _this.cachedData = 0;\n _this.bitsCached = 0;\n var maxLzwDictionarySize = 4096;\n var lzwState = {\n earlyChange: earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (var i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n _this.lzwState = lzwState;\n return _this;\n }\n LZWStream.prototype.readBlock = function () {\n var blockSize = 512;\n var estimatedDecodedSize = blockSize * 2;\n var decodedSizeDelta = blockSize;\n var i;\n var j;\n var q;\n var lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n var earlyChange = lzwState.earlyChange;\n var nextCode = lzwState.nextCode;\n var dictionaryValues = lzwState.dictionaryValues;\n var dictionaryLengths = lzwState.dictionaryLengths;\n var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n var codeLength = lzwState.codeLength;\n var prevCode = lzwState.prevCode;\n var currentSequence = lzwState.currentSequence;\n var currentSequenceLength = lzwState.currentSequenceLength;\n var decodedLength = 0;\n var currentBufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n for (i = 0; i < blockSize; i++) {\n var code = this.readBits(codeLength);\n var hasPrev = currentSequenceLength > 0;\n if (!code || code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n }\n else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n }\n else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n }\n else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n }\n else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength =\n (nextCode + earlyChange) & (nextCode + earlyChange - 1)\n ? codeLength\n : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n }\n prevCode = code;\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n this.bufferLength = currentBufferLength;\n };\n LZWStream.prototype.readBits = function (n) {\n var bitsCached = this.bitsCached;\n var cachedData = this.cachedData;\n while (bitsCached < n) {\n var c = this.stream.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = bitsCached -= n;\n this.cachedData = cachedData;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n };\n return LZWStream;\n}(DecodeStream));\nexport default LZWStream;\n//# sourceMappingURL=LZWStream.js.map","/*\n * Copyright 2012 Mozilla Foundation\n *\n * The RunLengthStream class contained in this file is a TypeScript port of the\n * JavaScript RunLengthStream class in Mozilla's pdf.js project, made available\n * under the Apache 2.0 open source license.\n */\nimport { __extends } from \"tslib\";\nimport DecodeStream from \"./DecodeStream\";\nvar RunLengthStream = /** @class */ (function (_super) {\n __extends(RunLengthStream, _super);\n function RunLengthStream(stream, maybeLength) {\n var _this = _super.call(this, maybeLength) || this;\n _this.stream = stream;\n return _this;\n }\n RunLengthStream.prototype.readBlock = function () {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n var repeatHeader = this.stream.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n var buffer;\n var bufferLength = this.bufferLength;\n var n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n var source = this.stream.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n }\n else {\n n = 257 - n;\n var b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (var i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n };\n return RunLengthStream;\n}(DecodeStream));\nexport default RunLengthStream;\n//# sourceMappingURL=RunLengthStream.js.map","import { UnexpectedObjectTypeError, UnsupportedEncodingError, } from \"../errors\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport Ascii85Stream from \"./Ascii85Stream\";\nimport AsciiHexStream from \"./AsciiHexStream\";\nimport FlateStream from \"./FlateStream\";\nimport LZWStream from \"./LZWStream\";\nimport RunLengthStream from \"./RunLengthStream\";\nimport Stream from \"./Stream\";\nvar decodeStream = function (stream, encoding, params) {\n if (encoding === PDFName.of('FlateDecode')) {\n return new FlateStream(stream);\n }\n if (encoding === PDFName.of('LZWDecode')) {\n var earlyChange = 1;\n if (params instanceof PDFDict) {\n var EarlyChange = params.lookup(PDFName.of('EarlyChange'));\n if (EarlyChange instanceof PDFNumber) {\n earlyChange = EarlyChange.asNumber();\n }\n }\n return new LZWStream(stream, undefined, earlyChange);\n }\n if (encoding === PDFName.of('ASCII85Decode')) {\n return new Ascii85Stream(stream);\n }\n if (encoding === PDFName.of('ASCIIHexDecode')) {\n return new AsciiHexStream(stream);\n }\n if (encoding === PDFName.of('RunLengthDecode')) {\n return new RunLengthStream(stream);\n }\n throw new UnsupportedEncodingError(encoding.asString());\n};\nexport var decodePDFRawStream = function (_a) {\n var dict = _a.dict, contents = _a.contents;\n var stream = new Stream(contents);\n var Filter = dict.lookup(PDFName.of('Filter'));\n var DecodeParms = dict.lookup(PDFName.of('DecodeParms'));\n if (Filter instanceof PDFName) {\n stream = decodeStream(stream, Filter, DecodeParms);\n }\n else if (Filter instanceof PDFArray) {\n for (var idx = 0, len = Filter.size(); idx < len; idx++) {\n stream = decodeStream(stream, Filter.lookup(idx, PDFName), DecodeParms && DecodeParms.lookupMaybe(idx, PDFDict));\n }\n }\n else if (!!Filter) {\n throw new UnexpectedObjectTypeError([PDFName, PDFArray], Filter);\n }\n return stream;\n};\n//# sourceMappingURL=decode.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { MissingPageContentsEmbeddingError, UnrecognizedStreamTypeError, } from \"../errors\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRawStream from \"../objects/PDFRawStream\";\nimport PDFStream from \"../objects/PDFStream\";\nimport { decodePDFRawStream } from \"../streams/decode\";\nimport PDFContentStream from \"../structures/PDFContentStream\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { mergeIntoTypedArray } from \"../../utils\";\nvar fullPageBoundingBox = function (page) {\n var mediaBox = page.MediaBox();\n var width = mediaBox.lookup(2, PDFNumber).asNumber() -\n mediaBox.lookup(0, PDFNumber).asNumber();\n var height = mediaBox.lookup(3, PDFNumber).asNumber() -\n mediaBox.lookup(1, PDFNumber).asNumber();\n return { left: 0, bottom: 0, right: width, top: height };\n};\n// Returns the identity matrix, modified to position the content of the given\n// bounding box at (0, 0).\nvar boundingBoxAdjustedMatrix = function (bb) { return [1, 0, 0, 1, -bb.left, -bb.bottom]; };\nvar PDFPageEmbedder = /** @class */ (function () {\n function PDFPageEmbedder(page, boundingBox, transformationMatrix) {\n this.page = page;\n var bb = boundingBox !== null && boundingBox !== void 0 ? boundingBox : fullPageBoundingBox(page);\n this.width = bb.right - bb.left;\n this.height = bb.top - bb.bottom;\n this.boundingBox = bb;\n this.transformationMatrix = transformationMatrix !== null && transformationMatrix !== void 0 ? transformationMatrix : boundingBoxAdjustedMatrix(bb);\n }\n PDFPageEmbedder.for = function (page, boundingBox, transformationMatrix) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new PDFPageEmbedder(page, boundingBox, transformationMatrix)];\n });\n });\n };\n PDFPageEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, Contents, Resources, decodedContents, _b, left, bottom, right, top, xObject;\n return __generator(this, function (_c) {\n _a = this.page.normalizedEntries(), Contents = _a.Contents, Resources = _a.Resources;\n if (!Contents)\n throw new MissingPageContentsEmbeddingError();\n decodedContents = this.decodeContents(Contents);\n _b = this.boundingBox, left = _b.left, bottom = _b.bottom, right = _b.right, top = _b.top;\n xObject = context.flateStream(decodedContents, {\n Type: 'XObject',\n Subtype: 'Form',\n FormType: 1,\n BBox: [left, bottom, right, top],\n Matrix: this.transformationMatrix,\n Resources: Resources,\n });\n if (ref) {\n context.assign(ref, xObject);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(xObject)];\n }\n return [2 /*return*/];\n });\n });\n };\n // `contents` is an array of streams which are merged to include them in the XObject.\n // This methods extracts each stream and joins them with a newline character.\n PDFPageEmbedder.prototype.decodeContents = function (contents) {\n var newline = Uint8Array.of(CharCodes.Newline);\n var decodedContents = [];\n for (var idx = 0, len = contents.size(); idx < len; idx++) {\n var stream = contents.lookup(idx, PDFStream);\n var content = void 0;\n if (stream instanceof PDFRawStream) {\n content = decodePDFRawStream(stream).decode();\n }\n else if (stream instanceof PDFContentStream) {\n content = stream.getUnencodedContents();\n }\n else {\n throw new UnrecognizedStreamTypeError(stream);\n }\n decodedContents.push(content, newline);\n }\n return mergeIntoTypedArray.apply(void 0, decodedContents);\n };\n return PDFPageEmbedder;\n}());\nexport default PDFPageEmbedder;\n//# sourceMappingURL=PDFPageEmbedder.js.map","import PDFArray from \"../objects/PDFArray\";\nimport PDFBool from \"../objects/PDFBool\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport { assertEachIs, assertInteger, assertIsOneOf, assertRange, } from \"../../utils\";\nvar asEnum = function (rawValue, enumType) {\n if (rawValue === undefined)\n return undefined;\n return enumType[rawValue];\n};\nexport var NonFullScreenPageMode;\n(function (NonFullScreenPageMode) {\n /**\n * After exiting FullScreen mode, neither the document outline nor thumbnail\n * images should be visible.\n */\n NonFullScreenPageMode[\"UseNone\"] = \"UseNone\";\n /** After exiting FullScreen mode, the document outline should be visible. */\n NonFullScreenPageMode[\"UseOutlines\"] = \"UseOutlines\";\n /** After exiting FullScreen mode, thumbnail images should be visible. */\n NonFullScreenPageMode[\"UseThumbs\"] = \"UseThumbs\";\n /**\n * After exiting FullScreen mode, the optional content group panel should be\n * visible.\n */\n NonFullScreenPageMode[\"UseOC\"] = \"UseOC\";\n})(NonFullScreenPageMode || (NonFullScreenPageMode = {}));\nexport var ReadingDirection;\n(function (ReadingDirection) {\n /** The predominant reading order is Left to Right. */\n ReadingDirection[\"L2R\"] = \"L2R\";\n /**\n * The predominant reading order is Right to left (including vertical writing\n * systems, such as Chinese, Japanese and Korean).\n */\n ReadingDirection[\"R2L\"] = \"R2L\";\n})(ReadingDirection || (ReadingDirection = {}));\nexport var PrintScaling;\n(function (PrintScaling) {\n /** No page scaling. */\n PrintScaling[\"None\"] = \"None\";\n /* Use the PDF reader's default print scaling. */\n PrintScaling[\"AppDefault\"] = \"AppDefault\";\n})(PrintScaling || (PrintScaling = {}));\nexport var Duplex;\n(function (Duplex) {\n /** The PDF reader should print single-sided. */\n Duplex[\"Simplex\"] = \"Simplex\";\n /**\n * The PDF reader should print double sided and flip on the short edge of the\n * sheet.\n */\n Duplex[\"DuplexFlipShortEdge\"] = \"DuplexFlipShortEdge\";\n /**\n * The PDF reader should print double sided and flip on the long edge of the\n * sheet.\n */\n Duplex[\"DuplexFlipLongEdge\"] = \"DuplexFlipLongEdge\";\n})(Duplex || (Duplex = {}));\nvar ViewerPreferences = /** @class */ (function () {\n /** @ignore */\n function ViewerPreferences(dict) {\n this.dict = dict;\n }\n ViewerPreferences.prototype.lookupBool = function (key) {\n var returnObj = this.dict.lookup(PDFName.of(key));\n if (returnObj instanceof PDFBool)\n return returnObj;\n return undefined;\n };\n ViewerPreferences.prototype.lookupName = function (key) {\n var returnObj = this.dict.lookup(PDFName.of(key));\n if (returnObj instanceof PDFName)\n return returnObj;\n return undefined;\n };\n /** @ignore */\n ViewerPreferences.prototype.HideToolbar = function () {\n return this.lookupBool('HideToolbar');\n };\n /** @ignore */\n ViewerPreferences.prototype.HideMenubar = function () {\n return this.lookupBool('HideMenubar');\n };\n /** @ignore */\n ViewerPreferences.prototype.HideWindowUI = function () {\n return this.lookupBool('HideWindowUI');\n };\n /** @ignore */\n ViewerPreferences.prototype.FitWindow = function () {\n return this.lookupBool('FitWindow');\n };\n /** @ignore */\n ViewerPreferences.prototype.CenterWindow = function () {\n return this.lookupBool('CenterWindow');\n };\n /** @ignore */\n ViewerPreferences.prototype.DisplayDocTitle = function () {\n return this.lookupBool('DisplayDocTitle');\n };\n /** @ignore */\n ViewerPreferences.prototype.NonFullScreenPageMode = function () {\n return this.lookupName('NonFullScreenPageMode');\n };\n /** @ignore */\n ViewerPreferences.prototype.Direction = function () {\n return this.lookupName('Direction');\n };\n /** @ignore */\n ViewerPreferences.prototype.PrintScaling = function () {\n return this.lookupName('PrintScaling');\n };\n /** @ignore */\n ViewerPreferences.prototype.Duplex = function () {\n return this.lookupName('Duplex');\n };\n /** @ignore */\n ViewerPreferences.prototype.PickTrayByPDFSize = function () {\n return this.lookupBool('PickTrayByPDFSize');\n };\n /** @ignore */\n ViewerPreferences.prototype.PrintPageRange = function () {\n var PrintPageRange = this.dict.lookup(PDFName.of('PrintPageRange'));\n if (PrintPageRange instanceof PDFArray)\n return PrintPageRange;\n return undefined;\n };\n /** @ignore */\n ViewerPreferences.prototype.NumCopies = function () {\n var NumCopies = this.dict.lookup(PDFName.of('NumCopies'));\n if (NumCopies instanceof PDFNumber)\n return NumCopies;\n return undefined;\n };\n /**\n * Returns `true` if PDF readers should hide the toolbar menus when displaying\n * this document.\n * @returns Whether or not toolbars should be hidden.\n */\n ViewerPreferences.prototype.getHideToolbar = function () {\n var _a, _b;\n return (_b = (_a = this.HideToolbar()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should hide the menu bar when displaying this\n * document.\n * @returns Whether or not the menu bar should be hidden.\n */\n ViewerPreferences.prototype.getHideMenubar = function () {\n var _a, _b;\n return (_b = (_a = this.HideMenubar()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should hide the user interface elements in\n * the document's window (such as scroll bars and navigation controls),\n * leaving only the document's contents displayed.\n * @returns Whether or not user interface elements should be hidden.\n */\n ViewerPreferences.prototype.getHideWindowUI = function () {\n var _a, _b;\n return (_b = (_a = this.HideWindowUI()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should resize the document's window to fit\n * the size of the first displayed page.\n * @returns Whether or not the window should be resized to fit.\n */\n ViewerPreferences.prototype.getFitWindow = function () {\n var _a, _b;\n return (_b = (_a = this.FitWindow()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if PDF readers should position the document's window in the\n * center of the screen.\n * @returns Whether or not to center the document window.\n */\n ViewerPreferences.prototype.getCenterWindow = function () {\n var _a, _b;\n return (_b = (_a = this.CenterWindow()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns `true` if the window's title bar should display the document\n * `Title`, taken from the document metadata (see [[PDFDocument.getTitle]]).\n * Returns `false` if the title bar should instead display the filename of the\n * PDF file.\n * @returns Whether to display the document title.\n */\n ViewerPreferences.prototype.getDisplayDocTitle = function () {\n var _a, _b;\n return (_b = (_a = this.DisplayDocTitle()) === null || _a === void 0 ? void 0 : _a.asBoolean()) !== null && _b !== void 0 ? _b : false;\n };\n /**\n * Returns the page mode, which tells the PDF reader how to display the\n * document after exiting full-screen mode.\n * @returns The page mode after exiting full-screen mode.\n */\n ViewerPreferences.prototype.getNonFullScreenPageMode = function () {\n var _a, _b;\n var mode = (_a = this.NonFullScreenPageMode()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return (_b = asEnum(mode, NonFullScreenPageMode)) !== null && _b !== void 0 ? _b : NonFullScreenPageMode.UseNone;\n };\n /**\n * Returns the predominant reading order for text.\n * @returns The text reading order.\n */\n ViewerPreferences.prototype.getReadingDirection = function () {\n var _a, _b;\n var direction = (_a = this.Direction()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return (_b = asEnum(direction, ReadingDirection)) !== null && _b !== void 0 ? _b : ReadingDirection.L2R;\n };\n /**\n * Returns the page scaling option that the PDF reader should select when the\n * print dialog is displayed.\n * @returns The page scaling option.\n */\n ViewerPreferences.prototype.getPrintScaling = function () {\n var _a, _b;\n var scaling = (_a = this.PrintScaling()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return (_b = asEnum(scaling, PrintScaling)) !== null && _b !== void 0 ? _b : PrintScaling.AppDefault;\n };\n /**\n * Returns the paper handling option that should be used when printing the\n * file from the print dialog.\n * @returns The paper handling option.\n */\n ViewerPreferences.prototype.getDuplex = function () {\n var _a;\n var duplex = (_a = this.Duplex()) === null || _a === void 0 ? void 0 : _a.decodeText();\n return asEnum(duplex, Duplex);\n };\n /**\n * Returns `true` if the PDF page size should be used to select the input\n * paper tray.\n * @returns Whether or not the PDF page size should be used to select the\n * input paper tray.\n */\n ViewerPreferences.prototype.getPickTrayByPDFSize = function () {\n var _a;\n return (_a = this.PickTrayByPDFSize()) === null || _a === void 0 ? void 0 : _a.asBoolean();\n };\n /**\n * Returns an array of page number ranges, which are the values used to\n * initialize the print dialog box when the file is printed. Each range\n * specifies the first (`start`) and last (`end`) pages in a sub-range of\n * pages to be printed. The first page of the PDF file is denoted by 0.\n * For example:\n * ```js\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * const includesPage3 = viewerPrefs\n * .getPrintRanges()\n * .some(pr => pr.start =< 2 && pr.end >= 2)\n * if (includesPage3) console.log('printRange includes page 3')\n * ```\n * @returns An array of objects, each with the properties `start` and `end`,\n * denoting page indices. If not, specified an empty array is\n * returned.\n */\n ViewerPreferences.prototype.getPrintPageRange = function () {\n var rng = this.PrintPageRange();\n if (!rng)\n return [];\n var pageRanges = [];\n for (var i = 0; i < rng.size(); i += 2) {\n // Despite the spec clearly stating that \"The first page of the PDF file\n // shall be donoted by 1\", several test PDFs (spec 1.7) created in\n // Acrobat XI 11.0 and also read with Reader DC 2020.013 indicate this is\n // actually a 0 based index.\n var start = rng.lookup(i, PDFNumber).asNumber();\n var end = rng.lookup(i + 1, PDFNumber).asNumber();\n pageRanges.push({ start: start, end: end });\n }\n return pageRanges;\n };\n /**\n * Returns the number of copies to be printed when the print dialog is opened\n * for this document.\n * @returns The default number of copies to be printed.\n */\n ViewerPreferences.prototype.getNumCopies = function () {\n var _a, _b;\n return (_b = (_a = this.NumCopies()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 1;\n };\n /**\n * Choose whether the PDF reader's toolbars should be hidden while the\n * document is active.\n * @param hideToolbar `true` if the toolbar should be hidden.\n */\n ViewerPreferences.prototype.setHideToolbar = function (hideToolbar) {\n var HideToolbar = this.dict.context.obj(hideToolbar);\n this.dict.set(PDFName.of('HideToolbar'), HideToolbar);\n };\n /**\n * Choose whether the PDF reader's menu bar should be hidden while the\n * document is active.\n * @param hideMenubar `true` if the menu bar should be hidden.\n */\n ViewerPreferences.prototype.setHideMenubar = function (hideMenubar) {\n var HideMenubar = this.dict.context.obj(hideMenubar);\n this.dict.set(PDFName.of('HideMenubar'), HideMenubar);\n };\n /**\n * Choose whether the PDF reader should hide user interface elements in the\n * document's window (such as scroll bars and navigation controls), leaving\n * only the document's contents displayed.\n * @param hideWindowUI `true` if the user interface elements should be hidden.\n */\n ViewerPreferences.prototype.setHideWindowUI = function (hideWindowUI) {\n var HideWindowUI = this.dict.context.obj(hideWindowUI);\n this.dict.set(PDFName.of('HideWindowUI'), HideWindowUI);\n };\n /**\n * Choose whether the PDF reader should resize the document's window to fit\n * the size of the first displayed page.\n * @param fitWindow `true` if the window should be resized.\n */\n ViewerPreferences.prototype.setFitWindow = function (fitWindow) {\n var FitWindow = this.dict.context.obj(fitWindow);\n this.dict.set(PDFName.of('FitWindow'), FitWindow);\n };\n /**\n * Choose whether the PDF reader should position the document's window in the\n * center of the screen.\n * @param centerWindow `true` if the window should be centered.\n */\n ViewerPreferences.prototype.setCenterWindow = function (centerWindow) {\n var CenterWindow = this.dict.context.obj(centerWindow);\n this.dict.set(PDFName.of('CenterWindow'), CenterWindow);\n };\n /**\n * Choose whether the window's title bar should display the document `Title`\n * taken from the document metadata (see [[PDFDocument.setTitle]]). If\n * `false`, the title bar should instead display the PDF filename.\n * @param displayTitle `true` if the document title should be displayed.\n */\n ViewerPreferences.prototype.setDisplayDocTitle = function (displayTitle) {\n var DisplayDocTitle = this.dict.context.obj(displayTitle);\n this.dict.set(PDFName.of('DisplayDocTitle'), DisplayDocTitle);\n };\n /**\n * Choose how the PDF reader should display the document upon exiting\n * full-screen mode. This entry is meaningful only if the value of the\n * `PageMode` entry in the document's [[PDFCatalog]] is `FullScreen`.\n *\n * For example:\n * ```js\n * import { PDFDocument, NonFullScreenPageMode, PDFName } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n *\n * // Set the PageMode\n * pdfDoc.catalog.set(PDFName.of('PageMode'),PDFName.of('FullScreen'))\n *\n * // Set what happens when full-screen is closed\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setNonFullScreenPageMode(NonFullScreenPageMode.UseOutlines)\n * ```\n *\n * @param nonFullScreenPageMode How the document should be displayed upon\n * exiting full screen mode.\n */\n ViewerPreferences.prototype.setNonFullScreenPageMode = function (nonFullScreenPageMode) {\n assertIsOneOf(nonFullScreenPageMode, 'nonFullScreenPageMode', NonFullScreenPageMode);\n var mode = PDFName.of(nonFullScreenPageMode);\n this.dict.set(PDFName.of('NonFullScreenPageMode'), mode);\n };\n /**\n * Choose the predominant reading order for text.\n *\n * This entry has no direct effect on the document's contents or page\n * numbering, but may be used to determine the relative positioning of pages\n * when displayed side by side or printed n-up.\n *\n * For example:\n * ```js\n * import { PDFDocument, ReadingDirection } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setReadingDirection(ReadingDirection.R2L)\n * ```\n *\n * @param readingDirection The reading order for text.\n */\n ViewerPreferences.prototype.setReadingDirection = function (readingDirection) {\n assertIsOneOf(readingDirection, 'readingDirection', ReadingDirection);\n var direction = PDFName.of(readingDirection);\n this.dict.set(PDFName.of('Direction'), direction);\n };\n /**\n * Choose the page scaling option that should be selected when a print dialog\n * is displayed for this document.\n *\n * For example:\n * ```js\n * import { PDFDocument, PrintScaling } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setPrintScaling(PrintScaling.None)\n * ```\n *\n * @param printScaling The print scaling option.\n */\n ViewerPreferences.prototype.setPrintScaling = function (printScaling) {\n assertIsOneOf(printScaling, 'printScaling', PrintScaling);\n var scaling = PDFName.of(printScaling);\n this.dict.set(PDFName.of('PrintScaling'), scaling);\n };\n /**\n * Choose the paper handling option that should be selected by default in the\n * print dialog.\n *\n * For example:\n * ```js\n * import { PDFDocument, Duplex } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n * viewerPrefs.setDuplex(Duplex.DuplexFlipShortEdge)\n * ```\n *\n * @param duplex The double or single sided printing option.\n */\n ViewerPreferences.prototype.setDuplex = function (duplex) {\n assertIsOneOf(duplex, 'duplex', Duplex);\n var dup = PDFName.of(duplex);\n this.dict.set(PDFName.of('Duplex'), dup);\n };\n /**\n * Choose whether the PDF document's page size should be used to select the\n * input paper tray when printing. This setting influences only the preset\n * values used to populate the print dialog presented by a PDF reader.\n *\n * If PickTrayByPDFSize is true, the check box in the print dialog associated\n * with input paper tray should be checked. This setting has no effect on\n * operating systems that do not provide the ability to pick the input tray\n * by size.\n *\n * @param pickTrayByPDFSize `true` if the document's page size should be used\n * to select the input paper tray.\n */\n ViewerPreferences.prototype.setPickTrayByPDFSize = function (pickTrayByPDFSize) {\n var PickTrayByPDFSize = this.dict.context.obj(pickTrayByPDFSize);\n this.dict.set(PDFName.of('PickTrayByPDFSize'), PickTrayByPDFSize);\n };\n /**\n * Choose the page numbers used to initialize the print dialog box when the\n * file is printed. The first page of the PDF file is denoted by 0.\n *\n * For example:\n * ```js\n * import { PDFDocument } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const viewerPrefs = pdfDoc.catalog.getOrCreateViewerPreferences()\n *\n * // We can set the default print range to only the first page\n * viewerPrefs.setPrintPageRange({ start: 0, end: 0 })\n *\n * // Or we can supply noncontiguous ranges (e.g. pages 1, 3, and 5-7)\n * viewerPrefs.setPrintPageRange([\n * { start: 0, end: 0 },\n * { start: 2, end: 2 },\n * { start: 4, end: 6 },\n * ])\n * ```\n *\n * @param printPageRange An object or array of objects, each with the\n * properties `start` and `end`, denoting a range of\n * page indices.\n */\n ViewerPreferences.prototype.setPrintPageRange = function (printPageRange) {\n if (!Array.isArray(printPageRange))\n printPageRange = [printPageRange];\n var flatRange = [];\n for (var idx = 0, len = printPageRange.length; idx < len; idx++) {\n flatRange.push(printPageRange[idx].start);\n flatRange.push(printPageRange[idx].end);\n }\n assertEachIs(flatRange, 'printPageRange', ['number']);\n var pageRanges = this.dict.context.obj(flatRange);\n this.dict.set(PDFName.of('PrintPageRange'), pageRanges);\n };\n /**\n * Choose the default number of copies to be printed when the print dialog is\n * opened for this file.\n * @param numCopies The default number of copies.\n */\n ViewerPreferences.prototype.setNumCopies = function (numCopies) {\n assertRange(numCopies, 'numCopies', 1, Number.MAX_VALUE);\n assertInteger(numCopies, 'numCopies');\n var NumCopies = this.dict.context.obj(numCopies);\n this.dict.set(PDFName.of('NumCopies'), NumCopies);\n };\n /** @ignore */\n ViewerPreferences.fromDict = function (dict) {\n return new ViewerPreferences(dict);\n };\n /** @ignore */\n ViewerPreferences.create = function (context) {\n var dict = context.obj({});\n return new ViewerPreferences(dict);\n };\n return ViewerPreferences;\n}());\nexport default ViewerPreferences;\n//# sourceMappingURL=ViewerPreferences.js.map","import PDFDict from \"../objects/PDFDict\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFRef from \"../objects/PDFRef\";\nimport { findLastMatch } from \"../../utils\";\nimport { MissingDAEntryError, MissingTfOperatorError } from \"../errors\";\n// Examples:\n// `/Helv 12 Tf` -> ['Helv', '12']\n// `/HeBo 8.00 Tf` -> ['HeBo', '8.00']\n// `/HeBo Tf` -> ['HeBo', undefined]\nvar tfRegex = /\\/([^\\0\\t\\n\\f\\r\\ ]+)[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]+Tf/;\nvar PDFAcroField = /** @class */ (function () {\n function PDFAcroField(dict, ref) {\n this.dict = dict;\n this.ref = ref;\n }\n PDFAcroField.prototype.T = function () {\n return this.dict.lookupMaybe(PDFName.of('T'), PDFString, PDFHexString);\n };\n PDFAcroField.prototype.Ff = function () {\n var numberOrRef = this.getInheritableAttribute(PDFName.of('Ff'));\n return this.dict.context.lookupMaybe(numberOrRef, PDFNumber);\n };\n PDFAcroField.prototype.V = function () {\n var valueOrRef = this.getInheritableAttribute(PDFName.of('V'));\n return this.dict.context.lookup(valueOrRef);\n };\n PDFAcroField.prototype.Kids = function () {\n return this.dict.lookupMaybe(PDFName.of('Kids'), PDFArray);\n };\n // Parent(): PDFDict | undefined {\n // return this.dict.lookupMaybe(PDFName.of('Parent'), PDFDict);\n // }\n PDFAcroField.prototype.DA = function () {\n var da = this.dict.lookup(PDFName.of('DA'));\n if (da instanceof PDFString || da instanceof PDFHexString)\n return da;\n return undefined;\n };\n PDFAcroField.prototype.setKids = function (kids) {\n this.dict.set(PDFName.of('Kids'), this.dict.context.obj(kids));\n };\n PDFAcroField.prototype.getParent = function () {\n // const parent = this.Parent();\n // if (!parent) return undefined;\n // return new PDFAcroField(parent);\n var parentRef = this.dict.get(PDFName.of('Parent'));\n if (parentRef instanceof PDFRef) {\n var parent_1 = this.dict.lookup(PDFName.of('Parent'), PDFDict);\n return new PDFAcroField(parent_1, parentRef);\n }\n return undefined;\n };\n PDFAcroField.prototype.setParent = function (parent) {\n if (!parent)\n this.dict.delete(PDFName.of('Parent'));\n else\n this.dict.set(PDFName.of('Parent'), parent);\n };\n PDFAcroField.prototype.getFullyQualifiedName = function () {\n var parent = this.getParent();\n if (!parent)\n return this.getPartialName();\n return parent.getFullyQualifiedName() + \".\" + this.getPartialName();\n };\n PDFAcroField.prototype.getPartialName = function () {\n var _a;\n return (_a = this.T()) === null || _a === void 0 ? void 0 : _a.decodeText();\n };\n PDFAcroField.prototype.setPartialName = function (partialName) {\n if (!partialName)\n this.dict.delete(PDFName.of('T'));\n else\n this.dict.set(PDFName.of('T'), PDFHexString.fromText(partialName));\n };\n PDFAcroField.prototype.setDefaultAppearance = function (appearance) {\n this.dict.set(PDFName.of('DA'), PDFString.of(appearance));\n };\n PDFAcroField.prototype.getDefaultAppearance = function () {\n var DA = this.DA();\n if (DA instanceof PDFHexString) {\n return DA.decodeText();\n }\n return DA === null || DA === void 0 ? void 0 : DA.asString();\n };\n PDFAcroField.prototype.setFontSize = function (fontSize) {\n var _a;\n var name = (_a = this.getFullyQualifiedName()) !== null && _a !== void 0 ? _a : '';\n var da = this.getDefaultAppearance();\n if (!da)\n throw new MissingDAEntryError(name);\n var daMatch = findLastMatch(da, tfRegex);\n if (!daMatch.match)\n throw new MissingTfOperatorError(name);\n var daStart = da.slice(0, daMatch.pos - daMatch.match[0].length);\n var daEnd = daMatch.pos <= da.length ? da.slice(daMatch.pos) : '';\n var fontName = daMatch.match[1];\n var modifiedDa = daStart + \" /\" + fontName + \" \" + fontSize + \" Tf \" + daEnd;\n this.setDefaultAppearance(modifiedDa);\n };\n PDFAcroField.prototype.getFlags = function () {\n var _a, _b;\n return (_b = (_a = this.Ff()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 0;\n };\n PDFAcroField.prototype.setFlags = function (flags) {\n this.dict.set(PDFName.of('Ff'), PDFNumber.of(flags));\n };\n PDFAcroField.prototype.hasFlag = function (flag) {\n var flags = this.getFlags();\n return (flags & flag) !== 0;\n };\n PDFAcroField.prototype.setFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags | flag);\n };\n PDFAcroField.prototype.clearFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags & ~flag);\n };\n PDFAcroField.prototype.setFlagTo = function (flag, enable) {\n if (enable)\n this.setFlag(flag);\n else\n this.clearFlag(flag);\n };\n PDFAcroField.prototype.getInheritableAttribute = function (name) {\n var attribute;\n this.ascend(function (node) {\n if (!attribute)\n attribute = node.dict.get(name);\n });\n return attribute;\n };\n PDFAcroField.prototype.ascend = function (visitor) {\n visitor(this);\n var parent = this.getParent();\n if (parent)\n parent.ascend(visitor);\n };\n return PDFAcroField;\n}());\nexport default PDFAcroField;\n//# sourceMappingURL=PDFAcroField.js.map","import PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\n// TODO: Also handle the `/S` and `/D` entries\nvar BorderStyle = /** @class */ (function () {\n function BorderStyle(dict) {\n this.dict = dict;\n }\n BorderStyle.prototype.W = function () {\n var W = this.dict.lookup(PDFName.of('W'));\n if (W instanceof PDFNumber)\n return W;\n return undefined;\n };\n BorderStyle.prototype.getWidth = function () {\n var _a, _b;\n return (_b = (_a = this.W()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 1;\n };\n BorderStyle.prototype.setWidth = function (width) {\n var W = this.dict.context.obj(width);\n this.dict.set(PDFName.of('W'), W);\n };\n BorderStyle.fromDict = function (dict) { return new BorderStyle(dict); };\n return BorderStyle;\n}());\nexport default BorderStyle;\n//# sourceMappingURL=BorderStyle.js.map","import PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFStream from \"../objects/PDFStream\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFNumber from \"../objects/PDFNumber\";\nvar PDFAnnotation = /** @class */ (function () {\n function PDFAnnotation(dict) {\n this.dict = dict;\n }\n // This is technically required by the PDF spec\n PDFAnnotation.prototype.Rect = function () {\n return this.dict.lookup(PDFName.of('Rect'), PDFArray);\n };\n PDFAnnotation.prototype.AP = function () {\n return this.dict.lookupMaybe(PDFName.of('AP'), PDFDict);\n };\n PDFAnnotation.prototype.F = function () {\n var numberOrRef = this.dict.lookup(PDFName.of('F'));\n return this.dict.context.lookupMaybe(numberOrRef, PDFNumber);\n };\n PDFAnnotation.prototype.getRectangle = function () {\n var _a;\n var Rect = this.Rect();\n return (_a = Rect === null || Rect === void 0 ? void 0 : Rect.asRectangle()) !== null && _a !== void 0 ? _a : { x: 0, y: 0, width: 0, height: 0 };\n };\n PDFAnnotation.prototype.setRectangle = function (rect) {\n var x = rect.x, y = rect.y, width = rect.width, height = rect.height;\n var Rect = this.dict.context.obj([x, y, x + width, y + height]);\n this.dict.set(PDFName.of('Rect'), Rect);\n };\n PDFAnnotation.prototype.getAppearanceState = function () {\n var AS = this.dict.lookup(PDFName.of('AS'));\n if (AS instanceof PDFName)\n return AS;\n return undefined;\n };\n PDFAnnotation.prototype.setAppearanceState = function (state) {\n this.dict.set(PDFName.of('AS'), state);\n };\n PDFAnnotation.prototype.setAppearances = function (appearances) {\n this.dict.set(PDFName.of('AP'), appearances);\n };\n PDFAnnotation.prototype.ensureAP = function () {\n var AP = this.AP();\n if (!AP) {\n AP = this.dict.context.obj({});\n this.dict.set(PDFName.of('AP'), AP);\n }\n return AP;\n };\n PDFAnnotation.prototype.getNormalAppearance = function () {\n var AP = this.ensureAP();\n var N = AP.get(PDFName.of('N'));\n if (N instanceof PDFRef || N instanceof PDFDict)\n return N;\n throw new Error(\"Unexpected N type: \" + (N === null || N === void 0 ? void 0 : N.constructor.name));\n };\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n PDFAnnotation.prototype.setNormalAppearance = function (appearance) {\n var AP = this.ensureAP();\n AP.set(PDFName.of('N'), appearance);\n };\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n PDFAnnotation.prototype.setRolloverAppearance = function (appearance) {\n var AP = this.ensureAP();\n AP.set(PDFName.of('R'), appearance);\n };\n /** @param appearance A PDFDict or PDFStream (direct or ref) */\n PDFAnnotation.prototype.setDownAppearance = function (appearance) {\n var AP = this.ensureAP();\n AP.set(PDFName.of('D'), appearance);\n };\n PDFAnnotation.prototype.removeRolloverAppearance = function () {\n var AP = this.AP();\n AP === null || AP === void 0 ? void 0 : AP.delete(PDFName.of('R'));\n };\n PDFAnnotation.prototype.removeDownAppearance = function () {\n var AP = this.AP();\n AP === null || AP === void 0 ? void 0 : AP.delete(PDFName.of('D'));\n };\n PDFAnnotation.prototype.getAppearances = function () {\n var AP = this.AP();\n if (!AP)\n return undefined;\n var N = AP.lookup(PDFName.of('N'), PDFDict, PDFStream);\n var R = AP.lookupMaybe(PDFName.of('R'), PDFDict, PDFStream);\n var D = AP.lookupMaybe(PDFName.of('D'), PDFDict, PDFStream);\n return { normal: N, rollover: R, down: D };\n };\n PDFAnnotation.prototype.getFlags = function () {\n var _a, _b;\n return (_b = (_a = this.F()) === null || _a === void 0 ? void 0 : _a.asNumber()) !== null && _b !== void 0 ? _b : 0;\n };\n PDFAnnotation.prototype.setFlags = function (flags) {\n this.dict.set(PDFName.of('F'), PDFNumber.of(flags));\n };\n PDFAnnotation.prototype.hasFlag = function (flag) {\n var flags = this.getFlags();\n return (flags & flag) !== 0;\n };\n PDFAnnotation.prototype.setFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags | flag);\n };\n PDFAnnotation.prototype.clearFlag = function (flag) {\n var flags = this.getFlags();\n this.setFlags(flags & ~flag);\n };\n PDFAnnotation.prototype.setFlagTo = function (flag, enable) {\n if (enable)\n this.setFlag(flag);\n else\n this.clearFlag(flag);\n };\n PDFAnnotation.fromDict = function (dict) { return new PDFAnnotation(dict); };\n return PDFAnnotation;\n}());\nexport default PDFAnnotation;\n//# sourceMappingURL=PDFAnnotation.js.map","import PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFString from \"../objects/PDFString\";\nvar AppearanceCharacteristics = /** @class */ (function () {\n function AppearanceCharacteristics(dict) {\n this.dict = dict;\n }\n AppearanceCharacteristics.prototype.R = function () {\n var R = this.dict.lookup(PDFName.of('R'));\n if (R instanceof PDFNumber)\n return R;\n return undefined;\n };\n AppearanceCharacteristics.prototype.BC = function () {\n var BC = this.dict.lookup(PDFName.of('BC'));\n if (BC instanceof PDFArray)\n return BC;\n return undefined;\n };\n AppearanceCharacteristics.prototype.BG = function () {\n var BG = this.dict.lookup(PDFName.of('BG'));\n if (BG instanceof PDFArray)\n return BG;\n return undefined;\n };\n AppearanceCharacteristics.prototype.CA = function () {\n var CA = this.dict.lookup(PDFName.of('CA'));\n if (CA instanceof PDFHexString || CA instanceof PDFString)\n return CA;\n return undefined;\n };\n AppearanceCharacteristics.prototype.RC = function () {\n var RC = this.dict.lookup(PDFName.of('RC'));\n if (RC instanceof PDFHexString || RC instanceof PDFString)\n return RC;\n return undefined;\n };\n AppearanceCharacteristics.prototype.AC = function () {\n var AC = this.dict.lookup(PDFName.of('AC'));\n if (AC instanceof PDFHexString || AC instanceof PDFString)\n return AC;\n return undefined;\n };\n AppearanceCharacteristics.prototype.getRotation = function () {\n var _a;\n return (_a = this.R()) === null || _a === void 0 ? void 0 : _a.asNumber();\n };\n AppearanceCharacteristics.prototype.getBorderColor = function () {\n var BC = this.BC();\n if (!BC)\n return undefined;\n var components = [];\n for (var idx = 0, len = BC === null || BC === void 0 ? void 0 : BC.size(); idx < len; idx++) {\n var component = BC.get(idx);\n if (component instanceof PDFNumber)\n components.push(component.asNumber());\n }\n return components;\n };\n AppearanceCharacteristics.prototype.getBackgroundColor = function () {\n var BG = this.BG();\n if (!BG)\n return undefined;\n var components = [];\n for (var idx = 0, len = BG === null || BG === void 0 ? void 0 : BG.size(); idx < len; idx++) {\n var component = BG.get(idx);\n if (component instanceof PDFNumber)\n components.push(component.asNumber());\n }\n return components;\n };\n AppearanceCharacteristics.prototype.getCaptions = function () {\n var CA = this.CA();\n var RC = this.RC();\n var AC = this.AC();\n return {\n normal: CA === null || CA === void 0 ? void 0 : CA.decodeText(),\n rollover: RC === null || RC === void 0 ? void 0 : RC.decodeText(),\n down: AC === null || AC === void 0 ? void 0 : AC.decodeText(),\n };\n };\n AppearanceCharacteristics.prototype.setRotation = function (rotation) {\n var R = this.dict.context.obj(rotation);\n this.dict.set(PDFName.of('R'), R);\n };\n AppearanceCharacteristics.prototype.setBorderColor = function (color) {\n var BC = this.dict.context.obj(color);\n this.dict.set(PDFName.of('BC'), BC);\n };\n AppearanceCharacteristics.prototype.setBackgroundColor = function (color) {\n var BG = this.dict.context.obj(color);\n this.dict.set(PDFName.of('BG'), BG);\n };\n AppearanceCharacteristics.prototype.setCaptions = function (captions) {\n var CA = PDFHexString.fromText(captions.normal);\n this.dict.set(PDFName.of('CA'), CA);\n if (captions.rollover) {\n var RC = PDFHexString.fromText(captions.rollover);\n this.dict.set(PDFName.of('RC'), RC);\n }\n else {\n this.dict.delete(PDFName.of('RC'));\n }\n if (captions.down) {\n var AC = PDFHexString.fromText(captions.down);\n this.dict.set(PDFName.of('AC'), AC);\n }\n else {\n this.dict.delete(PDFName.of('AC'));\n }\n };\n AppearanceCharacteristics.fromDict = function (dict) {\n return new AppearanceCharacteristics(dict);\n };\n return AppearanceCharacteristics;\n}());\nexport default AppearanceCharacteristics;\n//# sourceMappingURL=AppearanceCharacteristics.js.map","import { __extends } from \"tslib\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport BorderStyle from \"./BorderStyle\";\nimport PDFAnnotation from \"./PDFAnnotation\";\nimport AppearanceCharacteristics from \"./AppearanceCharacteristics\";\nvar PDFWidgetAnnotation = /** @class */ (function (_super) {\n __extends(PDFWidgetAnnotation, _super);\n function PDFWidgetAnnotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFWidgetAnnotation.prototype.MK = function () {\n var MK = this.dict.lookup(PDFName.of('MK'));\n if (MK instanceof PDFDict)\n return MK;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.BS = function () {\n var BS = this.dict.lookup(PDFName.of('BS'));\n if (BS instanceof PDFDict)\n return BS;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.DA = function () {\n var da = this.dict.lookup(PDFName.of('DA'));\n if (da instanceof PDFString || da instanceof PDFHexString)\n return da;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.P = function () {\n var P = this.dict.get(PDFName.of('P'));\n if (P instanceof PDFRef)\n return P;\n return undefined;\n };\n PDFWidgetAnnotation.prototype.setP = function (page) {\n this.dict.set(PDFName.of('P'), page);\n };\n PDFWidgetAnnotation.prototype.setDefaultAppearance = function (appearance) {\n this.dict.set(PDFName.of('DA'), PDFString.of(appearance));\n };\n PDFWidgetAnnotation.prototype.getDefaultAppearance = function () {\n var DA = this.DA();\n if (DA instanceof PDFHexString) {\n return DA.decodeText();\n }\n return DA === null || DA === void 0 ? void 0 : DA.asString();\n };\n PDFWidgetAnnotation.prototype.getAppearanceCharacteristics = function () {\n var MK = this.MK();\n if (MK)\n return AppearanceCharacteristics.fromDict(MK);\n return undefined;\n };\n PDFWidgetAnnotation.prototype.getOrCreateAppearanceCharacteristics = function () {\n var MK = this.MK();\n if (MK)\n return AppearanceCharacteristics.fromDict(MK);\n var ac = AppearanceCharacteristics.fromDict(this.dict.context.obj({}));\n this.dict.set(PDFName.of('MK'), ac.dict);\n return ac;\n };\n PDFWidgetAnnotation.prototype.getBorderStyle = function () {\n var BS = this.BS();\n if (BS)\n return BorderStyle.fromDict(BS);\n return undefined;\n };\n PDFWidgetAnnotation.prototype.getOrCreateBorderStyle = function () {\n var BS = this.BS();\n if (BS)\n return BorderStyle.fromDict(BS);\n var bs = BorderStyle.fromDict(this.dict.context.obj({}));\n this.dict.set(PDFName.of('BS'), bs.dict);\n return bs;\n };\n PDFWidgetAnnotation.prototype.getOnValue = function () {\n var _a;\n var normal = (_a = this.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal;\n if (normal instanceof PDFDict) {\n var keys = normal.keys();\n for (var idx = 0, len = keys.length; idx < len; idx++) {\n var key = keys[idx];\n if (key !== PDFName.of('Off'))\n return key;\n }\n }\n return undefined;\n };\n PDFWidgetAnnotation.fromDict = function (dict) {\n return new PDFWidgetAnnotation(dict);\n };\n PDFWidgetAnnotation.create = function (context, parent) {\n var dict = context.obj({\n Type: 'Annot',\n Subtype: 'Widget',\n Rect: [0, 0, 0, 0],\n Parent: parent,\n });\n return new PDFWidgetAnnotation(dict);\n };\n return PDFWidgetAnnotation;\n}(PDFAnnotation));\nexport default PDFWidgetAnnotation;\n//# sourceMappingURL=PDFWidgetAnnotation.js.map","import { __extends } from \"tslib\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroField from \"./PDFAcroField\";\nimport PDFWidgetAnnotation from \"../annotation/PDFWidgetAnnotation\";\nimport { IndexOutOfBoundsError } from \"../errors\";\nvar PDFAcroTerminal = /** @class */ (function (_super) {\n __extends(PDFAcroTerminal, _super);\n function PDFAcroTerminal() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroTerminal.prototype.FT = function () {\n var nameOrRef = this.getInheritableAttribute(PDFName.of('FT'));\n return this.dict.context.lookup(nameOrRef, PDFName);\n };\n PDFAcroTerminal.prototype.getWidgets = function () {\n var kidDicts = this.Kids();\n // This field is itself a widget\n if (!kidDicts)\n return [PDFWidgetAnnotation.fromDict(this.dict)];\n // This field's kids are its widgets\n var widgets = new Array(kidDicts.size());\n for (var idx = 0, len = kidDicts.size(); idx < len; idx++) {\n var dict = kidDicts.lookup(idx, PDFDict);\n widgets[idx] = PDFWidgetAnnotation.fromDict(dict);\n }\n return widgets;\n };\n PDFAcroTerminal.prototype.addWidget = function (ref) {\n var Kids = this.normalizedEntries().Kids;\n Kids.push(ref);\n };\n PDFAcroTerminal.prototype.removeWidget = function (idx) {\n var kidDicts = this.Kids();\n if (!kidDicts) {\n // This field is itself a widget\n if (idx !== 0)\n throw new IndexOutOfBoundsError(idx, 0, 0);\n this.setKids([]);\n }\n else {\n // This field's kids are its widgets\n if (idx < 0 || idx > kidDicts.size()) {\n throw new IndexOutOfBoundsError(idx, 0, kidDicts.size());\n }\n kidDicts.remove(idx);\n }\n };\n PDFAcroTerminal.prototype.normalizedEntries = function () {\n var Kids = this.Kids();\n // If this field is itself a widget (because it was only rendered once in\n // the document, so the field and widget properties were merged) then we\n // add itself to the `Kids` array. The alternative would be to try\n // splitting apart the widget properties and creating a separate object\n // for them.\n if (!Kids) {\n Kids = this.dict.context.obj([this.ref]);\n this.dict.set(PDFName.of('Kids'), Kids);\n }\n return { Kids: Kids };\n };\n PDFAcroTerminal.fromDict = function (dict, ref) {\n return new PDFAcroTerminal(dict, ref);\n };\n return PDFAcroTerminal;\n}(PDFAcroField));\nexport default PDFAcroTerminal;\n//# sourceMappingURL=PDFAcroTerminal.js.map","import { __extends } from \"tslib\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nimport { IndexOutOfBoundsError } from \"../errors\";\nvar PDFAcroButton = /** @class */ (function (_super) {\n __extends(PDFAcroButton, _super);\n function PDFAcroButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroButton.prototype.Opt = function () {\n return this.dict.lookupMaybe(PDFName.of('Opt'), PDFString, PDFHexString, PDFArray);\n };\n PDFAcroButton.prototype.setOpt = function (opt) {\n this.dict.set(PDFName.of('Opt'), this.dict.context.obj(opt));\n };\n PDFAcroButton.prototype.getExportValues = function () {\n var opt = this.Opt();\n if (!opt)\n return undefined;\n if (opt instanceof PDFString || opt instanceof PDFHexString) {\n return [opt];\n }\n var values = [];\n for (var idx = 0, len = opt.size(); idx < len; idx++) {\n var value = opt.lookup(idx);\n if (value instanceof PDFString || value instanceof PDFHexString) {\n values.push(value);\n }\n }\n return values;\n };\n PDFAcroButton.prototype.removeExportValue = function (idx) {\n var opt = this.Opt();\n if (!opt)\n return;\n if (opt instanceof PDFString || opt instanceof PDFHexString) {\n if (idx !== 0)\n throw new IndexOutOfBoundsError(idx, 0, 0);\n this.setOpt([]);\n }\n else {\n if (idx < 0 || idx > opt.size()) {\n throw new IndexOutOfBoundsError(idx, 0, opt.size());\n }\n opt.remove(idx);\n }\n };\n // Enforce use use of /Opt even if it isn't strictly necessary\n PDFAcroButton.prototype.normalizeExportValues = function () {\n var _a, _b, _c, _d;\n var exportValues = (_a = this.getExportValues()) !== null && _a !== void 0 ? _a : [];\n var Opt = [];\n var widgets = this.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var exportVal = (_b = exportValues[idx]) !== null && _b !== void 0 ? _b : PDFHexString.fromText((_d = (_c = widget.getOnValue()) === null || _c === void 0 ? void 0 : _c.decodeText()) !== null && _d !== void 0 ? _d : '');\n Opt.push(exportVal);\n }\n this.setOpt(Opt);\n };\n /**\n * Reuses existing opt if one exists with the same value (assuming\n * `useExistingIdx` is `true`). Returns index of existing (or new) opt.\n */\n PDFAcroButton.prototype.addOpt = function (opt, useExistingOptIdx) {\n var _a;\n this.normalizeExportValues();\n var optText = opt.decodeText();\n var existingIdx;\n if (useExistingOptIdx) {\n var exportValues = (_a = this.getExportValues()) !== null && _a !== void 0 ? _a : [];\n for (var idx = 0, len = exportValues.length; idx < len; idx++) {\n var exportVal = exportValues[idx];\n if (exportVal.decodeText() === optText)\n existingIdx = idx;\n }\n }\n var Opt = this.Opt();\n Opt.push(opt);\n return existingIdx !== null && existingIdx !== void 0 ? existingIdx : Opt.size() - 1;\n };\n PDFAcroButton.prototype.addWidgetWithOpt = function (widget, opt, useExistingOptIdx) {\n var optIdx = this.addOpt(opt, useExistingOptIdx);\n var apStateValue = PDFName.of(String(optIdx));\n this.addWidget(widget);\n return apStateValue;\n };\n return PDFAcroButton;\n}(PDFAcroTerminal));\nexport default PDFAcroButton;\n//# sourceMappingURL=PDFAcroButton.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroButton from \"./PDFAcroButton\";\nimport { InvalidAcroFieldValueError } from \"../errors\";\nvar PDFAcroCheckBox = /** @class */ (function (_super) {\n __extends(PDFAcroCheckBox, _super);\n function PDFAcroCheckBox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroCheckBox.prototype.setValue = function (value) {\n var _a;\n var onValue = (_a = this.getOnValue()) !== null && _a !== void 0 ? _a : PDFName.of('Yes');\n if (value !== onValue && value !== PDFName.of('Off')) {\n throw new InvalidAcroFieldValueError();\n }\n this.dict.set(PDFName.of('V'), value);\n var widgets = this.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getOnValue() === value ? value : PDFName.of('Off');\n widget.setAppearanceState(state);\n }\n };\n PDFAcroCheckBox.prototype.getValue = function () {\n var v = this.V();\n if (v instanceof PDFName)\n return v;\n return PDFName.of('Off');\n };\n PDFAcroCheckBox.prototype.getOnValue = function () {\n var widget = this.getWidgets()[0];\n return widget === null || widget === void 0 ? void 0 : widget.getOnValue();\n };\n PDFAcroCheckBox.fromDict = function (dict, ref) {\n return new PDFAcroCheckBox(dict, ref);\n };\n PDFAcroCheckBox.create = function (context) {\n var dict = context.obj({\n FT: 'Btn',\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroCheckBox(dict, ref);\n };\n return PDFAcroCheckBox;\n}(PDFAcroButton));\nexport default PDFAcroCheckBox;\n//# sourceMappingURL=PDFAcroCheckBox.js.map","var flag = function (bitIndex) { return 1 << bitIndex; };\n/** From PDF spec table 221 */\nexport var AcroFieldFlags;\n(function (AcroFieldFlags) {\n /**\n * If set, the user may not change the value of the field. Any associated\n * widget annotations will not interact with the user; that is, they will not\n * respond to mouse clicks or change their appearance in response to mouse\n * motions. This flag is useful for fields whose values are computed or\n * imported from a database.\n */\n AcroFieldFlags[AcroFieldFlags[\"ReadOnly\"] = flag(1 - 1)] = \"ReadOnly\";\n /**\n * If set, the field shall have a value at the time it is exported by a\n * submit-form action (see 12.7.5.2, \"Submit-Form Action\").\n */\n AcroFieldFlags[AcroFieldFlags[\"Required\"] = flag(2 - 1)] = \"Required\";\n /**\n * If set, the field shall not be exported by a submit-form action\n * (see 12.7.5.2, \"Submit-Form Action\").\n */\n AcroFieldFlags[AcroFieldFlags[\"NoExport\"] = flag(3 - 1)] = \"NoExport\";\n})(AcroFieldFlags || (AcroFieldFlags = {}));\n/** From PDF spec table 226 */\nexport var AcroButtonFlags;\n(function (AcroButtonFlags) {\n /**\n * (Radio buttons only) If set, exactly one radio button shall be selected at\n * all times; selecting the currently selected button has no effect. If clear,\n * clicking the selected button deselects it, leaving no button selected.\n */\n AcroButtonFlags[AcroButtonFlags[\"NoToggleToOff\"] = flag(15 - 1)] = \"NoToggleToOff\";\n /**\n * If set, the field is a set of radio buttons; if clear, the field is a check\n * box. This flag may be set only if the Pushbutton flag is clear.\n */\n AcroButtonFlags[AcroButtonFlags[\"Radio\"] = flag(16 - 1)] = \"Radio\";\n /**\n * If set, the field is a pushbutton that does not retain a permanent value.\n */\n AcroButtonFlags[AcroButtonFlags[\"PushButton\"] = flag(17 - 1)] = \"PushButton\";\n /**\n * If set, a group of radio buttons within a radio button field that use the\n * same value for the on state will turn on and off in unison; that is if one\n * is checked, they are all checked. If clear, the buttons are mutually\n * exclusive (the same behavior as HTML radio buttons).\n */\n AcroButtonFlags[AcroButtonFlags[\"RadiosInUnison\"] = flag(26 - 1)] = \"RadiosInUnison\";\n})(AcroButtonFlags || (AcroButtonFlags = {}));\n/** From PDF spec table 228 */\nexport var AcroTextFlags;\n(function (AcroTextFlags) {\n /**\n * If set, the field may contain multiple lines of text; if clear, the field's\n * text shall be restricted to a single line.\n */\n AcroTextFlags[AcroTextFlags[\"Multiline\"] = flag(13 - 1)] = \"Multiline\";\n /**\n * If set, the field is intended for entering a secure password that should\n * not be echoed visibly to the screen. Characters typed from the keyboard\n * shall instead be echoed in some unreadable form, such as asterisks or\n * bullet characters.\n * > NOTE To protect password confidentiality, readers should never store\n * > the value of the text field in the PDF file if this flag is set.\n */\n AcroTextFlags[AcroTextFlags[\"Password\"] = flag(14 - 1)] = \"Password\";\n /**\n * If set, the text entered in the field represents the pathname of a file\n * whose contents shall be submitted as the value of the field.\n */\n AcroTextFlags[AcroTextFlags[\"FileSelect\"] = flag(21 - 1)] = \"FileSelect\";\n /**\n * If set, text entered in the field shall not be spell-checked.\n */\n AcroTextFlags[AcroTextFlags[\"DoNotSpellCheck\"] = flag(23 - 1)] = \"DoNotSpellCheck\";\n /**\n * If set, the field shall not scroll (horizontally for single-line fields,\n * vertically for multiple-line fields) to accommodate more text than fits\n * within its annotation rectangle. Once the field is full, no further text\n * shall be accepted for interactive form filling; for non-interactive form\n * filling, the filler should take care not to add more character than will\n * visibly fit in the defined area.\n */\n AcroTextFlags[AcroTextFlags[\"DoNotScroll\"] = flag(24 - 1)] = \"DoNotScroll\";\n /**\n * May be set only if the MaxLen entry is present in the text field dictionary\n * (see Table 229) and if the Multiline, Password, and FileSelect flags are\n * clear. If set, the field shall be automatically divided into as many\n * equally spaced positions, or combs, as the value of MaxLen, and the text\n * is laid out into those combs.\n */\n AcroTextFlags[AcroTextFlags[\"Comb\"] = flag(25 - 1)] = \"Comb\";\n /**\n * If set, the value of this field shall be a rich text string\n * (see 12.7.3.4, \"Rich Text Strings\"). If the field has a value, the RV\n * entry of the field dictionary (Table 222) shall specify the rich text\n * string.\n */\n AcroTextFlags[AcroTextFlags[\"RichText\"] = flag(26 - 1)] = \"RichText\";\n})(AcroTextFlags || (AcroTextFlags = {}));\n/** From PDF spec table 230 */\nexport var AcroChoiceFlags;\n(function (AcroChoiceFlags) {\n /**\n * If set, the field is a combo box; if clear, the field is a list box.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"Combo\"] = flag(18 - 1)] = \"Combo\";\n /**\n * If set, the combo box shall include an editable text box as well as a\n * drop-down list; if clear, it shall include only a drop-down list. This\n * flag shall be used only if the Combo flag is set.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"Edit\"] = flag(19 - 1)] = \"Edit\";\n /**\n * If set, the field's option items shall be sorted alphabetically. This flag\n * is intended for use by writers, not by readers. Conforming readers shall\n * display the options in the order in which they occur in the Opt array\n * (see Table 231).\n */\n AcroChoiceFlags[AcroChoiceFlags[\"Sort\"] = flag(20 - 1)] = \"Sort\";\n /**\n * If set, more than one of the field's option items may be selected\n * simultaneously; if clear, at most one item shall be selected.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"MultiSelect\"] = flag(22 - 1)] = \"MultiSelect\";\n /**\n * If set, text entered in the field shall not be spell-checked. This flag\n * shall not be used unless the Combo and Edit flags are both set.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"DoNotSpellCheck\"] = flag(23 - 1)] = \"DoNotSpellCheck\";\n /**\n * If set, the new value shall be committed as soon as a selection is made\n * (commonly with the pointing device). In this case, supplying a value for\n * a field involves three actions: selecting the field for fill-in,\n * selecting a choice for the fill-in value, and leaving that field, which\n * finalizes or \"commits\" the data choice and triggers any actions associated\n * with the entry or changing of this data. If this flag is on, then\n * processing does not wait for leaving the field action to occur, but\n * immediately proceeds to the third step.\n *\n * This option enables applications to perform an action once a selection is\n * made, without requiring the user to exit the field. If clear, the new\n * value is not committed until the user exits the field.\n */\n AcroChoiceFlags[AcroChoiceFlags[\"CommitOnSelChange\"] = flag(27 - 1)] = \"CommitOnSelChange\";\n})(AcroChoiceFlags || (AcroChoiceFlags = {}));\n//# sourceMappingURL=flags.js.map","import { __extends } from \"tslib\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport { AcroChoiceFlags } from \"./flags\";\nimport { InvalidAcroFieldValueError, MultiSelectValueError, } from \"../errors\";\nvar PDFAcroChoice = /** @class */ (function (_super) {\n __extends(PDFAcroChoice, _super);\n function PDFAcroChoice() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroChoice.prototype.setValues = function (values) {\n if (this.hasFlag(AcroChoiceFlags.Combo) &&\n !this.hasFlag(AcroChoiceFlags.Edit) &&\n !this.valuesAreValid(values)) {\n throw new InvalidAcroFieldValueError();\n }\n if (values.length === 0) {\n this.dict.delete(PDFName.of('V'));\n }\n if (values.length === 1) {\n this.dict.set(PDFName.of('V'), values[0]);\n }\n if (values.length > 1) {\n if (!this.hasFlag(AcroChoiceFlags.MultiSelect)) {\n throw new MultiSelectValueError();\n }\n this.dict.set(PDFName.of('V'), this.dict.context.obj(values));\n }\n this.updateSelectedIndices(values);\n };\n PDFAcroChoice.prototype.valuesAreValid = function (values) {\n var options = this.getOptions();\n var _loop_1 = function (idx, len) {\n var val = values[idx].decodeText();\n if (!options.find(function (o) { return val === (o.display || o.value).decodeText(); })) {\n return { value: false };\n }\n };\n for (var idx = 0, len = values.length; idx < len; idx++) {\n var state_1 = _loop_1(idx, len);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return true;\n };\n PDFAcroChoice.prototype.updateSelectedIndices = function (values) {\n if (values.length > 1) {\n var indices = new Array(values.length);\n var options = this.getOptions();\n var _loop_2 = function (idx, len) {\n var val = values[idx].decodeText();\n indices[idx] = options.findIndex(function (o) { return val === (o.display || o.value).decodeText(); });\n };\n for (var idx = 0, len = values.length; idx < len; idx++) {\n _loop_2(idx, len);\n }\n this.dict.set(PDFName.of('I'), this.dict.context.obj(indices.sort()));\n }\n else {\n this.dict.delete(PDFName.of('I'));\n }\n };\n PDFAcroChoice.prototype.getValues = function () {\n var v = this.V();\n if (v instanceof PDFString || v instanceof PDFHexString)\n return [v];\n if (v instanceof PDFArray) {\n var values = [];\n for (var idx = 0, len = v.size(); idx < len; idx++) {\n var value = v.lookup(idx);\n if (value instanceof PDFString || value instanceof PDFHexString) {\n values.push(value);\n }\n }\n return values;\n }\n return [];\n };\n PDFAcroChoice.prototype.Opt = function () {\n return this.dict.lookupMaybe(PDFName.of('Opt'), PDFString, PDFHexString, PDFArray);\n };\n PDFAcroChoice.prototype.setOptions = function (options) {\n var newOpt = new Array(options.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n var _a = options[idx], value = _a.value, display = _a.display;\n newOpt[idx] = this.dict.context.obj([value, display || value]);\n }\n this.dict.set(PDFName.of('Opt'), this.dict.context.obj(newOpt));\n };\n PDFAcroChoice.prototype.getOptions = function () {\n var Opt = this.Opt();\n // Not supposed to happen - Opt _should_ always be `PDFArray | undefined`\n if (Opt instanceof PDFString || Opt instanceof PDFHexString) {\n return [{ value: Opt, display: Opt }];\n }\n if (Opt instanceof PDFArray) {\n var res = [];\n for (var idx = 0, len = Opt.size(); idx < len; idx++) {\n var item = Opt.lookup(idx);\n // If `item` is a string, use that as both the export and text value\n if (item instanceof PDFString || item instanceof PDFHexString) {\n res.push({ value: item, display: item });\n }\n // If `item` is an array of one, treat it the same as just a string,\n // if it's an array of two then `item[0]` is the export value and\n // `item[1]` is the text value\n if (item instanceof PDFArray) {\n if (item.size() > 0) {\n var first = item.lookup(0, PDFString, PDFHexString);\n var second = item.lookupMaybe(1, PDFString, PDFHexString);\n res.push({ value: first, display: second || first });\n }\n }\n }\n return res;\n }\n return [];\n };\n return PDFAcroChoice;\n}(PDFAcroTerminal));\nexport default PDFAcroChoice;\n//# sourceMappingURL=PDFAcroChoice.js.map","import { __extends } from \"tslib\";\nimport PDFAcroChoice from \"./PDFAcroChoice\";\nimport { AcroChoiceFlags } from \"./flags\";\nvar PDFAcroComboBox = /** @class */ (function (_super) {\n __extends(PDFAcroComboBox, _super);\n function PDFAcroComboBox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroComboBox.fromDict = function (dict, ref) {\n return new PDFAcroComboBox(dict, ref);\n };\n PDFAcroComboBox.create = function (context) {\n var dict = context.obj({\n FT: 'Ch',\n Ff: AcroChoiceFlags.Combo,\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroComboBox(dict, ref);\n };\n return PDFAcroComboBox;\n}(PDFAcroChoice));\nexport default PDFAcroComboBox;\n//# sourceMappingURL=PDFAcroComboBox.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroField from \"./PDFAcroField\";\nvar PDFAcroNonTerminal = /** @class */ (function (_super) {\n __extends(PDFAcroNonTerminal, _super);\n function PDFAcroNonTerminal() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroNonTerminal.prototype.addField = function (field) {\n var Kids = this.normalizedEntries().Kids;\n Kids === null || Kids === void 0 ? void 0 : Kids.push(field);\n };\n PDFAcroNonTerminal.prototype.normalizedEntries = function () {\n var Kids = this.Kids();\n if (!Kids) {\n Kids = this.dict.context.obj([]);\n this.dict.set(PDFName.of('Kids'), Kids);\n }\n return { Kids: Kids };\n };\n PDFAcroNonTerminal.fromDict = function (dict, ref) {\n return new PDFAcroNonTerminal(dict, ref);\n };\n PDFAcroNonTerminal.create = function (context) {\n var dict = context.obj({});\n var ref = context.register(dict);\n return new PDFAcroNonTerminal(dict, ref);\n };\n return PDFAcroNonTerminal;\n}(PDFAcroField));\nexport default PDFAcroNonTerminal;\n//# sourceMappingURL=PDFAcroNonTerminal.js.map","import { __extends } from \"tslib\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nvar PDFAcroSignature = /** @class */ (function (_super) {\n __extends(PDFAcroSignature, _super);\n function PDFAcroSignature() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroSignature.fromDict = function (dict, ref) {\n return new PDFAcroSignature(dict, ref);\n };\n return PDFAcroSignature;\n}(PDFAcroTerminal));\nexport default PDFAcroSignature;\n//# sourceMappingURL=PDFAcroSignature.js.map","import { __extends } from \"tslib\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFString from \"../objects/PDFString\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nvar PDFAcroText = /** @class */ (function (_super) {\n __extends(PDFAcroText, _super);\n function PDFAcroText() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroText.prototype.MaxLen = function () {\n var maxLen = this.dict.lookup(PDFName.of('MaxLen'));\n if (maxLen instanceof PDFNumber)\n return maxLen;\n return undefined;\n };\n PDFAcroText.prototype.Q = function () {\n var q = this.dict.lookup(PDFName.of('Q'));\n if (q instanceof PDFNumber)\n return q;\n return undefined;\n };\n PDFAcroText.prototype.setMaxLength = function (maxLength) {\n this.dict.set(PDFName.of('MaxLen'), PDFNumber.of(maxLength));\n };\n PDFAcroText.prototype.removeMaxLength = function () {\n this.dict.delete(PDFName.of('MaxLen'));\n };\n PDFAcroText.prototype.getMaxLength = function () {\n var _a;\n return (_a = this.MaxLen()) === null || _a === void 0 ? void 0 : _a.asNumber();\n };\n PDFAcroText.prototype.setQuadding = function (quadding) {\n this.dict.set(PDFName.of('Q'), PDFNumber.of(quadding));\n };\n PDFAcroText.prototype.getQuadding = function () {\n var _a;\n return (_a = this.Q()) === null || _a === void 0 ? void 0 : _a.asNumber();\n };\n PDFAcroText.prototype.setValue = function (value) {\n this.dict.set(PDFName.of('V'), value);\n // const widgets = this.getWidgets();\n // for (let idx = 0, len = widgets.length; idx < len; idx++) {\n // const widget = widgets[idx];\n // const state = widget.getOnValue() === value ? value : PDFName.of('Off');\n // widget.setAppearanceState(state);\n // }\n };\n PDFAcroText.prototype.removeValue = function () {\n this.dict.delete(PDFName.of('V'));\n };\n PDFAcroText.prototype.getValue = function () {\n var v = this.V();\n if (v instanceof PDFString || v instanceof PDFHexString)\n return v;\n return undefined;\n };\n PDFAcroText.fromDict = function (dict, ref) { return new PDFAcroText(dict, ref); };\n PDFAcroText.create = function (context) {\n var dict = context.obj({\n FT: 'Tx',\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroText(dict, ref);\n };\n return PDFAcroText;\n}(PDFAcroTerminal));\nexport default PDFAcroText;\n//# sourceMappingURL=PDFAcroText.js.map","import { __extends } from \"tslib\";\nimport PDFAcroButton from \"./PDFAcroButton\";\nimport { AcroButtonFlags } from \"./flags\";\nvar PDFAcroPushButton = /** @class */ (function (_super) {\n __extends(PDFAcroPushButton, _super);\n function PDFAcroPushButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroPushButton.fromDict = function (dict, ref) {\n return new PDFAcroPushButton(dict, ref);\n };\n PDFAcroPushButton.create = function (context) {\n var dict = context.obj({\n FT: 'Btn',\n Ff: AcroButtonFlags.PushButton,\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroPushButton(dict, ref);\n };\n return PDFAcroPushButton;\n}(PDFAcroButton));\nexport default PDFAcroPushButton;\n//# sourceMappingURL=PDFAcroPushButton.js.map","import { __extends } from \"tslib\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroButton from \"./PDFAcroButton\";\nimport { AcroButtonFlags } from \"./flags\";\nimport { InvalidAcroFieldValueError } from \"../errors\";\nvar PDFAcroRadioButton = /** @class */ (function (_super) {\n __extends(PDFAcroRadioButton, _super);\n function PDFAcroRadioButton() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroRadioButton.prototype.setValue = function (value) {\n var onValues = this.getOnValues();\n if (!onValues.includes(value) && value !== PDFName.of('Off')) {\n throw new InvalidAcroFieldValueError();\n }\n this.dict.set(PDFName.of('V'), value);\n var widgets = this.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getOnValue() === value ? value : PDFName.of('Off');\n widget.setAppearanceState(state);\n }\n };\n PDFAcroRadioButton.prototype.getValue = function () {\n var v = this.V();\n if (v instanceof PDFName)\n return v;\n return PDFName.of('Off');\n };\n PDFAcroRadioButton.prototype.getOnValues = function () {\n var widgets = this.getWidgets();\n var onValues = [];\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var onValue = widgets[idx].getOnValue();\n if (onValue)\n onValues.push(onValue);\n }\n return onValues;\n };\n PDFAcroRadioButton.fromDict = function (dict, ref) {\n return new PDFAcroRadioButton(dict, ref);\n };\n PDFAcroRadioButton.create = function (context) {\n var dict = context.obj({\n FT: 'Btn',\n Ff: AcroButtonFlags.Radio,\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroRadioButton(dict, ref);\n };\n return PDFAcroRadioButton;\n}(PDFAcroButton));\nexport default PDFAcroRadioButton;\n//# sourceMappingURL=PDFAcroRadioButton.js.map","import { __extends } from \"tslib\";\nimport PDFAcroChoice from \"./PDFAcroChoice\";\nvar PDFAcroListBox = /** @class */ (function (_super) {\n __extends(PDFAcroListBox, _super);\n function PDFAcroListBox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFAcroListBox.fromDict = function (dict, ref) {\n return new PDFAcroListBox(dict, ref);\n };\n PDFAcroListBox.create = function (context) {\n var dict = context.obj({\n FT: 'Ch',\n Kids: [],\n });\n var ref = context.register(dict);\n return new PDFAcroListBox(dict, ref);\n };\n return PDFAcroListBox;\n}(PDFAcroChoice));\nexport default PDFAcroListBox;\n//# sourceMappingURL=PDFAcroListBox.js.map","import PDFNumber from \"../objects/PDFNumber\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFAcroTerminal from \"./PDFAcroTerminal\";\nimport PDFAcroNonTerminal from \"./PDFAcroNonTerminal\";\nimport PDFAcroSignature from \"./PDFAcroSignature\";\nimport PDFAcroText from \"./PDFAcroText\";\nimport PDFAcroPushButton from \"./PDFAcroPushButton\";\nimport PDFAcroRadioButton from \"./PDFAcroRadioButton\";\nimport PDFAcroCheckBox from \"./PDFAcroCheckBox\";\nimport PDFAcroComboBox from \"./PDFAcroComboBox\";\nimport PDFAcroListBox from \"./PDFAcroListBox\";\nimport { AcroButtonFlags, AcroChoiceFlags } from \"./flags\";\nexport var createPDFAcroFields = function (kidDicts) {\n if (!kidDicts)\n return [];\n var kids = [];\n for (var idx = 0, len = kidDicts.size(); idx < len; idx++) {\n var ref = kidDicts.get(idx);\n var dict = kidDicts.lookup(idx);\n // if (dict instanceof PDFDict) kids.push(PDFAcroField.fromDict(dict));\n if (ref instanceof PDFRef && dict instanceof PDFDict) {\n kids.push([createPDFAcroField(dict, ref), ref]);\n }\n }\n return kids;\n};\nexport var createPDFAcroField = function (dict, ref) {\n var isNonTerminal = isNonTerminalAcroField(dict);\n if (isNonTerminal)\n return PDFAcroNonTerminal.fromDict(dict, ref);\n return createPDFAcroTerminal(dict, ref);\n};\n// TODO: Maybe just check if the dict is *not* a widget? That might be better.\n// According to the PDF spec:\n//\n// > A field's children in the hierarchy may also include widget annotations\n// > that define its appearance on the page. A field that has children that\n// > are fields is called a non-terminal field. A field that does not have\n// > children that are fields is called a terminal field.\n//\n// The spec is not entirely clear about how to determine whether a given\n// dictionary represents an acrofield or a widget annotation. So we will assume\n// that a dictionary is an acrofield if it is a member of the `/Kids` array\n// and it contains a `/T` entry (widgets do not have `/T` entries). This isn't\n// a bullet proof solution, because the `/T` entry is technically defined as\n// optional for acrofields by the PDF spec. But in practice all acrofields seem\n// to have a `/T` entry defined.\nvar isNonTerminalAcroField = function (dict) {\n var kids = dict.lookup(PDFName.of('Kids'));\n if (kids instanceof PDFArray) {\n for (var idx = 0, len = kids.size(); idx < len; idx++) {\n var kid = kids.lookup(idx);\n var kidIsField = kid instanceof PDFDict && kid.has(PDFName.of('T'));\n if (kidIsField)\n return true;\n }\n }\n return false;\n};\nvar createPDFAcroTerminal = function (dict, ref) {\n var ftNameOrRef = getInheritableAttribute(dict, PDFName.of('FT'));\n var type = dict.context.lookup(ftNameOrRef, PDFName);\n if (type === PDFName.of('Btn'))\n return createPDFAcroButton(dict, ref);\n if (type === PDFName.of('Ch'))\n return createPDFAcroChoice(dict, ref);\n if (type === PDFName.of('Tx'))\n return PDFAcroText.fromDict(dict, ref);\n if (type === PDFName.of('Sig'))\n return PDFAcroSignature.fromDict(dict, ref);\n // We should never reach this line. But there are a lot of weird PDFs out\n // there. So, just to be safe, we'll try to handle things gracefully instead\n // of throwing an error.\n return PDFAcroTerminal.fromDict(dict, ref);\n};\nvar createPDFAcroButton = function (dict, ref) {\n var _a;\n var ffNumberOrRef = getInheritableAttribute(dict, PDFName.of('Ff'));\n var ffNumber = dict.context.lookupMaybe(ffNumberOrRef, PDFNumber);\n var flags = (_a = ffNumber === null || ffNumber === void 0 ? void 0 : ffNumber.asNumber()) !== null && _a !== void 0 ? _a : 0;\n if (flagIsSet(flags, AcroButtonFlags.PushButton)) {\n return PDFAcroPushButton.fromDict(dict, ref);\n }\n else if (flagIsSet(flags, AcroButtonFlags.Radio)) {\n return PDFAcroRadioButton.fromDict(dict, ref);\n }\n else {\n return PDFAcroCheckBox.fromDict(dict, ref);\n }\n};\nvar createPDFAcroChoice = function (dict, ref) {\n var _a;\n var ffNumberOrRef = getInheritableAttribute(dict, PDFName.of('Ff'));\n var ffNumber = dict.context.lookupMaybe(ffNumberOrRef, PDFNumber);\n var flags = (_a = ffNumber === null || ffNumber === void 0 ? void 0 : ffNumber.asNumber()) !== null && _a !== void 0 ? _a : 0;\n if (flagIsSet(flags, AcroChoiceFlags.Combo)) {\n return PDFAcroComboBox.fromDict(dict, ref);\n }\n else {\n return PDFAcroListBox.fromDict(dict, ref);\n }\n};\nvar flagIsSet = function (flags, flag) {\n return (flags & flag) !== 0;\n};\nvar getInheritableAttribute = function (startNode, name) {\n var attribute;\n ascend(startNode, function (node) {\n if (!attribute)\n attribute = node.get(name);\n });\n return attribute;\n};\nvar ascend = function (startNode, visitor) {\n visitor(startNode);\n var Parent = startNode.lookupMaybe(PDFName.of('Parent'), PDFDict);\n if (Parent)\n ascend(Parent, visitor);\n};\n//# sourceMappingURL=utils.js.map","import PDFDict from \"../objects/PDFDict\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFAcroNonTerminal from \"./PDFAcroNonTerminal\";\nimport { createPDFAcroField, createPDFAcroFields, } from \"./utils\";\nvar PDFAcroForm = /** @class */ (function () {\n function PDFAcroForm(dict) {\n this.dict = dict;\n }\n PDFAcroForm.prototype.Fields = function () {\n var fields = this.dict.lookup(PDFName.of('Fields'));\n if (fields instanceof PDFArray)\n return fields;\n return undefined;\n };\n PDFAcroForm.prototype.getFields = function () {\n var Fields = this.normalizedEntries().Fields;\n var fields = new Array(Fields.size());\n for (var idx = 0, len = Fields.size(); idx < len; idx++) {\n var ref = Fields.get(idx);\n var dict = Fields.lookup(idx, PDFDict);\n fields[idx] = [createPDFAcroField(dict, ref), ref];\n }\n return fields;\n };\n PDFAcroForm.prototype.getAllFields = function () {\n var allFields = [];\n var pushFields = function (fields) {\n if (!fields)\n return;\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var field = fields[idx];\n allFields.push(field);\n var fieldModel = field[0];\n if (fieldModel instanceof PDFAcroNonTerminal) {\n pushFields(createPDFAcroFields(fieldModel.Kids()));\n }\n }\n };\n pushFields(this.getFields());\n return allFields;\n };\n PDFAcroForm.prototype.addField = function (field) {\n var Fields = this.normalizedEntries().Fields;\n Fields === null || Fields === void 0 ? void 0 : Fields.push(field);\n };\n PDFAcroForm.prototype.removeField = function (field) {\n var parent = field.getParent();\n var fields = parent === undefined ? this.normalizedEntries().Fields : parent.Kids();\n var index = fields === null || fields === void 0 ? void 0 : fields.indexOf(field.ref);\n if (fields === undefined || index === undefined) {\n throw new Error(\"Tried to remove inexistent field \" + field.getFullyQualifiedName());\n }\n fields.remove(index);\n if (parent !== undefined && fields.size() === 0) {\n this.removeField(parent);\n }\n };\n PDFAcroForm.prototype.normalizedEntries = function () {\n var Fields = this.Fields();\n if (!Fields) {\n Fields = this.dict.context.obj([]);\n this.dict.set(PDFName.of('Fields'), Fields);\n }\n return { Fields: Fields };\n };\n PDFAcroForm.fromDict = function (dict) { return new PDFAcroForm(dict); };\n PDFAcroForm.create = function (context) {\n var dict = context.obj({ Fields: [] });\n return new PDFAcroForm(dict);\n };\n return PDFAcroForm;\n}());\nexport default PDFAcroForm;\n//# sourceMappingURL=PDFAcroForm.js.map","import { __extends } from \"tslib\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport { PDFAcroForm } from \"../acroform\";\nimport ViewerPreferences from '../interactive/ViewerPreferences';\nvar PDFCatalog = /** @class */ (function (_super) {\n __extends(PDFCatalog, _super);\n function PDFCatalog() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFCatalog.prototype.Pages = function () {\n return this.lookup(PDFName.of('Pages'), PDFDict);\n };\n PDFCatalog.prototype.AcroForm = function () {\n return this.lookupMaybe(PDFName.of('AcroForm'), PDFDict);\n };\n PDFCatalog.prototype.getAcroForm = function () {\n var dict = this.AcroForm();\n if (!dict)\n return undefined;\n return PDFAcroForm.fromDict(dict);\n };\n PDFCatalog.prototype.getOrCreateAcroForm = function () {\n var acroForm = this.getAcroForm();\n if (!acroForm) {\n acroForm = PDFAcroForm.create(this.context);\n var acroFormRef = this.context.register(acroForm.dict);\n this.set(PDFName.of('AcroForm'), acroFormRef);\n }\n return acroForm;\n };\n PDFCatalog.prototype.ViewerPreferences = function () {\n return this.lookupMaybe(PDFName.of('ViewerPreferences'), PDFDict);\n };\n PDFCatalog.prototype.getViewerPreferences = function () {\n var dict = this.ViewerPreferences();\n if (!dict)\n return undefined;\n return ViewerPreferences.fromDict(dict);\n };\n PDFCatalog.prototype.getOrCreateViewerPreferences = function () {\n var viewerPrefs = this.getViewerPreferences();\n if (!viewerPrefs) {\n viewerPrefs = ViewerPreferences.create(this.context);\n var viewerPrefsRef = this.context.register(viewerPrefs.dict);\n this.set(PDFName.of('ViewerPreferences'), viewerPrefsRef);\n }\n return viewerPrefs;\n };\n /**\n * Inserts the given ref as a leaf node of this catalog's page tree at the\n * specified index (zero-based). Also increments the `Count` of each node in\n * the page tree hierarchy to accomodate the new page.\n *\n * Returns the ref of the PDFPageTree node into which `leafRef` was inserted.\n */\n PDFCatalog.prototype.insertLeafNode = function (leafRef, index) {\n var pagesRef = this.get(PDFName.of('Pages'));\n var maybeParentRef = this.Pages().insertLeafNode(leafRef, index);\n return maybeParentRef || pagesRef;\n };\n PDFCatalog.prototype.removeLeafNode = function (index) {\n this.Pages().removeLeafNode(index);\n };\n PDFCatalog.withContextAndPages = function (context, pages) {\n var dict = new Map();\n dict.set(PDFName.of('Type'), PDFName.of('Catalog'));\n dict.set(PDFName.of('Pages'), pages);\n return new PDFCatalog(dict, context);\n };\n PDFCatalog.fromMapWithContext = function (map, context) {\n return new PDFCatalog(map, context);\n };\n return PDFCatalog;\n}(PDFDict));\nexport default PDFCatalog;\n//# sourceMappingURL=PDFCatalog.js.map","import { __extends } from \"tslib\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFPageLeaf from \"./PDFPageLeaf\";\nimport { InvalidTargetIndexError, CorruptPageTreeError } from \"../errors\";\nvar PDFPageTree = /** @class */ (function (_super) {\n __extends(PDFPageTree, _super);\n function PDFPageTree() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PDFPageTree.prototype.Parent = function () {\n return this.lookup(PDFName.of('Parent'));\n };\n PDFPageTree.prototype.Kids = function () {\n return this.lookup(PDFName.of('Kids'), PDFArray);\n };\n PDFPageTree.prototype.Count = function () {\n return this.lookup(PDFName.of('Count'), PDFNumber);\n };\n PDFPageTree.prototype.pushTreeNode = function (treeRef) {\n var Kids = this.Kids();\n Kids.push(treeRef);\n };\n PDFPageTree.prototype.pushLeafNode = function (leafRef) {\n var Kids = this.Kids();\n this.insertLeafKid(Kids.size(), leafRef);\n };\n /**\n * Inserts the given ref as a leaf node of this page tree at the specified\n * index (zero-based). Also increments the `Count` of each page tree in the\n * hierarchy to accomodate the new page.\n *\n * Returns the ref of the PDFPageTree node into which `leafRef` was inserted,\n * or `undefined` if it was inserted into the root node (the PDFPageTree upon\n * which the method was first called).\n */\n PDFPageTree.prototype.insertLeafNode = function (leafRef, targetIndex) {\n var Kids = this.Kids();\n var Count = this.Count().asNumber();\n if (targetIndex > Count) {\n throw new InvalidTargetIndexError(targetIndex, Count);\n }\n var leafsRemainingUntilTarget = targetIndex;\n for (var idx = 0, len = Kids.size(); idx < len; idx++) {\n if (leafsRemainingUntilTarget === 0) {\n // Insert page and return\n this.insertLeafKid(idx, leafRef);\n return undefined;\n }\n var kidRef = Kids.get(idx);\n var kid = this.context.lookup(kidRef);\n if (kid instanceof PDFPageTree) {\n if (kid.Count().asNumber() > leafsRemainingUntilTarget) {\n // Dig in\n return (kid.insertLeafNode(leafRef, leafsRemainingUntilTarget) || kidRef);\n }\n else {\n // Move on\n leafsRemainingUntilTarget -= kid.Count().asNumber();\n }\n }\n if (kid instanceof PDFPageLeaf) {\n // Move on\n leafsRemainingUntilTarget -= 1;\n }\n }\n if (leafsRemainingUntilTarget === 0) {\n // Insert page at the end and return\n this.insertLeafKid(Kids.size(), leafRef);\n return undefined;\n }\n // Should never get here if `targetIndex` is valid\n throw new CorruptPageTreeError(targetIndex, 'insertLeafNode');\n };\n /**\n * Removes the leaf node at the specified index (zero-based) from this page\n * tree. Also decrements the `Count` of each page tree in the hierarchy to\n * account for the removed page.\n *\n * If `prune` is true, then intermediate tree nodes will be removed from the\n * tree if they contain 0 children after the leaf node is removed.\n */\n PDFPageTree.prototype.removeLeafNode = function (targetIndex, prune) {\n if (prune === void 0) { prune = true; }\n var Kids = this.Kids();\n var Count = this.Count().asNumber();\n if (targetIndex >= Count) {\n throw new InvalidTargetIndexError(targetIndex, Count);\n }\n var leafsRemainingUntilTarget = targetIndex;\n for (var idx = 0, len = Kids.size(); idx < len; idx++) {\n var kidRef = Kids.get(idx);\n var kid = this.context.lookup(kidRef);\n if (kid instanceof PDFPageTree) {\n if (kid.Count().asNumber() > leafsRemainingUntilTarget) {\n // Dig in\n kid.removeLeafNode(leafsRemainingUntilTarget, prune);\n if (prune && kid.Kids().size() === 0)\n Kids.remove(idx);\n return;\n }\n else {\n // Move on\n leafsRemainingUntilTarget -= kid.Count().asNumber();\n }\n }\n if (kid instanceof PDFPageLeaf) {\n if (leafsRemainingUntilTarget === 0) {\n // Remove page and return\n this.removeKid(idx);\n return;\n }\n else {\n // Move on\n leafsRemainingUntilTarget -= 1;\n }\n }\n }\n // Should never get here if `targetIndex` is valid\n throw new CorruptPageTreeError(targetIndex, 'removeLeafNode');\n };\n PDFPageTree.prototype.ascend = function (visitor) {\n visitor(this);\n var Parent = this.Parent();\n if (Parent)\n Parent.ascend(visitor);\n };\n /** Performs a Post-Order traversal of this page tree */\n PDFPageTree.prototype.traverse = function (visitor) {\n var Kids = this.Kids();\n for (var idx = 0, len = Kids.size(); idx < len; idx++) {\n var kidRef = Kids.get(idx);\n var kid = this.context.lookup(kidRef);\n if (kid instanceof PDFPageTree)\n kid.traverse(visitor);\n visitor(kid, kidRef);\n }\n };\n PDFPageTree.prototype.insertLeafKid = function (kidIdx, leafRef) {\n var Kids = this.Kids();\n this.ascend(function (node) {\n var newCount = node.Count().asNumber() + 1;\n node.set(PDFName.of('Count'), PDFNumber.of(newCount));\n });\n Kids.insert(kidIdx, leafRef);\n };\n PDFPageTree.prototype.removeKid = function (kidIdx) {\n var Kids = this.Kids();\n var kid = Kids.lookup(kidIdx);\n if (kid instanceof PDFPageLeaf) {\n this.ascend(function (node) {\n var newCount = node.Count().asNumber() - 1;\n node.set(PDFName.of('Count'), PDFNumber.of(newCount));\n });\n }\n Kids.remove(kidIdx);\n };\n PDFPageTree.withContext = function (context, parent) {\n var dict = new Map();\n dict.set(PDFName.of('Type'), PDFName.of('Pages'));\n dict.set(PDFName.of('Kids'), context.obj([]));\n dict.set(PDFName.of('Count'), context.obj(0));\n if (parent)\n dict.set(PDFName.of('Parent'), parent);\n return new PDFPageTree(dict, context);\n };\n PDFPageTree.fromMapWithContext = function (map, context) {\n return new PDFPageTree(map, context);\n };\n return PDFPageTree;\n}(PDFDict));\nexport default PDFPageTree;\n//# sourceMappingURL=PDFPageTree.js.map","import CharCodes from \"./CharCodes\";\nexport var IsDigit = new Uint8Array(256);\nIsDigit[CharCodes.Zero] = 1;\nIsDigit[CharCodes.One] = 1;\nIsDigit[CharCodes.Two] = 1;\nIsDigit[CharCodes.Three] = 1;\nIsDigit[CharCodes.Four] = 1;\nIsDigit[CharCodes.Five] = 1;\nIsDigit[CharCodes.Six] = 1;\nIsDigit[CharCodes.Seven] = 1;\nIsDigit[CharCodes.Eight] = 1;\nIsDigit[CharCodes.Nine] = 1;\nexport var IsNumericPrefix = new Uint8Array(256);\nIsNumericPrefix[CharCodes.Period] = 1;\nIsNumericPrefix[CharCodes.Plus] = 1;\nIsNumericPrefix[CharCodes.Minus] = 1;\nexport var IsNumeric = new Uint8Array(256);\nfor (var idx = 0, len = 256; idx < len; idx++) {\n IsNumeric[idx] = IsDigit[idx] || IsNumericPrefix[idx] ? 1 : 0;\n}\n//# sourceMappingURL=Numeric.js.map","import { NumberParsingError } from \"../errors\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { IsDigit, IsNumeric } from \"../syntax/Numeric\";\nimport { IsWhitespace } from \"../syntax/Whitespace\";\nimport { charFromCode } from \"../../utils\";\nvar Newline = CharCodes.Newline, CarriageReturn = CharCodes.CarriageReturn;\n// TODO: Throw error if eof is reached before finishing object parse...\nvar BaseParser = /** @class */ (function () {\n function BaseParser(bytes, capNumbers) {\n if (capNumbers === void 0) { capNumbers = false; }\n this.bytes = bytes;\n this.capNumbers = capNumbers;\n }\n BaseParser.prototype.parseRawInt = function () {\n var value = '';\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (!IsDigit[byte])\n break;\n value += charFromCode(this.bytes.next());\n }\n var numberValue = Number(value);\n if (!value || !isFinite(numberValue)) {\n throw new NumberParsingError(this.bytes.position(), value);\n }\n return numberValue;\n };\n // TODO: Maybe handle exponential format?\n // TODO: Compare performance of string concatenation to charFromCode(...bytes)\n BaseParser.prototype.parseRawNumber = function () {\n var value = '';\n // Parse integer-part, the leading (+ | - | . | 0-9)\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (!IsNumeric[byte])\n break;\n value += charFromCode(this.bytes.next());\n if (byte === CharCodes.Period)\n break;\n }\n // Parse decimal-part, the trailing (0-9)\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (!IsDigit[byte])\n break;\n value += charFromCode(this.bytes.next());\n }\n var numberValue = Number(value);\n if (!value || !isFinite(numberValue)) {\n throw new NumberParsingError(this.bytes.position(), value);\n }\n if (numberValue > Number.MAX_SAFE_INTEGER) {\n if (this.capNumbers) {\n var msg = \"Parsed number that is too large for some PDF readers: \" + value + \", using Number.MAX_SAFE_INTEGER instead.\";\n console.warn(msg);\n return Number.MAX_SAFE_INTEGER;\n }\n else {\n var msg = \"Parsed number that is too large for some PDF readers: \" + value + \", not capping.\";\n console.warn(msg);\n }\n }\n return numberValue;\n };\n BaseParser.prototype.skipWhitespace = function () {\n while (!this.bytes.done() && IsWhitespace[this.bytes.peek()]) {\n this.bytes.next();\n }\n };\n BaseParser.prototype.skipLine = function () {\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (byte === Newline || byte === CarriageReturn)\n return;\n this.bytes.next();\n }\n };\n BaseParser.prototype.skipComment = function () {\n if (this.bytes.peek() !== CharCodes.Percent)\n return false;\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (byte === Newline || byte === CarriageReturn)\n return true;\n this.bytes.next();\n }\n return true;\n };\n BaseParser.prototype.skipWhitespaceAndComments = function () {\n this.skipWhitespace();\n while (this.skipComment())\n this.skipWhitespace();\n };\n BaseParser.prototype.matchKeyword = function (keyword) {\n var initialOffset = this.bytes.offset();\n for (var idx = 0, len = keyword.length; idx < len; idx++) {\n if (this.bytes.done() || this.bytes.next() !== keyword[idx]) {\n this.bytes.moveTo(initialOffset);\n return false;\n }\n }\n return true;\n };\n return BaseParser;\n}());\nexport default BaseParser;\n//# sourceMappingURL=BaseParser.js.map","import { NextByteAssertionError } from \"../errors\";\nimport { decodePDFRawStream } from \"../streams/decode\";\nimport CharCodes from \"../syntax/CharCodes\";\n// TODO: See how line/col tracking affects performance\nvar ByteStream = /** @class */ (function () {\n function ByteStream(bytes) {\n this.idx = 0;\n this.line = 0;\n this.column = 0;\n this.bytes = bytes;\n this.length = this.bytes.length;\n }\n ByteStream.prototype.moveTo = function (offset) {\n this.idx = offset;\n };\n ByteStream.prototype.next = function () {\n var byte = this.bytes[this.idx++];\n if (byte === CharCodes.Newline) {\n this.line += 1;\n this.column = 0;\n }\n else {\n this.column += 1;\n }\n return byte;\n };\n ByteStream.prototype.assertNext = function (expected) {\n if (this.peek() !== expected) {\n throw new NextByteAssertionError(this.position(), expected, this.peek());\n }\n return this.next();\n };\n ByteStream.prototype.peek = function () {\n return this.bytes[this.idx];\n };\n ByteStream.prototype.peekAhead = function (steps) {\n return this.bytes[this.idx + steps];\n };\n ByteStream.prototype.peekAt = function (offset) {\n return this.bytes[offset];\n };\n ByteStream.prototype.done = function () {\n return this.idx >= this.length;\n };\n ByteStream.prototype.offset = function () {\n return this.idx;\n };\n ByteStream.prototype.slice = function (start, end) {\n return this.bytes.slice(start, end);\n };\n ByteStream.prototype.position = function () {\n return { line: this.line, column: this.column, offset: this.idx };\n };\n ByteStream.of = function (bytes) { return new ByteStream(bytes); };\n ByteStream.fromPDFRawStream = function (rawStream) {\n return ByteStream.of(decodePDFRawStream(rawStream).decode());\n };\n return ByteStream;\n}());\nexport default ByteStream;\n//# sourceMappingURL=ByteStream.js.map","import { __spreadArrays } from \"tslib\";\nimport CharCodes from \"./CharCodes\";\nvar Space = CharCodes.Space, CarriageReturn = CharCodes.CarriageReturn, Newline = CharCodes.Newline;\nvar stream = [\n CharCodes.s,\n CharCodes.t,\n CharCodes.r,\n CharCodes.e,\n CharCodes.a,\n CharCodes.m,\n];\nvar endstream = [\n CharCodes.e,\n CharCodes.n,\n CharCodes.d,\n CharCodes.s,\n CharCodes.t,\n CharCodes.r,\n CharCodes.e,\n CharCodes.a,\n CharCodes.m,\n];\nexport var Keywords = {\n header: [\n CharCodes.Percent,\n CharCodes.P,\n CharCodes.D,\n CharCodes.F,\n CharCodes.Dash,\n ],\n eof: [\n CharCodes.Percent,\n CharCodes.Percent,\n CharCodes.E,\n CharCodes.O,\n CharCodes.F,\n ],\n obj: [CharCodes.o, CharCodes.b, CharCodes.j],\n endobj: [\n CharCodes.e,\n CharCodes.n,\n CharCodes.d,\n CharCodes.o,\n CharCodes.b,\n CharCodes.j,\n ],\n xref: [CharCodes.x, CharCodes.r, CharCodes.e, CharCodes.f],\n trailer: [\n CharCodes.t,\n CharCodes.r,\n CharCodes.a,\n CharCodes.i,\n CharCodes.l,\n CharCodes.e,\n CharCodes.r,\n ],\n startxref: [\n CharCodes.s,\n CharCodes.t,\n CharCodes.a,\n CharCodes.r,\n CharCodes.t,\n CharCodes.x,\n CharCodes.r,\n CharCodes.e,\n CharCodes.f,\n ],\n true: [CharCodes.t, CharCodes.r, CharCodes.u, CharCodes.e],\n false: [CharCodes.f, CharCodes.a, CharCodes.l, CharCodes.s, CharCodes.e],\n null: [CharCodes.n, CharCodes.u, CharCodes.l, CharCodes.l],\n stream: stream,\n streamEOF1: __spreadArrays(stream, [Space, CarriageReturn, Newline]),\n streamEOF2: __spreadArrays(stream, [CarriageReturn, Newline]),\n streamEOF3: __spreadArrays(stream, [CarriageReturn]),\n streamEOF4: __spreadArrays(stream, [Newline]),\n endstream: endstream,\n EOF1endstream: __spreadArrays([CarriageReturn, Newline], endstream),\n EOF2endstream: __spreadArrays([CarriageReturn], endstream),\n EOF3endstream: __spreadArrays([Newline], endstream),\n};\n//# sourceMappingURL=Keywords.js.map","import { __extends } from \"tslib\";\nimport { PDFObjectParsingError, PDFStreamParsingError, UnbalancedParenthesisError, } from \"../errors\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFBool from \"../objects/PDFBool\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFHexString from \"../objects/PDFHexString\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNull from \"../objects/PDFNull\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRawStream from \"../objects/PDFRawStream\";\nimport PDFRef from \"../objects/PDFRef\";\nimport PDFString from \"../objects/PDFString\";\nimport BaseParser from \"./BaseParser\";\nimport ByteStream from \"./ByteStream\";\nimport PDFCatalog from \"../structures/PDFCatalog\";\nimport PDFPageLeaf from \"../structures/PDFPageLeaf\";\nimport PDFPageTree from \"../structures/PDFPageTree\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { IsDelimiter } from \"../syntax/Delimiters\";\nimport { Keywords } from \"../syntax/Keywords\";\nimport { IsDigit, IsNumeric } from \"../syntax/Numeric\";\nimport { IsWhitespace } from \"../syntax/Whitespace\";\nimport { charFromCode } from \"../../utils\";\n// TODO: Throw error if eof is reached before finishing object parse...\nvar PDFObjectParser = /** @class */ (function (_super) {\n __extends(PDFObjectParser, _super);\n function PDFObjectParser(byteStream, context, capNumbers) {\n if (capNumbers === void 0) { capNumbers = false; }\n var _this = _super.call(this, byteStream, capNumbers) || this;\n _this.context = context;\n return _this;\n }\n // TODO: Is it possible to reduce duplicate parsing for ref lookaheads?\n PDFObjectParser.prototype.parseObject = function () {\n this.skipWhitespaceAndComments();\n if (this.matchKeyword(Keywords.true))\n return PDFBool.True;\n if (this.matchKeyword(Keywords.false))\n return PDFBool.False;\n if (this.matchKeyword(Keywords.null))\n return PDFNull;\n var byte = this.bytes.peek();\n if (byte === CharCodes.LessThan &&\n this.bytes.peekAhead(1) === CharCodes.LessThan) {\n return this.parseDictOrStream();\n }\n if (byte === CharCodes.LessThan)\n return this.parseHexString();\n if (byte === CharCodes.LeftParen)\n return this.parseString();\n if (byte === CharCodes.ForwardSlash)\n return this.parseName();\n if (byte === CharCodes.LeftSquareBracket)\n return this.parseArray();\n if (IsNumeric[byte])\n return this.parseNumberOrRef();\n throw new PDFObjectParsingError(this.bytes.position(), byte);\n };\n PDFObjectParser.prototype.parseNumberOrRef = function () {\n var firstNum = this.parseRawNumber();\n this.skipWhitespaceAndComments();\n var lookaheadStart = this.bytes.offset();\n if (IsDigit[this.bytes.peek()]) {\n var secondNum = this.parseRawNumber();\n this.skipWhitespaceAndComments();\n if (this.bytes.peek() === CharCodes.R) {\n this.bytes.assertNext(CharCodes.R);\n return PDFRef.of(firstNum, secondNum);\n }\n }\n this.bytes.moveTo(lookaheadStart);\n return PDFNumber.of(firstNum);\n };\n // TODO: Maybe update PDFHexString.of() logic to remove whitespace and validate input?\n PDFObjectParser.prototype.parseHexString = function () {\n var value = '';\n this.bytes.assertNext(CharCodes.LessThan);\n while (!this.bytes.done() && this.bytes.peek() !== CharCodes.GreaterThan) {\n value += charFromCode(this.bytes.next());\n }\n this.bytes.assertNext(CharCodes.GreaterThan);\n return PDFHexString.of(value);\n };\n PDFObjectParser.prototype.parseString = function () {\n var nestingLvl = 0;\n var isEscaped = false;\n var value = '';\n while (!this.bytes.done()) {\n var byte = this.bytes.next();\n value += charFromCode(byte);\n // Check for unescaped parenthesis\n if (!isEscaped) {\n if (byte === CharCodes.LeftParen)\n nestingLvl += 1;\n if (byte === CharCodes.RightParen)\n nestingLvl -= 1;\n }\n // Track whether current character is being escaped or not\n if (byte === CharCodes.BackSlash) {\n isEscaped = !isEscaped;\n }\n else if (isEscaped) {\n isEscaped = false;\n }\n // Once (if) the unescaped parenthesis balance out, return their contents\n if (nestingLvl === 0) {\n // Remove the outer parens so they aren't part of the contents\n return PDFString.of(value.substring(1, value.length - 1));\n }\n }\n throw new UnbalancedParenthesisError(this.bytes.position());\n };\n // TODO: Compare performance of string concatenation to charFromCode(...bytes)\n // TODO: Maybe preallocate small Uint8Array if can use charFromCode?\n PDFObjectParser.prototype.parseName = function () {\n this.bytes.assertNext(CharCodes.ForwardSlash);\n var name = '';\n while (!this.bytes.done()) {\n var byte = this.bytes.peek();\n if (IsWhitespace[byte] || IsDelimiter[byte])\n break;\n name += charFromCode(byte);\n this.bytes.next();\n }\n return PDFName.of(name);\n };\n PDFObjectParser.prototype.parseArray = function () {\n this.bytes.assertNext(CharCodes.LeftSquareBracket);\n this.skipWhitespaceAndComments();\n var pdfArray = PDFArray.withContext(this.context);\n while (this.bytes.peek() !== CharCodes.RightSquareBracket) {\n var element = this.parseObject();\n pdfArray.push(element);\n this.skipWhitespaceAndComments();\n }\n this.bytes.assertNext(CharCodes.RightSquareBracket);\n return pdfArray;\n };\n PDFObjectParser.prototype.parseDict = function () {\n this.bytes.assertNext(CharCodes.LessThan);\n this.bytes.assertNext(CharCodes.LessThan);\n this.skipWhitespaceAndComments();\n var dict = new Map();\n while (!this.bytes.done() &&\n this.bytes.peek() !== CharCodes.GreaterThan &&\n this.bytes.peekAhead(1) !== CharCodes.GreaterThan) {\n var key = this.parseName();\n var value = this.parseObject();\n dict.set(key, value);\n this.skipWhitespaceAndComments();\n }\n this.skipWhitespaceAndComments();\n this.bytes.assertNext(CharCodes.GreaterThan);\n this.bytes.assertNext(CharCodes.GreaterThan);\n var Type = dict.get(PDFName.of('Type'));\n if (Type === PDFName.of('Catalog')) {\n return PDFCatalog.fromMapWithContext(dict, this.context);\n }\n else if (Type === PDFName.of('Pages')) {\n return PDFPageTree.fromMapWithContext(dict, this.context);\n }\n else if (Type === PDFName.of('Page')) {\n return PDFPageLeaf.fromMapWithContext(dict, this.context);\n }\n else {\n return PDFDict.fromMapWithContext(dict, this.context);\n }\n };\n PDFObjectParser.prototype.parseDictOrStream = function () {\n var startPos = this.bytes.position();\n var dict = this.parseDict();\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.streamEOF1) &&\n !this.matchKeyword(Keywords.streamEOF2) &&\n !this.matchKeyword(Keywords.streamEOF3) &&\n !this.matchKeyword(Keywords.streamEOF4) &&\n !this.matchKeyword(Keywords.stream)) {\n return dict;\n }\n var start = this.bytes.offset();\n var end;\n var Length = dict.get(PDFName.of('Length'));\n if (Length instanceof PDFNumber) {\n end = start + Length.asNumber();\n this.bytes.moveTo(end);\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.endstream)) {\n this.bytes.moveTo(start);\n end = this.findEndOfStreamFallback(startPos);\n }\n }\n else {\n end = this.findEndOfStreamFallback(startPos);\n }\n var contents = this.bytes.slice(start, end);\n return PDFRawStream.of(dict, contents);\n };\n PDFObjectParser.prototype.findEndOfStreamFallback = function (startPos) {\n // Move to end of stream, while handling nested streams\n var nestingLvl = 1;\n var end = this.bytes.offset();\n while (!this.bytes.done()) {\n end = this.bytes.offset();\n if (this.matchKeyword(Keywords.stream)) {\n nestingLvl += 1;\n }\n else if (this.matchKeyword(Keywords.EOF1endstream) ||\n this.matchKeyword(Keywords.EOF2endstream) ||\n this.matchKeyword(Keywords.EOF3endstream) ||\n this.matchKeyword(Keywords.endstream)) {\n nestingLvl -= 1;\n }\n else {\n this.bytes.next();\n }\n if (nestingLvl === 0)\n break;\n }\n if (nestingLvl !== 0)\n throw new PDFStreamParsingError(startPos);\n return end;\n };\n PDFObjectParser.forBytes = function (bytes, context, capNumbers) { return new PDFObjectParser(ByteStream.of(bytes), context, capNumbers); };\n PDFObjectParser.forByteStream = function (byteStream, context, capNumbers) {\n if (capNumbers === void 0) { capNumbers = false; }\n return new PDFObjectParser(byteStream, context, capNumbers);\n };\n return PDFObjectParser;\n}(BaseParser));\nexport default PDFObjectParser;\n//# sourceMappingURL=PDFObjectParser.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { ReparseError } from \"../errors\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRef from \"../objects/PDFRef\";\nimport ByteStream from \"./ByteStream\";\nimport PDFObjectParser from \"./PDFObjectParser\";\nimport { waitForTick } from \"../../utils\";\nvar PDFObjectStreamParser = /** @class */ (function (_super) {\n __extends(PDFObjectStreamParser, _super);\n function PDFObjectStreamParser(rawStream, shouldWaitForTick) {\n var _this = _super.call(this, ByteStream.fromPDFRawStream(rawStream), rawStream.dict.context) || this;\n var dict = rawStream.dict;\n _this.alreadyParsed = false;\n _this.shouldWaitForTick = shouldWaitForTick || (function () { return false; });\n _this.firstOffset = dict.lookup(PDFName.of('First'), PDFNumber).asNumber();\n _this.objectCount = dict.lookup(PDFName.of('N'), PDFNumber).asNumber();\n return _this;\n }\n PDFObjectStreamParser.prototype.parseIntoContext = function () {\n return __awaiter(this, void 0, void 0, function () {\n var offsetsAndObjectNumbers, idx, len, _a, objectNumber, offset, object, ref;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (this.alreadyParsed) {\n throw new ReparseError('PDFObjectStreamParser', 'parseIntoContext');\n }\n this.alreadyParsed = true;\n offsetsAndObjectNumbers = this.parseOffsetsAndObjectNumbers();\n idx = 0, len = offsetsAndObjectNumbers.length;\n _b.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n _a = offsetsAndObjectNumbers[idx], objectNumber = _a.objectNumber, offset = _a.offset;\n this.bytes.moveTo(this.firstOffset + offset);\n object = this.parseObject();\n ref = PDFRef.of(objectNumber, 0);\n this.context.assign(ref, object);\n if (!this.shouldWaitForTick()) return [3 /*break*/, 3];\n return [4 /*yield*/, waitForTick()];\n case 2:\n _b.sent();\n _b.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PDFObjectStreamParser.prototype.parseOffsetsAndObjectNumbers = function () {\n var offsetsAndObjectNumbers = [];\n for (var idx = 0, len = this.objectCount; idx < len; idx++) {\n this.skipWhitespaceAndComments();\n var objectNumber = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var offset = this.parseRawInt();\n offsetsAndObjectNumbers.push({ objectNumber: objectNumber, offset: offset });\n }\n return offsetsAndObjectNumbers;\n };\n PDFObjectStreamParser.forStream = function (rawStream, shouldWaitForTick) { return new PDFObjectStreamParser(rawStream, shouldWaitForTick); };\n return PDFObjectStreamParser;\n}(PDFObjectParser));\nexport default PDFObjectStreamParser;\n//# sourceMappingURL=PDFObjectStreamParser.js.map","import { ReparseError } from \"../errors\";\nimport PDFArray from \"../objects/PDFArray\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFNumber from \"../objects/PDFNumber\";\nimport PDFRef from \"../objects/PDFRef\";\nimport ByteStream from \"./ByteStream\";\nvar PDFXRefStreamParser = /** @class */ (function () {\n function PDFXRefStreamParser(rawStream) {\n this.alreadyParsed = false;\n this.dict = rawStream.dict;\n this.bytes = ByteStream.fromPDFRawStream(rawStream);\n this.context = this.dict.context;\n var Size = this.dict.lookup(PDFName.of('Size'), PDFNumber);\n var Index = this.dict.lookup(PDFName.of('Index'));\n if (Index instanceof PDFArray) {\n this.subsections = [];\n for (var idx = 0, len = Index.size(); idx < len; idx += 2) {\n var firstObjectNumber = Index.lookup(idx + 0, PDFNumber).asNumber();\n var length_1 = Index.lookup(idx + 1, PDFNumber).asNumber();\n this.subsections.push({ firstObjectNumber: firstObjectNumber, length: length_1 });\n }\n }\n else {\n this.subsections = [{ firstObjectNumber: 0, length: Size.asNumber() }];\n }\n var W = this.dict.lookup(PDFName.of('W'), PDFArray);\n this.byteWidths = [-1, -1, -1];\n for (var idx = 0, len = W.size(); idx < len; idx++) {\n this.byteWidths[idx] = W.lookup(idx, PDFNumber).asNumber();\n }\n }\n PDFXRefStreamParser.prototype.parseIntoContext = function () {\n if (this.alreadyParsed) {\n throw new ReparseError('PDFXRefStreamParser', 'parseIntoContext');\n }\n this.alreadyParsed = true;\n this.context.trailerInfo = {\n Root: this.dict.get(PDFName.of('Root')),\n Encrypt: this.dict.get(PDFName.of('Encrypt')),\n Info: this.dict.get(PDFName.of('Info')),\n ID: this.dict.get(PDFName.of('ID')),\n };\n var entries = this.parseEntries();\n // for (let idx = 0, len = entries.length; idx < len; idx++) {\n // const entry = entries[idx];\n // if (entry.deleted) this.context.delete(entry.ref);\n // }\n return entries;\n };\n PDFXRefStreamParser.prototype.parseEntries = function () {\n var entries = [];\n var _a = this.byteWidths, typeFieldWidth = _a[0], offsetFieldWidth = _a[1], genFieldWidth = _a[2];\n for (var subsectionIdx = 0, subsectionLen = this.subsections.length; subsectionIdx < subsectionLen; subsectionIdx++) {\n var _b = this.subsections[subsectionIdx], firstObjectNumber = _b.firstObjectNumber, length_2 = _b.length;\n for (var objIdx = 0; objIdx < length_2; objIdx++) {\n var type = 0;\n for (var idx = 0, len = typeFieldWidth; idx < len; idx++) {\n type = (type << 8) | this.bytes.next();\n }\n var offset = 0;\n for (var idx = 0, len = offsetFieldWidth; idx < len; idx++) {\n offset = (offset << 8) | this.bytes.next();\n }\n var generationNumber = 0;\n for (var idx = 0, len = genFieldWidth; idx < len; idx++) {\n generationNumber = (generationNumber << 8) | this.bytes.next();\n }\n // When the `type` field is absent, it defaults to 1\n if (typeFieldWidth === 0)\n type = 1;\n var objectNumber = firstObjectNumber + objIdx;\n var entry = {\n ref: PDFRef.of(objectNumber, generationNumber),\n offset: offset,\n deleted: type === 0,\n inObjectStream: type === 2,\n };\n entries.push(entry);\n }\n }\n return entries;\n };\n PDFXRefStreamParser.forStream = function (rawStream) {\n return new PDFXRefStreamParser(rawStream);\n };\n return PDFXRefStreamParser;\n}());\nexport default PDFXRefStreamParser;\n//# sourceMappingURL=PDFXRefStreamParser.js.map","import { __awaiter, __extends, __generator } from \"tslib\";\nimport PDFCrossRefSection from \"../document/PDFCrossRefSection\";\nimport PDFHeader from \"../document/PDFHeader\";\nimport PDFTrailer from \"../document/PDFTrailer\";\nimport { MissingKeywordError, MissingPDFHeaderError, PDFInvalidObjectParsingError, ReparseError, StalledParserError, } from \"../errors\";\nimport PDFDict from \"../objects/PDFDict\";\nimport PDFInvalidObject from \"../objects/PDFInvalidObject\";\nimport PDFName from \"../objects/PDFName\";\nimport PDFRawStream from \"../objects/PDFRawStream\";\nimport PDFRef from \"../objects/PDFRef\";\nimport ByteStream from \"./ByteStream\";\nimport PDFObjectParser from \"./PDFObjectParser\";\nimport PDFObjectStreamParser from \"./PDFObjectStreamParser\";\nimport PDFXRefStreamParser from \"./PDFXRefStreamParser\";\nimport PDFContext from \"../PDFContext\";\nimport CharCodes from \"../syntax/CharCodes\";\nimport { Keywords } from \"../syntax/Keywords\";\nimport { IsDigit } from \"../syntax/Numeric\";\nimport { waitForTick } from \"../../utils\";\nvar PDFParser = /** @class */ (function (_super) {\n __extends(PDFParser, _super);\n function PDFParser(pdfBytes, objectsPerTick, throwOnInvalidObject, capNumbers) {\n if (objectsPerTick === void 0) { objectsPerTick = Infinity; }\n if (throwOnInvalidObject === void 0) { throwOnInvalidObject = false; }\n if (capNumbers === void 0) { capNumbers = false; }\n var _this = _super.call(this, ByteStream.of(pdfBytes), PDFContext.create(), capNumbers) || this;\n _this.alreadyParsed = false;\n _this.parsedObjects = 0;\n _this.shouldWaitForTick = function () {\n _this.parsedObjects += 1;\n return _this.parsedObjects % _this.objectsPerTick === 0;\n };\n _this.objectsPerTick = objectsPerTick;\n _this.throwOnInvalidObject = throwOnInvalidObject;\n return _this;\n }\n PDFParser.prototype.parseDocument = function () {\n return __awaiter(this, void 0, void 0, function () {\n var prevOffset, offset;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.alreadyParsed) {\n throw new ReparseError('PDFParser', 'parseDocument');\n }\n this.alreadyParsed = true;\n this.context.header = this.parseHeader();\n _a.label = 1;\n case 1:\n if (!!this.bytes.done()) return [3 /*break*/, 3];\n return [4 /*yield*/, this.parseDocumentSection()];\n case 2:\n _a.sent();\n offset = this.bytes.offset();\n if (offset === prevOffset) {\n throw new StalledParserError(this.bytes.position());\n }\n prevOffset = offset;\n return [3 /*break*/, 1];\n case 3:\n this.maybeRecoverRoot();\n if (this.context.lookup(PDFRef.of(0))) {\n console.warn('Removing parsed object: 0 0 R');\n this.context.delete(PDFRef.of(0));\n }\n return [2 /*return*/, this.context];\n }\n });\n });\n };\n PDFParser.prototype.maybeRecoverRoot = function () {\n var isValidCatalog = function (obj) {\n return obj instanceof PDFDict &&\n obj.lookup(PDFName.of('Type')) === PDFName.of('Catalog');\n };\n var catalog = this.context.lookup(this.context.trailerInfo.Root);\n if (!isValidCatalog(catalog)) {\n var indirectObjects = this.context.enumerateIndirectObjects();\n for (var idx = 0, len = indirectObjects.length; idx < len; idx++) {\n var _a = indirectObjects[idx], ref = _a[0], object = _a[1];\n if (isValidCatalog(object)) {\n this.context.trailerInfo.Root = ref;\n }\n }\n }\n };\n PDFParser.prototype.parseHeader = function () {\n while (!this.bytes.done()) {\n if (this.matchKeyword(Keywords.header)) {\n var major = this.parseRawInt();\n this.bytes.assertNext(CharCodes.Period);\n var minor = this.parseRawInt();\n var header = PDFHeader.forVersion(major, minor);\n this.skipBinaryHeaderComment();\n return header;\n }\n this.bytes.next();\n }\n throw new MissingPDFHeaderError(this.bytes.position());\n };\n PDFParser.prototype.parseIndirectObjectHeader = function () {\n this.skipWhitespaceAndComments();\n var objectNumber = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var generationNumber = this.parseRawInt();\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.obj)) {\n throw new MissingKeywordError(this.bytes.position(), Keywords.obj);\n }\n return PDFRef.of(objectNumber, generationNumber);\n };\n PDFParser.prototype.matchIndirectObjectHeader = function () {\n var initialOffset = this.bytes.offset();\n try {\n this.parseIndirectObjectHeader();\n return true;\n }\n catch (e) {\n this.bytes.moveTo(initialOffset);\n return false;\n }\n };\n PDFParser.prototype.parseIndirectObject = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ref, object;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n ref = this.parseIndirectObjectHeader();\n this.skipWhitespaceAndComments();\n object = this.parseObject();\n this.skipWhitespaceAndComments();\n // if (!this.matchKeyword(Keywords.endobj)) {\n // throw new MissingKeywordError(this.bytes.position(), Keywords.endobj);\n // }\n // TODO: Log a warning if this fails...\n this.matchKeyword(Keywords.endobj);\n if (!(object instanceof PDFRawStream &&\n object.dict.lookup(PDFName.of('Type')) === PDFName.of('ObjStm'))) return [3 /*break*/, 2];\n return [4 /*yield*/, PDFObjectStreamParser.forStream(object, this.shouldWaitForTick).parseIntoContext()];\n case 1:\n _a.sent();\n return [3 /*break*/, 3];\n case 2:\n if (object instanceof PDFRawStream &&\n object.dict.lookup(PDFName.of('Type')) === PDFName.of('XRef')) {\n PDFXRefStreamParser.forStream(object).parseIntoContext();\n }\n else {\n this.context.assign(ref, object);\n }\n _a.label = 3;\n case 3: return [2 /*return*/, ref];\n }\n });\n });\n };\n // TODO: Improve and clean this up\n PDFParser.prototype.tryToParseInvalidIndirectObject = function () {\n var startPos = this.bytes.position();\n var msg = \"Trying to parse invalid object: \" + JSON.stringify(startPos) + \")\";\n if (this.throwOnInvalidObject)\n throw new Error(msg);\n console.warn(msg);\n var ref = this.parseIndirectObjectHeader();\n console.warn(\"Invalid object ref: \" + ref);\n this.skipWhitespaceAndComments();\n var start = this.bytes.offset();\n var failed = true;\n while (!this.bytes.done()) {\n if (this.matchKeyword(Keywords.endobj)) {\n failed = false;\n }\n if (!failed)\n break;\n this.bytes.next();\n }\n if (failed)\n throw new PDFInvalidObjectParsingError(startPos);\n var end = this.bytes.offset() - Keywords.endobj.length;\n var object = PDFInvalidObject.of(this.bytes.slice(start, end));\n this.context.assign(ref, object);\n return ref;\n };\n PDFParser.prototype.parseIndirectObjects = function () {\n return __awaiter(this, void 0, void 0, function () {\n var initialOffset, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this.skipWhitespaceAndComments();\n _a.label = 1;\n case 1:\n if (!(!this.bytes.done() && IsDigit[this.bytes.peek()])) return [3 /*break*/, 8];\n initialOffset = this.bytes.offset();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.parseIndirectObject()];\n case 3:\n _a.sent();\n return [3 /*break*/, 5];\n case 4:\n e_1 = _a.sent();\n // TODO: Add tracing/logging mechanism to track when this happens!\n this.bytes.moveTo(initialOffset);\n this.tryToParseInvalidIndirectObject();\n return [3 /*break*/, 5];\n case 5:\n this.skipWhitespaceAndComments();\n // TODO: Can this be done only when needed, to avoid harming performance?\n this.skipJibberish();\n if (!this.shouldWaitForTick()) return [3 /*break*/, 7];\n return [4 /*yield*/, waitForTick()];\n case 6:\n _a.sent();\n _a.label = 7;\n case 7: return [3 /*break*/, 1];\n case 8: return [2 /*return*/];\n }\n });\n });\n };\n PDFParser.prototype.maybeParseCrossRefSection = function () {\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.xref))\n return;\n this.skipWhitespaceAndComments();\n var objectNumber = -1;\n var xref = PDFCrossRefSection.createEmpty();\n while (!this.bytes.done() && IsDigit[this.bytes.peek()]) {\n var firstInt = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var secondInt = this.parseRawInt();\n this.skipWhitespaceAndComments();\n var byte = this.bytes.peek();\n if (byte === CharCodes.n || byte === CharCodes.f) {\n var ref = PDFRef.of(objectNumber, secondInt);\n if (this.bytes.next() === CharCodes.n) {\n xref.addEntry(ref, firstInt);\n }\n else {\n // this.context.delete(ref);\n xref.addDeletedEntry(ref, firstInt);\n }\n objectNumber += 1;\n }\n else {\n objectNumber = firstInt;\n }\n this.skipWhitespaceAndComments();\n }\n return xref;\n };\n PDFParser.prototype.maybeParseTrailerDict = function () {\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.trailer))\n return;\n this.skipWhitespaceAndComments();\n var dict = this.parseDict();\n var context = this.context;\n context.trailerInfo = {\n Root: dict.get(PDFName.of('Root')) || context.trailerInfo.Root,\n Encrypt: dict.get(PDFName.of('Encrypt')) || context.trailerInfo.Encrypt,\n Info: dict.get(PDFName.of('Info')) || context.trailerInfo.Info,\n ID: dict.get(PDFName.of('ID')) || context.trailerInfo.ID,\n };\n };\n PDFParser.prototype.maybeParseTrailer = function () {\n this.skipWhitespaceAndComments();\n if (!this.matchKeyword(Keywords.startxref))\n return;\n this.skipWhitespaceAndComments();\n var offset = this.parseRawInt();\n this.skipWhitespace();\n this.matchKeyword(Keywords.eof);\n this.skipWhitespaceAndComments();\n this.matchKeyword(Keywords.eof);\n this.skipWhitespaceAndComments();\n return PDFTrailer.forLastCrossRefSectionOffset(offset);\n };\n PDFParser.prototype.parseDocumentSection = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.parseIndirectObjects()];\n case 1:\n _a.sent();\n this.maybeParseCrossRefSection();\n this.maybeParseTrailerDict();\n this.maybeParseTrailer();\n // TODO: Can this be done only when needed, to avoid harming performance?\n this.skipJibberish();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * This operation is not necessary for valid PDF files. But some invalid PDFs\n * contain jibberish in between indirect objects. This method is designed to\n * skip past that jibberish, should it exist, until it reaches the next\n * indirect object header, an xref table section, or the file trailer.\n */\n PDFParser.prototype.skipJibberish = function () {\n this.skipWhitespaceAndComments();\n while (!this.bytes.done()) {\n var initialOffset = this.bytes.offset();\n var byte = this.bytes.peek();\n var isAlphaNumeric = byte >= CharCodes.Space && byte <= CharCodes.Tilde;\n if (isAlphaNumeric) {\n if (this.matchKeyword(Keywords.xref) ||\n this.matchKeyword(Keywords.trailer) ||\n this.matchKeyword(Keywords.startxref) ||\n this.matchIndirectObjectHeader()) {\n this.bytes.moveTo(initialOffset);\n break;\n }\n }\n this.bytes.next();\n }\n };\n /**\n * Skips the binary comment following a PDF header. The specification\n * defines this binary comment (section 7.5.2 File Header) as a sequence of 4\n * or more bytes that are 128 or greater, and which are preceded by a \"%\".\n *\n * This would imply that to strip out this binary comment, we could check for\n * a sequence of bytes starting with \"%\", and remove all subsequent bytes that\n * are 128 or greater. This works for many documents that properly comply with\n * the spec. But in the wild, there are PDFs that omit the leading \"%\", and\n * include bytes that are less than 128 (e.g. 0 or 1). So in order to parse\n * these headers correctly, we just throw out all bytes leading up to the\n * first indirect object header.\n */\n PDFParser.prototype.skipBinaryHeaderComment = function () {\n this.skipWhitespaceAndComments();\n try {\n var initialOffset = this.bytes.offset();\n this.parseIndirectObjectHeader();\n this.bytes.moveTo(initialOffset);\n }\n catch (e) {\n this.bytes.next();\n this.skipWhitespaceAndComments();\n }\n };\n PDFParser.forBytesWithOptions = function (pdfBytes, objectsPerTick, throwOnInvalidObject, capNumbers) {\n return new PDFParser(pdfBytes, objectsPerTick, throwOnInvalidObject, capNumbers);\n };\n return PDFParser;\n}(PDFObjectParser));\nexport default PDFParser;\n//# sourceMappingURL=PDFParser.js.map","var flag = function (bitIndex) { return 1 << bitIndex; };\n/** From PDF spec table 165 */\nexport var AnnotationFlags;\n(function (AnnotationFlags) {\n /**\n * If set, do not display the annotation if it does not belong to one of the\n * standard annotation types and no annotation handler is available. If clear,\n * display such an unknown annotation using an appearance stream specified by\n * its appearance dictionary, if any.\n */\n AnnotationFlags[AnnotationFlags[\"Invisible\"] = flag(1 - 1)] = \"Invisible\";\n /**\n * If set, do not display or print the annotation or allow it to interact with\n * the user, regardless of its annotation type or whether an annotation\n * handler is available.\n *\n * In cases where screen space is limited, the ability to hide and show\n * annotations selectively can be used in combination with appearance streams\n * to display auxiliary pop-up information similar in function to online help\n * systems.\n */\n AnnotationFlags[AnnotationFlags[\"Hidden\"] = flag(2 - 1)] = \"Hidden\";\n /**\n * If set, print the annotation when the page is printed. If clear, never\n * print the annotation, regardless of whether it is displayed on the screen.\n *\n * This can be useful for annotations representing interactive pushbuttons,\n * which would serve no meaningful purpose on the printed page.\n */\n AnnotationFlags[AnnotationFlags[\"Print\"] = flag(3 - 1)] = \"Print\";\n /**\n * If set, do not scale the annotation’s appearance to match the magnification\n * of the page. The location of the annotation on the page (defined by the\n * upper-left corner of its annotation rectangle) shall remain fixed,\n * regardless of the page magnification.\n */\n AnnotationFlags[AnnotationFlags[\"NoZoom\"] = flag(4 - 1)] = \"NoZoom\";\n /**\n * If set, do not rotate the annotation’s appearance to match the rotation of\n * the page. The upper-left corner of the annotation rectangle shall remain in\n * a fixed location on the page, regardless of the page rotation.\n */\n AnnotationFlags[AnnotationFlags[\"NoRotate\"] = flag(5 - 1)] = \"NoRotate\";\n /**\n * If set, do not display the annotation on the screen or allow it to interact\n * with the user. The annotation may be printed (depending on the setting of\n * the Print flag) but should be considered hidden for purposes of on-screen\n * display and user interaction.\n */\n AnnotationFlags[AnnotationFlags[\"NoView\"] = flag(6 - 1)] = \"NoView\";\n /**\n * If set, do not allow the annotation to interact with the user. The\n * annotation may be displayed or printed (depending on the settings of the\n * NoView and Print flags) but should not respond to mouse clicks or change\n * its appearance in response to mouse motions.\n *\n * This flag shall be ignored for widget annotations; its function is\n * subsumed by the ReadOnly flag of the associated form field.\n */\n AnnotationFlags[AnnotationFlags[\"ReadOnly\"] = flag(7 - 1)] = \"ReadOnly\";\n /**\n * If set, do not allow the annotation to be deleted or its properties\n * (including position and size) to be modified by the user. However, this\n * flag does not restrict changes to the annotation’s contents, such as the\n * value of a form field.\n */\n AnnotationFlags[AnnotationFlags[\"Locked\"] = flag(8 - 1)] = \"Locked\";\n /**\n * If set, invert the interpretation of the NoView flag for certain events.\n *\n * A typical use is to have an annotation that appears only when a mouse\n * cursor is held over it.\n */\n AnnotationFlags[AnnotationFlags[\"ToggleNoView\"] = flag(9 - 1)] = \"ToggleNoView\";\n /**\n * If set, do not allow the contents of the annotation to be modified by the\n * user. This flag does not restrict deletion of the annotation or changes to\n * other annotation properties, such as position and size.\n */\n AnnotationFlags[AnnotationFlags[\"LockedContents\"] = flag(10 - 1)] = \"LockedContents\";\n})(AnnotationFlags || (AnnotationFlags = {}));\n//# sourceMappingURL=flags.js.map","import { PDFName, PDFNumber } from \"../core\";\nexport var asPDFName = function (name) {\n return name instanceof PDFName ? name : PDFName.of(name);\n};\nexport var asPDFNumber = function (num) {\n return num instanceof PDFNumber ? num : PDFNumber.of(num);\n};\nexport var asNumber = function (num) {\n return num instanceof PDFNumber ? num.asNumber() : num;\n};\n//# sourceMappingURL=objects.js.map","import { assertIs, error } from \"../utils\";\nexport var RotationTypes;\n(function (RotationTypes) {\n RotationTypes[\"Degrees\"] = \"degrees\";\n RotationTypes[\"Radians\"] = \"radians\";\n})(RotationTypes || (RotationTypes = {}));\nexport var radians = function (radianAngle) {\n assertIs(radianAngle, 'radianAngle', ['number']);\n return { type: RotationTypes.Radians, angle: radianAngle };\n};\nexport var degrees = function (degreeAngle) {\n assertIs(degreeAngle, 'degreeAngle', ['number']);\n return { type: RotationTypes.Degrees, angle: degreeAngle };\n};\nvar Radians = RotationTypes.Radians, Degrees = RotationTypes.Degrees;\nexport var degreesToRadians = function (degree) { return (degree * Math.PI) / 180; };\nexport var radiansToDegrees = function (radian) { return (radian * 180) / Math.PI; };\n// prettier-ignore\nexport var toRadians = function (rotation) {\n return rotation.type === Radians ? rotation.angle\n : rotation.type === Degrees ? degreesToRadians(rotation.angle)\n : error(\"Invalid rotation: \" + JSON.stringify(rotation));\n};\n// prettier-ignore\nexport var toDegrees = function (rotation) {\n return rotation.type === Radians ? radiansToDegrees(rotation.angle)\n : rotation.type === Degrees ? rotation.angle\n : error(\"Invalid rotation: \" + JSON.stringify(rotation));\n};\nexport var reduceRotation = function (degreeAngle) {\n if (degreeAngle === void 0) { degreeAngle = 0; }\n var quadrants = (degreeAngle / 90) % 4;\n if (quadrants === 0)\n return 0;\n if (quadrants === 1)\n return 90;\n if (quadrants === 2)\n return 180;\n if (quadrants === 3)\n return 270;\n return 0; // `degreeAngle` is not a multiple of 90\n};\nexport var adjustDimsForRotation = function (dims, degreeAngle) {\n if (degreeAngle === void 0) { degreeAngle = 0; }\n var rotation = reduceRotation(degreeAngle);\n return rotation === 90 || rotation === 270\n ? { width: dims.height, height: dims.width }\n : { width: dims.width, height: dims.height };\n};\nexport var rotateRectangle = function (rectangle, borderWidth, degreeAngle) {\n if (borderWidth === void 0) { borderWidth = 0; }\n if (degreeAngle === void 0) { degreeAngle = 0; }\n var x = rectangle.x, y = rectangle.y, w = rectangle.width, h = rectangle.height;\n var r = reduceRotation(degreeAngle);\n var b = borderWidth / 2;\n // prettier-ignore\n if (r === 0)\n return { x: x - b, y: y - b, width: w, height: h };\n else if (r === 90)\n return { x: x - h + b, y: y - b, width: h, height: w };\n else if (r === 180)\n return { x: x - w + b, y: y - h + b, width: w, height: h };\n else if (r === 270)\n return { x: x - b, y: y - w + b, width: h, height: w };\n else\n return { x: x - b, y: y - b, width: w, height: h };\n};\n//# sourceMappingURL=rotations.js.map","import { asNumber, asPDFName, asPDFNumber } from \"./objects\";\nimport { degreesToRadians } from \"./rotations\";\nimport { PDFOperator, PDFOperatorNames as Ops, } from \"../core\";\n/* ==================== Clipping Path Operators ==================== */\nexport var clip = function () { return PDFOperator.of(Ops.ClipNonZero); };\nexport var clipEvenOdd = function () { return PDFOperator.of(Ops.ClipEvenOdd); };\n/* ==================== Graphics State Operators ==================== */\nvar cos = Math.cos, sin = Math.sin, tan = Math.tan;\nexport var concatTransformationMatrix = function (a, b, c, d, e, f) {\n return PDFOperator.of(Ops.ConcatTransformationMatrix, [\n asPDFNumber(a),\n asPDFNumber(b),\n asPDFNumber(c),\n asPDFNumber(d),\n asPDFNumber(e),\n asPDFNumber(f),\n ]);\n};\nexport var translate = function (xPos, yPos) {\n return concatTransformationMatrix(1, 0, 0, 1, xPos, yPos);\n};\nexport var scale = function (xPos, yPos) {\n return concatTransformationMatrix(xPos, 0, 0, yPos, 0, 0);\n};\nexport var rotateRadians = function (angle) {\n return concatTransformationMatrix(cos(asNumber(angle)), sin(asNumber(angle)), -sin(asNumber(angle)), cos(asNumber(angle)), 0, 0);\n};\nexport var rotateDegrees = function (angle) {\n return rotateRadians(degreesToRadians(asNumber(angle)));\n};\nexport var skewRadians = function (xSkewAngle, ySkewAngle) {\n return concatTransformationMatrix(1, tan(asNumber(xSkewAngle)), tan(asNumber(ySkewAngle)), 1, 0, 0);\n};\nexport var skewDegrees = function (xSkewAngle, ySkewAngle) {\n return skewRadians(degreesToRadians(asNumber(xSkewAngle)), degreesToRadians(asNumber(ySkewAngle)));\n};\nexport var setDashPattern = function (dashArray, dashPhase) {\n return PDFOperator.of(Ops.SetLineDashPattern, [\n \"[\" + dashArray.map(asPDFNumber).join(' ') + \"]\",\n asPDFNumber(dashPhase),\n ]);\n};\nexport var restoreDashPattern = function () { return setDashPattern([], 0); };\nexport var LineCapStyle;\n(function (LineCapStyle) {\n LineCapStyle[LineCapStyle[\"Butt\"] = 0] = \"Butt\";\n LineCapStyle[LineCapStyle[\"Round\"] = 1] = \"Round\";\n LineCapStyle[LineCapStyle[\"Projecting\"] = 2] = \"Projecting\";\n})(LineCapStyle || (LineCapStyle = {}));\nexport var setLineCap = function (style) {\n return PDFOperator.of(Ops.SetLineCapStyle, [asPDFNumber(style)]);\n};\nexport var LineJoinStyle;\n(function (LineJoinStyle) {\n LineJoinStyle[LineJoinStyle[\"Miter\"] = 0] = \"Miter\";\n LineJoinStyle[LineJoinStyle[\"Round\"] = 1] = \"Round\";\n LineJoinStyle[LineJoinStyle[\"Bevel\"] = 2] = \"Bevel\";\n})(LineJoinStyle || (LineJoinStyle = {}));\nexport var setLineJoin = function (style) {\n return PDFOperator.of(Ops.SetLineJoinStyle, [asPDFNumber(style)]);\n};\nexport var setGraphicsState = function (state) {\n return PDFOperator.of(Ops.SetGraphicsStateParams, [asPDFName(state)]);\n};\nexport var pushGraphicsState = function () { return PDFOperator.of(Ops.PushGraphicsState); };\nexport var popGraphicsState = function () { return PDFOperator.of(Ops.PopGraphicsState); };\nexport var setLineWidth = function (width) {\n return PDFOperator.of(Ops.SetLineWidth, [asPDFNumber(width)]);\n};\n/* ==================== Path Construction Operators ==================== */\nexport var appendBezierCurve = function (x1, y1, x2, y2, x3, y3) {\n return PDFOperator.of(Ops.AppendBezierCurve, [\n asPDFNumber(x1),\n asPDFNumber(y1),\n asPDFNumber(x2),\n asPDFNumber(y2),\n asPDFNumber(x3),\n asPDFNumber(y3),\n ]);\n};\nexport var appendQuadraticCurve = function (x1, y1, x2, y2) {\n return PDFOperator.of(Ops.CurveToReplicateInitialPoint, [\n asPDFNumber(x1),\n asPDFNumber(y1),\n asPDFNumber(x2),\n asPDFNumber(y2),\n ]);\n};\nexport var closePath = function () { return PDFOperator.of(Ops.ClosePath); };\nexport var moveTo = function (xPos, yPos) {\n return PDFOperator.of(Ops.MoveTo, [asPDFNumber(xPos), asPDFNumber(yPos)]);\n};\nexport var lineTo = function (xPos, yPos) {\n return PDFOperator.of(Ops.LineTo, [asPDFNumber(xPos), asPDFNumber(yPos)]);\n};\n/**\n * @param xPos x coordinate for the lower left corner of the rectangle\n * @param yPos y coordinate for the lower left corner of the rectangle\n * @param width width of the rectangle\n * @param height height of the rectangle\n */\nexport var rectangle = function (xPos, yPos, width, height) {\n return PDFOperator.of(Ops.AppendRectangle, [\n asPDFNumber(xPos),\n asPDFNumber(yPos),\n asPDFNumber(width),\n asPDFNumber(height),\n ]);\n};\n/**\n * @param xPos x coordinate for the lower left corner of the square\n * @param yPos y coordinate for the lower left corner of the square\n * @param size width and height of the square\n */\nexport var square = function (xPos, yPos, size) {\n return rectangle(xPos, yPos, size, size);\n};\n/* ==================== Path Painting Operators ==================== */\nexport var stroke = function () { return PDFOperator.of(Ops.StrokePath); };\nexport var fill = function () { return PDFOperator.of(Ops.FillNonZero); };\nexport var fillAndStroke = function () { return PDFOperator.of(Ops.FillNonZeroAndStroke); };\nexport var endPath = function () { return PDFOperator.of(Ops.EndPath); };\n/* ==================== Text Positioning Operators ==================== */\nexport var nextLine = function () { return PDFOperator.of(Ops.NextLine); };\nexport var moveText = function (x, y) {\n return PDFOperator.of(Ops.MoveText, [asPDFNumber(x), asPDFNumber(y)]);\n};\n/* ==================== Text Showing Operators ==================== */\nexport var showText = function (text) {\n return PDFOperator.of(Ops.ShowText, [text]);\n};\n/* ==================== Text State Operators ==================== */\nexport var beginText = function () { return PDFOperator.of(Ops.BeginText); };\nexport var endText = function () { return PDFOperator.of(Ops.EndText); };\nexport var setFontAndSize = function (name, size) { return PDFOperator.of(Ops.SetFontAndSize, [asPDFName(name), asPDFNumber(size)]); };\nexport var setCharacterSpacing = function (spacing) {\n return PDFOperator.of(Ops.SetCharacterSpacing, [asPDFNumber(spacing)]);\n};\nexport var setWordSpacing = function (spacing) {\n return PDFOperator.of(Ops.SetWordSpacing, [asPDFNumber(spacing)]);\n};\n/** @param squeeze horizontal character spacing */\nexport var setCharacterSqueeze = function (squeeze) {\n return PDFOperator.of(Ops.SetTextHorizontalScaling, [asPDFNumber(squeeze)]);\n};\nexport var setLineHeight = function (lineHeight) {\n return PDFOperator.of(Ops.SetTextLineHeight, [asPDFNumber(lineHeight)]);\n};\nexport var setTextRise = function (rise) {\n return PDFOperator.of(Ops.SetTextRise, [asPDFNumber(rise)]);\n};\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n TextRenderingMode[TextRenderingMode[\"Outline\"] = 1] = \"Outline\";\n TextRenderingMode[TextRenderingMode[\"FillAndOutline\"] = 2] = \"FillAndOutline\";\n TextRenderingMode[TextRenderingMode[\"Invisible\"] = 3] = \"Invisible\";\n TextRenderingMode[TextRenderingMode[\"FillAndClip\"] = 4] = \"FillAndClip\";\n TextRenderingMode[TextRenderingMode[\"OutlineAndClip\"] = 5] = \"OutlineAndClip\";\n TextRenderingMode[TextRenderingMode[\"FillAndOutlineAndClip\"] = 6] = \"FillAndOutlineAndClip\";\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\nexport var setTextRenderingMode = function (mode) {\n return PDFOperator.of(Ops.SetTextRenderingMode, [asPDFNumber(mode)]);\n};\nexport var setTextMatrix = function (a, b, c, d, e, f) {\n return PDFOperator.of(Ops.SetTextMatrix, [\n asPDFNumber(a),\n asPDFNumber(b),\n asPDFNumber(c),\n asPDFNumber(d),\n asPDFNumber(e),\n asPDFNumber(f),\n ]);\n};\nexport var rotateAndSkewTextRadiansAndTranslate = function (rotationAngle, xSkewAngle, ySkewAngle, x, y) {\n return setTextMatrix(cos(asNumber(rotationAngle)), sin(asNumber(rotationAngle)) + tan(asNumber(xSkewAngle)), -sin(asNumber(rotationAngle)) + tan(asNumber(ySkewAngle)), cos(asNumber(rotationAngle)), x, y);\n};\nexport var rotateAndSkewTextDegreesAndTranslate = function (rotationAngle, xSkewAngle, ySkewAngle, x, y) {\n return rotateAndSkewTextRadiansAndTranslate(degreesToRadians(asNumber(rotationAngle)), degreesToRadians(asNumber(xSkewAngle)), degreesToRadians(asNumber(ySkewAngle)), x, y);\n};\n/* ==================== XObject Operator ==================== */\nexport var drawObject = function (name) {\n return PDFOperator.of(Ops.DrawObject, [asPDFName(name)]);\n};\n/* ==================== Color Operators ==================== */\nexport var setFillingGrayscaleColor = function (gray) {\n return PDFOperator.of(Ops.NonStrokingColorGray, [asPDFNumber(gray)]);\n};\nexport var setStrokingGrayscaleColor = function (gray) {\n return PDFOperator.of(Ops.StrokingColorGray, [asPDFNumber(gray)]);\n};\nexport var setFillingRgbColor = function (red, green, blue) {\n return PDFOperator.of(Ops.NonStrokingColorRgb, [\n asPDFNumber(red),\n asPDFNumber(green),\n asPDFNumber(blue),\n ]);\n};\nexport var setStrokingRgbColor = function (red, green, blue) {\n return PDFOperator.of(Ops.StrokingColorRgb, [\n asPDFNumber(red),\n asPDFNumber(green),\n asPDFNumber(blue),\n ]);\n};\nexport var setFillingCmykColor = function (cyan, magenta, yellow, key) {\n return PDFOperator.of(Ops.NonStrokingColorCmyk, [\n asPDFNumber(cyan),\n asPDFNumber(magenta),\n asPDFNumber(yellow),\n asPDFNumber(key),\n ]);\n};\nexport var setStrokingCmykColor = function (cyan, magenta, yellow, key) {\n return PDFOperator.of(Ops.StrokingColorCmyk, [\n asPDFNumber(cyan),\n asPDFNumber(magenta),\n asPDFNumber(yellow),\n asPDFNumber(key),\n ]);\n};\n/* ==================== Marked Content Operators ==================== */\nexport var beginMarkedContent = function (tag) {\n return PDFOperator.of(Ops.BeginMarkedContent, [asPDFName(tag)]);\n};\nexport var endMarkedContent = function () { return PDFOperator.of(Ops.EndMarkedContent); };\n//# sourceMappingURL=operators.js.map","import { setFillingCmykColor, setFillingGrayscaleColor, setFillingRgbColor, setStrokingCmykColor, setStrokingGrayscaleColor, setStrokingRgbColor, } from \"./operators\";\nimport { assertRange, error } from \"../utils\";\nexport var ColorTypes;\n(function (ColorTypes) {\n ColorTypes[\"Grayscale\"] = \"Grayscale\";\n ColorTypes[\"RGB\"] = \"RGB\";\n ColorTypes[\"CMYK\"] = \"CMYK\";\n})(ColorTypes || (ColorTypes = {}));\nexport var grayscale = function (gray) {\n assertRange(gray, 'gray', 0.0, 1.0);\n return { type: ColorTypes.Grayscale, gray: gray };\n};\nexport var rgb = function (red, green, blue) {\n assertRange(red, 'red', 0, 1);\n assertRange(green, 'green', 0, 1);\n assertRange(blue, 'blue', 0, 1);\n return { type: ColorTypes.RGB, red: red, green: green, blue: blue };\n};\nexport var cmyk = function (cyan, magenta, yellow, key) {\n assertRange(cyan, 'cyan', 0, 1);\n assertRange(magenta, 'magenta', 0, 1);\n assertRange(yellow, 'yellow', 0, 1);\n assertRange(key, 'key', 0, 1);\n return { type: ColorTypes.CMYK, cyan: cyan, magenta: magenta, yellow: yellow, key: key };\n};\nvar Grayscale = ColorTypes.Grayscale, RGB = ColorTypes.RGB, CMYK = ColorTypes.CMYK;\n// prettier-ignore\nexport var setFillingColor = function (color) {\n return color.type === Grayscale ? setFillingGrayscaleColor(color.gray)\n : color.type === RGB ? setFillingRgbColor(color.red, color.green, color.blue)\n : color.type === CMYK ? setFillingCmykColor(color.cyan, color.magenta, color.yellow, color.key)\n : error(\"Invalid color: \" + JSON.stringify(color));\n};\n// prettier-ignore\nexport var setStrokingColor = function (color) {\n return color.type === Grayscale ? setStrokingGrayscaleColor(color.gray)\n : color.type === RGB ? setStrokingRgbColor(color.red, color.green, color.blue)\n : color.type === CMYK ? setStrokingCmykColor(color.cyan, color.magenta, color.yellow, color.key)\n : error(\"Invalid color: \" + JSON.stringify(color));\n};\n// prettier-ignore\nexport var componentsToColor = function (comps, scale) {\n if (scale === void 0) { scale = 1; }\n return ((comps === null || comps === void 0 ? void 0 : comps.length) === 1 ? grayscale(comps[0] * scale)\n : (comps === null || comps === void 0 ? void 0 : comps.length) === 3 ? rgb(comps[0] * scale, comps[1] * scale, comps[2] * scale)\n : (comps === null || comps === void 0 ? void 0 : comps.length) === 4 ? cmyk(comps[0] * scale, comps[1] * scale, comps[2] * scale, comps[3] * scale)\n : undefined);\n};\n// prettier-ignore\nexport var colorToComponents = function (color) {\n return color.type === Grayscale ? [color.gray]\n : color.type === RGB ? [color.red, color.green, color.blue]\n : color.type === CMYK ? [color.cyan, color.magenta, color.yellow, color.key]\n : error(\"Invalid color: \" + JSON.stringify(color));\n};\n//# sourceMappingURL=colors.js.map","export var TextAlignment;\n(function (TextAlignment) {\n TextAlignment[TextAlignment[\"Left\"] = 0] = \"Left\";\n TextAlignment[TextAlignment[\"Center\"] = 1] = \"Center\";\n TextAlignment[TextAlignment[\"Right\"] = 2] = \"Right\";\n})(TextAlignment || (TextAlignment = {}));\n//# sourceMappingURL=alignment.js.map","// Originated from pdfkit Copyright (c) 2014 Devon Govett\n// https://github.com/foliojs/pdfkit/blob/1e62e6ffe24b378eb890df507a47610f4c4a7b24/lib/path.js\n// MIT LICENSE\n// Updated for pdf-lib & TypeScript by Jeremy Messenger\nimport { appendBezierCurve, appendQuadraticCurve, closePath, lineTo, moveTo, } from \"./operators\";\nvar cx = 0;\nvar cy = 0;\nvar px = 0;\nvar py = 0;\nvar sx = 0;\nvar sy = 0;\nvar parameters = new Map([\n ['A', 7],\n ['a', 7],\n ['C', 6],\n ['c', 6],\n ['H', 1],\n ['h', 1],\n ['L', 2],\n ['l', 2],\n ['M', 2],\n ['m', 2],\n ['Q', 4],\n ['q', 4],\n ['S', 4],\n ['s', 4],\n ['T', 2],\n ['t', 2],\n ['V', 1],\n ['v', 1],\n ['Z', 0],\n ['z', 0],\n]);\nvar parse = function (path) {\n var cmd;\n var ret = [];\n var args = [];\n var curArg = '';\n var foundDecimal = false;\n var params = 0;\n for (var _i = 0, path_1 = path; _i < path_1.length; _i++) {\n var c = path_1[_i];\n if (parameters.has(c)) {\n params = parameters.get(c);\n if (cmd) {\n // save existing command\n if (curArg.length > 0) {\n args[args.length] = +curArg;\n }\n ret[ret.length] = { cmd: cmd, args: args };\n args = [];\n curArg = '';\n foundDecimal = false;\n }\n cmd = c;\n }\n else if ([' ', ','].includes(c) ||\n (c === '-' && curArg.length > 0 && curArg[curArg.length - 1] !== 'e') ||\n (c === '.' && foundDecimal)) {\n if (curArg.length === 0) {\n continue;\n }\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd: cmd, args: args };\n args = [+curArg];\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n }\n else {\n args[args.length] = +curArg;\n }\n foundDecimal = c === '.';\n // fix for negative numbers or repeated decimals with no delimeter between commands\n curArg = ['-', '.'].includes(c) ? c : '';\n }\n else {\n curArg += c;\n if (c === '.') {\n foundDecimal = true;\n }\n }\n }\n // add the last command\n if (curArg.length > 0) {\n if (args.length === params) {\n // handle reused commands\n ret[ret.length] = { cmd: cmd, args: args };\n args = [+curArg];\n // handle assumed commands\n if (cmd === 'M') {\n cmd = 'L';\n }\n if (cmd === 'm') {\n cmd = 'l';\n }\n }\n else {\n args[args.length] = +curArg;\n }\n }\n ret[ret.length] = { cmd: cmd, args: args };\n return ret;\n};\nvar apply = function (commands) {\n // current point, control point, and subpath starting point\n cx = cy = px = py = sx = sy = 0;\n // run the commands\n var cmds = [];\n for (var i = 0; i < commands.length; i++) {\n var c = commands[i];\n if (c.cmd && typeof runners[c.cmd] === 'function') {\n var cmd = runners[c.cmd](c.args);\n if (Array.isArray(cmd)) {\n cmds = cmds.concat(cmd);\n }\n else {\n cmds.push(cmd);\n }\n }\n }\n return cmds;\n};\nvar runners = {\n M: function (a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return moveTo(cx, cy);\n },\n m: function (a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n sx = cx;\n sy = cy;\n return moveTo(cx, cy);\n },\n C: function (a) {\n cx = a[4];\n cy = a[5];\n px = a[2];\n py = a[3];\n return appendBezierCurve(a[0], a[1], a[2], a[3], a[4], a[5]);\n },\n c: function (a) {\n var cmd = appendBezierCurve(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy, a[4] + cx, a[5] + cy);\n px = cx + a[2];\n py = cy + a[3];\n cx += a[4];\n cy += a[5];\n return cmd;\n },\n S: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n var cmd = appendBezierCurve(cx - (px - cx), cy - (py - cy), a[0], a[1], a[2], a[3]);\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return cmd;\n },\n s: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n var cmd = appendBezierCurve(cx - (px - cx), cy - (py - cy), cx + a[0], cy + a[1], cx + a[2], cy + a[3]);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n cy += a[3];\n return cmd;\n },\n Q: function (a) {\n px = a[0];\n py = a[1];\n cx = a[2];\n cy = a[3];\n return appendQuadraticCurve(a[0], a[1], cx, cy);\n },\n q: function (a) {\n var cmd = appendQuadraticCurve(a[0] + cx, a[1] + cy, a[2] + cx, a[3] + cy);\n px = cx + a[0];\n py = cy + a[1];\n cx += a[2];\n cy += a[3];\n return cmd;\n },\n T: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n var cmd = appendQuadraticCurve(px, py, a[0], a[1]);\n px = cx - (px - cx);\n py = cy - (py - cy);\n cx = a[0];\n cy = a[1];\n return cmd;\n },\n t: function (a) {\n if (px === null || py === null) {\n px = cx;\n py = cy;\n }\n else {\n px = cx - (px - cx);\n py = cy - (py - cy);\n }\n var cmd = appendQuadraticCurve(px, py, cx + a[0], cy + a[1]);\n cx += a[0];\n cy += a[1];\n return cmd;\n },\n A: function (a) {\n var cmds = solveArc(cx, cy, a);\n cx = a[5];\n cy = a[6];\n return cmds;\n },\n a: function (a) {\n a[5] += cx;\n a[6] += cy;\n var cmds = solveArc(cx, cy, a);\n cx = a[5];\n cy = a[6];\n return cmds;\n },\n L: function (a) {\n cx = a[0];\n cy = a[1];\n px = py = null;\n return lineTo(cx, cy);\n },\n l: function (a) {\n cx += a[0];\n cy += a[1];\n px = py = null;\n return lineTo(cx, cy);\n },\n H: function (a) {\n cx = a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n h: function (a) {\n cx += a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n V: function (a) {\n cy = a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n v: function (a) {\n cy += a[0];\n px = py = null;\n return lineTo(cx, cy);\n },\n Z: function () {\n var cmd = closePath();\n cx = sx;\n cy = sy;\n return cmd;\n },\n z: function () {\n var cmd = closePath();\n cx = sx;\n cy = sy;\n return cmd;\n },\n};\nvar solveArc = function (x, y, coords) {\n var rx = coords[0], ry = coords[1], rot = coords[2], large = coords[3], sweep = coords[4], ex = coords[5], ey = coords[6];\n var segs = arcToSegments(ex, ey, rx, ry, large, sweep, rot, x, y);\n var cmds = [];\n for (var _i = 0, segs_1 = segs; _i < segs_1.length; _i++) {\n var seg = segs_1[_i];\n var bez = segmentToBezier.apply(void 0, seg);\n cmds.push(appendBezierCurve.apply(void 0, bez));\n }\n return cmds;\n};\n// from Inkscape svgtopdf, thanks!\nvar arcToSegments = function (x, y, rx, ry, large, sweep, rotateX, ox, oy) {\n var th = rotateX * (Math.PI / 180);\n var sinTh = Math.sin(th);\n var cosTh = Math.cos(th);\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n px = cosTh * (ox - x) * 0.5 + sinTh * (oy - y) * 0.5;\n py = cosTh * (oy - y) * 0.5 - sinTh * (ox - x) * 0.5;\n var pl = (px * px) / (rx * rx) + (py * py) / (ry * ry);\n if (pl > 1) {\n pl = Math.sqrt(pl);\n rx *= pl;\n ry *= pl;\n }\n var a00 = cosTh / rx;\n var a01 = sinTh / rx;\n var a10 = -sinTh / ry;\n var a11 = cosTh / ry;\n var x0 = a00 * ox + a01 * oy;\n var y0 = a10 * ox + a11 * oy;\n var x1 = a00 * x + a01 * y;\n var y1 = a10 * x + a11 * y;\n var d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0);\n var sfactorSq = 1 / d - 0.25;\n if (sfactorSq < 0) {\n sfactorSq = 0;\n }\n var sfactor = Math.sqrt(sfactorSq);\n if (sweep === large) {\n sfactor = -sfactor;\n }\n var xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0);\n var yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0);\n var th0 = Math.atan2(y0 - yc, x0 - xc);\n var th1 = Math.atan2(y1 - yc, x1 - xc);\n var thArc = th1 - th0;\n if (thArc < 0 && sweep === 1) {\n thArc += 2 * Math.PI;\n }\n else if (thArc > 0 && sweep === 0) {\n thArc -= 2 * Math.PI;\n }\n var segments = Math.ceil(Math.abs(thArc / (Math.PI * 0.5 + 0.001)));\n var result = [];\n for (var i = 0; i < segments; i++) {\n var th2 = th0 + (i * thArc) / segments;\n var th3 = th0 + ((i + 1) * thArc) / segments;\n result[i] = [xc, yc, th2, th3, rx, ry, sinTh, cosTh];\n }\n return result;\n};\nvar segmentToBezier = function (cx1, cy1, th0, th1, rx, ry, sinTh, cosTh) {\n var a00 = cosTh * rx;\n var a01 = -sinTh * ry;\n var a10 = sinTh * rx;\n var a11 = cosTh * ry;\n var thHalf = 0.5 * (th1 - th0);\n var t = ((8 / 3) * Math.sin(thHalf * 0.5) * Math.sin(thHalf * 0.5)) /\n Math.sin(thHalf);\n var x1 = cx1 + Math.cos(th0) - t * Math.sin(th0);\n var y1 = cy1 + Math.sin(th0) + t * Math.cos(th0);\n var x3 = cx1 + Math.cos(th1);\n var y3 = cy1 + Math.sin(th1);\n var x2 = x3 + t * Math.sin(th1);\n var y2 = y3 - t * Math.cos(th1);\n var result = [\n a00 * x1 + a01 * y1,\n a10 * x1 + a11 * y1,\n a00 * x2 + a01 * y2,\n a10 * x2 + a11 * y2,\n a00 * x3 + a01 * y3,\n a10 * x3 + a11 * y3,\n ];\n return result;\n};\nexport var svgPathToOperators = function (path) { return apply(parse(path)); };\n//# sourceMappingURL=svgPath.js.map","import { __spreadArrays } from \"tslib\";\nimport { setFillingColor, setStrokingColor } from \"./colors\";\nimport { beginText, closePath, drawObject, endText, fill, fillAndStroke, lineTo, moveTo, nextLine, popGraphicsState, pushGraphicsState, rotateAndSkewTextRadiansAndTranslate, rotateRadians, scale, setFontAndSize, setLineHeight, setLineWidth, showText, skewRadians, stroke, translate, setLineCap, rotateDegrees, setGraphicsState, setDashPattern, beginMarkedContent, endMarkedContent, clip, endPath, appendBezierCurve, } from \"./operators\";\nimport { degrees, toRadians } from \"./rotations\";\nimport { svgPathToOperators } from \"./svgPath\";\nimport { asNumber } from \"./objects\";\nexport var drawText = function (line, options) {\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), options.x, options.y),\n showText(line),\n endText(),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawLinesOfText = function (lines, options) {\n var operators = [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n setLineHeight(options.lineHeight),\n rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), options.x, options.y),\n ].filter(Boolean);\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n operators.push(showText(lines[idx]), nextLine());\n }\n operators.push(endText(), popGraphicsState());\n return operators;\n};\nexport var drawImage = function (name, options) {\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n scale(options.width, options.height),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n drawObject(name),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawPage = function (name, options) {\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n scale(options.xScale, options.yScale),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n drawObject(name),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawLine = function (options) {\n var _a, _b;\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setStrokingColor(options.color),\n setLineWidth(options.thickness),\n setDashPattern((_a = options.dashArray) !== null && _a !== void 0 ? _a : [], (_b = options.dashPhase) !== null && _b !== void 0 ? _b : 0),\n moveTo(options.start.x, options.start.y),\n options.lineCap && setLineCap(options.lineCap),\n moveTo(options.start.x, options.start.y),\n lineTo(options.end.x, options.end.y),\n stroke(),\n popGraphicsState(),\n ].filter(Boolean);\n};\nexport var drawRectangle = function (options) {\n var _a, _b;\n return [\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern((_a = options.borderDashArray) !== null && _a !== void 0 ? _a : [], (_b = options.borderDashPhase) !== null && _b !== void 0 ? _b : 0),\n translate(options.x, options.y),\n rotateRadians(toRadians(options.rotate)),\n skewRadians(toRadians(options.xSkew), toRadians(options.ySkew)),\n moveTo(0, 0),\n lineTo(0, options.height),\n lineTo(options.width, options.height),\n lineTo(options.width, 0),\n closePath(),\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n popGraphicsState(),\n ].filter(Boolean);\n};\nvar KAPPA = 4.0 * ((Math.sqrt(2) - 1.0) / 3.0);\n/** @deprecated */\nexport var drawEllipsePath = function (config) {\n var x = asNumber(config.x);\n var y = asNumber(config.y);\n var xScale = asNumber(config.xScale);\n var yScale = asNumber(config.yScale);\n x -= xScale;\n y -= yScale;\n var ox = xScale * KAPPA;\n var oy = yScale * KAPPA;\n var xe = x + xScale * 2;\n var ye = y + yScale * 2;\n var xm = x + xScale;\n var ym = y + yScale;\n return [\n pushGraphicsState(),\n moveTo(x, ym),\n appendBezierCurve(x, ym - oy, xm - ox, y, xm, y),\n appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym),\n appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye),\n appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym),\n popGraphicsState(),\n ];\n};\nvar drawEllipseCurves = function (config) {\n var centerX = asNumber(config.x);\n var centerY = asNumber(config.y);\n var xScale = asNumber(config.xScale);\n var yScale = asNumber(config.yScale);\n var x = -xScale;\n var y = -yScale;\n var ox = xScale * KAPPA;\n var oy = yScale * KAPPA;\n var xe = x + xScale * 2;\n var ye = y + yScale * 2;\n var xm = x + xScale;\n var ym = y + yScale;\n return [\n translate(centerX, centerY),\n rotateRadians(toRadians(config.rotate)),\n moveTo(x, ym),\n appendBezierCurve(x, ym - oy, xm - ox, y, xm, y),\n appendBezierCurve(xm + ox, y, xe, ym - oy, xe, ym),\n appendBezierCurve(xe, ym + oy, xm + ox, ye, xm, ye),\n appendBezierCurve(xm - ox, ye, x, ym + oy, x, ym),\n ];\n};\nexport var drawEllipse = function (options) {\n var _a, _b, _c;\n return __spreadArrays([\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern((_a = options.borderDashArray) !== null && _a !== void 0 ? _a : [], (_b = options.borderDashPhase) !== null && _b !== void 0 ? _b : 0)\n ], (options.rotate === undefined\n ? drawEllipsePath({\n x: options.x,\n y: options.y,\n xScale: options.xScale,\n yScale: options.yScale,\n })\n : drawEllipseCurves({\n x: options.x,\n y: options.y,\n xScale: options.xScale,\n yScale: options.yScale,\n rotate: (_c = options.rotate) !== null && _c !== void 0 ? _c : degrees(0),\n })), [\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n popGraphicsState(),\n ]).filter(Boolean);\n};\nexport var drawSvgPath = function (path, options) {\n var _a, _b, _c;\n return __spreadArrays([\n pushGraphicsState(),\n options.graphicsState && setGraphicsState(options.graphicsState),\n translate(options.x, options.y),\n rotateRadians(toRadians((_a = options.rotate) !== null && _a !== void 0 ? _a : degrees(0))),\n // SVG path Y axis is opposite pdf-lib's\n options.scale ? scale(options.scale, -options.scale) : scale(1, -1),\n options.color && setFillingColor(options.color),\n options.borderColor && setStrokingColor(options.borderColor),\n options.borderWidth && setLineWidth(options.borderWidth),\n options.borderLineCap && setLineCap(options.borderLineCap),\n setDashPattern((_b = options.borderDashArray) !== null && _b !== void 0 ? _b : [], (_c = options.borderDashPhase) !== null && _c !== void 0 ? _c : 0)\n ], svgPathToOperators(path), [\n // prettier-ignore\n options.color && options.borderWidth ? fillAndStroke()\n : options.color ? fill()\n : options.borderColor ? stroke()\n : closePath(),\n popGraphicsState(),\n ]).filter(Boolean);\n};\nexport var drawCheckMark = function (options) {\n var size = asNumber(options.size);\n /*********************** Define Check Mark Points ***************************/\n // A check mark is defined by three points in some coordinate space. Here, we\n // define these points in a unit coordinate system, where the range of the x\n // and y axis are both [-1, 1].\n //\n // Note that we do not hard code `p1y` in case we wish to change the\n // size/shape of the check mark in the future. We want the check mark to\n // always form a right angle. This means that the dot product between (p1-p2)\n // and (p3-p2) should be zero:\n //\n // (p1x-p2x) * (p3x-p2x) + (p1y-p2y) * (p3y-p2y) = 0\n //\n // We can now rejigger this equation to solve for `p1y`:\n //\n // (p1y-p2y) * (p3y-p2y) = -((p1x-p2x) * (p3x-p2x))\n // (p1y-p2y) = -((p1x-p2x) * (p3x-p2x)) / (p3y-p2y)\n // p1y = -((p1x-p2x) * (p3x-p2x)) / (p3y-p2y) + p2y\n //\n // Thanks to my friend Joel Walker (https://github.com/JWalker1995) for\n // devising the above equation and unit coordinate system approach!\n // (x, y) coords of the check mark's bottommost point\n var p2x = -1 + 0.75;\n var p2y = -1 + 0.51;\n // (x, y) coords of the check mark's topmost point\n var p3y = 1 - 0.525;\n var p3x = 1 - 0.31;\n // (x, y) coords of the check mark's center (vertically) point\n var p1x = -1 + 0.325;\n var p1y = -((p1x - p2x) * (p3x - p2x)) / (p3y - p2y) + p2y;\n /****************************************************************************/\n return [\n pushGraphicsState(),\n options.color && setStrokingColor(options.color),\n setLineWidth(options.thickness),\n translate(options.x, options.y),\n moveTo(p1x * size, p1y * size),\n lineTo(p2x * size, p2y * size),\n lineTo(p3x * size, p3y * size),\n stroke(),\n popGraphicsState(),\n ].filter(Boolean);\n};\n// prettier-ignore\nexport var rotateInPlace = function (options) {\n return options.rotation === 0 ? [\n translate(0, 0),\n rotateDegrees(0)\n ]\n : options.rotation === 90 ? [\n translate(options.width, 0),\n rotateDegrees(90)\n ]\n : options.rotation === 180 ? [\n translate(options.width, options.height),\n rotateDegrees(180)\n ]\n : options.rotation === 270 ? [\n translate(0, options.height),\n rotateDegrees(270)\n ]\n : [];\n}; // Invalid rotation - noop\nexport var drawCheckBox = function (options) {\n var outline = drawRectangle({\n x: options.x,\n y: options.y,\n width: options.width,\n height: options.height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n if (!options.filled)\n return outline;\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var checkMarkSize = Math.min(width, height) / 2;\n var checkMark = drawCheckMark({\n x: width / 2,\n y: height / 2,\n size: checkMarkSize,\n thickness: options.thickness,\n color: options.markColor,\n });\n return __spreadArrays([pushGraphicsState()], outline, checkMark, [popGraphicsState()]);\n};\nexport var drawRadioButton = function (options) {\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var outlineScale = Math.min(width, height) / 2;\n var outline = drawEllipse({\n x: options.x,\n y: options.y,\n xScale: outlineScale,\n yScale: outlineScale,\n color: options.color,\n borderColor: options.borderColor,\n borderWidth: options.borderWidth,\n });\n if (!options.filled)\n return outline;\n var dot = drawEllipse({\n x: options.x,\n y: options.y,\n xScale: outlineScale * 0.45,\n yScale: outlineScale * 0.45,\n color: options.dotColor,\n borderColor: undefined,\n borderWidth: 0,\n });\n return __spreadArrays([pushGraphicsState()], outline, dot, [popGraphicsState()]);\n};\nexport var drawButton = function (options) {\n var x = asNumber(options.x);\n var y = asNumber(options.y);\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var background = drawRectangle({\n x: x,\n y: y,\n width: width,\n height: height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n return __spreadArrays([pushGraphicsState()], background, lines, [popGraphicsState()]);\n};\nexport var drawTextLines = function (lines, options) {\n var operators = [\n beginText(),\n setFillingColor(options.color),\n setFontAndSize(options.font, options.size),\n ];\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n var _a = lines[idx], encoded = _a.encoded, x = _a.x, y = _a.y;\n operators.push(rotateAndSkewTextRadiansAndTranslate(toRadians(options.rotate), toRadians(options.xSkew), toRadians(options.ySkew), x, y), showText(encoded));\n }\n operators.push(endText());\n return operators;\n};\nexport var drawTextField = function (options) {\n var x = asNumber(options.x);\n var y = asNumber(options.y);\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var borderWidth = asNumber(options.borderWidth);\n var padding = asNumber(options.padding);\n var clipX = x + borderWidth / 2 + padding;\n var clipY = y + borderWidth / 2 + padding;\n var clipWidth = width - (borderWidth / 2 + padding) * 2;\n var clipHeight = height - (borderWidth / 2 + padding) * 2;\n var clippingArea = [\n moveTo(clipX, clipY),\n lineTo(clipX, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY),\n closePath(),\n clip(),\n endPath(),\n ];\n var background = drawRectangle({\n x: x,\n y: y,\n width: width,\n height: height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var markedContent = __spreadArrays([\n beginMarkedContent('Tx'),\n pushGraphicsState()\n ], lines, [\n popGraphicsState(),\n endMarkedContent(),\n ]);\n return __spreadArrays([\n pushGraphicsState()\n ], background, clippingArea, markedContent, [\n popGraphicsState(),\n ]);\n};\nexport var drawOptionList = function (options) {\n var x = asNumber(options.x);\n var y = asNumber(options.y);\n var width = asNumber(options.width);\n var height = asNumber(options.height);\n var lineHeight = asNumber(options.lineHeight);\n var borderWidth = asNumber(options.borderWidth);\n var padding = asNumber(options.padding);\n var clipX = x + borderWidth / 2 + padding;\n var clipY = y + borderWidth / 2 + padding;\n var clipWidth = width - (borderWidth / 2 + padding) * 2;\n var clipHeight = height - (borderWidth / 2 + padding) * 2;\n var clippingArea = [\n moveTo(clipX, clipY),\n lineTo(clipX, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY + clipHeight),\n lineTo(clipX + clipWidth, clipY),\n closePath(),\n clip(),\n endPath(),\n ];\n var background = drawRectangle({\n x: x,\n y: y,\n width: width,\n height: height,\n borderWidth: options.borderWidth,\n color: options.color,\n borderColor: options.borderColor,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var highlights = [];\n for (var idx = 0, len = options.selectedLines.length; idx < len; idx++) {\n var line = options.textLines[options.selectedLines[idx]];\n highlights.push.apply(highlights, drawRectangle({\n x: line.x - padding,\n y: line.y - (lineHeight - line.height) / 2,\n width: width - borderWidth,\n height: line.height + (lineHeight - line.height) / 2,\n borderWidth: 0,\n color: options.selectedColor,\n borderColor: undefined,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n }));\n }\n var lines = drawTextLines(options.textLines, {\n color: options.textColor,\n font: options.font,\n size: options.fontSize,\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n });\n var markedContent = __spreadArrays([\n beginMarkedContent('Tx'),\n pushGraphicsState()\n ], lines, [\n popGraphicsState(),\n endMarkedContent(),\n ]);\n return __spreadArrays([\n pushGraphicsState()\n ], background, highlights, clippingArea, markedContent, [\n popGraphicsState(),\n ]);\n};\n//# sourceMappingURL=operations.js.map","// tslint:disable: max-classes-per-file\nimport { __extends } from \"tslib\";\n// TODO: Include link to documentation with example\nvar EncryptedPDFError = /** @class */ (function (_super) {\n __extends(EncryptedPDFError, _super);\n function EncryptedPDFError() {\n var _this = this;\n var msg = 'Input document to `PDFDocument.load` is encrypted. You can use `PDFDocument.load(..., { ignoreEncryption: true })` if you wish to load the document anyways.';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return EncryptedPDFError;\n}(Error));\nexport { EncryptedPDFError };\n// TODO: Include link to documentation with example\nvar FontkitNotRegisteredError = /** @class */ (function (_super) {\n __extends(FontkitNotRegisteredError, _super);\n function FontkitNotRegisteredError() {\n var _this = this;\n var msg = 'Input to `PDFDocument.embedFont` was a custom font, but no `fontkit` instance was found. You must register a `fontkit` instance with `PDFDocument.registerFontkit(...)` before embedding custom fonts.';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return FontkitNotRegisteredError;\n}(Error));\nexport { FontkitNotRegisteredError };\n// TODO: Include link to documentation with example\nvar ForeignPageError = /** @class */ (function (_super) {\n __extends(ForeignPageError, _super);\n function ForeignPageError() {\n var _this = this;\n var msg = 'A `page` passed to `PDFDocument.addPage` or `PDFDocument.insertPage` was from a different (foreign) PDF document. If you want to copy pages from one PDFDocument to another, you must use `PDFDocument.copyPages(...)` to copy the pages before adding or inserting them.';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ForeignPageError;\n}(Error));\nexport { ForeignPageError };\n// TODO: Include link to documentation with example\nvar RemovePageFromEmptyDocumentError = /** @class */ (function (_super) {\n __extends(RemovePageFromEmptyDocumentError, _super);\n function RemovePageFromEmptyDocumentError() {\n var _this = this;\n var msg = 'PDFDocument has no pages so `PDFDocument.removePage` cannot be called';\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return RemovePageFromEmptyDocumentError;\n}(Error));\nexport { RemovePageFromEmptyDocumentError };\nvar NoSuchFieldError = /** @class */ (function (_super) {\n __extends(NoSuchFieldError, _super);\n function NoSuchFieldError(name) {\n var _this = this;\n var msg = \"PDFDocument has no form field with the name \\\"\" + name + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return NoSuchFieldError;\n}(Error));\nexport { NoSuchFieldError };\nvar UnexpectedFieldTypeError = /** @class */ (function (_super) {\n __extends(UnexpectedFieldTypeError, _super);\n function UnexpectedFieldTypeError(name, expected, actual) {\n var _a, _b;\n var _this = this;\n var expectedType = expected === null || expected === void 0 ? void 0 : expected.name;\n var actualType = (_b = (_a = actual === null || actual === void 0 ? void 0 : actual.constructor) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : actual;\n var msg = \"Expected field \\\"\" + name + \"\\\" to be of type \" + expectedType + \", \" +\n (\"but it is actually of type \" + actualType);\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return UnexpectedFieldTypeError;\n}(Error));\nexport { UnexpectedFieldTypeError };\nvar MissingOnValueCheckError = /** @class */ (function (_super) {\n __extends(MissingOnValueCheckError, _super);\n function MissingOnValueCheckError(onValue) {\n var _this = this;\n var msg = \"Failed to select check box due to missing onValue: \\\"\" + onValue + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return MissingOnValueCheckError;\n}(Error));\nexport { MissingOnValueCheckError };\nvar FieldAlreadyExistsError = /** @class */ (function (_super) {\n __extends(FieldAlreadyExistsError, _super);\n function FieldAlreadyExistsError(name) {\n var _this = this;\n var msg = \"A field already exists with the specified name: \\\"\" + name + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return FieldAlreadyExistsError;\n}(Error));\nexport { FieldAlreadyExistsError };\nvar InvalidFieldNamePartError = /** @class */ (function (_super) {\n __extends(InvalidFieldNamePartError, _super);\n function InvalidFieldNamePartError(namePart) {\n var _this = this;\n var msg = \"Field name contains invalid component: \\\"\" + namePart + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidFieldNamePartError;\n}(Error));\nexport { InvalidFieldNamePartError };\nvar FieldExistsAsNonTerminalError = /** @class */ (function (_super) {\n __extends(FieldExistsAsNonTerminalError, _super);\n function FieldExistsAsNonTerminalError(name) {\n var _this = this;\n var msg = \"A non-terminal field already exists with the specified name: \\\"\" + name + \"\\\"\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return FieldExistsAsNonTerminalError;\n}(Error));\nexport { FieldExistsAsNonTerminalError };\nvar RichTextFieldReadError = /** @class */ (function (_super) {\n __extends(RichTextFieldReadError, _super);\n function RichTextFieldReadError(fieldName) {\n var _this = this;\n var msg = \"Reading rich text fields is not supported: Attempted to read rich text field: \" + fieldName;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return RichTextFieldReadError;\n}(Error));\nexport { RichTextFieldReadError };\nvar CombedTextLayoutError = /** @class */ (function (_super) {\n __extends(CombedTextLayoutError, _super);\n function CombedTextLayoutError(lineLength, cellCount) {\n var _this = this;\n var msg = \"Failed to layout combed text as lineLength=\" + lineLength + \" is greater than cellCount=\" + cellCount;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return CombedTextLayoutError;\n}(Error));\nexport { CombedTextLayoutError };\nvar ExceededMaxLengthError = /** @class */ (function (_super) {\n __extends(ExceededMaxLengthError, _super);\n function ExceededMaxLengthError(textLength, maxLength, name) {\n var _this = this;\n var msg = \"Attempted to set text with length=\" + textLength + \" for TextField with maxLength=\" + maxLength + \" and name=\" + name;\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return ExceededMaxLengthError;\n}(Error));\nexport { ExceededMaxLengthError };\nvar InvalidMaxLengthError = /** @class */ (function (_super) {\n __extends(InvalidMaxLengthError, _super);\n function InvalidMaxLengthError(textLength, maxLength, name) {\n var _this = this;\n var msg = \"Attempted to set maxLength=\" + maxLength + \", which is less than \" + textLength + \", the length of this field's current value (name=\" + name + \")\";\n _this = _super.call(this, msg) || this;\n return _this;\n }\n return InvalidMaxLengthError;\n}(Error));\nexport { InvalidMaxLengthError };\n//# sourceMappingURL=errors.js.map","import { CombedTextLayoutError } from \"../errors\";\nimport { TextAlignment } from \"./alignment\";\nimport { cleanText, lineSplit, mergeLines, charAtIndex, charSplit, } from \"../../utils\";\nvar MIN_FONT_SIZE = 4;\nvar MAX_FONT_SIZE = 500;\nvar computeFontSize = function (lines, font, bounds, multiline) {\n if (multiline === void 0) { multiline = false; }\n var fontSize = MIN_FONT_SIZE;\n while (fontSize < MAX_FONT_SIZE) {\n var linesUsed = 0;\n for (var lineIdx = 0, lineLen = lines.length; lineIdx < lineLen; lineIdx++) {\n linesUsed += 1;\n var line = lines[lineIdx];\n var words = line.split(' ');\n // Layout the words using the current `fontSize`, line wrapping\n // whenever we reach the end of the current line.\n var spaceInLineRemaining = bounds.width;\n for (var idx = 0, len = words.length; idx < len; idx++) {\n var isLastWord = idx === len - 1;\n var word = isLastWord ? words[idx] : words[idx] + ' ';\n var widthOfWord = font.widthOfTextAtSize(word, fontSize);\n spaceInLineRemaining -= widthOfWord;\n if (spaceInLineRemaining <= 0) {\n linesUsed += 1;\n spaceInLineRemaining = bounds.width - widthOfWord;\n }\n }\n }\n // Return if we exceeded the allowed width\n if (!multiline && linesUsed > lines.length)\n return fontSize - 1;\n var height = font.heightAtSize(fontSize);\n var lineHeight = height + height * 0.2;\n var totalHeight = lineHeight * linesUsed;\n // Return if we exceeded the allowed height\n if (totalHeight > Math.abs(bounds.height))\n return fontSize - 1;\n fontSize += 1;\n }\n return fontSize;\n};\nvar computeCombedFontSize = function (line, font, bounds, cellCount) {\n var cellWidth = bounds.width / cellCount;\n var cellHeight = bounds.height;\n var fontSize = MIN_FONT_SIZE;\n var chars = charSplit(line);\n while (fontSize < MAX_FONT_SIZE) {\n for (var idx = 0, len = chars.length; idx < len; idx++) {\n var c = chars[idx];\n var tooLong = font.widthOfTextAtSize(c, fontSize) > cellWidth * 0.75;\n if (tooLong)\n return fontSize - 1;\n }\n var height = font.heightAtSize(fontSize, { descender: false });\n if (height > cellHeight)\n return fontSize - 1;\n fontSize += 1;\n }\n return fontSize;\n};\nvar lastIndexOfWhitespace = function (line) {\n for (var idx = line.length; idx > 0; idx--) {\n if (/\\s/.test(line[idx]))\n return idx;\n }\n return undefined;\n};\nvar splitOutLines = function (input, maxWidth, font, fontSize) {\n var _a;\n var lastWhitespaceIdx = input.length;\n while (lastWhitespaceIdx > 0) {\n var line = input.substring(0, lastWhitespaceIdx);\n var encoded = font.encodeText(line);\n var width = font.widthOfTextAtSize(line, fontSize);\n if (width < maxWidth) {\n var remainder = input.substring(lastWhitespaceIdx) || undefined;\n return { line: line, encoded: encoded, width: width, remainder: remainder };\n }\n lastWhitespaceIdx = (_a = lastIndexOfWhitespace(line)) !== null && _a !== void 0 ? _a : 0;\n }\n // We were unable to split the input enough to get a chunk that would fit\n // within the specified `maxWidth` so we'll just return everything\n return {\n line: input,\n encoded: font.encodeText(input),\n width: font.widthOfTextAtSize(input, fontSize),\n remainder: undefined,\n };\n};\nexport var layoutMultilineText = function (text, _a) {\n var alignment = _a.alignment, fontSize = _a.fontSize, font = _a.font, bounds = _a.bounds;\n var lines = lineSplit(cleanText(text));\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeFontSize(lines, font, bounds, true);\n }\n var height = font.heightAtSize(fontSize);\n var lineHeight = height + height * 0.2;\n var textLines = [];\n var minX = bounds.x;\n var minY = bounds.y;\n var maxX = bounds.x + bounds.width;\n var maxY = bounds.y + bounds.height;\n var y = bounds.y + bounds.height;\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n var prevRemainder = lines[idx];\n while (prevRemainder !== undefined) {\n var _b = splitOutLines(prevRemainder, bounds.width, font, fontSize), line = _b.line, encoded = _b.encoded, width = _b.width, remainder = _b.remainder;\n // prettier-ignore\n var x = (alignment === TextAlignment.Left ? bounds.x\n : alignment === TextAlignment.Center ? bounds.x + (bounds.width / 2) - (width / 2)\n : alignment === TextAlignment.Right ? bounds.x + bounds.width - width\n : bounds.x);\n y -= lineHeight;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x + width > maxX)\n maxX = x + width;\n if (y + height > maxY)\n maxY = y + height;\n textLines.push({ text: line, encoded: encoded, width: width, height: height, x: x, y: y });\n // Only trim lines that we had to split ourselves. So we won't trim lines\n // that the user provided themselves with whitespace.\n prevRemainder = remainder === null || remainder === void 0 ? void 0 : remainder.trim();\n }\n }\n return {\n fontSize: fontSize,\n lineHeight: lineHeight,\n lines: textLines,\n bounds: {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n },\n };\n};\nexport var layoutCombedText = function (text, _a) {\n var fontSize = _a.fontSize, font = _a.font, bounds = _a.bounds, cellCount = _a.cellCount;\n var line = mergeLines(cleanText(text));\n if (line.length > cellCount) {\n throw new CombedTextLayoutError(line.length, cellCount);\n }\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeCombedFontSize(line, font, bounds, cellCount);\n }\n var cellWidth = bounds.width / cellCount;\n var height = font.heightAtSize(fontSize, { descender: false });\n var y = bounds.y + (bounds.height / 2 - height / 2);\n var cells = [];\n var minX = bounds.x;\n var minY = bounds.y;\n var maxX = bounds.x + bounds.width;\n var maxY = bounds.y + bounds.height;\n var cellOffset = 0;\n var charOffset = 0;\n while (cellOffset < cellCount) {\n var _b = charAtIndex(line, charOffset), char = _b[0], charLength = _b[1];\n var encoded = font.encodeText(char);\n var width = font.widthOfTextAtSize(char, fontSize);\n var cellCenter = bounds.x + (cellWidth * cellOffset + cellWidth / 2);\n var x = cellCenter - width / 2;\n if (x < minX)\n minX = x;\n if (y < minY)\n minY = y;\n if (x + width > maxX)\n maxX = x + width;\n if (y + height > maxY)\n maxY = y + height;\n cells.push({ text: line, encoded: encoded, width: width, height: height, x: x, y: y });\n cellOffset += 1;\n charOffset += charLength;\n }\n return {\n fontSize: fontSize,\n cells: cells,\n bounds: {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n },\n };\n};\nexport var layoutSinglelineText = function (text, _a) {\n var alignment = _a.alignment, fontSize = _a.fontSize, font = _a.font, bounds = _a.bounds;\n var line = mergeLines(cleanText(text));\n if (fontSize === undefined || fontSize === 0) {\n fontSize = computeFontSize([line], font, bounds);\n }\n var encoded = font.encodeText(line);\n var width = font.widthOfTextAtSize(line, fontSize);\n var height = font.heightAtSize(fontSize, { descender: false });\n // prettier-ignore\n var x = (alignment === TextAlignment.Left ? bounds.x\n : alignment === TextAlignment.Center ? bounds.x + (bounds.width / 2) - (width / 2)\n : alignment === TextAlignment.Right ? bounds.x + bounds.width - width\n : bounds.x);\n var y = bounds.y + (bounds.height / 2 - height / 2);\n return {\n fontSize: fontSize,\n line: { text: line, encoded: encoded, width: width, height: height, x: x, y: y },\n bounds: { x: x, y: y, width: width, height: height },\n };\n};\n//# sourceMappingURL=layout.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport { drawCheckBox, rotateInPlace, drawRadioButton, drawButton, drawTextField, drawOptionList, } from \"../operations\";\nimport { rgb, componentsToColor, setFillingColor, grayscale, cmyk, } from \"../colors\";\nimport { reduceRotation, adjustDimsForRotation } from \"../rotations\";\nimport { layoutMultilineText, layoutCombedText, layoutSinglelineText, } from \"../text/layout\";\nimport { TextAlignment } from \"../text/alignment\";\nimport { setFontAndSize } from \"../operators\";\nimport { findLastMatch } from \"../../utils\";\n/********************* Appearance Provider Functions **************************/\nexport var normalizeAppearance = function (appearance) {\n if ('normal' in appearance)\n return appearance;\n return { normal: appearance };\n};\n// Examples:\n// `/Helv 12 Tf` -> ['/Helv 12 Tf', 'Helv', '12']\n// `/HeBo 8.00 Tf` -> ['/HeBo 8 Tf', 'HeBo', '8.00']\nvar tfRegex = /\\/([^\\0\\t\\n\\f\\r\\ ]+)[\\0\\t\\n\\f\\r\\ ]+(\\d*\\.\\d+|\\d+)[\\0\\t\\n\\f\\r\\ ]+Tf/;\nvar getDefaultFontSize = function (field) {\n var _a, _b;\n var da = (_a = field.getDefaultAppearance()) !== null && _a !== void 0 ? _a : '';\n var daMatch = (_b = findLastMatch(da, tfRegex).match) !== null && _b !== void 0 ? _b : [];\n var defaultFontSize = Number(daMatch[2]);\n return isFinite(defaultFontSize) ? defaultFontSize : undefined;\n};\n// Examples:\n// `0.3 g` -> ['0.3', 'g']\n// `0.3 1 .3 rg` -> ['0.3', '1', '.3', 'rg']\n// `0.3 1 .3 0 k` -> ['0.3', '1', '.3', '0', 'k']\nvar colorRegex = /(\\d*\\.\\d+|\\d+)[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]*(\\d*\\.\\d+|\\d+)?[\\0\\t\\n\\f\\r\\ ]+(g|rg|k)/;\nvar getDefaultColor = function (field) {\n var _a;\n var da = (_a = field.getDefaultAppearance()) !== null && _a !== void 0 ? _a : '';\n var daMatch = findLastMatch(da, colorRegex).match;\n var _b = daMatch !== null && daMatch !== void 0 ? daMatch : [], c1 = _b[1], c2 = _b[2], c3 = _b[3], c4 = _b[4], colorSpace = _b[5];\n if (colorSpace === 'g' && c1) {\n return grayscale(Number(c1));\n }\n if (colorSpace === 'rg' && c1 && c2 && c3) {\n return rgb(Number(c1), Number(c2), Number(c3));\n }\n if (colorSpace === 'k' && c1 && c2 && c3 && c4) {\n return cmyk(Number(c1), Number(c2), Number(c3), Number(c4));\n }\n return undefined;\n};\nvar updateDefaultAppearance = function (field, color, font, fontSize) {\n var _a;\n if (fontSize === void 0) { fontSize = 0; }\n var da = [\n setFillingColor(color).toString(),\n setFontAndSize((_a = font === null || font === void 0 ? void 0 : font.name) !== null && _a !== void 0 ? _a : 'dummy__noop', fontSize).toString(),\n ].join('\\n');\n field.setDefaultAppearance(da);\n};\nexport var defaultCheckBoxAppearanceProvider = function (checkBox, widget) {\n var _a, _b, _c;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(checkBox.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_a = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _a !== void 0 ? _a : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _d = adjustDimsForRotation(rectangle, rotation), width = _d.width, height = _d.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = (_b = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor())) !== null && _b !== void 0 ? _b : black;\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var downBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor(), 0.8);\n // Update color\n var textColor = (_c = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _c !== void 0 ? _c : black;\n if (widgetColor) {\n updateDefaultAppearance(widget, textColor);\n }\n else {\n updateDefaultAppearance(checkBox.acroField, textColor);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n thickness: 1.5,\n borderWidth: borderWidth,\n borderColor: borderColor,\n markColor: textColor,\n };\n return {\n normal: {\n on: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: normalBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: normalBackgroundColor, filled: false }))),\n },\n down: {\n on: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: downBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawCheckBox(__assign(__assign({}, options), { color: downBackgroundColor, filled: false }))),\n },\n };\n};\nexport var defaultRadioGroupAppearanceProvider = function (radioGroup, widget) {\n var _a, _b, _c;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(radioGroup.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_a = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _a !== void 0 ? _a : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _d = adjustDimsForRotation(rectangle, rotation), width = _d.width, height = _d.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = (_b = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor())) !== null && _b !== void 0 ? _b : black;\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var downBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor(), 0.8);\n // Update color\n var textColor = (_c = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _c !== void 0 ? _c : black;\n if (widgetColor) {\n updateDefaultAppearance(widget, textColor);\n }\n else {\n updateDefaultAppearance(radioGroup.acroField, textColor);\n }\n var options = {\n x: width / 2,\n y: height / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth,\n borderColor: borderColor,\n dotColor: textColor,\n };\n return {\n normal: {\n on: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: normalBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: normalBackgroundColor, filled: false }))),\n },\n down: {\n on: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: downBackgroundColor, filled: true }))),\n off: __spreadArrays(rotate, drawRadioButton(__assign(__assign({}, options), { color: downBackgroundColor, filled: false }))),\n },\n };\n};\nexport var defaultButtonAppearanceProvider = function (button, widget, font) {\n var _a, _b, _c, _d, _e;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(button.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(button.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var captions = ap === null || ap === void 0 ? void 0 : ap.getCaptions();\n var normalText = (_a = captions === null || captions === void 0 ? void 0 : captions.normal) !== null && _a !== void 0 ? _a : '';\n var downText = (_c = (_b = captions === null || captions === void 0 ? void 0 : captions.down) !== null && _b !== void 0 ? _b : normalText) !== null && _c !== void 0 ? _c : '';\n var borderWidth = (_d = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _d !== void 0 ? _d : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _f = adjustDimsForRotation(rectangle, rotation), width = _f.width, height = _f.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var downBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor(), 0.8);\n var bounds = {\n x: borderWidth,\n y: borderWidth,\n width: width - borderWidth * 2,\n height: height - borderWidth * 2,\n };\n var normalLayout = layoutSinglelineText(normalText, {\n alignment: TextAlignment.Center,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n var downLayout = layoutSinglelineText(downText, {\n alignment: TextAlignment.Center,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n // Update font size and color\n var fontSize = Math.min(normalLayout.fontSize, downLayout.fontSize);\n var textColor = (_e = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _e !== void 0 ? _e : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(button.acroField, textColor, font, fontSize);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n };\n return {\n normal: __spreadArrays(rotate, drawButton(__assign(__assign({}, options), { color: normalBackgroundColor, textLines: [normalLayout.line] }))),\n down: __spreadArrays(rotate, drawButton(__assign(__assign({}, options), { color: downBackgroundColor, textLines: [downLayout.line] }))),\n };\n};\nexport var defaultTextFieldAppearanceProvider = function (textField, widget, font) {\n var _a, _b, _c, _d;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(textField.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(textField.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var text = (_a = textField.getText()) !== null && _a !== void 0 ? _a : '';\n var borderWidth = (_b = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _b !== void 0 ? _b : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _e = adjustDimsForRotation(rectangle, rotation), width = _e.width, height = _e.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var textLines;\n var fontSize;\n var padding = textField.isCombed() ? 0 : 1;\n var bounds = {\n x: borderWidth + padding,\n y: borderWidth + padding,\n width: width - (borderWidth + padding) * 2,\n height: height - (borderWidth + padding) * 2,\n };\n if (textField.isMultiline()) {\n var layout = layoutMultilineText(text, {\n alignment: textField.getAlignment(),\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n textLines = layout.lines;\n fontSize = layout.fontSize;\n }\n else if (textField.isCombed()) {\n var layout = layoutCombedText(text, {\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n cellCount: (_c = textField.getMaxLength()) !== null && _c !== void 0 ? _c : 0,\n });\n textLines = layout.cells;\n fontSize = layout.fontSize;\n }\n else {\n var layout = layoutSinglelineText(text, {\n alignment: textField.getAlignment(),\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n });\n textLines = [layout.line];\n fontSize = layout.fontSize;\n }\n // Update font size and color\n var textColor = (_d = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _d !== void 0 ? _d : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(textField.acroField, textColor, font, fontSize);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth !== null && borderWidth !== void 0 ? borderWidth : 0,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n color: normalBackgroundColor,\n textLines: textLines,\n padding: padding,\n };\n return __spreadArrays(rotate, drawTextField(options));\n};\nexport var defaultDropdownAppearanceProvider = function (dropdown, widget, font) {\n var _a, _b, _c;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(dropdown.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(dropdown.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var text = (_a = dropdown.getSelected()[0]) !== null && _a !== void 0 ? _a : '';\n var borderWidth = (_b = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _b !== void 0 ? _b : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _d = adjustDimsForRotation(rectangle, rotation), width = _d.width, height = _d.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var padding = 1;\n var bounds = {\n x: borderWidth + padding,\n y: borderWidth + padding,\n width: width - (borderWidth + padding) * 2,\n height: height - (borderWidth + padding) * 2,\n };\n var _e = layoutSinglelineText(text, {\n alignment: TextAlignment.Left,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n }), line = _e.line, fontSize = _e.fontSize;\n // Update font size and color\n var textColor = (_c = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _c !== void 0 ? _c : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(dropdown.acroField, textColor, font, fontSize);\n }\n var options = {\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth !== null && borderWidth !== void 0 ? borderWidth : 0,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n color: normalBackgroundColor,\n textLines: [line],\n padding: padding,\n };\n return __spreadArrays(rotate, drawTextField(options));\n};\nexport var defaultOptionListAppearanceProvider = function (optionList, widget, font) {\n var _a, _b;\n // The `/DA` entry can be at the widget or field level - so we handle both\n var widgetColor = getDefaultColor(widget);\n var fieldColor = getDefaultColor(optionList.acroField);\n var widgetFontSize = getDefaultFontSize(widget);\n var fieldFontSize = getDefaultFontSize(optionList.acroField);\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_a = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _a !== void 0 ? _a : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var _c = adjustDimsForRotation(rectangle, rotation), width = _c.width, height = _c.height;\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var black = rgb(0, 0, 0);\n var borderColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBorderColor());\n var normalBackgroundColor = componentsToColor(ap === null || ap === void 0 ? void 0 : ap.getBackgroundColor());\n var options = optionList.getOptions();\n var selected = optionList.getSelected();\n if (optionList.isSorted())\n options.sort();\n var text = '';\n for (var idx = 0, len = options.length; idx < len; idx++) {\n text += options[idx];\n if (idx < len - 1)\n text += '\\n';\n }\n var padding = 1;\n var bounds = {\n x: borderWidth + padding,\n y: borderWidth + padding,\n width: width - (borderWidth + padding) * 2,\n height: height - (borderWidth + padding) * 2,\n };\n var _d = layoutMultilineText(text, {\n alignment: TextAlignment.Left,\n fontSize: widgetFontSize !== null && widgetFontSize !== void 0 ? widgetFontSize : fieldFontSize,\n font: font,\n bounds: bounds,\n }), lines = _d.lines, fontSize = _d.fontSize, lineHeight = _d.lineHeight;\n var selectedLines = [];\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n var line = lines[idx];\n if (selected.includes(line.text))\n selectedLines.push(idx);\n }\n var blue = rgb(153 / 255, 193 / 255, 218 / 255);\n // Update font size and color\n var textColor = (_b = widgetColor !== null && widgetColor !== void 0 ? widgetColor : fieldColor) !== null && _b !== void 0 ? _b : black;\n if (widgetColor || widgetFontSize !== undefined) {\n updateDefaultAppearance(widget, textColor, font, fontSize);\n }\n else {\n updateDefaultAppearance(optionList.acroField, textColor, font, fontSize);\n }\n return __spreadArrays(rotate, drawOptionList({\n x: 0 + borderWidth / 2,\n y: 0 + borderWidth / 2,\n width: width - borderWidth,\n height: height - borderWidth,\n borderWidth: borderWidth !== null && borderWidth !== void 0 ? borderWidth : 0,\n borderColor: borderColor,\n textColor: textColor,\n font: font.name,\n fontSize: fontSize,\n color: normalBackgroundColor,\n textLines: lines,\n lineHeight: lineHeight,\n selectedColor: blue,\n selectedLines: selectedLines,\n padding: padding,\n }));\n};\n//# sourceMappingURL=appearances.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFDocument from \"./PDFDocument\";\nimport { PDFPageEmbedder, PDFRef } from \"../core\";\nimport { assertIs } from \"../utils\";\n/**\n * Represents a PDF page that has been embedded in a [[PDFDocument]].\n */\nvar PDFEmbeddedPage = /** @class */ (function () {\n function PDFEmbeddedPage(ref, doc, embedder) {\n this.alreadyEmbedded = false;\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n assertIs(embedder, 'embedder', [[PDFPageEmbedder, 'PDFPageEmbedder']]);\n this.ref = ref;\n this.doc = doc;\n this.width = embedder.width;\n this.height = embedder.height;\n this.embedder = embedder;\n }\n /**\n * Compute the width and height of this page after being scaled by the\n * given `factor`. For example:\n * ```js\n * embeddedPage.width // => 500\n * embeddedPage.height // => 250\n *\n * const scaled = embeddedPage.scale(0.5)\n * scaled.width // => 250\n * scaled.height // => 125\n * ```\n * This operation is often useful before drawing a page with\n * [[PDFPage.drawPage]] to compute the `width` and `height` options.\n * @param factor The factor by which this page should be scaled.\n * @returns The width and height of the page after being scaled.\n */\n PDFEmbeddedPage.prototype.scale = function (factor) {\n assertIs(factor, 'factor', ['number']);\n return { width: this.width * factor, height: this.height * factor };\n };\n /**\n * Get the width and height of this page. For example:\n * ```js\n * const { width, height } = embeddedPage.size()\n * ```\n * @returns The width and height of the page.\n */\n PDFEmbeddedPage.prototype.size = function () {\n return this.scale(1);\n };\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all embeddable pages get embedded.\n *\n * Embed this embeddable page in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFEmbeddedPage.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.alreadyEmbedded) return [3 /*break*/, 2];\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n _a.sent();\n this.alreadyEmbedded = true;\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.embedPdf]] and\n * > [[PDFDocument.embedPage]] methods, which will create instances of\n * > [[PDFEmbeddedPage]] for you.\n *\n * Create an instance of [[PDFEmbeddedPage]] from an existing ref and embedder\n *\n * @param ref The unique reference for this embedded page.\n * @param doc The document to which the embedded page will belong.\n * @param embedder The embedder that will be used to embed the page.\n */\n PDFEmbeddedPage.of = function (ref, doc, embedder) {\n return new PDFEmbeddedPage(ref, doc, embedder);\n };\n return PDFEmbeddedPage;\n}());\nexport default PDFEmbeddedPage;\n//# sourceMappingURL=PDFEmbeddedPage.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFDocument from \"./PDFDocument\";\nimport { CustomFontEmbedder, PDFRef, StandardFontEmbedder, } from \"../core\";\nimport { assertIs, assertOrUndefined } from \"../utils\";\n/**\n * Represents a font that has been embedded in a [[PDFDocument]].\n */\nvar PDFFont = /** @class */ (function () {\n function PDFFont(ref, doc, embedder) {\n this.modified = true;\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n assertIs(embedder, 'embedder', [\n [CustomFontEmbedder, 'CustomFontEmbedder'],\n [StandardFontEmbedder, 'StandardFontEmbedder'],\n ]);\n this.ref = ref;\n this.doc = doc;\n this.name = embedder.fontName;\n this.embedder = embedder;\n }\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFPage.drawText]] method will automatically encode the text it is\n * > given.\n *\n * Encodes a string of text in this font.\n *\n * @param text The text to be encoded.\n * @returns The encoded text as a hex string.\n */\n PDFFont.prototype.encodeText = function (text) {\n assertIs(text, 'text', ['string']);\n this.modified = true;\n return this.embedder.encodeText(text);\n };\n /**\n * Measure the width of a string of text drawn in this font at a given size.\n * For example:\n * ```js\n * const width = font.widthOfTextAtSize('Foo Bar Qux Baz', 36)\n * ```\n * @param text The string of text to be measured.\n * @param size The font size to be used for this measurement.\n * @returns The width of the string of text when drawn in this font at the\n * given size.\n */\n PDFFont.prototype.widthOfTextAtSize = function (text, size) {\n assertIs(text, 'text', ['string']);\n assertIs(size, 'size', ['number']);\n return this.embedder.widthOfTextAtSize(text, size);\n };\n /**\n * Measure the height of this font at a given size. For example:\n * ```js\n * const height = font.heightAtSize(24)\n * ```\n *\n * The `options.descender` value controls whether or not the font's\n * descender is included in the height calculation.\n *\n * @param size The font size to be used for this measurement.\n * @param options The options to be used when computing this measurement.\n * @returns The height of this font at the given size.\n */\n PDFFont.prototype.heightAtSize = function (size, options) {\n var _a;\n assertIs(size, 'size', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.descender, 'options.descender', ['boolean']);\n return this.embedder.heightOfFontAtSize(size, {\n descender: (_a = options === null || options === void 0 ? void 0 : options.descender) !== null && _a !== void 0 ? _a : true,\n });\n };\n /**\n * Compute the font size at which this font is a given height. For example:\n * ```js\n * const fontSize = font.sizeAtHeight(12)\n * ```\n * @param height The height to be used for this calculation.\n * @returns The font size at which this font is the given height.\n */\n PDFFont.prototype.sizeAtHeight = function (height) {\n assertIs(height, 'height', ['number']);\n return this.embedder.sizeOfFontAtHeight(height);\n };\n /**\n * Get the set of unicode code points that can be represented by this font.\n * @returns The set of unicode code points supported by this font.\n */\n PDFFont.prototype.getCharacterSet = function () {\n if (this.embedder instanceof StandardFontEmbedder) {\n return this.embedder.encoding.supportedCodePoints;\n }\n else {\n return this.embedder.font.characterSet;\n }\n };\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all fonts get embedded.\n *\n * Embed this font in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFFont.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.modified) return [3 /*break*/, 2];\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n _a.sent();\n this.modified = false;\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.embedFont]] and\n * > [[PDFDocument.embedStandardFont]] methods, which will create instances\n * > of [[PDFFont]] for you.\n *\n * Create an instance of [[PDFFont]] from an existing ref and embedder\n *\n * @param ref The unique reference for this font.\n * @param doc The document to which the font will belong.\n * @param embedder The embedder that will be used to embed the font.\n */\n PDFFont.of = function (ref, doc, embedder) {\n return new PDFFont(ref, doc, embedder);\n };\n return PDFFont;\n}());\nexport default PDFFont;\n//# sourceMappingURL=PDFFont.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFDocument from \"./PDFDocument\";\nimport { JpegEmbedder, PDFRef, PngEmbedder } from \"../core\";\nimport { assertIs } from \"../utils\";\n/**\n * Represents an image that has been embedded in a [[PDFDocument]].\n */\nvar PDFImage = /** @class */ (function () {\n function PDFImage(ref, doc, embedder) {\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n assertIs(embedder, 'embedder', [\n [JpegEmbedder, 'JpegEmbedder'],\n [PngEmbedder, 'PngEmbedder'],\n ]);\n this.ref = ref;\n this.doc = doc;\n this.width = embedder.width;\n this.height = embedder.height;\n this.embedder = embedder;\n }\n /**\n * Compute the width and height of this image after being scaled by the\n * given `factor`. For example:\n * ```js\n * image.width // => 500\n * image.height // => 250\n *\n * const scaled = image.scale(0.5)\n * scaled.width // => 250\n * scaled.height // => 125\n * ```\n * This operation is often useful before drawing an image with\n * [[PDFPage.drawImage]] to compute the `width` and `height` options.\n * @param factor The factor by which this image should be scaled.\n * @returns The width and height of the image after being scaled.\n */\n PDFImage.prototype.scale = function (factor) {\n assertIs(factor, 'factor', ['number']);\n return { width: this.width * factor, height: this.height * factor };\n };\n /**\n * Get the width and height of this image after scaling it as large as\n * possible while maintaining its aspect ratio and not exceeding the\n * specified `width` and `height`. For example:\n * ```\n * image.width // => 500\n * image.height // => 250\n *\n * const scaled = image.scaleToFit(750, 1000)\n * scaled.width // => 750\n * scaled.height // => 375\n * ```\n * The `width` and `height` parameters can also be thought of as the width\n * and height of a box that the scaled image must fit within.\n * @param width The bounding box's width.\n * @param height The bounding box's height.\n * @returns The width and height of the image after being scaled.\n */\n PDFImage.prototype.scaleToFit = function (width, height) {\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var imgWidthScale = width / this.width;\n var imgHeightScale = height / this.height;\n var scale = Math.min(imgWidthScale, imgHeightScale);\n return this.scale(scale);\n };\n /**\n * Get the width and height of this image. For example:\n * ```js\n * const { width, height } = image.size()\n * ```\n * @returns The width and height of the image.\n */\n PDFImage.prototype.size = function () {\n return this.scale(1);\n };\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all images get embedded.\n *\n * Embed this image in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFImage.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, doc, ref;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!this.embedder)\n return [2 /*return*/];\n // The image should only be embedded once. If there's a pending embed\n // operation then wait on it. Otherwise we need to start the embed.\n if (!this.embedTask) {\n _a = this, doc = _a.doc, ref = _a.ref;\n this.embedTask = this.embedder.embedIntoContext(doc.context, ref);\n }\n return [4 /*yield*/, this.embedTask];\n case 1:\n _b.sent();\n // We clear `this.embedder` so that the indirectly referenced image data\n // can be garbage collected, thus avoiding a memory leak.\n // See https://github.com/Hopding/pdf-lib/pull/1032/files.\n this.embedder = undefined;\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.embedPng]] and [[PDFDocument.embedJpg]]\n * > methods, which will create instances of [[PDFImage]] for you.\n *\n * Create an instance of [[PDFImage]] from an existing ref and embedder\n *\n * @param ref The unique reference for this image.\n * @param doc The document to which the image will belong.\n * @param embedder The embedder that will be used to embed the image.\n */\n PDFImage.of = function (ref, doc, embedder) {\n return new PDFImage(ref, doc, embedder);\n };\n return PDFImage;\n}());\nexport default PDFImage;\n//# sourceMappingURL=PDFImage.js.map","export var ImageAlignment;\n(function (ImageAlignment) {\n ImageAlignment[ImageAlignment[\"Left\"] = 0] = \"Left\";\n ImageAlignment[ImageAlignment[\"Center\"] = 1] = \"Center\";\n ImageAlignment[ImageAlignment[\"Right\"] = 2] = \"Right\";\n})(ImageAlignment || (ImageAlignment = {}));\n//# sourceMappingURL=alignment.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport PDFDocument from \"../PDFDocument\";\nimport { colorToComponents, setFillingColor } from \"../colors\";\nimport { toDegrees, rotateRectangle, reduceRotation, adjustDimsForRotation, degrees, } from \"../rotations\";\nimport { PDFRef, PDFWidgetAnnotation, PDFName, MethodNotImplementedError, AcroFieldFlags, PDFAcroTerminal, AnnotationFlags, } from \"../../core\";\nimport { assertIs, assertMultiple, assertOrUndefined } from \"../../utils\";\nimport { ImageAlignment } from '../image';\nimport { drawImage, rotateInPlace } from '../operations';\nexport var assertFieldAppearanceOptions = function (options) {\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.x, 'options.x', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.y, 'options.y', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.width, 'options.width', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.height, 'options.height', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.textColor, 'options.textColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.backgroundColor, 'options.backgroundColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options === null || options === void 0 ? void 0 : options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n};\n/**\n * Represents a field of a [[PDFForm]].\n *\n * This class is effectively abstract. All fields in a [[PDFForm]] will\n * actually be an instance of a subclass of this class.\n *\n * Note that each field in a PDF is represented by a single field object.\n * However, a given field object may be rendered at multiple locations within\n * the document (across one or more pages). The rendering of a field is\n * controlled by its widgets. Each widget causes its field to be displayed at a\n * particular location in the document.\n *\n * Most of the time each field in a PDF has only a single widget, and thus is\n * only rendered once. However, if a field is rendered multiple times, it will\n * have multiple widgets - one for each location it is rendered.\n *\n * This abstraction of field objects and widgets is defined in the PDF\n * specification and dictates how PDF files store fields and where they are\n * to be rendered.\n */\nvar PDFField = /** @class */ (function () {\n function PDFField(acroField, ref, doc) {\n assertIs(acroField, 'acroField', [[PDFAcroTerminal, 'PDFAcroTerminal']]);\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n this.acroField = acroField;\n this.ref = ref;\n this.doc = doc;\n }\n /**\n * Get the fully qualified name of this field. For example:\n * ```js\n * const fields = form.getFields()\n * fields.forEach(field => {\n * const name = field.getName()\n * console.log('Field name:', name)\n * })\n * ```\n * Note that PDF fields are structured as a tree. Each field is the\n * descendent of a series of ancestor nodes all the way up to the form node,\n * which is always the root of the tree. Each node in the tree (except for\n * the form node) has a partial name. Partial names can be composed of any\n * unicode characters except a period (`.`). The fully qualified name of a\n * field is composed of the partial names of all its ancestors joined\n * with periods. This means that splitting the fully qualified name on\n * periods and taking the last element of the resulting array will give you\n * the partial name of a specific field.\n * @returns The fully qualified name of this field.\n */\n PDFField.prototype.getName = function () {\n var _a;\n return (_a = this.acroField.getFullyQualifiedName()) !== null && _a !== void 0 ? _a : '';\n };\n /**\n * Returns `true` if this field is read only. This means that PDF readers\n * will not allow users to interact with the field or change its value. See\n * [[PDFField.enableReadOnly]] and [[PDFField.disableReadOnly]].\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * if (field.isReadOnly()) console.log('Read only is enabled')\n * ```\n * @returns Whether or not this is a read only field.\n */\n PDFField.prototype.isReadOnly = function () {\n return this.acroField.hasFlag(AcroFieldFlags.ReadOnly);\n };\n /**\n * Prevent PDF readers from allowing users to interact with this field or\n * change its value. The field will not respond to mouse or keyboard input.\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * field.enableReadOnly()\n * ```\n * Useful for fields whose values are computed, imported from a database, or\n * prefilled by software before being displayed to the user.\n */\n PDFField.prototype.enableReadOnly = function () {\n this.acroField.setFlagTo(AcroFieldFlags.ReadOnly, true);\n };\n /**\n * Allow users to interact with this field and change its value in PDF\n * readers via mouse and keyboard input. For example:\n * ```js\n * const field = form.getField('some.field')\n * field.disableReadOnly()\n * ```\n */\n PDFField.prototype.disableReadOnly = function () {\n this.acroField.setFlagTo(AcroFieldFlags.ReadOnly, false);\n };\n /**\n * Returns `true` if this field must have a value when the form is submitted.\n * See [[PDFField.enableRequired]] and [[PDFField.disableRequired]].\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * if (field.isRequired()) console.log('Field is required')\n * ```\n * @returns Whether or not this field is required.\n */\n PDFField.prototype.isRequired = function () {\n return this.acroField.hasFlag(AcroFieldFlags.Required);\n };\n /**\n * Require this field to have a value when the form is submitted.\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * field.enableRequired()\n * ```\n */\n PDFField.prototype.enableRequired = function () {\n this.acroField.setFlagTo(AcroFieldFlags.Required, true);\n };\n /**\n * Do not require this field to have a value when the form is submitted.\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * field.disableRequired()\n * ```\n */\n PDFField.prototype.disableRequired = function () {\n this.acroField.setFlagTo(AcroFieldFlags.Required, false);\n };\n /**\n * Returns `true` if this field's value should be exported when the form is\n * submitted. See [[PDFField.enableExporting]] and\n * [[PDFField.disableExporting]].\n * For example:\n * ```js\n * const field = form.getField('some.field')\n * if (field.isExported()) console.log('Exporting is enabled')\n * ```\n * @returns Whether or not this field's value should be exported.\n */\n PDFField.prototype.isExported = function () {\n return !this.acroField.hasFlag(AcroFieldFlags.NoExport);\n };\n /**\n * Indicate that this field's value should be exported when the form is\n * submitted in a PDF reader. For example:\n * ```js\n * const field = form.getField('some.field')\n * field.enableExporting()\n * ```\n */\n PDFField.prototype.enableExporting = function () {\n this.acroField.setFlagTo(AcroFieldFlags.NoExport, false);\n };\n /**\n * Indicate that this field's value should **not** be exported when the form\n * is submitted in a PDF reader. For example:\n * ```js\n * const field = form.getField('some.field')\n * field.disableExporting()\n * ```\n */\n PDFField.prototype.disableExporting = function () {\n this.acroField.setFlagTo(AcroFieldFlags.NoExport, true);\n };\n /** @ignore */\n PDFField.prototype.needsAppearancesUpdate = function () {\n throw new MethodNotImplementedError(this.constructor.name, 'needsAppearancesUpdate');\n };\n /** @ignore */\n PDFField.prototype.defaultUpdateAppearances = function (_font) {\n throw new MethodNotImplementedError(this.constructor.name, 'defaultUpdateAppearances');\n };\n PDFField.prototype.markAsDirty = function () {\n this.doc.getForm().markFieldAsDirty(this.ref);\n };\n PDFField.prototype.markAsClean = function () {\n this.doc.getForm().markFieldAsClean(this.ref);\n };\n PDFField.prototype.isDirty = function () {\n return this.doc.getForm().fieldIsDirty(this.ref);\n };\n PDFField.prototype.createWidget = function (options) {\n var _a;\n var textColor = options.textColor;\n var backgroundColor = options.backgroundColor;\n var borderColor = options.borderColor;\n var borderWidth = options.borderWidth;\n var degreesAngle = toDegrees(options.rotate);\n var caption = options.caption;\n var x = options.x;\n var y = options.y;\n var width = options.width + borderWidth;\n var height = options.height + borderWidth;\n var hidden = Boolean(options.hidden);\n var pageRef = options.page;\n assertMultiple(degreesAngle, 'degreesAngle', 90);\n // Create a widget for this field\n var widget = PDFWidgetAnnotation.create(this.doc.context, this.ref);\n // Set widget properties\n var rect = rotateRectangle({ x: x, y: y, width: width, height: height }, borderWidth, degreesAngle);\n widget.setRectangle(rect);\n if (pageRef)\n widget.setP(pageRef);\n var ac = widget.getOrCreateAppearanceCharacteristics();\n if (backgroundColor) {\n ac.setBackgroundColor(colorToComponents(backgroundColor));\n }\n ac.setRotation(degreesAngle);\n if (caption)\n ac.setCaptions({ normal: caption });\n if (borderColor)\n ac.setBorderColor(colorToComponents(borderColor));\n var bs = widget.getOrCreateBorderStyle();\n if (borderWidth !== undefined)\n bs.setWidth(borderWidth);\n widget.setFlagTo(AnnotationFlags.Print, true);\n widget.setFlagTo(AnnotationFlags.Hidden, hidden);\n widget.setFlagTo(AnnotationFlags.Invisible, false);\n // Set acrofield properties\n if (textColor) {\n var da = (_a = this.acroField.getDefaultAppearance()) !== null && _a !== void 0 ? _a : '';\n var newDa = da + '\\n' + setFillingColor(textColor).toString();\n this.acroField.setDefaultAppearance(newDa);\n }\n return widget;\n };\n PDFField.prototype.updateWidgetAppearanceWithFont = function (widget, font, _a) {\n var normal = _a.normal, rollover = _a.rollover, down = _a.down;\n this.updateWidgetAppearances(widget, {\n normal: this.createAppearanceStream(widget, normal, font),\n rollover: rollover && this.createAppearanceStream(widget, rollover, font),\n down: down && this.createAppearanceStream(widget, down, font),\n });\n };\n PDFField.prototype.updateOnOffWidgetAppearance = function (widget, onValue, _a) {\n var normal = _a.normal, rollover = _a.rollover, down = _a.down;\n this.updateWidgetAppearances(widget, {\n normal: this.createAppearanceDict(widget, normal, onValue),\n rollover: rollover && this.createAppearanceDict(widget, rollover, onValue),\n down: down && this.createAppearanceDict(widget, down, onValue),\n });\n };\n PDFField.prototype.updateWidgetAppearances = function (widget, _a) {\n var normal = _a.normal, rollover = _a.rollover, down = _a.down;\n widget.setNormalAppearance(normal);\n if (rollover) {\n widget.setRolloverAppearance(rollover);\n }\n else {\n widget.removeRolloverAppearance();\n }\n if (down) {\n widget.setDownAppearance(down);\n }\n else {\n widget.removeDownAppearance();\n }\n };\n // // TODO: Do we need to do this...?\n // private foo(font: PDFFont, dict: PDFDict) {\n // if (!dict.lookup(PDFName.of('DR'))) {\n // dict.set(PDFName.of('DR'), dict.context.obj({}));\n // }\n // const DR = dict.lookup(PDFName.of('DR'), PDFDict);\n // if (!DR.lookup(PDFName.of('Font'))) {\n // DR.set(PDFName.of('Font'), dict.context.obj({}));\n // }\n // const Font = DR.lookup(PDFName.of('Font'), PDFDict);\n // Font.set(PDFName.of(font.name), font.ref);\n // }\n PDFField.prototype.createAppearanceStream = function (widget, appearance, font) {\n var _a;\n var context = this.acroField.dict.context;\n var _b = widget.getRectangle(), width = _b.width, height = _b.height;\n // TODO: Do we need to do this...?\n // if (font) {\n // this.foo(font, widget.dict);\n // this.foo(font, this.doc.getForm().acroForm.dict);\n // }\n // END TODO\n var Resources = font && { Font: (_a = {}, _a[font.name] = font.ref, _a) };\n var stream = context.formXObject(appearance, {\n Resources: Resources,\n BBox: context.obj([0, 0, width, height]),\n Matrix: context.obj([1, 0, 0, 1, 0, 0]),\n });\n var streamRef = context.register(stream);\n return streamRef;\n };\n /**\n * Create a FormXObject of the supplied image and add it to context.\n * The FormXObject size is calculated based on the widget (including\n * the alignment).\n * @param widget The widget that should display the image.\n * @param alignment The alignment of the image.\n * @param image The image that should be displayed.\n * @returns The ref for the FormXObject that was added to the context.\n */\n PDFField.prototype.createImageAppearanceStream = function (widget, image, alignment) {\n // NOTE: This implementation doesn't handle image borders.\n // NOTE: Acrobat seems to resize the image (maybe even skewing its aspect\n // ratio) to fit perfectly within the widget's rectangle. This method\n // does not currently do that. Should there be an option for that?\n var _a;\n var _b;\n var context = this.acroField.dict.context;\n var rectangle = widget.getRectangle();\n var ap = widget.getAppearanceCharacteristics();\n var bs = widget.getBorderStyle();\n var borderWidth = (_b = bs === null || bs === void 0 ? void 0 : bs.getWidth()) !== null && _b !== void 0 ? _b : 0;\n var rotation = reduceRotation(ap === null || ap === void 0 ? void 0 : ap.getRotation());\n var rotate = rotateInPlace(__assign(__assign({}, rectangle), { rotation: rotation }));\n var adj = adjustDimsForRotation(rectangle, rotation);\n var imageDims = image.scaleToFit(adj.width - borderWidth * 2, adj.height - borderWidth * 2);\n // Support borders on images and maybe other properties\n var options = {\n x: borderWidth,\n y: borderWidth,\n width: imageDims.width,\n height: imageDims.height,\n //\n rotate: degrees(0),\n xSkew: degrees(0),\n ySkew: degrees(0),\n };\n if (alignment === ImageAlignment.Center) {\n options.x += (adj.width - borderWidth * 2) / 2 - imageDims.width / 2;\n options.y += (adj.height - borderWidth * 2) / 2 - imageDims.height / 2;\n }\n else if (alignment === ImageAlignment.Right) {\n options.x = adj.width - borderWidth - imageDims.width;\n options.y = adj.height - borderWidth - imageDims.height;\n }\n var imageName = this.doc.context.addRandomSuffix('Image', 10);\n var appearance = __spreadArrays(rotate, drawImage(imageName, options));\n ////////////\n var Resources = { XObject: (_a = {}, _a[imageName] = image.ref, _a) };\n var stream = context.formXObject(appearance, {\n Resources: Resources,\n BBox: context.obj([0, 0, rectangle.width, rectangle.height]),\n Matrix: context.obj([1, 0, 0, 1, 0, 0]),\n });\n return context.register(stream);\n };\n PDFField.prototype.createAppearanceDict = function (widget, appearance, onValue) {\n var context = this.acroField.dict.context;\n var onStreamRef = this.createAppearanceStream(widget, appearance.on);\n var offStreamRef = this.createAppearanceStream(widget, appearance.off);\n var appearanceDict = context.obj({});\n appearanceDict.set(onValue, onStreamRef);\n appearanceDict.set(PDFName.of('Off'), offStreamRef);\n return appearanceDict;\n };\n return PDFField;\n}());\nexport default PDFField;\n//# sourceMappingURL=PDFField.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport { normalizeAppearance, defaultCheckBoxAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { PDFName, PDFDict, PDFAcroCheckBox, } from \"../../core\";\nimport { assertIs, assertOrUndefined } from \"../../utils\";\n/**\n * Represents a check box field of a [[PDFForm]].\n *\n * [[PDFCheckBox]] fields are interactive boxes that users can click with their\n * mouse. This type of [[PDFField]] has two states: `on` and `off`. The purpose\n * of a check box is to enable users to select from one or more options, where\n * each option is represented by a single check box. Check boxes are typically\n * square in shape and display a check mark when they are in the `on` state.\n */\nvar PDFCheckBox = /** @class */ (function (_super) {\n __extends(PDFCheckBox, _super);\n function PDFCheckBox(acroCheckBox, ref, doc) {\n var _this = _super.call(this, acroCheckBox, ref, doc) || this;\n assertIs(acroCheckBox, 'acroCheckBox', [\n [PDFAcroCheckBox, 'PDFAcroCheckBox'],\n ]);\n _this.acroField = acroCheckBox;\n return _this;\n }\n /**\n * Mark this check box. This operation is analogous to a human user clicking\n * a check box to fill it in a PDF reader. This method will update the\n * underlying state of the check box field to indicate it has been selected.\n * PDF libraries and readers will be able to extract this value from the\n * saved document and determine that it was selected.\n *\n * For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.check()\n * ```\n *\n * This method will mark this check box as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated appearance\n * streams will display a check mark inside the widgets of this check box\n * field.\n */\n PDFCheckBox.prototype.check = function () {\n var _a;\n var onValue = (_a = this.acroField.getOnValue()) !== null && _a !== void 0 ? _a : PDFName.of('Yes');\n this.markAsDirty();\n this.acroField.setValue(onValue);\n };\n /**\n * Clears this check box. This operation is analogous to a human user clicking\n * a check box to unmark it in a PDF reader. This method will update the\n * underlying state of the check box field to indicate it has been deselected.\n * PDF libraries and readers will be able to extract this value from the\n * saved document and determine that it was not selected.\n *\n * For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.uncheck()\n * ```\n *\n * This method will mark this check box as dirty. See [[PDFCheckBox.check]]\n * for more details about what this means.\n */\n PDFCheckBox.prototype.uncheck = function () {\n this.markAsDirty();\n this.acroField.setValue(PDFName.of('Off'));\n };\n /**\n * Returns `true` if this check box is selected (either by a human user via\n * a PDF reader, or else programmatically via software). For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * if (checkBox.isChecked()) console.log('check box is selected')\n * ```\n * @returns Whether or not this check box is selected.\n */\n PDFCheckBox.prototype.isChecked = function () {\n var onValue = this.acroField.getOnValue();\n return !!onValue && onValue === this.acroField.getValue();\n };\n /**\n * Show this check box on the specified page. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const checkBox = form.createCheckBox('some.checkBox.field')\n *\n * checkBox.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 25,\n * height: 25,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * })\n * ```\n * This will create a new widget for this check box field.\n * @param page The page to which this check box widget should be added.\n * @param options The options to be used when adding this check box widget.\n */\n PDFCheckBox.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this check box\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 50,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n widget.setAppearanceState(PDFName.of('Off'));\n this.updateWidgetAppearance(widget, PDFName.of('Yes'));\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if any of this check box's widgets do not have an\n * appearance stream for its current state. For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * if (checkBox.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this check box needs an appearance update.\n */\n PDFCheckBox.prototype.needsAppearancesUpdate = function () {\n var _a;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getAppearanceState();\n var normal = (_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal;\n if (!(normal instanceof PDFDict))\n return true;\n if (state && !normal.has(state))\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this check box's widgets using\n * the default appearance provider for check boxes. For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.defaultUpdateAppearances()\n * ```\n */\n PDFCheckBox.prototype.defaultUpdateAppearances = function () {\n this.updateAppearances();\n };\n /**\n * Update the appearance streams for each of this check box's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for check boxs will be used. For example:\n * ```js\n * const checkBox = form.getCheckBox('some.checkBox.field')\n * checkBox.updateAppearances((field, widget) => {\n * ...\n * return {\n * normal: { on: drawCheckBox(...), off: drawCheckBox(...) },\n * down: { on: drawCheckBox(...), off: drawCheckBox(...) },\n * }\n * })\n * ```\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFCheckBox.prototype.updateAppearances = function (provider) {\n var _a;\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var onValue = (_a = widget.getOnValue()) !== null && _a !== void 0 ? _a : PDFName.of('Yes');\n if (!onValue)\n continue;\n this.updateWidgetAppearance(widget, onValue, provider);\n }\n this.markAsClean();\n };\n PDFCheckBox.prototype.updateWidgetAppearance = function (widget, onValue, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultCheckBoxAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget));\n this.updateOnOffWidgetAppearance(widget, onValue, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getCheckBox]] method, which will create an\n * > instance of [[PDFCheckBox]] for you.\n *\n * Create an instance of [[PDFCheckBox]] from an existing acroCheckBox and ref\n *\n * @param acroCheckBox The underlying `PDFAcroCheckBox` for this check box.\n * @param ref The unique reference for this check box.\n * @param doc The document to which this check box will belong.\n */\n PDFCheckBox.of = function (acroCheckBox, ref, doc) {\n return new PDFCheckBox(acroCheckBox, ref, doc);\n };\n return PDFCheckBox;\n}(PDFField));\nexport default PDFCheckBox;\n//# sourceMappingURL=PDFCheckBox.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultDropdownAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFHexString, PDFStream, PDFAcroComboBox, AcroChoiceFlags, } from \"../../core\";\nimport { assertIs, assertOrUndefined, assertPositive } from \"../../utils\";\n/**\n * Represents a dropdown field of a [[PDFForm]].\n *\n * [[PDFDropdown]] fields are interactive text boxes that display a single\n * element (the currently selected value). The purpose of a dropdown is to\n * enable users to select a single option from a set of possible options. Users\n * can click on a dropdown to view the full list of options it provides.\n * Clicking on an option in the list will cause it to be selected and displayed\n * in the dropdown's text box. Some dropdowns allow users to enter text\n * directly into the box from their keyboard, rather than only being allowed to\n * choose an option from the list (see [[PDFDropdown.isEditable]]).\n */\nvar PDFDropdown = /** @class */ (function (_super) {\n __extends(PDFDropdown, _super);\n function PDFDropdown(acroComboBox, ref, doc) {\n var _this = _super.call(this, acroComboBox, ref, doc) || this;\n assertIs(acroComboBox, 'acroComboBox', [\n [PDFAcroComboBox, 'PDFAcroComboBox'],\n ]);\n _this.acroField = acroComboBox;\n return _this;\n }\n /**\n * Get the list of available options for this dropdown. These options will be\n * displayed to users who click on this dropdown in a PDF reader.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * const options = dropdown.getOptions()\n * console.log('Dropdown options:', options)\n * ```\n * @returns The options for this dropdown.\n */\n PDFDropdown.prototype.getOptions = function () {\n var rawOptions = this.acroField.getOptions();\n var options = new Array(rawOptions.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n var _a = rawOptions[idx], display = _a.display, value = _a.value;\n options[idx] = (display !== null && display !== void 0 ? display : value).decodeText();\n }\n return options;\n };\n /**\n * Get the selected options for this dropdown. These are the values that were\n * selected by a human user via a PDF reader, or programatically via\n * software.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * const selections = dropdown.getSelected()\n * console.log('Dropdown selections:', selections)\n * ```\n * > **NOTE:** Note that PDF readers only display one selected option when\n * > rendering dropdowns. However, the PDF specification does allow for\n * > multiple values to be selected in a dropdown. As such, the `pdf-lib`\n * > API supports this. However, in most cases the array returned by this\n * > method will contain only a single element (or no elements).\n * @returns The selected options in this dropdown.\n */\n PDFDropdown.prototype.getSelected = function () {\n var values = this.acroField.getValues();\n var selected = new Array(values.length);\n for (var idx = 0, len = values.length; idx < len; idx++) {\n selected[idx] = values[idx].decodeText();\n }\n return selected;\n };\n /**\n * Set the list of options that are available for this dropdown. These are\n * the values that will be available for users to select when they view this\n * dropdown in a PDF reader. Note that preexisting options for this dropdown\n * will be removed. Only the values passed as `options` will be available to\n * select.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('planets.dropdown')\n * dropdown.setOptions(['Earth', 'Mars', 'Pluto', 'Venus'])\n * ```\n * @param options The options that should be available in this dropdown.\n */\n PDFDropdown.prototype.setOptions = function (options) {\n assertIs(options, 'options', [Array]);\n var optionObjects = new Array(options.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n optionObjects[idx] = { value: PDFHexString.fromText(options[idx]) };\n }\n this.acroField.setOptions(optionObjects);\n };\n /**\n * Add to the list of options that are available for this dropdown. Users\n * will be able to select these values in a PDF reader. In addition to the\n * values passed as `options`, any preexisting options for this dropdown will\n * still be available for users to select.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('rockets.dropdown')\n * dropdown.addOptions(['Saturn IV', 'Falcon Heavy'])\n * ```\n * @param options New options that should be available in this dropdown.\n */\n PDFDropdown.prototype.addOptions = function (options) {\n assertIs(options, 'options', ['string', Array]);\n var optionsArr = Array.isArray(options) ? options : [options];\n var existingOptions = this.acroField.getOptions();\n var newOptions = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n newOptions[idx] = { value: PDFHexString.fromText(optionsArr[idx]) };\n }\n this.acroField.setOptions(existingOptions.concat(newOptions));\n };\n /**\n * Select one or more values for this dropdown. This operation is analogous\n * to a human user opening the dropdown in a PDF reader and clicking on a\n * value to select it. This method will update the underlying state of the\n * dropdown to indicate which values have been selected. PDF libraries and\n * readers will be able to extract these values from the saved document and\n * determine which values were selected.\n *\n * For example:\n * ```js\n * const dropdown = form.getDropdown('best.superhero.dropdown')\n * dropdown.select('One Punch Man')\n * ```\n *\n * This method will mark this dropdown as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated streams will\n * display the selected option inside the widgets of this dropdown.\n *\n * **IMPORTANT:** The default font used to update appearance streams is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if the selected option for this field\n * contains characters outside the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing it to\n * [[PDFForm.updateFieldAppearances]] or [[PDFDropdown.updateAppearances]]\n * allows you to generate appearance streams with characters outside the\n * latin alphabet (assuming the custom font supports them).\n *\n * Selecting an option that does not exist in this dropdown's option list\n * (see [[PDFDropdown.getOptions]]) will enable editing on this dropdown\n * (see [[PDFDropdown.enableEditing]]).\n *\n * > **NOTE:** PDF readers only display one selected option when rendering\n * > dropdowns. However, the PDF specification does allow for multiple values\n * > to be selected in a dropdown. As such, the `pdf-lib` API supports this.\n * > However, it is not recommended to select more than one value with this\n * > method, as only one will be visible. [[PDFOptionList]] fields are better\n * > suited for displaying multiple selected values.\n *\n * @param options The options to be selected.\n * @param merge Whether or not existing selections should be preserved.\n */\n PDFDropdown.prototype.select = function (options, merge) {\n if (merge === void 0) { merge = false; }\n assertIs(options, 'options', ['string', Array]);\n assertIs(merge, 'merge', ['boolean']);\n var optionsArr = Array.isArray(options) ? options : [options];\n var validOptions = this.getOptions();\n var hasCustomOption = optionsArr.find(function (option) { return !validOptions.includes(option); });\n if (hasCustomOption)\n this.enableEditing();\n this.markAsDirty();\n if (optionsArr.length > 1 || (optionsArr.length === 1 && merge)) {\n this.enableMultiselect();\n }\n var values = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n values[idx] = PDFHexString.fromText(optionsArr[idx]);\n }\n if (merge) {\n var existingValues = this.acroField.getValues();\n this.acroField.setValues(existingValues.concat(values));\n }\n else {\n this.acroField.setValues(values);\n }\n };\n /**\n * Clear all selected values for this dropdown. This operation is equivalent\n * to selecting an empty list. This method will update the underlying state\n * of the dropdown to indicate that no values have been selected.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.clear()\n * ```\n * This method will mark this text field as dirty. See [[PDFDropdown.select]]\n * for more details about what this means.\n */\n PDFDropdown.prototype.clear = function () {\n this.markAsDirty();\n this.acroField.setValues([]);\n };\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this dropdown. Font sizes may\n * be integer or floating point numbers. Supplying a negative font size will\n * cause this method to throw an error.\n *\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.setFontSize(4)\n * dropdown.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFDropdown.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Returns `true` if users are allowed to edit the selected value of this\n * dropdown directly and are not constrained by the list of available\n * options. See [[PDFDropdown.enableEditing]] and\n * [[PDFDropdown.disableEditing]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isEditable()) console.log('Editing is enabled')\n * ```\n * @returns Whether or not this dropdown is editable.\n */\n PDFDropdown.prototype.isEditable = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.Edit);\n };\n /**\n * Allow users to edit the selected value of this dropdown in PDF readers\n * with their keyboard. This means that the selected value of this dropdown\n * will not be constrained by the list of available options. However, if this\n * dropdown has any available options, users will still be allowed to select\n * from that list.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableEditing()\n * ```\n */\n PDFDropdown.prototype.enableEditing = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Edit, true);\n };\n /**\n * Do not allow users to edit the selected value of this dropdown in PDF\n * readers with their keyboard. This will constrain the selected value of\n * this dropdown to the list of available options. Users will only be able\n * to select an option from that list.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableEditing()\n * ```\n */\n PDFDropdown.prototype.disableEditing = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Edit, false);\n };\n /**\n * Returns `true` if the option list of this dropdown is always displayed\n * in alphabetical order, irrespective of the order in which the options\n * were added to the dropdown. See [[PDFDropdown.enableSorting]] and\n * [[PDFDropdown.disableSorting]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isSorted()) console.log('Sorting is enabled')\n * ```\n * @returns Whether or not this dropdown's options are sorted.\n */\n PDFDropdown.prototype.isSorted = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.Sort);\n };\n /**\n * Always display the option list of this dropdown in alphabetical order,\n * irrespective of the order in which the options were added to this dropdown.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableSorting()\n * ```\n */\n PDFDropdown.prototype.enableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, true);\n };\n /**\n * Do not always display the option list of this dropdown in alphabetical\n * order. Instead, display the options in whichever order they were added\n * to the list. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableSorting()\n * ```\n */\n PDFDropdown.prototype.disableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, false);\n };\n /**\n * Returns `true` if multiple options can be selected from this dropdown's\n * option list. See [[PDFDropdown.enableMultiselect]] and\n * [[PDFDropdown.disableMultiselect]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isMultiselect()) console.log('Multiselect is enabled')\n * ```\n * @returns Whether or not multiple options can be selected.\n */\n PDFDropdown.prototype.isMultiselect = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.MultiSelect);\n };\n /**\n * Allow users to select more than one option from this dropdown's option\n * list. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableMultiselect()\n * ```\n */\n PDFDropdown.prototype.enableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, true);\n };\n /**\n * Do not allow users to select more than one option from this dropdown's\n * option list. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableMultiselect()\n * ```\n */\n PDFDropdown.prototype.disableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, false);\n };\n /**\n * Returns `true` if the selected option should be spell checked by PDF\n * readers. Spell checking will only be performed if this dropdown allows\n * editing (see [[PDFDropdown.isEditable]]). See\n * [[PDFDropdown.enableSpellChecking]] and\n * [[PDFDropdown.disableSpellChecking]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isSpellChecked()) console.log('Spell checking is enabled')\n * ```\n * @returns Whether or not this dropdown can be spell checked.\n */\n PDFDropdown.prototype.isSpellChecked = function () {\n return !this.acroField.hasFlag(AcroChoiceFlags.DoNotSpellCheck);\n };\n /**\n * Allow PDF readers to spell check the selected option of this dropdown.\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableSpellChecking()\n * ```\n */\n PDFDropdown.prototype.enableSpellChecking = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.DoNotSpellCheck, false);\n };\n /**\n * Do not allow PDF readers to spell check the selected option of this\n * dropdown. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableSpellChecking()\n * ```\n */\n PDFDropdown.prototype.disableSpellChecking = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.DoNotSpellCheck, true);\n };\n /**\n * Returns `true` if the option selected by a user is stored, or \"committed\",\n * when the user clicks the option. The alternative is that the user's\n * selection is stored when the user leaves this dropdown field (by clicking\n * outside of it - on another field, for example). See\n * [[PDFDropdown.enableSelectOnClick]] and\n * [[PDFDropdown.disableSelectOnClick]]. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.isSelectOnClick()) console.log('Select on click is enabled')\n * ```\n * @returns Whether or not options are selected immediately after they are\n * clicked.\n */\n PDFDropdown.prototype.isSelectOnClick = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.CommitOnSelChange);\n };\n /**\n * Store the option selected by a user immediately after the user clicks the\n * option. Do not wait for the user to leave this dropdown field (by clicking\n * outside of it - on another field, for example). For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.enableSelectOnClick()\n * ```\n */\n PDFDropdown.prototype.enableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, true);\n };\n /**\n * Wait to store the option selected by a user until they leave this dropdown\n * field (by clicking outside of it - on another field, for example).\n * For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.disableSelectOnClick()\n * ```\n */\n PDFDropdown.prototype.disableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, false);\n };\n /**\n * Show this dropdown on the specified page. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const dropdown = form.createDropdown('best.gundam')\n * dropdown.setOptions(['Exia', 'Dynames'])\n * dropdown.select('Exia')\n *\n * dropdown.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this dropdown field.\n * @param page The page to which this dropdown widget should be added.\n * @param options The options to be used when adding this dropdown widget.\n */\n PDFDropdown.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this dropdown\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 200,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_g = options.font) !== null && _g !== void 0 ? _g : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this dropdown has been marked as dirty, or if any of\n * this dropdown's widgets do not have an appearance stream. For example:\n * ```js\n * const dropdown = form.getDropdown('some.dropdown.field')\n * if (dropdown.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this dropdown needs an appearance update.\n */\n PDFDropdown.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this dropdown's widgets using\n * the default appearance provider for dropdowns. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFDropdown.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this dropdown's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for dropdowns will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const dropdown = form.getDropdown('some.dropdown.field')\n * dropdown.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return drawTextField(...)\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFDropdown.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n this.markAsClean();\n };\n // getOption(index: number): string {}\n // getSelectedIndices(): number[] {}\n // removeOptions(option: string | string[]) {}\n // removeIndices(option: number[]) {}\n // deselect(options: string | string[]) {}\n // deselectIndices(optionIndices: number[]) {}\n PDFDropdown.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultDropdownAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getDropdown]] method, which will create an\n * > instance of [[PDFDropdown]] for you.\n *\n * Create an instance of [[PDFDropdown]] from an existing acroComboBox and ref\n *\n * @param acroComboBox The underlying `PDFAcroComboBox` for this dropdown.\n * @param ref The unique reference for this dropdown.\n * @param doc The document to which this dropdown will belong.\n */\n PDFDropdown.of = function (acroComboBox, ref, doc) {\n return new PDFDropdown(acroComboBox, ref, doc);\n };\n return PDFDropdown;\n}(PDFField));\nexport default PDFDropdown;\n//# sourceMappingURL=PDFDropdown.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultOptionListAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFHexString, PDFStream, PDFAcroListBox, AcroChoiceFlags, } from \"../../core\";\nimport { assertIs, assertIsSubset, assertOrUndefined, assertPositive, } from \"../../utils\";\n/**\n * Represents an option list field of a [[PDFForm]].\n *\n * [[PDFOptionList]] fields are interactive lists of options. The purpose of an\n * option list is to enable users to select one or more options from a set of\n * possible options. Users are able to see the full set of options without\n * first having to click on the field (though scrolling may be necessary).\n * Clicking an option in the list will cause it to be selected and displayed\n * with a highlighted background. Some option lists allow users to select\n * more than one option (see [[PDFOptionList.isMultiselect]]).\n */\nvar PDFOptionList = /** @class */ (function (_super) {\n __extends(PDFOptionList, _super);\n function PDFOptionList(acroListBox, ref, doc) {\n var _this = _super.call(this, acroListBox, ref, doc) || this;\n assertIs(acroListBox, 'acroListBox', [[PDFAcroListBox, 'PDFAcroListBox']]);\n _this.acroField = acroListBox;\n return _this;\n }\n /**\n * Get the list of available options for this option list. These options will\n * be displayed to users who view this option list in a PDF reader.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * const options = optionList.getOptions()\n * console.log('Option List options:', options)\n * ```\n * @returns The options for this option list.\n */\n PDFOptionList.prototype.getOptions = function () {\n var rawOptions = this.acroField.getOptions();\n var options = new Array(rawOptions.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n var _a = rawOptions[idx], display = _a.display, value = _a.value;\n options[idx] = (display !== null && display !== void 0 ? display : value).decodeText();\n }\n return options;\n };\n /**\n * Get the selected options for this option list. These are the values that\n * were selected by a human user via a PDF reader, or programatically via\n * software.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * const selections = optionList.getSelected()\n * console.log('Option List selections:', selections)\n * ```\n * @returns The selected options for this option list.\n */\n PDFOptionList.prototype.getSelected = function () {\n var values = this.acroField.getValues();\n var selected = new Array(values.length);\n for (var idx = 0, len = values.length; idx < len; idx++) {\n selected[idx] = values[idx].decodeText();\n }\n return selected;\n };\n /**\n * Set the list of options that are available for this option list. These are\n * the values that will be available for users to select when they view this\n * option list in a PDF reader. Note that preexisting options for this\n * option list will be removed. Only the values passed as `options` will be\n * available to select.\n *\n * For example:\n * ```js\n * const optionList = form.getOptionList('planets.optionList')\n * optionList.setOptions(['Earth', 'Mars', 'Pluto', 'Venus'])\n * ```\n *\n * This method will mark this option list as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated streams will\n * display the options this field contains inside the widgets of this text\n * field (with selected options highlighted).\n *\n * **IMPORTANT:** The default font used to update appearance streams is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if this field contains any options\n * with characters outside the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing it to\n * [[PDFForm.updateFieldAppearances]] or [[PDFOptionList.updateAppearances]]\n * allows you to generate appearance streams with characters outside the\n * latin alphabet (assuming the custom font supports them).\n *\n * @param options The options that should be available in this option list.\n */\n PDFOptionList.prototype.setOptions = function (options) {\n assertIs(options, 'options', [Array]);\n this.markAsDirty();\n var optionObjects = new Array(options.length);\n for (var idx = 0, len = options.length; idx < len; idx++) {\n optionObjects[idx] = { value: PDFHexString.fromText(options[idx]) };\n }\n this.acroField.setOptions(optionObjects);\n };\n /**\n * Add to the list of options that are available for this option list. Users\n * will be able to select these values in a PDF reader. In addition to the\n * values passed as `options`, any preexisting options for this option list\n * will still be available for users to select.\n * For example:\n * ```js\n * const optionList = form.getOptionList('rockets.optionList')\n * optionList.addOptions(['Saturn IV', 'Falcon Heavy'])\n * ```\n * This method will mark this option list as dirty. See\n * [[PDFOptionList.setOptions]] for more details about what this means.\n * @param options New options that should be available in this option list.\n */\n PDFOptionList.prototype.addOptions = function (options) {\n assertIs(options, 'options', ['string', Array]);\n this.markAsDirty();\n var optionsArr = Array.isArray(options) ? options : [options];\n var existingOptions = this.acroField.getOptions();\n var newOptions = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n newOptions[idx] = { value: PDFHexString.fromText(optionsArr[idx]) };\n }\n this.acroField.setOptions(existingOptions.concat(newOptions));\n };\n /**\n * Select one or more values for this option list. This operation is analogous\n * to a human user opening the option list in a PDF reader and clicking on one\n * or more values to select them. This method will update the underlying state\n * of the option list to indicate which values have been selected. PDF\n * libraries and readers will be able to extract these values from the saved\n * document and determine which values were selected.\n * For example:\n * ```js\n * const optionList = form.getOptionList('best.superheroes.optionList')\n * optionList.select(['One Punch Man', 'Iron Man'])\n * ```\n * This method will mark this option list as dirty. See\n * [[PDFOptionList.setOptions]] for more details about what this means.\n * @param options The options to be selected.\n * @param merge Whether or not existing selections should be preserved.\n */\n PDFOptionList.prototype.select = function (options, merge) {\n if (merge === void 0) { merge = false; }\n assertIs(options, 'options', ['string', Array]);\n assertIs(merge, 'merge', ['boolean']);\n var optionsArr = Array.isArray(options) ? options : [options];\n var validOptions = this.getOptions();\n assertIsSubset(optionsArr, 'option', validOptions);\n this.markAsDirty();\n if (optionsArr.length > 1 || (optionsArr.length === 1 && merge)) {\n this.enableMultiselect();\n }\n var values = new Array(optionsArr.length);\n for (var idx = 0, len = optionsArr.length; idx < len; idx++) {\n values[idx] = PDFHexString.fromText(optionsArr[idx]);\n }\n if (merge) {\n var existingValues = this.acroField.getValues();\n this.acroField.setValues(existingValues.concat(values));\n }\n else {\n this.acroField.setValues(values);\n }\n };\n /**\n * Clear all selected values for this option list. This operation is\n * equivalent to selecting an empty list. This method will update the\n * underlying state of the option list to indicate that no values have been\n * selected.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.clear()\n * ```\n * This method will mark this option list as dirty. See\n * [[PDFOptionList.setOptions]] for more details about what this means.\n */\n PDFOptionList.prototype.clear = function () {\n this.markAsDirty();\n this.acroField.setValues([]);\n };\n /**\n * Set the font size for the text in this field. There needs to be a\n * default appearance string (DA) set with a font value specified\n * for this to work. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.setFontSize(4);\n * ```\n * @param fontSize The font size to set the font to.\n */\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this option list. Font sizes\n * may be integer or floating point numbers. Supplying a negative font size\n * will cause this method to throw an error.\n *\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.setFontSize(4)\n * optionList.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFOptionList.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Returns `true` if the options of this option list are always displayed\n * in alphabetical order, irrespective of the order in which the options\n * were added to the option list. See [[PDFOptionList.enableSorting]] and\n * [[PDFOptionList.disableSorting]]. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.isSorted()) console.log('Sorting is enabled')\n * ```\n * @returns Whether or not this option list is sorted.\n */\n PDFOptionList.prototype.isSorted = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.Sort);\n };\n /**\n * Always display the options of this option list in alphabetical order,\n * irrespective of the order in which the options were added to this option\n * list.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.enableSorting()\n * ```\n */\n PDFOptionList.prototype.enableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, true);\n };\n /**\n * Do not always display the options of this option list in alphabetical\n * order. Instead, display the options in whichever order they were added\n * to this option list. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.disableSorting()\n * ```\n */\n PDFOptionList.prototype.disableSorting = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.Sort, false);\n };\n /**\n * Returns `true` if multiple options can be selected from this option list.\n * See [[PDFOptionList.enableMultiselect]] and\n * [[PDFOptionList.disableMultiselect]]. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.isMultiselect()) console.log('Multiselect is enabled')\n * ```\n * @returns Whether or not multiple options can be selected.\n */\n PDFOptionList.prototype.isMultiselect = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.MultiSelect);\n };\n /**\n * Allow users to select more than one option from this option list.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.enableMultiselect()\n * ```\n */\n PDFOptionList.prototype.enableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, true);\n };\n /**\n * Do not allow users to select more than one option from this option list.\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.disableMultiselect()\n * ```\n */\n PDFOptionList.prototype.disableMultiselect = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect, false);\n };\n /**\n * Returns `true` if the option selected by a user is stored, or \"committed\",\n * when the user clicks the option. The alternative is that the user's\n * selection is stored when the user leaves this option list field (by\n * clicking outside of it - on another field, for example). See\n * [[PDFOptionList.enableSelectOnClick]] and\n * [[PDFOptionList.disableSelectOnClick]]. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.isSelectOnClick()) console.log('Select on click is enabled')\n * ```\n * @returns Whether or not options are selected immediately after they are\n * clicked.\n */\n PDFOptionList.prototype.isSelectOnClick = function () {\n return this.acroField.hasFlag(AcroChoiceFlags.CommitOnSelChange);\n };\n /**\n * Store the option selected by a user immediately after the user clicks the\n * option. Do not wait for the user to leave this option list field (by\n * clicking outside of it - on another field, for example). For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.enableSelectOnClick()\n * ```\n */\n PDFOptionList.prototype.enableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, true);\n };\n /**\n * Wait to store the option selected by a user until they leave this option\n * list field (by clicking outside of it - on another field, for example).\n * For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.disableSelectOnClick()\n * ```\n */\n PDFOptionList.prototype.disableSelectOnClick = function () {\n this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange, false);\n };\n /**\n * Show this option list on the specified page. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const optionList = form.createOptionList('best.gundams')\n * optionList.setOptions(['Exia', 'Dynames', 'Kyrios', 'Virtue'])\n * optionList.select(['Exia', 'Virtue'])\n *\n * optionList.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this option list field.\n * @param page The page to which this option list widget should be added.\n * @param options The options to be used when adding this option list widget.\n */\n PDFOptionList.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this option list\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 200,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 100,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_g = options.font) !== null && _g !== void 0 ? _g : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this option list has been marked as dirty, or if any of\n * this option list's widgets do not have an appearance stream. For example:\n * ```js\n * const optionList = form.getOptionList('some.optionList.field')\n * if (optionList.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this option list needs an appearance update.\n */\n PDFOptionList.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this option list's widgets using\n * the default appearance provider for option lists. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFOptionList.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this option list's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for option lists will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const optionList = form.getOptionList('some.optionList.field')\n * optionList.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return drawOptionList(...)\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFOptionList.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n this.markAsClean();\n };\n // getOption(index: number): string {}\n // getSelectedIndices(): number[] {}\n // removeOptions(option: string | string[]) {}\n // removeIndices(option: number[]) {}\n // deselect(options: string | string[]) {}\n // deselectIndices(optionIndices: number[]) {}\n PDFOptionList.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultOptionListAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getOptionList]] method, which will create\n * > an instance of [[PDFOptionList]] for you.\n *\n * Create an instance of [[PDFOptionList]] from an existing acroListBox and\n * ref\n *\n * @param acroComboBox The underlying `PDFAcroListBox` for this option list.\n * @param ref The unique reference for this option list.\n * @param doc The document to which this option list will belong.\n */\n PDFOptionList.of = function (acroListBox, ref, doc) {\n return new PDFOptionList(acroListBox, ref, doc);\n };\n return PDFOptionList;\n}(PDFField));\nexport default PDFOptionList;\n//# sourceMappingURL=PDFOptionList.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultRadioGroupAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFName, PDFHexString, PDFDict, PDFAcroRadioButton, AcroButtonFlags, } from \"../../core\";\nimport { assertIs, assertOrUndefined, assertIsOneOf } from \"../../utils\";\n/**\n * Represents a radio group field of a [[PDFForm]].\n *\n * [[PDFRadioGroup]] fields are collections of radio buttons. The purpose of a\n * radio group is to enable users to select one option from a set of mutually\n * exclusive choices. Each choice in a radio group is represented by a radio\n * button. Radio buttons each have two states: `on` and `off`. At most one\n * radio button in a group may be in the `on` state at any time. Users can\n * click on a radio button to select it (and thereby automatically deselect any\n * other radio button that might have already been selected). Some radio\n * groups allow users to toggle a selected radio button `off` by clicking on\n * it (see [[PDFRadioGroup.isOffToggleable]]).\n *\n * Note that some radio groups allow multiple radio buttons to be in the `on`\n * state at the same type **if** they represent the same underlying value (see\n * [[PDFRadioGroup.isMutuallyExclusive]]).\n */\nvar PDFRadioGroup = /** @class */ (function (_super) {\n __extends(PDFRadioGroup, _super);\n function PDFRadioGroup(acroRadioButton, ref, doc) {\n var _this = _super.call(this, acroRadioButton, ref, doc) || this;\n assertIs(acroRadioButton, 'acroRadioButton', [\n [PDFAcroRadioButton, 'PDFAcroRadioButton'],\n ]);\n _this.acroField = acroRadioButton;\n return _this;\n }\n /**\n * Get the list of available options for this radio group. Each option is\n * represented by a radio button. These radio buttons are displayed at\n * various locations in the document, potentially on different pages (though\n * typically they are stacked horizontally or vertically on the same page).\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * const options = radioGroup.getOptions()\n * console.log('Radio Group options:', options)\n * ```\n * @returns The options for this radio group.\n */\n PDFRadioGroup.prototype.getOptions = function () {\n var exportValues = this.acroField.getExportValues();\n if (exportValues) {\n var exportOptions = new Array(exportValues.length);\n for (var idx = 0, len = exportValues.length; idx < len; idx++) {\n exportOptions[idx] = exportValues[idx].decodeText();\n }\n return exportOptions;\n }\n var onValues = this.acroField.getOnValues();\n var onOptions = new Array(onValues.length);\n for (var idx = 0, len = onOptions.length; idx < len; idx++) {\n onOptions[idx] = onValues[idx].decodeText();\n }\n return onOptions;\n };\n /**\n * Get the selected option for this radio group. The selected option is\n * represented by the radio button in this group that is turned on. At most\n * one radio button in a group can be selected. If no buttons in this group\n * are selected, `undefined` is returned.\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * const selected = radioGroup.getSelected()\n * console.log('Selected radio button:', selected)\n * ```\n * @returns The selected option for this radio group.\n */\n PDFRadioGroup.prototype.getSelected = function () {\n var value = this.acroField.getValue();\n if (value === PDFName.of('Off'))\n return undefined;\n var exportValues = this.acroField.getExportValues();\n if (exportValues) {\n var onValues = this.acroField.getOnValues();\n for (var idx = 0, len = onValues.length; idx < len; idx++) {\n if (onValues[idx] === value)\n return exportValues[idx].decodeText();\n }\n }\n return value.decodeText();\n };\n // // TODO: Figure out why this seems to crash Acrobat. Maybe it's because we\n // // aren't removing the widget reference from the page's Annots?\n // removeOption(option: string) {\n // assertIs(option, 'option', ['string']);\n // // TODO: Assert is valid `option`!\n // const onValues = this.acroField.getOnValues();\n // const exportValues = this.acroField.getExportValues();\n // if (exportValues) {\n // for (let idx = 0, len = exportValues.length; idx < len; idx++) {\n // if (exportValues[idx].decodeText() === option) {\n // this.acroField.removeWidget(idx);\n // this.acroField.removeExportValue(idx);\n // }\n // }\n // } else {\n // for (let idx = 0, len = onValues.length; idx < len; idx++) {\n // const value = onValues[idx];\n // if (value.decodeText() === option) {\n // this.acroField.removeWidget(idx);\n // this.acroField.removeExportValue(idx);\n // }\n // }\n // }\n // }\n /**\n * Select an option for this radio group. This operation is analogous to a\n * human user clicking one of the radio buttons in this group via a PDF\n * reader to toggle it on. This method will update the underlying state of\n * the radio group to indicate which option has been selected. PDF libraries\n * and readers will be able to extract this value from the saved document and\n * determine which option was selected.\n *\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('best.superhero.radioGroup')\n * radioGroup.select('One Punch Man')\n * ```\n *\n * This method will mark this radio group as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated appearance\n * streams will display a dot inside the widget of this check box field\n * that represents the selected option.\n *\n * @param option The option to be selected.\n */\n PDFRadioGroup.prototype.select = function (option) {\n assertIs(option, 'option', ['string']);\n var validOptions = this.getOptions();\n assertIsOneOf(option, 'option', validOptions);\n this.markAsDirty();\n var onValues = this.acroField.getOnValues();\n var exportValues = this.acroField.getExportValues();\n if (exportValues) {\n for (var idx = 0, len = exportValues.length; idx < len; idx++) {\n if (exportValues[idx].decodeText() === option) {\n this.acroField.setValue(onValues[idx]);\n }\n }\n }\n else {\n for (var idx = 0, len = onValues.length; idx < len; idx++) {\n var value = onValues[idx];\n if (value.decodeText() === option)\n this.acroField.setValue(value);\n }\n }\n };\n /**\n * Clear any selected option for this dropdown. This will result in all\n * radio buttons in this group being toggled off. This method will update\n * the underlying state of the dropdown to indicate that no radio buttons\n * have been selected.\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.clear()\n * ```\n * This method will mark this radio group as dirty. See\n * [[PDFRadioGroup.select]] for more details about what this means.\n */\n PDFRadioGroup.prototype.clear = function () {\n this.markAsDirty();\n this.acroField.setValue(PDFName.of('Off'));\n };\n /**\n * Returns `true` if users can click on radio buttons in this group to toggle\n * them off. The alternative is that once a user clicks on a radio button\n * to select it, the only way to deselect it is by selecting on another radio\n * button in the group. See [[PDFRadioGroup.enableOffToggling]] and\n * [[PDFRadioGroup.disableOffToggling]]. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * if (radioGroup.isOffToggleable()) console.log('Off toggling is enabled')\n * ```\n */\n PDFRadioGroup.prototype.isOffToggleable = function () {\n return !this.acroField.hasFlag(AcroButtonFlags.NoToggleToOff);\n };\n /**\n * Allow users to click on selected radio buttons in this group to toggle\n * them off. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.enableOffToggling()\n * ```\n * > **NOTE:** This feature is documented in the PDF specification\n * > (Table 226). However, most PDF readers do not respect this option and\n * > prevent users from toggling radio buttons off even when it is enabled.\n * > At the time of this writing (9/6/2020) Mac's Preview software did\n * > respect the option. Adobe Acrobat, Foxit Reader, and Google Chrome did\n * > not.\n */\n PDFRadioGroup.prototype.enableOffToggling = function () {\n this.acroField.setFlagTo(AcroButtonFlags.NoToggleToOff, false);\n };\n /**\n * Prevent users from clicking on selected radio buttons in this group to\n * toggle them off. Clicking on a selected radio button will have no effect.\n * The only way to deselect a selected radio button is to click on a\n * different radio button in the group. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.disableOffToggling()\n * ```\n */\n PDFRadioGroup.prototype.disableOffToggling = function () {\n this.acroField.setFlagTo(AcroButtonFlags.NoToggleToOff, true);\n };\n /**\n * Returns `true` if the radio buttons in this group are mutually exclusive.\n * This means that when the user selects a radio button, only that specific\n * button will be turned on. Even if other radio buttons in the group\n * represent the same value, they will not be enabled. The alternative to\n * this is that clicking a radio button will select that button along with\n * any other radio buttons in the group that share the same value. See\n * [[PDFRadioGroup.enableMutualExclusion]] and\n * [[PDFRadioGroup.disableMutualExclusion]].\n * For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * if (radioGroup.isMutuallyExclusive()) console.log('Mutual exclusion is enabled')\n * ```\n */\n PDFRadioGroup.prototype.isMutuallyExclusive = function () {\n return !this.acroField.hasFlag(AcroButtonFlags.RadiosInUnison);\n };\n /**\n * When the user clicks a radio button in this group it will be selected. In\n * addition, any other radio buttons in this group that share the same\n * underlying value will also be selected. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.enableMutualExclusion()\n * ```\n * Note that this option must be enabled prior to adding options to the\n * radio group. It does not currently apply retroactively to existing\n * radio buttons in the group.\n */\n PDFRadioGroup.prototype.enableMutualExclusion = function () {\n this.acroField.setFlagTo(AcroButtonFlags.RadiosInUnison, false);\n };\n /**\n * When the user clicks a radio button in this group only it will be selected.\n * No other radio buttons in the group will be selected, even if they share\n * the same underlying value. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.disableMutualExclusion()\n * ```\n * Note that this option must be disabled prior to adding options to the\n * radio group. It does not currently apply retroactively to existing\n * radio buttons in the group.\n */\n PDFRadioGroup.prototype.disableMutualExclusion = function () {\n this.acroField.setFlagTo(AcroButtonFlags.RadiosInUnison, true);\n };\n /**\n * Add a new radio button to this group on the specified page. For example:\n * ```js\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const radioGroup = form.createRadioGroup('best.gundam')\n *\n * const options = {\n * x: 50,\n * width: 25,\n * height: 25,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * }\n *\n * radioGroup.addOptionToPage('Exia', page, { ...options, y: 50 })\n * radioGroup.addOptionToPage('Dynames', page, { ...options, y: 110 })\n * ```\n * This will create a new radio button widget for this radio group field.\n * @param option The option that the radio button widget represents.\n * @param page The page to which the radio button widget should be added.\n * @param options The options to be used when adding the radio button widget.\n */\n PDFRadioGroup.prototype.addOptionToPage = function (option, page, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n assertIs(option, 'option', ['string']);\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n // Create a widget for this radio button\n var widget = this.createWidget({\n x: (_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options === null || options === void 0 ? void 0 : options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options === null || options === void 0 ? void 0 : options.width) !== null && _c !== void 0 ? _c : 50,\n height: (_d = options === null || options === void 0 ? void 0 : options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: (_e = options === null || options === void 0 ? void 0 : options.textColor) !== null && _e !== void 0 ? _e : rgb(0, 0, 0),\n backgroundColor: (_f = options === null || options === void 0 ? void 0 : options.backgroundColor) !== null && _f !== void 0 ? _f : rgb(1, 1, 1),\n borderColor: (_g = options === null || options === void 0 ? void 0 : options.borderColor) !== null && _g !== void 0 ? _g : rgb(0, 0, 0),\n borderWidth: (_h = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _h !== void 0 ? _h : 1,\n rotate: (_j = options === null || options === void 0 ? void 0 : options.rotate) !== null && _j !== void 0 ? _j : degrees(0),\n hidden: options === null || options === void 0 ? void 0 : options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n var apStateValue = this.acroField.addWidgetWithOpt(widgetRef, PDFHexString.fromText(option), !this.isMutuallyExclusive());\n // Set appearance streams for widget\n widget.setAppearanceState(PDFName.of('Off'));\n this.updateWidgetAppearance(widget, apStateValue);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if any of this group's radio button widgets do not have an\n * appearance stream for their current state. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * if (radioGroup.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this radio group needs an appearance update.\n */\n PDFRadioGroup.prototype.needsAppearancesUpdate = function () {\n var _a;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var state = widget.getAppearanceState();\n var normal = (_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal;\n if (!(normal instanceof PDFDict))\n return true;\n if (state && !normal.has(state))\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this group's radio button widgets\n * using the default appearance provider for radio groups. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.defaultUpdateAppearances()\n * ```\n */\n PDFRadioGroup.prototype.defaultUpdateAppearances = function () {\n this.updateAppearances();\n };\n // rg.updateAppearances((field: any, widget: any) => {\n // assert(field === rg);\n // assert(widget instanceof PDFWidgetAnnotation);\n // return { on: [...rectangle, ...circle], off: [...rectangle, ...circle] };\n // });\n /**\n * Update the appearance streams for each of this group's radio button widgets\n * using the given appearance provider. If no `provider` is passed, the\n * default appearance provider for radio groups will be used. For example:\n * ```js\n * const radioGroup = form.getRadioGroup('some.radioGroup.field')\n * radioGroup.updateAppearances((field, widget) => {\n * ...\n * return {\n * normal: { on: drawRadioButton(...), off: drawRadioButton(...) },\n * down: { on: drawRadioButton(...), off: drawRadioButton(...) },\n * }\n * })\n * ```\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFRadioGroup.prototype.updateAppearances = function (provider) {\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var onValue = widget.getOnValue();\n if (!onValue)\n continue;\n this.updateWidgetAppearance(widget, onValue, provider);\n }\n };\n PDFRadioGroup.prototype.updateWidgetAppearance = function (widget, onValue, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultRadioGroupAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget));\n this.updateOnOffWidgetAppearance(widget, onValue, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getOptionList]] method, which will create an\n * > instance of [[PDFOptionList]] for you.\n *\n * Create an instance of [[PDFOptionList]] from an existing acroRadioButton\n * and ref\n *\n * @param acroRadioButton The underlying `PDFAcroRadioButton` for this\n * radio group.\n * @param ref The unique reference for this radio group.\n * @param doc The document to which this radio group will belong.\n */\n PDFRadioGroup.of = function (acroRadioButton, ref, doc) { return new PDFRadioGroup(acroRadioButton, ref, doc); };\n return PDFRadioGroup;\n}(PDFField));\nexport default PDFRadioGroup;\n//# sourceMappingURL=PDFRadioGroup.js.map","import { __extends } from \"tslib\";\nimport PDFField from \"./PDFField\";\nimport { PDFAcroSignature } from \"../../core\";\nimport { assertIs } from \"../../utils\";\n/**\n * Represents a signature field of a [[PDFForm]].\n *\n * [[PDFSignature]] fields are digital signatures. `pdf-lib` does not\n * currently provide any specialized APIs for creating digital signatures or\n * reading the contents of existing digital signatures.\n */\nvar PDFSignature = /** @class */ (function (_super) {\n __extends(PDFSignature, _super);\n function PDFSignature(acroSignature, ref, doc) {\n var _this = _super.call(this, acroSignature, ref, doc) || this;\n assertIs(acroSignature, 'acroSignature', [\n [PDFAcroSignature, 'PDFAcroSignature'],\n ]);\n _this.acroField = acroSignature;\n return _this;\n }\n PDFSignature.prototype.needsAppearancesUpdate = function () {\n return false;\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getSignature]] method, which will create an\n * > instance of [[PDFSignature]] for you.\n *\n * Create an instance of [[PDFSignature]] from an existing acroSignature and\n * ref\n *\n * @param acroSignature The underlying `PDFAcroSignature` for this signature.\n * @param ref The unique reference for this signature.\n * @param doc The document to which this signature will belong.\n */\n PDFSignature.of = function (acroSignature, ref, doc) { return new PDFSignature(acroSignature, ref, doc); };\n return PDFSignature;\n}(PDFField));\nexport default PDFSignature;\n//# sourceMappingURL=PDFSignature.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { normalizeAppearance, defaultTextFieldAppearanceProvider, } from \"./appearances\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { RichTextFieldReadError, ExceededMaxLengthError, InvalidMaxLengthError, } from \"../errors\";\nimport { ImageAlignment } from \"../image/alignment\";\nimport { TextAlignment } from \"../text/alignment\";\nimport { PDFHexString, PDFStream, PDFAcroText, AcroTextFlags, } from \"../../core\";\nimport { assertIs, assertIsOneOf, assertOrUndefined, assertPositive, assertRangeOrUndefined, } from \"../../utils\";\n/**\n * Represents a text field of a [[PDFForm]].\n *\n * [[PDFTextField]] fields are boxes that display text entered by the user. The\n * purpose of a text field is to enable users to enter text or view text values\n * in the document prefilled by software. Users can click on a text field and\n * input text via their keyboard. Some text fields allow multiple lines of text\n * to be entered (see [[PDFTextField.isMultiline]]).\n */\nvar PDFTextField = /** @class */ (function (_super) {\n __extends(PDFTextField, _super);\n function PDFTextField(acroText, ref, doc) {\n var _this = _super.call(this, acroText, ref, doc) || this;\n assertIs(acroText, 'acroText', [[PDFAcroText, 'PDFAcroText']]);\n _this.acroField = acroText;\n return _this;\n }\n /**\n * Get the text that this field contains. This text is visible to users who\n * view this field in a PDF reader.\n *\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * const text = textField.getText()\n * console.log('Text field contents:', text)\n * ```\n *\n * Note that if this text field contains no underlying value, `undefined`\n * will be returned. Text fields may also contain an underlying value that\n * is simply an empty string (`''`). This detail is largely irrelevant for\n * most applications. In general, you'll want to treat both cases the same\n * way and simply consider the text field to be empty. In either case, the\n * text field will appear empty to users when viewed in a PDF reader.\n *\n * An error will be thrown if this is a rich text field. `pdf-lib` does not\n * support reading rich text fields. Nor do most PDF readers and writers.\n * Rich text fields are based on XFA (XML Forms Architecture). Relatively few\n * PDFs use rich text fields or XFA. Unlike PDF itself, XFA is not an ISO\n * standard. XFA has been deprecated in PDF 2.0:\n * * https://en.wikipedia.org/wiki/XFA\n * * http://blog.pdfshareforms.com/pdf-2-0-release-bid-farewell-xfa-forms/\n *\n * @returns The text contained in this text field.\n */\n PDFTextField.prototype.getText = function () {\n var value = this.acroField.getValue();\n if (!value && this.isRichFormatted()) {\n throw new RichTextFieldReadError(this.getName());\n }\n return value === null || value === void 0 ? void 0 : value.decodeText();\n };\n /**\n * Set the text for this field. This operation is analogous to a human user\n * clicking on the text field in a PDF reader and typing in text via their\n * keyboard. This method will update the underlying state of the text field\n * to indicate what text has been set. PDF libraries and readers will be able\n * to extract these values from the saved document and determine what text\n * was set.\n *\n * For example:\n * ```js\n * const textField = form.getTextField('best.superhero.text.field')\n * textField.setText('One Punch Man')\n * ```\n *\n * This method will mark this text field as dirty, causing its appearance\n * streams to be updated when either [[PDFDocument.save]] or\n * [[PDFForm.updateFieldAppearances]] is called. The updated streams will\n * display the text this field contains inside the widgets of this text\n * field.\n *\n * **IMPORTANT:** The default font used to update appearance streams is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if this field contains text outside\n * the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing it to\n * [[PDFForm.updateFieldAppearances]] or [[PDFTextField.updateAppearances]]\n * allows you to generate appearance streams with characters outside the\n * latin alphabet (assuming the custom font supports them).\n *\n * If this is a rich text field, it will be converted to a standard text\n * field in order to set the text. `pdf-lib` does not support writing rich\n * text strings. Nor do most PDF readers and writers. See\n * [[PDFTextField.getText]] for more information about rich text fields and\n * their deprecation in PDF 2.0.\n *\n * @param text The text this field should contain.\n */\n PDFTextField.prototype.setText = function (text) {\n assertOrUndefined(text, 'text', ['string']);\n var maxLength = this.getMaxLength();\n if (maxLength !== undefined && text && text.length > maxLength) {\n throw new ExceededMaxLengthError(text.length, maxLength, this.getName());\n }\n this.markAsDirty();\n this.disableRichFormatting();\n if (text) {\n this.acroField.setValue(PDFHexString.fromText(text));\n }\n else {\n this.acroField.removeValue();\n }\n };\n /**\n * Get the alignment for this text field. This value represents the\n * justification of the text when it is displayed to the user in PDF readers.\n * There are three possible alignments: left, center, and right. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * const alignment = textField.getAlignment()\n * if (alignment === TextAlignment.Left) console.log('Text is left justified')\n * if (alignment === TextAlignment.Center) console.log('Text is centered')\n * if (alignment === TextAlignment.Right) console.log('Text is right justified')\n * ```\n * @returns The alignment of this text field.\n */\n PDFTextField.prototype.getAlignment = function () {\n var quadding = this.acroField.getQuadding();\n // prettier-ignore\n return (quadding === 0 ? TextAlignment.Left\n : quadding === 1 ? TextAlignment.Center\n : quadding === 2 ? TextAlignment.Right\n : TextAlignment.Left);\n };\n /**\n * Set the alignment for this text field. This will determine the\n * justification of the text when it is displayed to the user in PDF readers.\n * There are three possible alignments: left, center, and right. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n *\n * // Text will be left justified when displayed\n * textField.setAlignment(TextAlignment.Left)\n *\n * // Text will be centered when displayed\n * textField.setAlignment(TextAlignment.Center)\n *\n * // Text will be right justified when displayed\n * textField.setAlignment(TextAlignment.Right)\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n * @param alignment The alignment for this text field.\n */\n PDFTextField.prototype.setAlignment = function (alignment) {\n assertIsOneOf(alignment, 'alignment', TextAlignment);\n this.markAsDirty();\n this.acroField.setQuadding(alignment);\n };\n /**\n * Get the maximum length of this field. This value represents the maximum\n * number of characters that can be typed into this field by the user. If\n * this field does not have a maximum length, `undefined` is returned.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * const maxLength = textField.getMaxLength()\n * if (maxLength === undefined) console.log('No max length')\n * else console.log(`Max length is ${maxLength}`)\n * ```\n * @returns The maximum number of characters allowed in this field, or\n * `undefined` if no limit exists.\n */\n PDFTextField.prototype.getMaxLength = function () {\n return this.acroField.getMaxLength();\n };\n /**\n * Set the maximum length of this field. This limits the number of characters\n * that can be typed into this field by the user. This also limits the length\n * of the string that can be passed to [[PDFTextField.setText]]. This limit\n * can be removed by passing `undefined` as `maxLength`. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n *\n * // Allow between 0 and 5 characters to be entered\n * textField.setMaxLength(5)\n *\n * // Allow any number of characters to be entered\n * textField.setMaxLength(undefined)\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n * @param maxLength The maximum number of characters allowed in this field, or\n * `undefined` to remove the limit.\n */\n PDFTextField.prototype.setMaxLength = function (maxLength) {\n assertRangeOrUndefined(maxLength, 'maxLength', 0, Number.MAX_SAFE_INTEGER);\n this.markAsDirty();\n if (maxLength === undefined) {\n this.acroField.removeMaxLength();\n }\n else {\n var text = this.getText();\n if (text && text.length > maxLength) {\n throw new InvalidMaxLengthError(text.length, maxLength, this.getName());\n }\n this.acroField.setMaxLength(maxLength);\n }\n };\n /**\n * Remove the maximum length for this text field. This allows any number of\n * characters to be typed into this field by the user. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.removeMaxLength()\n * ```\n * Calling this method is equivalent to passing `undefined` to\n * [[PDFTextField.setMaxLength]].\n */\n PDFTextField.prototype.removeMaxLength = function () {\n this.markAsDirty();\n this.acroField.removeMaxLength();\n };\n /**\n * Display an image inside the bounds of this text field's widgets. For example:\n * ```js\n * const pngImage = await pdfDoc.embedPng(...)\n * const textField = form.getTextField('some.text.field')\n * textField.setImage(pngImage)\n * ```\n * This will update the appearances streams for each of this text field's widgets.\n * @param image The image that should be displayed.\n */\n PDFTextField.prototype.setImage = function (image) {\n var fieldAlignment = this.getAlignment();\n // prettier-ignore\n var alignment = fieldAlignment === TextAlignment.Center ? ImageAlignment.Center\n : fieldAlignment === TextAlignment.Right ? ImageAlignment.Right\n : ImageAlignment.Left;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var streamRef = this.createImageAppearanceStream(widget, image, alignment);\n this.updateWidgetAppearances(widget, { normal: streamRef });\n }\n this.markAsClean();\n };\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this text field. Font sizes\n * may be integer or floating point numbers. Supplying a negative font size\n * will cause this method to throw an error.\n *\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.setFontSize(4)\n * textField.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFTextField.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Returns `true` if each line of text is shown on a new line when this\n * field is displayed in a PDF reader. The alternative is that all lines of\n * text are merged onto a single line when displayed. See\n * [[PDFTextField.enableMultiline]] and [[PDFTextField.disableMultiline]].\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isMultiline()) console.log('Multiline is enabled')\n * ```\n * @returns Whether or not this is a multiline text field.\n */\n PDFTextField.prototype.isMultiline = function () {\n return this.acroField.hasFlag(AcroTextFlags.Multiline);\n };\n /**\n * Display each line of text on a new line when this field is displayed in a\n * PDF reader. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableMultiline()\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.enableMultiline = function () {\n this.markAsDirty();\n this.acroField.setFlagTo(AcroTextFlags.Multiline, true);\n };\n /**\n * Display each line of text on the same line when this field is displayed\n * in a PDF reader. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableMultiline()\n * ```\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.disableMultiline = function () {\n this.markAsDirty();\n this.acroField.setFlagTo(AcroTextFlags.Multiline, false);\n };\n /**\n * Returns `true` if this is a password text field. This means that the field\n * is intended for storing a secure password. See\n * [[PDFTextField.enablePassword]] and [[PDFTextField.disablePassword]].\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isPassword()) console.log('Password is enabled')\n * ```\n * @returns Whether or not this is a password text field.\n */\n PDFTextField.prototype.isPassword = function () {\n return this.acroField.hasFlag(AcroTextFlags.Password);\n };\n /**\n * Indicate that this text field is intended for storing a secure password.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enablePassword()\n * ```\n * Values entered into password text fields should not be displayed on the\n * screen by PDF readers. Most PDF readers will display the value as\n * asterisks or bullets. PDF readers should never store values entered by the\n * user into password text fields. Similarly, applications should not\n * write data to a password text field.\n *\n * **Please note that this method does not cause entered values to be\n * encrypted or secured in any way! It simply sets a flag that PDF software\n * and readers can access to determine the _purpose_ of this field.**\n */\n PDFTextField.prototype.enablePassword = function () {\n this.acroField.setFlagTo(AcroTextFlags.Password, true);\n };\n /**\n * Indicate that this text field is **not** intended for storing a secure\n * password. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disablePassword()\n * ```\n */\n PDFTextField.prototype.disablePassword = function () {\n this.acroField.setFlagTo(AcroTextFlags.Password, false);\n };\n /**\n * Returns `true` if the contents of this text field represent a file path.\n * See [[PDFTextField.enableFileSelection]] and\n * [[PDFTextField.disableFileSelection]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isFileSelector()) console.log('Is a file selector')\n * ```\n * @returns Whether or not this field should contain file paths.\n */\n PDFTextField.prototype.isFileSelector = function () {\n return this.acroField.hasFlag(AcroTextFlags.FileSelect);\n };\n /**\n * Indicate that this text field is intended to store a file path. The\n * contents of the file stored at that path should be submitted as the value\n * of the field. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableFileSelection()\n * ```\n */\n PDFTextField.prototype.enableFileSelection = function () {\n this.acroField.setFlagTo(AcroTextFlags.FileSelect, true);\n };\n /**\n * Indicate that this text field is **not** intended to store a file path.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableFileSelection()\n * ```\n */\n PDFTextField.prototype.disableFileSelection = function () {\n this.acroField.setFlagTo(AcroTextFlags.FileSelect, false);\n };\n /**\n * Returns `true` if the text entered in this field should be spell checked\n * by PDF readers. See [[PDFTextField.enableSpellChecking]] and\n * [[PDFTextField.disableSpellChecking]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isSpellChecked()) console.log('Spell checking is enabled')\n * ```\n * @returns Whether or not this field should be spell checked.\n */\n PDFTextField.prototype.isSpellChecked = function () {\n return !this.acroField.hasFlag(AcroTextFlags.DoNotSpellCheck);\n };\n /**\n * Allow PDF readers to spell check the text entered in this field.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableSpellChecking()\n * ```\n */\n PDFTextField.prototype.enableSpellChecking = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotSpellCheck, false);\n };\n /**\n * Do not allow PDF readers to spell check the text entered in this field.\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableSpellChecking()\n * ```\n */\n PDFTextField.prototype.disableSpellChecking = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotSpellCheck, true);\n };\n /**\n * Returns `true` if PDF readers should allow the user to scroll the text\n * field when its contents do not fit within the field's view bounds. See\n * [[PDFTextField.enableScrolling]] and [[PDFTextField.disableScrolling]].\n * For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isScrollable()) console.log('Scrolling is enabled')\n * ```\n * @returns Whether or not the field is scrollable in PDF readers.\n */\n PDFTextField.prototype.isScrollable = function () {\n return !this.acroField.hasFlag(AcroTextFlags.DoNotScroll);\n };\n /**\n * Allow PDF readers to present a scroll bar to the user when the contents\n * of this text field do not fit within its view bounds. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableScrolling()\n * ```\n * A horizontal scroll bar should be shown for singleline fields. A vertical\n * scroll bar should be shown for multiline fields.\n */\n PDFTextField.prototype.enableScrolling = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotScroll, false);\n };\n /**\n * Do not allow PDF readers to present a scroll bar to the user when the\n * contents of this text field do not fit within its view bounds. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableScrolling()\n * ```\n */\n PDFTextField.prototype.disableScrolling = function () {\n this.acroField.setFlagTo(AcroTextFlags.DoNotScroll, true);\n };\n /**\n * Returns `true` if this is a combed text field. This means that the field\n * is split into `n` equal size cells with one character in each (where `n`\n * is equal to the max length of the text field). The result is that all\n * characters in this field are displayed an equal distance apart from one\n * another. See [[PDFTextField.enableCombing]] and\n * [[PDFTextField.disableCombing]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isCombed()) console.log('Combing is enabled')\n * ```\n * Note that in order for a text field to be combed, the following must be\n * true (in addition to enabling combing):\n * * It must not be a multiline field (see [[PDFTextField.isMultiline]])\n * * It must not be a password field (see [[PDFTextField.isPassword]])\n * * It must not be a file selector field (see [[PDFTextField.isFileSelector]])\n * * It must have a max length defined (see [[PDFTextField.setMaxLength]])\n * @returns Whether or not this field is combed.\n */\n PDFTextField.prototype.isCombed = function () {\n return (this.acroField.hasFlag(AcroTextFlags.Comb) &&\n !this.isMultiline() &&\n !this.isPassword() &&\n !this.isFileSelector() &&\n this.getMaxLength() !== undefined);\n };\n /**\n * Split this field into `n` equal size cells with one character in each\n * (where `n` is equal to the max length of the text field). This will cause\n * all characters in the field to be displayed an equal distance apart from\n * one another. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableCombing()\n * ```\n *\n * In addition to calling this method, text fields must have a max length\n * defined in order to be combed (see [[PDFTextField.setMaxLength]]).\n *\n * This method will also call the following three methods internally:\n * * [[PDFTextField.disableMultiline]]\n * * [[PDFTextField.disablePassword]]\n * * [[PDFTextField.disableFileSelection]]\n *\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.enableCombing = function () {\n if (this.getMaxLength() === undefined) {\n var msg = \"PDFTextFields must have a max length in order to be combed\";\n console.warn(msg);\n }\n this.markAsDirty();\n this.disableMultiline();\n this.disablePassword();\n this.disableFileSelection();\n this.acroField.setFlagTo(AcroTextFlags.Comb, true);\n };\n /**\n * Turn off combing for this text field. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableCombing()\n * ```\n * See [[PDFTextField.isCombed]] and [[PDFTextField.enableCombing]] for more\n * information about what combing is.\n *\n * This method will mark this text field as dirty. See\n * [[PDFTextField.setText]] for more details about what this means.\n */\n PDFTextField.prototype.disableCombing = function () {\n this.markAsDirty();\n this.acroField.setFlagTo(AcroTextFlags.Comb, false);\n };\n /**\n * Returns `true` if this text field contains rich text. See\n * [[PDFTextField.enableRichFormatting]] and\n * [[PDFTextField.disableRichFormatting]]. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.isRichFormatted()) console.log('Rich formatting enabled')\n * ```\n * @returns Whether or not this field contains rich text.\n */\n PDFTextField.prototype.isRichFormatted = function () {\n return this.acroField.hasFlag(AcroTextFlags.RichText);\n };\n /**\n * Indicate that this field contains XFA data - or rich text. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.enableRichFormatting()\n * ```\n * Note that `pdf-lib` does not support reading or writing rich text fields.\n * Nor do most PDF readers and writers. Rich text fields are based on XFA\n * (XML Forms Architecture). Relatively few PDFs use rich text fields or XFA.\n * Unlike PDF itself, XFA is not an ISO standard. XFA has been deprecated in\n * PDF 2.0:\n * * https://en.wikipedia.org/wiki/XFA\n * * http://blog.pdfshareforms.com/pdf-2-0-release-bid-farewell-xfa-forms/\n */\n PDFTextField.prototype.enableRichFormatting = function () {\n this.acroField.setFlagTo(AcroTextFlags.RichText, true);\n };\n /**\n * Indicate that this is a standard text field that does not XFA data (rich\n * text). For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * textField.disableRichFormatting()\n * ```\n */\n PDFTextField.prototype.disableRichFormatting = function () {\n this.acroField.setFlagTo(AcroTextFlags.RichText, false);\n };\n /**\n * Show this text field on the specified page. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const textField = form.createTextField('best.gundam')\n * textField.setText('Exia')\n *\n * textField.addToPage(page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this text field.\n * @param page The page to which this text field widget should be added.\n * @param options The options to be used when adding this text field widget.\n */\n PDFTextField.prototype.addToPage = function (page, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n if (!options)\n options = {};\n if (!('textColor' in options))\n options.textColor = rgb(0, 0, 0);\n if (!('backgroundColor' in options))\n options.backgroundColor = rgb(1, 1, 1);\n if (!('borderColor' in options))\n options.borderColor = rgb(0, 0, 0);\n if (!('borderWidth' in options))\n options.borderWidth = 1;\n // Create a widget for this text field\n var widget = this.createWidget({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : 0,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : 0,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 200,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 50,\n textColor: options.textColor,\n backgroundColor: options.backgroundColor,\n borderColor: options.borderColor,\n borderWidth: (_e = options.borderWidth) !== null && _e !== void 0 ? _e : 0,\n rotate: (_f = options.rotate) !== null && _f !== void 0 ? _f : degrees(0),\n hidden: options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_g = options.font) !== null && _g !== void 0 ? _g : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this text field has been marked as dirty, or if any of\n * this text field's widgets do not have an appearance stream. For example:\n * ```js\n * const textField = form.getTextField('some.text.field')\n * if (textField.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this text field needs an appearance update.\n */\n PDFTextField.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this text field's widgets using\n * the default appearance provider for text fields. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const textField = form.getTextField('some.text.field')\n * textField.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFTextField.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this text field's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for text fields will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const textField = form.getTextField('some.text.field')\n * textField.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return drawTextField(...)\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFTextField.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n this.markAsClean();\n };\n PDFTextField.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultTextFieldAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getTextField]] method, which will create an\n * > instance of [[PDFTextField]] for you.\n *\n * Create an instance of [[PDFTextField]] from an existing acroText and ref\n *\n * @param acroText The underlying `PDFAcroText` for this text field.\n * @param ref The unique reference for this text field.\n * @param doc The document to which this text field will belong.\n */\n PDFTextField.of = function (acroText, ref, doc) {\n return new PDFTextField(acroText, ref, doc);\n };\n return PDFTextField;\n}(PDFField));\nexport default PDFTextField;\n//# sourceMappingURL=PDFTextField.js.map","export var StandardFonts;\n(function (StandardFonts) {\n StandardFonts[\"Courier\"] = \"Courier\";\n StandardFonts[\"CourierBold\"] = \"Courier-Bold\";\n StandardFonts[\"CourierOblique\"] = \"Courier-Oblique\";\n StandardFonts[\"CourierBoldOblique\"] = \"Courier-BoldOblique\";\n StandardFonts[\"Helvetica\"] = \"Helvetica\";\n StandardFonts[\"HelveticaBold\"] = \"Helvetica-Bold\";\n StandardFonts[\"HelveticaOblique\"] = \"Helvetica-Oblique\";\n StandardFonts[\"HelveticaBoldOblique\"] = \"Helvetica-BoldOblique\";\n StandardFonts[\"TimesRoman\"] = \"Times-Roman\";\n StandardFonts[\"TimesRomanBold\"] = \"Times-Bold\";\n StandardFonts[\"TimesRomanItalic\"] = \"Times-Italic\";\n StandardFonts[\"TimesRomanBoldItalic\"] = \"Times-BoldItalic\";\n StandardFonts[\"Symbol\"] = \"Symbol\";\n StandardFonts[\"ZapfDingbats\"] = \"ZapfDingbats\";\n})(StandardFonts || (StandardFonts = {}));\n//# sourceMappingURL=StandardFonts.js.map","import { __assign, __spreadArrays } from \"tslib\";\nimport PDFDocument from \"../PDFDocument\";\nimport PDFButton from \"./PDFButton\";\nimport PDFCheckBox from \"./PDFCheckBox\";\nimport PDFDropdown from \"./PDFDropdown\";\nimport PDFOptionList from \"./PDFOptionList\";\nimport PDFRadioGroup from \"./PDFRadioGroup\";\nimport PDFSignature from \"./PDFSignature\";\nimport PDFTextField from \"./PDFTextField\";\nimport { NoSuchFieldError, UnexpectedFieldTypeError, FieldAlreadyExistsError, InvalidFieldNamePartError, } from \"../errors\";\nimport PDFFont from \"../PDFFont\";\nimport { StandardFonts } from \"../StandardFonts\";\nimport { rotateInPlace } from \"../operations\";\nimport { drawObject, popGraphicsState, pushGraphicsState, translate, } from \"../operators\";\nimport { PDFAcroForm, PDFAcroCheckBox, PDFAcroComboBox, PDFAcroListBox, PDFAcroRadioButton, PDFAcroSignature, PDFAcroText, PDFAcroPushButton, PDFAcroNonTerminal, PDFDict, PDFRef, createPDFAcroFields, PDFName, } from \"../../core\";\nimport { assertIs, Cache, assertOrUndefined } from \"../../utils\";\n/**\n * Represents the interactive form of a [[PDFDocument]].\n *\n * Interactive forms (sometimes called _AcroForms_) are collections of fields\n * designed to gather information from a user. A PDF document may contains any\n * number of fields that appear on various pages, all of which make up a single,\n * global interactive form spanning the entire document. This means that\n * instances of [[PDFDocument]] shall contain at most one [[PDFForm]].\n *\n * The fields of an interactive form are represented by [[PDFField]] instances.\n */\nvar PDFForm = /** @class */ (function () {\n function PDFForm(acroForm, doc) {\n var _this = this;\n this.embedDefaultFont = function () {\n return _this.doc.embedStandardFont(StandardFonts.Helvetica);\n };\n assertIs(acroForm, 'acroForm', [[PDFAcroForm, 'PDFAcroForm']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n this.acroForm = acroForm;\n this.doc = doc;\n this.dirtyFields = new Set();\n this.defaultFontCache = Cache.populatedBy(this.embedDefaultFont);\n }\n /**\n * Returns `true` if this [[PDFForm]] has XFA data. Most PDFs with form\n * fields do not use XFA as it is not widely supported by PDF readers.\n *\n * > `pdf-lib` does not support creation, modification, or reading of XFA\n * > fields.\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * if (form.hasXFA()) console.log('PDF has XFA data')\n * ```\n * @returns Whether or not this form has XFA data.\n */\n PDFForm.prototype.hasXFA = function () {\n return this.acroForm.dict.has(PDFName.of('XFA'));\n };\n /**\n * Disconnect the XFA data from this [[PDFForm]] (if any exists). This will\n * force readers to fallback to standard fields if the [[PDFDocument]]\n * contains any. For example:\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * form.deleteXFA()\n * ```\n */\n PDFForm.prototype.deleteXFA = function () {\n this.acroForm.dict.delete(PDFName.of('XFA'));\n };\n /**\n * Get all fields contained in this [[PDFForm]]. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const fields = form.getFields()\n * fields.forEach(field => {\n * const type = field.constructor.name\n * const name = field.getName()\n * console.log(`${type}: ${name}`)\n * })\n * ```\n * @returns An array of all fields in this form.\n */\n PDFForm.prototype.getFields = function () {\n var allFields = this.acroForm.getAllFields();\n var fields = [];\n for (var idx = 0, len = allFields.length; idx < len; idx++) {\n var _a = allFields[idx], acroField = _a[0], ref = _a[1];\n var field = convertToPDFField(acroField, ref, this.doc);\n if (field)\n fields.push(field);\n }\n return fields;\n };\n /**\n * Get the field in this [[PDFForm]] with the given name. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getFieldMaybe('Page1.Foo.Bar[0]')\n * if (field) console.log('Field exists!')\n * ```\n * @param name A fully qualified field name.\n * @returns The field with the specified name, if one exists.\n */\n PDFForm.prototype.getFieldMaybe = function (name) {\n assertIs(name, 'name', ['string']);\n var fields = this.getFields();\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var field = fields[idx];\n if (field.getName() === name)\n return field;\n }\n return undefined;\n };\n /**\n * Get the field in this [[PDFForm]] with the given name. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('Page1.Foo.Bar[0]')\n * ```\n * If no field exists with the provided name, an error will be thrown.\n * @param name A fully qualified field name.\n * @returns The field with the specified name.\n */\n PDFForm.prototype.getField = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getFieldMaybe(name);\n if (field)\n return field;\n throw new NoSuchFieldError(name);\n };\n /**\n * Get the button field in this [[PDFForm]] with the given name. For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const button = form.getButton('Page1.Foo.Button[0]')\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a button.\n * @param name A fully qualified button name.\n * @returns The button with the specified name.\n */\n PDFForm.prototype.getButton = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFButton)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFButton, field);\n };\n /**\n * Get the check box field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const checkBox = form.getCheckBox('Page1.Foo.CheckBox[0]')\n * checkBox.check()\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a check box.\n * @param name A fully qualified check box name.\n * @returns The check box with the specified name.\n */\n PDFForm.prototype.getCheckBox = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFCheckBox)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFCheckBox, field);\n };\n /**\n * Get the dropdown field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const dropdown = form.getDropdown('Page1.Foo.Dropdown[0]')\n * const options = dropdown.getOptions()\n * dropdown.select(options[0])\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a dropdown.\n * @param name A fully qualified dropdown name.\n * @returns The dropdown with the specified name.\n */\n PDFForm.prototype.getDropdown = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFDropdown)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFDropdown, field);\n };\n /**\n * Get the option list field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const optionList = form.getOptionList('Page1.Foo.OptionList[0]')\n * const options = optionList.getOptions()\n * optionList.select(options[0])\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not an option list.\n * @param name A fully qualified option list name.\n * @returns The option list with the specified name.\n */\n PDFForm.prototype.getOptionList = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFOptionList)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFOptionList, field);\n };\n /**\n * Get the radio group field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const radioGroup = form.getRadioGroup('Page1.Foo.RadioGroup[0]')\n * const options = radioGroup.getOptions()\n * radioGroup.select(options[0])\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a radio group.\n * @param name A fully qualified radio group name.\n * @returns The radio group with the specified name.\n */\n PDFForm.prototype.getRadioGroup = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFRadioGroup)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFRadioGroup, field);\n };\n /**\n * Get the signature field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const signature = form.getSignature('Page1.Foo.Signature[0]')\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a signature.\n * @param name A fully qualified signature name.\n * @returns The signature with the specified name.\n */\n PDFForm.prototype.getSignature = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFSignature)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFSignature, field);\n };\n /**\n * Get the text field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const textField = form.getTextField('Page1.Foo.TextField[0]')\n * textField.setText('Are you designed to act or to be acted upon?')\n * ```\n * An error will be thrown if no field exists with the provided name, or if\n * the field exists but is not a text field.\n * @param name A fully qualified text field name.\n * @returns The text field with the specified name.\n */\n PDFForm.prototype.getTextField = function (name) {\n assertIs(name, 'name', ['string']);\n var field = this.getField(name);\n if (field instanceof PDFTextField)\n return field;\n throw new UnexpectedFieldTypeError(name, PDFTextField, field);\n };\n /**\n * Create a new button field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const button = form.createButton('cool.new.button')\n *\n * button.addToPage('Do Stuff', font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new button.\n * @returns The new button field.\n */\n PDFForm.prototype.createButton = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var button = PDFAcroPushButton.create(this.doc.context);\n button.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [button, button.ref], nameParts.terminal);\n return PDFButton.of(button, button.ref, this.doc);\n };\n /**\n * Create a new check box field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const checkBox = form.createCheckBox('cool.new.checkBox')\n *\n * checkBox.addToPage(page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new check box.\n * @returns The new check box field.\n */\n PDFForm.prototype.createCheckBox = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var checkBox = PDFAcroCheckBox.create(this.doc.context);\n checkBox.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [checkBox, checkBox.ref], nameParts.terminal);\n return PDFCheckBox.of(checkBox, checkBox.ref, this.doc);\n };\n /**\n * Create a new dropdown field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const dropdown = form.createDropdown('cool.new.dropdown')\n *\n * dropdown.addToPage(font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new dropdown.\n * @returns The new dropdown field.\n */\n PDFForm.prototype.createDropdown = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var comboBox = PDFAcroComboBox.create(this.doc.context);\n comboBox.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [comboBox, comboBox.ref], nameParts.terminal);\n return PDFDropdown.of(comboBox, comboBox.ref, this.doc);\n };\n /**\n * Create a new option list field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const optionList = form.createOptionList('cool.new.optionList')\n *\n * optionList.addToPage(font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new option list.\n * @returns The new option list field.\n */\n PDFForm.prototype.createOptionList = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var listBox = PDFAcroListBox.create(this.doc.context);\n listBox.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [listBox, listBox.ref], nameParts.terminal);\n return PDFOptionList.of(listBox, listBox.ref, this.doc);\n };\n /**\n * Create a new radio group field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const radioGroup = form.createRadioGroup('cool.new.radioGroup')\n *\n * radioGroup.addOptionToPage('is-dog', page, { y: 0 })\n * radioGroup.addOptionToPage('is-cat', page, { y: 75 })\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new radio group.\n * @returns The new radio group field.\n */\n PDFForm.prototype.createRadioGroup = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var radioButton = PDFAcroRadioButton.create(this.doc.context);\n radioButton.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [radioButton, radioButton.ref], nameParts.terminal);\n return PDFRadioGroup.of(radioButton, radioButton.ref, this.doc);\n };\n /**\n * Create a new text field in this [[PDFForm]] with the given name.\n * For example:\n * ```js\n * const font = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const textField = form.createTextField('cool.new.textField')\n *\n * textField.addToPage(font, page)\n * ```\n * An error will be thrown if a field already exists with the provided name.\n * @param name The fully qualified name for the new radio group.\n * @returns The new radio group field.\n */\n PDFForm.prototype.createTextField = function (name) {\n assertIs(name, 'name', ['string']);\n var nameParts = splitFieldName(name);\n var parent = this.findOrCreateNonTerminals(nameParts.nonTerminal);\n var text = PDFAcroText.create(this.doc.context);\n text.setPartialName(nameParts.terminal);\n addFieldToParent(parent, [text, text.ref], nameParts.terminal);\n return PDFTextField.of(text, text.ref, this.doc);\n };\n /**\n * Flatten all fields in this [[PDFForm]].\n *\n * Flattening a form field will take the current appearance for each of that\n * field's widgets and make them part of their page's content stream. All form\n * fields and annotations associated are then removed. Note that once a form\n * has been flattened its fields can no longer be accessed or edited.\n *\n * This operation is often used after filling form fields to ensure a\n * consistent appearance across different PDF readers and/or printers.\n * Another common use case is to copy a template document with form fields\n * into another document. In this scenario you would load the template\n * document, fill its fields, flatten it, and then copy its pages into the\n * recipient document - the filled fields will be copied over.\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm();\n * form.flatten();\n * ```\n */\n PDFForm.prototype.flatten = function (options) {\n if (options === void 0) { options = { updateFieldAppearances: true }; }\n if (options.updateFieldAppearances) {\n this.updateFieldAppearances();\n }\n var fields = this.getFields();\n for (var i = 0, lenFields = fields.length; i < lenFields; i++) {\n var field = fields[i];\n var widgets = field.acroField.getWidgets();\n for (var j = 0, lenWidgets = widgets.length; j < lenWidgets; j++) {\n var widget = widgets[j];\n var page = this.findWidgetPage(widget);\n var widgetRef = this.findWidgetAppearanceRef(field, widget);\n var xObjectKey = page.node.newXObject('FlatWidget', widgetRef);\n var rectangle = widget.getRectangle();\n var operators = __spreadArrays([\n pushGraphicsState(),\n translate(rectangle.x, rectangle.y)\n ], rotateInPlace(__assign(__assign({}, rectangle), { rotation: 0 })), [\n drawObject(xObjectKey),\n popGraphicsState(),\n ]).filter(Boolean);\n page.pushOperators.apply(page, operators);\n }\n this.removeField(field);\n }\n };\n /**\n * Remove a field from this [[PDFForm]].\n *\n * For example:\n * ```js\n * const form = pdfDoc.getForm();\n * const ageField = form.getFields().find(x => x.getName() === 'Age');\n * form.removeField(ageField);\n * ```\n */\n PDFForm.prototype.removeField = function (field) {\n var widgets = field.acroField.getWidgets();\n var pages = new Set();\n for (var i = 0, len = widgets.length; i < len; i++) {\n var widget = widgets[i];\n var widgetRef = this.findWidgetAppearanceRef(field, widget);\n var page = this.findWidgetPage(widget);\n pages.add(page);\n page.node.removeAnnot(widgetRef);\n }\n pages.forEach(function (page) { return page.node.removeAnnot(field.ref); });\n this.acroForm.removeField(field.acroField);\n var fieldKids = field.acroField.normalizedEntries().Kids;\n var kidsCount = fieldKids.size();\n for (var childIndex = 0; childIndex < kidsCount; childIndex++) {\n var child = fieldKids.get(childIndex);\n if (child instanceof PDFRef) {\n this.doc.context.delete(child);\n }\n }\n this.doc.context.delete(field.ref);\n };\n /**\n * Update the appearance streams for all widgets of all fields in this\n * [[PDFForm]]. Appearance streams will only be created for a widget if it\n * does not have any existing appearance streams, or the field's value has\n * changed (e.g. by calling [[PDFTextField.setText]] or\n * [[PDFDropdown.select]]).\n *\n * For example:\n * ```js\n * const courier = await pdfDoc.embedFont(StandardFonts.Courier)\n * const form = pdfDoc.getForm()\n * form.updateFieldAppearances(courier)\n * ```\n *\n * **IMPORTANT:** The default value for the `font` parameter is\n * [[StandardFonts.Helvetica]]. Note that this is a WinAnsi font. This means\n * that encoding errors will be thrown if any fields contain text with\n * characters outside the WinAnsi character set (the latin alphabet).\n *\n * Embedding a custom font and passing that as the `font`\n * parameter allows you to generate appearance streams with non WinAnsi\n * characters (assuming your custom font supports them).\n *\n * > **NOTE:** The [[PDFDocument.save]] method will call this method to\n * > update appearances automatically if a form was accessed via the\n * > [[PDFDocument.getForm]] method prior to saving.\n *\n * @param font Optionally, the font to use when creating new appearances.\n */\n PDFForm.prototype.updateFieldAppearances = function (font) {\n assertOrUndefined(font, 'font', [[PDFFont, 'PDFFont']]);\n font = font !== null && font !== void 0 ? font : this.getDefaultFont();\n var fields = this.getFields();\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var field = fields[idx];\n if (field.needsAppearancesUpdate()) {\n field.defaultUpdateAppearances(font);\n }\n }\n };\n /**\n * Mark a field as dirty. This will cause its appearance streams to be\n * updated by [[PDFForm.updateFieldAppearances]].\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('foo.bar')\n * form.markFieldAsDirty(field.ref)\n * ```\n * @param fieldRef The reference to the field that should be marked.\n */\n PDFForm.prototype.markFieldAsDirty = function (fieldRef) {\n assertOrUndefined(fieldRef, 'fieldRef', [[PDFRef, 'PDFRef']]);\n this.dirtyFields.add(fieldRef);\n };\n /**\n * Mark a field as dirty. This will cause its appearance streams to not be\n * updated by [[PDFForm.updateFieldAppearances]].\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('foo.bar')\n * form.markFieldAsClean(field.ref)\n * ```\n * @param fieldRef The reference to the field that should be marked.\n */\n PDFForm.prototype.markFieldAsClean = function (fieldRef) {\n assertOrUndefined(fieldRef, 'fieldRef', [[PDFRef, 'PDFRef']]);\n this.dirtyFields.delete(fieldRef);\n };\n /**\n * Returns `true` is the specified field has been marked as dirty.\n * ```js\n * const form = pdfDoc.getForm()\n * const field = form.getField('foo.bar')\n * if (form.fieldIsDirty(field.ref)) console.log('Field is dirty')\n * ```\n * @param fieldRef The reference to the field that should be checked.\n * @returns Whether or not the specified field is dirty.\n */\n PDFForm.prototype.fieldIsDirty = function (fieldRef) {\n assertOrUndefined(fieldRef, 'fieldRef', [[PDFRef, 'PDFRef']]);\n return this.dirtyFields.has(fieldRef);\n };\n PDFForm.prototype.getDefaultFont = function () {\n return this.defaultFontCache.access();\n };\n PDFForm.prototype.findWidgetPage = function (widget) {\n var pageRef = widget.P();\n var page = this.doc.getPages().find(function (x) { return x.ref === pageRef; });\n if (page === undefined) {\n var widgetRef = this.doc.context.getObjectRef(widget.dict);\n if (widgetRef === undefined) {\n throw new Error('Could not find PDFRef for PDFObject');\n }\n page = this.doc.findPageForAnnotationRef(widgetRef);\n if (page === undefined) {\n throw new Error(\"Could not find page for PDFRef \" + widgetRef);\n }\n }\n return page;\n };\n PDFForm.prototype.findWidgetAppearanceRef = function (field, widget) {\n var _a;\n var refOrDict = widget.getNormalAppearance();\n if (refOrDict instanceof PDFDict &&\n (field instanceof PDFCheckBox || field instanceof PDFRadioGroup)) {\n var value = field.acroField.getValue();\n var ref = (_a = refOrDict.get(value)) !== null && _a !== void 0 ? _a : refOrDict.get(PDFName.of('Off'));\n if (ref instanceof PDFRef) {\n refOrDict = ref;\n }\n }\n if (!(refOrDict instanceof PDFRef)) {\n var name_1 = field.getName();\n throw new Error(\"Failed to extract appearance ref for: \" + name_1);\n }\n return refOrDict;\n };\n PDFForm.prototype.findOrCreateNonTerminals = function (partialNames) {\n var nonTerminal = [\n this.acroForm,\n ];\n for (var idx = 0, len = partialNames.length; idx < len; idx++) {\n var namePart = partialNames[idx];\n if (!namePart)\n throw new InvalidFieldNamePartError(namePart);\n var parent_1 = nonTerminal[0], parentRef = nonTerminal[1];\n var res = this.findNonTerminal(namePart, parent_1);\n if (res) {\n nonTerminal = res;\n }\n else {\n var node = PDFAcroNonTerminal.create(this.doc.context);\n node.setPartialName(namePart);\n node.setParent(parentRef);\n var nodeRef = this.doc.context.register(node.dict);\n parent_1.addField(nodeRef);\n nonTerminal = [node, nodeRef];\n }\n }\n return nonTerminal;\n };\n PDFForm.prototype.findNonTerminal = function (partialName, parent) {\n var fields = parent instanceof PDFAcroForm\n ? this.acroForm.getFields()\n : createPDFAcroFields(parent.Kids());\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n var _a = fields[idx], field = _a[0], ref = _a[1];\n if (field.getPartialName() === partialName) {\n if (field instanceof PDFAcroNonTerminal)\n return [field, ref];\n throw new FieldAlreadyExistsError(partialName);\n }\n }\n return undefined;\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.getForm]] method, which will create an\n * > instance of [[PDFForm]] for you.\n *\n * Create an instance of [[PDFForm]] from an existing acroForm and embedder\n *\n * @param acroForm The underlying `PDFAcroForm` for this form.\n * @param doc The document to which the form will belong.\n */\n PDFForm.of = function (acroForm, doc) {\n return new PDFForm(acroForm, doc);\n };\n return PDFForm;\n}());\nexport default PDFForm;\nvar convertToPDFField = function (field, ref, doc) {\n if (field instanceof PDFAcroPushButton)\n return PDFButton.of(field, ref, doc);\n if (field instanceof PDFAcroCheckBox)\n return PDFCheckBox.of(field, ref, doc);\n if (field instanceof PDFAcroComboBox)\n return PDFDropdown.of(field, ref, doc);\n if (field instanceof PDFAcroListBox)\n return PDFOptionList.of(field, ref, doc);\n if (field instanceof PDFAcroText)\n return PDFTextField.of(field, ref, doc);\n if (field instanceof PDFAcroRadioButton) {\n return PDFRadioGroup.of(field, ref, doc);\n }\n if (field instanceof PDFAcroSignature) {\n return PDFSignature.of(field, ref, doc);\n }\n return undefined;\n};\nvar splitFieldName = function (fullyQualifiedName) {\n if (fullyQualifiedName.length === 0) {\n throw new Error('PDF field names must not be empty strings');\n }\n var parts = fullyQualifiedName.split('.');\n for (var idx = 0, len = parts.length; idx < len; idx++) {\n if (parts[idx] === '') {\n throw new Error(\"Periods in PDF field names must be separated by at least one character: \\\"\" + fullyQualifiedName + \"\\\"\");\n }\n }\n if (parts.length === 1)\n return { nonTerminal: [], terminal: parts[0] };\n return {\n nonTerminal: parts.slice(0, parts.length - 1),\n terminal: parts[parts.length - 1],\n };\n};\nvar addFieldToParent = function (_a, _b, partialName) {\n var parent = _a[0], parentRef = _a[1];\n var field = _b[0], fieldRef = _b[1];\n var entries = parent.normalizedEntries();\n var fields = createPDFAcroFields('Kids' in entries ? entries.Kids : entries.Fields);\n for (var idx = 0, len = fields.length; idx < len; idx++) {\n if (fields[idx][0].getPartialName() === partialName) {\n throw new FieldAlreadyExistsError(partialName);\n }\n }\n parent.addField(fieldRef);\n field.setParent(parentRef);\n};\n//# sourceMappingURL=PDFForm.js.map","export var ParseSpeeds;\n(function (ParseSpeeds) {\n ParseSpeeds[ParseSpeeds[\"Fastest\"] = Infinity] = \"Fastest\";\n ParseSpeeds[ParseSpeeds[\"Fast\"] = 1500] = \"Fast\";\n ParseSpeeds[ParseSpeeds[\"Medium\"] = 500] = \"Medium\";\n ParseSpeeds[ParseSpeeds[\"Slow\"] = 100] = \"Slow\";\n})(ParseSpeeds || (ParseSpeeds = {}));\n//# sourceMappingURL=PDFDocumentOptions.js.map","export var PageSizes = {\n '4A0': [4767.87, 6740.79],\n '2A0': [3370.39, 4767.87],\n A0: [2383.94, 3370.39],\n A1: [1683.78, 2383.94],\n A2: [1190.55, 1683.78],\n A3: [841.89, 1190.55],\n A4: [595.28, 841.89],\n A5: [419.53, 595.28],\n A6: [297.64, 419.53],\n A7: [209.76, 297.64],\n A8: [147.4, 209.76],\n A9: [104.88, 147.4],\n A10: [73.7, 104.88],\n B0: [2834.65, 4008.19],\n B1: [2004.09, 2834.65],\n B2: [1417.32, 2004.09],\n B3: [1000.63, 1417.32],\n B4: [708.66, 1000.63],\n B5: [498.9, 708.66],\n B6: [354.33, 498.9],\n B7: [249.45, 354.33],\n B8: [175.75, 249.45],\n B9: [124.72, 175.75],\n B10: [87.87, 124.72],\n C0: [2599.37, 3676.54],\n C1: [1836.85, 2599.37],\n C2: [1298.27, 1836.85],\n C3: [918.43, 1298.27],\n C4: [649.13, 918.43],\n C5: [459.21, 649.13],\n C6: [323.15, 459.21],\n C7: [229.61, 323.15],\n C8: [161.57, 229.61],\n C9: [113.39, 161.57],\n C10: [79.37, 113.39],\n RA0: [2437.8, 3458.27],\n RA1: [1729.13, 2437.8],\n RA2: [1218.9, 1729.13],\n RA3: [864.57, 1218.9],\n RA4: [609.45, 864.57],\n SRA0: [2551.18, 3628.35],\n SRA1: [1814.17, 2551.18],\n SRA2: [1275.59, 1814.17],\n SRA3: [907.09, 1275.59],\n SRA4: [637.8, 907.09],\n Executive: [521.86, 756.0],\n Folio: [612.0, 936.0],\n Legal: [612.0, 1008.0],\n Letter: [612.0, 792.0],\n Tabloid: [792.0, 1224.0],\n};\n//# sourceMappingURL=sizes.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PDFName, PDFArray, PDFDict, PDFHexString } from \"../core\";\n/**\n * Represents a file that has been embedded in a [[PDFDocument]].\n */\nvar PDFEmbeddedFile = /** @class */ (function () {\n function PDFEmbeddedFile(ref, doc, embedder) {\n this.alreadyEmbedded = false;\n this.ref = ref;\n this.doc = doc;\n this.embedder = embedder;\n }\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all embeddable files get embedded.\n *\n * Embed this embeddable file in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFEmbeddedFile.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ref, Names, EmbeddedFiles, EFNames, AF;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.alreadyEmbedded) return [3 /*break*/, 2];\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n ref = _a.sent();\n if (!this.doc.catalog.has(PDFName.of('Names'))) {\n this.doc.catalog.set(PDFName.of('Names'), this.doc.context.obj({}));\n }\n Names = this.doc.catalog.lookup(PDFName.of('Names'), PDFDict);\n if (!Names.has(PDFName.of('EmbeddedFiles'))) {\n Names.set(PDFName.of('EmbeddedFiles'), this.doc.context.obj({}));\n }\n EmbeddedFiles = Names.lookup(PDFName.of('EmbeddedFiles'), PDFDict);\n if (!EmbeddedFiles.has(PDFName.of('Names'))) {\n EmbeddedFiles.set(PDFName.of('Names'), this.doc.context.obj([]));\n }\n EFNames = EmbeddedFiles.lookup(PDFName.of('Names'), PDFArray);\n EFNames.push(PDFHexString.fromText(this.embedder.fileName));\n EFNames.push(ref);\n /**\n * The AF-Tag is needed to achieve PDF-A3 compliance for embedded files\n *\n * The following document outlines the uses cases of the associated files (AF) tag.\n * See:\n * https://www.pdfa.org/wp-content/uploads/2018/10/PDF20_AN002-AF.pdf\n */\n if (!this.doc.catalog.has(PDFName.of('AF'))) {\n this.doc.catalog.set(PDFName.of('AF'), this.doc.context.obj([]));\n }\n AF = this.doc.catalog.lookup(PDFName.of('AF'), PDFArray);\n AF.push(ref);\n this.alreadyEmbedded = true;\n _a.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.attach]] method, which will create\n * instances of [[PDFEmbeddedFile]] for you.\n *\n * Create an instance of [[PDFEmbeddedFile]] from an existing ref and embedder\n *\n * @param ref The unique reference for this file.\n * @param doc The document to which the file will belong.\n * @param embedder The embedder that will be used to embed the file.\n */\n PDFEmbeddedFile.of = function (ref, doc, embedder) {\n return new PDFEmbeddedFile(ref, doc, embedder);\n };\n return PDFEmbeddedFile;\n}());\nexport default PDFEmbeddedFile;\n//# sourceMappingURL=PDFEmbeddedFile.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { PDFName, PDFArray, PDFDict, PDFHexString } from \"../core\";\n/**\n * Represents JavaScript that has been embedded in a [[PDFDocument]].\n */\nvar PDFJavaScript = /** @class */ (function () {\n function PDFJavaScript(ref, doc, embedder) {\n this.alreadyEmbedded = false;\n this.ref = ref;\n this.doc = doc;\n this.embedder = embedder;\n }\n /**\n * > **NOTE:** You probably don't need to call this method directly. The\n * > [[PDFDocument.save]] and [[PDFDocument.saveAsBase64]] methods will\n * > automatically ensure all JavaScripts get embedded.\n *\n * Embed this JavaScript in its document.\n *\n * @returns Resolves when the embedding is complete.\n */\n PDFJavaScript.prototype.embed = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, catalog, context, ref, Names, Javascript, JSNames;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!!this.alreadyEmbedded) return [3 /*break*/, 2];\n _a = this.doc, catalog = _a.catalog, context = _a.context;\n return [4 /*yield*/, this.embedder.embedIntoContext(this.doc.context, this.ref)];\n case 1:\n ref = _b.sent();\n if (!catalog.has(PDFName.of('Names'))) {\n catalog.set(PDFName.of('Names'), context.obj({}));\n }\n Names = catalog.lookup(PDFName.of('Names'), PDFDict);\n if (!Names.has(PDFName.of('JavaScript'))) {\n Names.set(PDFName.of('JavaScript'), context.obj({}));\n }\n Javascript = Names.lookup(PDFName.of('JavaScript'), PDFDict);\n if (!Javascript.has(PDFName.of('Names'))) {\n Javascript.set(PDFName.of('Names'), context.obj([]));\n }\n JSNames = Javascript.lookup(PDFName.of('Names'), PDFArray);\n JSNames.push(PDFHexString.fromText(this.embedder.scriptName));\n JSNames.push(ref);\n this.alreadyEmbedded = true;\n _b.label = 2;\n case 2: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.addJavaScript]] method, which will\n * create instances of [[PDFJavaScript]] for you.\n *\n * Create an instance of [[PDFJavaScript]] from an existing ref and script\n *\n * @param ref The unique reference for this script.\n * @param doc The document to which the script will belong.\n * @param embedder The embedder that will be used to embed the script.\n */\n PDFJavaScript.of = function (ref, doc, embedder) {\n return new PDFJavaScript(ref, doc, embedder);\n };\n return PDFJavaScript;\n}());\nexport default PDFJavaScript;\n//# sourceMappingURL=PDFJavaScript.js.map","import { __awaiter, __generator } from \"tslib\";\nimport PDFHexString from \"../objects/PDFHexString\";\nvar JavaScriptEmbedder = /** @class */ (function () {\n function JavaScriptEmbedder(script, scriptName) {\n this.script = script;\n this.scriptName = scriptName;\n }\n JavaScriptEmbedder.for = function (script, scriptName) {\n return new JavaScriptEmbedder(script, scriptName);\n };\n JavaScriptEmbedder.prototype.embedIntoContext = function (context, ref) {\n return __awaiter(this, void 0, void 0, function () {\n var jsActionDict;\n return __generator(this, function (_a) {\n jsActionDict = context.obj({\n Type: 'Action',\n S: 'JavaScript',\n JS: PDFHexString.fromText(this.script),\n });\n if (ref) {\n context.assign(ref, jsActionDict);\n return [2 /*return*/, ref];\n }\n else {\n return [2 /*return*/, context.register(jsActionDict)];\n }\n return [2 /*return*/];\n });\n });\n };\n return JavaScriptEmbedder;\n}());\nexport default JavaScriptEmbedder;\n//# sourceMappingURL=JavaScriptEmbedder.js.map","import { __awaiter, __generator, __rest } from \"tslib\";\nimport { EncryptedPDFError, FontkitNotRegisteredError, ForeignPageError, RemovePageFromEmptyDocumentError, } from \"./errors\";\nimport PDFEmbeddedPage from \"./PDFEmbeddedPage\";\nimport PDFFont from \"./PDFFont\";\nimport PDFImage from \"./PDFImage\";\nimport PDFPage from \"./PDFPage\";\nimport PDFForm from \"./form/PDFForm\";\nimport { PageSizes } from \"./sizes\";\nimport { CustomFontEmbedder, CustomFontSubsetEmbedder, JpegEmbedder, PageEmbeddingMismatchedContextError, PDFCatalog, PDFContext, PDFDict, PDFHexString, PDFName, PDFObjectCopier, PDFPageEmbedder, PDFPageLeaf, PDFPageTree, PDFParser, PDFStreamWriter, PDFString, PDFWriter, PngEmbedder, StandardFontEmbedder, UnexpectedObjectTypeError, } from \"../core\";\nimport { ParseSpeeds, } from \"./PDFDocumentOptions\";\nimport { assertIs, assertIsOneOfOrUndefined, assertOrUndefined, assertRange, Cache, canBeConvertedToUint8Array, encodeToBase64, isStandardFont, pluckIndices, range, toUint8Array, } from \"../utils\";\nimport FileEmbedder, { AFRelationship } from \"../core/embedders/FileEmbedder\";\nimport PDFEmbeddedFile from \"./PDFEmbeddedFile\";\nimport PDFJavaScript from \"./PDFJavaScript\";\nimport JavaScriptEmbedder from \"../core/embedders/JavaScriptEmbedder\";\n/**\n * Represents a PDF document.\n */\nvar PDFDocument = /** @class */ (function () {\n function PDFDocument(context, ignoreEncryption, updateMetadata) {\n var _this = this;\n /** The default word breaks used in PDFPage.drawText */\n this.defaultWordBreaks = [' '];\n this.computePages = function () {\n var pages = [];\n _this.catalog.Pages().traverse(function (node, ref) {\n if (node instanceof PDFPageLeaf) {\n var page = _this.pageMap.get(node);\n if (!page) {\n page = PDFPage.of(node, ref, _this);\n _this.pageMap.set(node, page);\n }\n pages.push(page);\n }\n });\n return pages;\n };\n this.getOrCreateForm = function () {\n var acroForm = _this.catalog.getOrCreateAcroForm();\n return PDFForm.of(acroForm, _this);\n };\n assertIs(context, 'context', [[PDFContext, 'PDFContext']]);\n assertIs(ignoreEncryption, 'ignoreEncryption', ['boolean']);\n this.context = context;\n this.catalog = context.lookup(context.trailerInfo.Root);\n this.isEncrypted = !!context.lookup(context.trailerInfo.Encrypt);\n this.pageCache = Cache.populatedBy(this.computePages);\n this.pageMap = new Map();\n this.formCache = Cache.populatedBy(this.getOrCreateForm);\n this.fonts = [];\n this.images = [];\n this.embeddedPages = [];\n this.embeddedFiles = [];\n this.javaScripts = [];\n if (!ignoreEncryption && this.isEncrypted)\n throw new EncryptedPDFError();\n if (updateMetadata)\n this.updateInfoDict();\n }\n /**\n * Load an existing [[PDFDocument]]. The input data can be provided in\n * multiple formats:\n *\n * | Type | Contents |\n * | ------------- | ------------------------------------------------------ |\n * | `string` | A base64 encoded string (or data URI) containing a PDF |\n * | `Uint8Array` | The raw bytes of a PDF |\n * | `ArrayBuffer` | The raw bytes of a PDF |\n *\n * For example:\n * ```js\n * import { PDFDocument } from 'pdf-lib'\n *\n * // pdf=string\n * const base64 =\n * 'JVBERi0xLjcKJYGBgYEKCjUgMCBvYmoKPDwKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbm' +\n * 'd0aCAxMDQKPj4Kc3RyZWFtCniccwrhMlAAwaJ0Ln2P1Jyy1JLM5ERdc0MjCwUjE4WQNC4Q' +\n * '6cNlCFZkqGCqYGSqEJLLZWNuYGZiZmbkYuZsZmlmZGRgZmluDCQNzc3NTM2NzdzMXMxMjQ' +\n * 'ztFEKyuEK0uFxDuAAOERdVCmVuZHN0cmVhbQplbmRvYmoKCjYgMCBvYmoKPDwKL0ZpbHRl' +\n * 'ciAvRmxhdGVEZWNvZGUKL1R5cGUgL09ialN0bQovTiA0Ci9GaXJzdCAyMAovTGVuZ3RoID' +\n * 'IxNQo+PgpzdHJlYW0KeJxVj9GqwjAMhu/zFHkBzTo3nCCCiiKIHPEICuJF3cKoSCu2E8/b' +\n * '20wPIr1p8v9/8kVhgilmGfawX2CGaVrgcAi0/bsy0lrX7IGWpvJ4iJYEN3gEmrrGBlQwGs' +\n * 'HHO9VBX1wNrxAqMX87RBD5xpJuddqwd82tjAHxzV1U5LPgy52DKXWnr1Lheg+j/c/pzGVr' +\n * 'iqV0VlwZPXGPCJjElw/ybkwUmeoWgxesDXGhHJC/D/iikp1Av80ptKU0FdBEe25pPihAM1' +\n * 'u6ytgaaWfs2Hrz35CJT1+EWmAKZW5kc3RyZWFtCmVuZG9iagoKNyAwIG9iago8PAovU2l6' +\n * 'ZSA4Ci9Sb290IDIgMCBSCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9UeXBlIC9YUmVmCi9MZW' +\n * '5ndGggMzgKL1cgWyAxIDIgMiBdCi9JbmRleCBbIDAgOCBdCj4+CnN0cmVhbQp4nBXEwREA' +\n * 'EBAEsCwz3vrvRmOOyyOoGhZdutHN2MT55fIAVocD+AplbmRzdHJlYW0KZW5kb2JqCgpzdG' +\n * 'FydHhyZWYKNTEwCiUlRU9G'\n *\n * const dataUri = 'data:application/pdf;base64,' + base64\n *\n * const pdfDoc1 = await PDFDocument.load(base64)\n * const pdfDoc2 = await PDFDocument.load(dataUri)\n *\n * // pdf=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('with_update_sections.pdf')\n * const pdfDoc3 = await PDFDocument.load(uint8Array)\n *\n * // pdf=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/with_update_sections.pdf'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * const pdfDoc4 = await PDFDocument.load(arrayBuffer)\n *\n * ```\n *\n * @param pdf The input data containing a PDF document.\n * @param options The options to be used when loading the document.\n * @returns Resolves with a document loaded from the input.\n */\n PDFDocument.load = function (pdf, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, ignoreEncryption, _b, parseSpeed, _c, throwOnInvalidObject, _d, updateMetadata, _e, capNumbers, bytes, context;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n _a = options.ignoreEncryption, ignoreEncryption = _a === void 0 ? false : _a, _b = options.parseSpeed, parseSpeed = _b === void 0 ? ParseSpeeds.Slow : _b, _c = options.throwOnInvalidObject, throwOnInvalidObject = _c === void 0 ? false : _c, _d = options.updateMetadata, updateMetadata = _d === void 0 ? true : _d, _e = options.capNumbers, capNumbers = _e === void 0 ? false : _e;\n assertIs(pdf, 'pdf', ['string', Uint8Array, ArrayBuffer]);\n assertIs(ignoreEncryption, 'ignoreEncryption', ['boolean']);\n assertIs(parseSpeed, 'parseSpeed', ['number']);\n assertIs(throwOnInvalidObject, 'throwOnInvalidObject', ['boolean']);\n bytes = toUint8Array(pdf);\n return [4 /*yield*/, PDFParser.forBytesWithOptions(bytes, parseSpeed, throwOnInvalidObject, capNumbers).parseDocument()];\n case 1:\n context = _f.sent();\n return [2 /*return*/, new PDFDocument(context, ignoreEncryption, updateMetadata)];\n }\n });\n });\n };\n /**\n * Create a new [[PDFDocument]].\n * @returns Resolves with the newly created document.\n */\n PDFDocument.create = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, updateMetadata, context, pageTree, pageTreeRef, catalog;\n return __generator(this, function (_b) {\n _a = options.updateMetadata, updateMetadata = _a === void 0 ? true : _a;\n context = PDFContext.create();\n pageTree = PDFPageTree.withContext(context);\n pageTreeRef = context.register(pageTree);\n catalog = PDFCatalog.withContextAndPages(context, pageTreeRef);\n context.trailerInfo.Root = context.register(catalog);\n return [2 /*return*/, new PDFDocument(context, false, updateMetadata)];\n });\n });\n };\n /**\n * Register a fontkit instance. This must be done before custom fonts can\n * be embedded. See [here](https://github.com/Hopding/pdf-lib/tree/master#fontkit-installation)\n * for instructions on how to install and register a fontkit instance.\n *\n * > You do **not** need to call this method to embed standard fonts.\n *\n * For example:\n * ```js\n * import { PDFDocument } from 'pdf-lib'\n * import fontkit from '@pdf-lib/fontkit'\n *\n * const pdfDoc = await PDFDocument.create()\n * pdfDoc.registerFontkit(fontkit)\n * ```\n *\n * @param fontkit The fontkit instance to be registered.\n */\n PDFDocument.prototype.registerFontkit = function (fontkit) {\n this.fontkit = fontkit;\n };\n /**\n * Get the [[PDFForm]] containing all interactive fields for this document.\n * For example:\n * ```js\n * const form = pdfDoc.getForm()\n * const fields = form.getFields()\n * fields.forEach(field => {\n * const type = field.constructor.name\n * const name = field.getName()\n * console.log(`${type}: ${name}`)\n * })\n * ```\n * @returns The form for this document.\n */\n PDFDocument.prototype.getForm = function () {\n var form = this.formCache.access();\n if (form.hasXFA()) {\n console.warn('Removing XFA form data as pdf-lib does not support reading or writing XFA');\n form.deleteXFA();\n }\n return form;\n };\n /**\n * Get this document's title metadata. The title appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const title = pdfDoc.getTitle()\n * ```\n * @returns A string containing the title of this document, if it has one.\n */\n PDFDocument.prototype.getTitle = function () {\n var title = this.getInfoDict().lookup(PDFName.Title);\n if (!title)\n return undefined;\n assertIsLiteralOrHexString(title);\n return title.decodeText();\n };\n /**\n * Get this document's author metadata. The author appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const author = pdfDoc.getAuthor()\n * ```\n * @returns A string containing the author of this document, if it has one.\n */\n PDFDocument.prototype.getAuthor = function () {\n var author = this.getInfoDict().lookup(PDFName.Author);\n if (!author)\n return undefined;\n assertIsLiteralOrHexString(author);\n return author.decodeText();\n };\n /**\n * Get this document's subject metadata. The subject appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const subject = pdfDoc.getSubject()\n * ```\n * @returns A string containing the subject of this document, if it has one.\n */\n PDFDocument.prototype.getSubject = function () {\n var subject = this.getInfoDict().lookup(PDFName.Subject);\n if (!subject)\n return undefined;\n assertIsLiteralOrHexString(subject);\n return subject.decodeText();\n };\n /**\n * Get this document's keywords metadata. The keywords appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const keywords = pdfDoc.getKeywords()\n * ```\n * @returns A string containing the keywords of this document, if it has any.\n */\n PDFDocument.prototype.getKeywords = function () {\n var keywords = this.getInfoDict().lookup(PDFName.Keywords);\n if (!keywords)\n return undefined;\n assertIsLiteralOrHexString(keywords);\n return keywords.decodeText();\n };\n /**\n * Get this document's creator metadata. The creator appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const creator = pdfDoc.getCreator()\n * ```\n * @returns A string containing the creator of this document, if it has one.\n */\n PDFDocument.prototype.getCreator = function () {\n var creator = this.getInfoDict().lookup(PDFName.Creator);\n if (!creator)\n return undefined;\n assertIsLiteralOrHexString(creator);\n return creator.decodeText();\n };\n /**\n * Get this document's producer metadata. The producer appears in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const producer = pdfDoc.getProducer()\n * ```\n * @returns A string containing the producer of this document, if it has one.\n */\n PDFDocument.prototype.getProducer = function () {\n var producer = this.getInfoDict().lookup(PDFName.Producer);\n if (!producer)\n return undefined;\n assertIsLiteralOrHexString(producer);\n return producer.decodeText();\n };\n /**\n * Get this document's creation date metadata. The creation date appears in\n * the \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * const creationDate = pdfDoc.getCreationDate()\n * ```\n * @returns A Date containing the creation date of this document,\n * if it has one.\n */\n PDFDocument.prototype.getCreationDate = function () {\n var creationDate = this.getInfoDict().lookup(PDFName.CreationDate);\n if (!creationDate)\n return undefined;\n assertIsLiteralOrHexString(creationDate);\n return creationDate.decodeDate();\n };\n /**\n * Get this document's modification date metadata. The modification date\n * appears in the \"Document Properties\" section of most PDF readers.\n * For example:\n * ```js\n * const modification = pdfDoc.getModificationDate()\n * ```\n * @returns A Date containing the modification date of this document,\n * if it has one.\n */\n PDFDocument.prototype.getModificationDate = function () {\n var modificationDate = this.getInfoDict().lookup(PDFName.ModDate);\n if (!modificationDate)\n return undefined;\n assertIsLiteralOrHexString(modificationDate);\n return modificationDate.decodeDate();\n };\n /**\n * Set this document's title metadata. The title will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setTitle('🥚 The Life of an Egg 🍳')\n * ```\n *\n * To display the title in the window's title bar, set the\n * `showInWindowTitleBar` option to `true` (works for _most_ PDF readers).\n * For example:\n * ```js\n * pdfDoc.setTitle('🥚 The Life of an Egg 🍳', { showInWindowTitleBar: true })\n * ```\n *\n * @param title The title of this document.\n * @param options The options to be used when setting the title.\n */\n PDFDocument.prototype.setTitle = function (title, options) {\n assertIs(title, 'title', ['string']);\n var key = PDFName.of('Title');\n this.getInfoDict().set(key, PDFHexString.fromText(title));\n // Indicate that readers should display the title rather than the filename\n if (options === null || options === void 0 ? void 0 : options.showInWindowTitleBar) {\n var prefs = this.catalog.getOrCreateViewerPreferences();\n prefs.setDisplayDocTitle(true);\n }\n };\n /**\n * Set this document's author metadata. The author will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setAuthor('Humpty Dumpty')\n * ```\n * @param author The author of this document.\n */\n PDFDocument.prototype.setAuthor = function (author) {\n assertIs(author, 'author', ['string']);\n var key = PDFName.of('Author');\n this.getInfoDict().set(key, PDFHexString.fromText(author));\n };\n /**\n * Set this document's subject metadata. The subject will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setSubject('📘 An Epic Tale of Woe 📖')\n * ```\n * @param subject The subject of this document.\n */\n PDFDocument.prototype.setSubject = function (subject) {\n assertIs(subject, 'author', ['string']);\n var key = PDFName.of('Subject');\n this.getInfoDict().set(key, PDFHexString.fromText(subject));\n };\n /**\n * Set this document's keyword metadata. These keywords will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setKeywords(['eggs', 'wall', 'fall', 'king', 'horses', 'men'])\n * ```\n * @param keywords An array of keywords associated with this document.\n */\n PDFDocument.prototype.setKeywords = function (keywords) {\n assertIs(keywords, 'keywords', [Array]);\n var key = PDFName.of('Keywords');\n this.getInfoDict().set(key, PDFHexString.fromText(keywords.join(' ')));\n };\n /**\n * Set this document's creator metadata. The creator will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setCreator('PDF App 9000 🤖')\n * ```\n * @param creator The creator of this document.\n */\n PDFDocument.prototype.setCreator = function (creator) {\n assertIs(creator, 'creator', ['string']);\n var key = PDFName.of('Creator');\n this.getInfoDict().set(key, PDFHexString.fromText(creator));\n };\n /**\n * Set this document's producer metadata. The producer will appear in the\n * \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setProducer('PDF App 9000 🤖')\n * ```\n * @param producer The producer of this document.\n */\n PDFDocument.prototype.setProducer = function (producer) {\n assertIs(producer, 'creator', ['string']);\n var key = PDFName.of('Producer');\n this.getInfoDict().set(key, PDFHexString.fromText(producer));\n };\n /**\n * Set this document's language metadata. The language will appear in the\n * \"Document Properties\" section of some PDF readers. For example:\n * ```js\n * pdfDoc.setLanguage('en-us')\n * ```\n *\n * @param language An RFC 3066 _Language-Tag_ denoting the language of this\n * document, or an empty string if the language is unknown.\n */\n PDFDocument.prototype.setLanguage = function (language) {\n assertIs(language, 'language', ['string']);\n var key = PDFName.of('Lang');\n this.catalog.set(key, PDFString.of(language));\n };\n /**\n * Set this document's creation date metadata. The creation date will appear\n * in the \"Document Properties\" section of most PDF readers. For example:\n * ```js\n * pdfDoc.setCreationDate(new Date())\n * ```\n * @param creationDate The date this document was created.\n */\n PDFDocument.prototype.setCreationDate = function (creationDate) {\n assertIs(creationDate, 'creationDate', [[Date, 'Date']]);\n var key = PDFName.of('CreationDate');\n this.getInfoDict().set(key, PDFString.fromDate(creationDate));\n };\n /**\n * Set this document's modification date metadata. The modification date will\n * appear in the \"Document Properties\" section of most PDF readers. For\n * example:\n * ```js\n * pdfDoc.setModificationDate(new Date())\n * ```\n * @param modificationDate The date this document was last modified.\n */\n PDFDocument.prototype.setModificationDate = function (modificationDate) {\n assertIs(modificationDate, 'modificationDate', [[Date, 'Date']]);\n var key = PDFName.of('ModDate');\n this.getInfoDict().set(key, PDFString.fromDate(modificationDate));\n };\n /**\n * Get the number of pages contained in this document. For example:\n * ```js\n * const totalPages = pdfDoc.getPageCount()\n * ```\n * @returns The number of pages in this document.\n */\n PDFDocument.prototype.getPageCount = function () {\n if (this.pageCount === undefined)\n this.pageCount = this.getPages().length;\n return this.pageCount;\n };\n /**\n * Get an array of all the pages contained in this document. The pages are\n * stored in the array in the same order that they are rendered in the\n * document. For example:\n * ```js\n * const pages = pdfDoc.getPages()\n * pages[0] // The first page of the document\n * pages[2] // The third page of the document\n * pages[197] // The 198th page of the document\n * ```\n * @returns An array of all the pages contained in this document.\n */\n PDFDocument.prototype.getPages = function () {\n return this.pageCache.access();\n };\n /**\n * Get the page rendered at a particular `index` of the document. For example:\n * ```js\n * pdfDoc.getPage(0) // The first page of the document\n * pdfDoc.getPage(2) // The third page of the document\n * pdfDoc.getPage(197) // The 198th page of the document\n * ```\n * @returns The [[PDFPage]] rendered at the given `index` of the document.\n */\n PDFDocument.prototype.getPage = function (index) {\n var pages = this.getPages();\n assertRange(index, 'index', 0, pages.length - 1);\n return pages[index];\n };\n /**\n * Get an array of indices for all the pages contained in this document. The\n * array will contain a range of integers from\n * `0..pdfDoc.getPageCount() - 1`. For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n * pdfDoc.addPage()\n * pdfDoc.addPage()\n * pdfDoc.addPage()\n *\n * const indices = pdfDoc.getPageIndices()\n * indices // => [0, 1, 2]\n * ```\n * @returns An array of indices for all pages contained in this document.\n */\n PDFDocument.prototype.getPageIndices = function () {\n return range(0, this.getPageCount());\n };\n /**\n * Remove the page at a given index from this document. For example:\n * ```js\n * pdfDoc.removePage(0) // Remove the first page of the document\n * pdfDoc.removePage(2) // Remove the third page of the document\n * pdfDoc.removePage(197) // Remove the 198th page of the document\n * ```\n * Once a page has been removed, it will no longer be rendered at that index\n * in the document.\n * @param index The index of the page to be removed.\n */\n PDFDocument.prototype.removePage = function (index) {\n var pageCount = this.getPageCount();\n if (this.pageCount === 0)\n throw new RemovePageFromEmptyDocumentError();\n assertRange(index, 'index', 0, pageCount - 1);\n this.catalog.removeLeafNode(index);\n this.pageCount = pageCount - 1;\n };\n /**\n * Add a page to the end of this document. This method accepts three\n * different value types for the `page` parameter:\n *\n * | Type | Behavior |\n * | ------------------ | ----------------------------------------------------------------------------------- |\n * | `undefined` | Create a new page and add it to the end of this document |\n * | `[number, number]` | Create a new page with the given dimensions and add it to the end of this document |\n * | `PDFPage` | Add the existing page to the end of this document |\n *\n * For example:\n * ```js\n * // page=undefined\n * const newPage = pdfDoc.addPage()\n *\n * // page=[number, number]\n * import { PageSizes } from 'pdf-lib'\n * const newPage1 = pdfDoc.addPage(PageSizes.A7)\n * const newPage2 = pdfDoc.addPage(PageSizes.Letter)\n * const newPage3 = pdfDoc.addPage([500, 750])\n *\n * // page=PDFPage\n * const pdfDoc1 = await PDFDocument.create()\n * const pdfDoc2 = await PDFDocument.load(...)\n * const [existingPage] = await pdfDoc1.copyPages(pdfDoc2, [0])\n * pdfDoc1.addPage(existingPage)\n * ```\n *\n * @param page Optionally, the desired dimensions or existing page.\n * @returns The newly created (or existing) page.\n */\n PDFDocument.prototype.addPage = function (page) {\n assertIs(page, 'page', ['undefined', [PDFPage, 'PDFPage'], Array]);\n return this.insertPage(this.getPageCount(), page);\n };\n /**\n * Insert a page at a given index within this document. This method accepts\n * three different value types for the `page` parameter:\n *\n * | Type | Behavior |\n * | ------------------ | ------------------------------------------------------------------------------ |\n * | `undefined` | Create a new page and insert it into this document |\n * | `[number, number]` | Create a new page with the given dimensions and insert it into this document |\n * | `PDFPage` | Insert the existing page into this document |\n *\n * For example:\n * ```js\n * // page=undefined\n * const newPage = pdfDoc.insertPage(2)\n *\n * // page=[number, number]\n * import { PageSizes } from 'pdf-lib'\n * const newPage1 = pdfDoc.insertPage(2, PageSizes.A7)\n * const newPage2 = pdfDoc.insertPage(0, PageSizes.Letter)\n * const newPage3 = pdfDoc.insertPage(198, [500, 750])\n *\n * // page=PDFPage\n * const pdfDoc1 = await PDFDocument.create()\n * const pdfDoc2 = await PDFDocument.load(...)\n * const [existingPage] = await pdfDoc1.copyPages(pdfDoc2, [0])\n * pdfDoc1.insertPage(0, existingPage)\n * ```\n *\n * @param index The index at which the page should be inserted (zero-based).\n * @param page Optionally, the desired dimensions or existing page.\n * @returns The newly created (or existing) page.\n */\n PDFDocument.prototype.insertPage = function (index, page) {\n var pageCount = this.getPageCount();\n assertRange(index, 'index', 0, pageCount);\n assertIs(page, 'page', ['undefined', [PDFPage, 'PDFPage'], Array]);\n if (!page || Array.isArray(page)) {\n var dims = Array.isArray(page) ? page : PageSizes.A4;\n page = PDFPage.create(this);\n page.setSize.apply(page, dims);\n }\n else if (page.doc !== this) {\n throw new ForeignPageError();\n }\n var parentRef = this.catalog.insertLeafNode(page.ref, index);\n page.node.setParent(parentRef);\n this.pageMap.set(page.node, page);\n this.pageCache.invalidate();\n this.pageCount = pageCount + 1;\n return page;\n };\n /**\n * Copy pages from a source document into this document. Allows pages to be\n * copied between different [[PDFDocument]] instances. For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n * const srcDoc = await PDFDocument.load(...)\n *\n * const copiedPages = await pdfDoc.copyPages(srcDoc, [0, 3, 89])\n * const [firstPage, fourthPage, ninetiethPage] = copiedPages;\n *\n * pdfDoc.addPage(fourthPage)\n * pdfDoc.insertPage(0, ninetiethPage)\n * pdfDoc.addPage(firstPage)\n * ```\n * @param srcDoc The document from which pages should be copied.\n * @param indices The indices of the pages that should be copied.\n * @returns Resolves with an array of pages copied into this document.\n */\n PDFDocument.prototype.copyPages = function (srcDoc, indices) {\n return __awaiter(this, void 0, void 0, function () {\n var copier, srcPages, copiedPages, idx, len, srcPage, copiedPage, ref;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(srcDoc, 'srcDoc', [[PDFDocument, 'PDFDocument']]);\n assertIs(indices, 'indices', [Array]);\n return [4 /*yield*/, srcDoc.flush()];\n case 1:\n _a.sent();\n copier = PDFObjectCopier.for(srcDoc.context, this.context);\n srcPages = srcDoc.getPages();\n copiedPages = new Array(indices.length);\n for (idx = 0, len = indices.length; idx < len; idx++) {\n srcPage = srcPages[indices[idx]];\n copiedPage = copier.copy(srcPage.node);\n ref = this.context.register(copiedPage);\n copiedPages[idx] = PDFPage.of(copiedPage, ref, this);\n }\n return [2 /*return*/, copiedPages];\n }\n });\n });\n };\n /**\n * Get a copy of this document.\n *\n * For example:\n * ```js\n * const srcDoc = await PDFDocument.load(...)\n * const pdfDoc = await srcDoc.copy()\n * ```\n *\n * > **NOTE:** This method won't copy all information over to the new\n * > document (acroforms, outlines, etc...).\n *\n * @returns Resolves with a copy this document.\n */\n PDFDocument.prototype.copy = function () {\n return __awaiter(this, void 0, void 0, function () {\n var pdfCopy, contentPages, idx, len;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, PDFDocument.create()];\n case 1:\n pdfCopy = _a.sent();\n return [4 /*yield*/, pdfCopy.copyPages(this, this.getPageIndices())];\n case 2:\n contentPages = _a.sent();\n for (idx = 0, len = contentPages.length; idx < len; idx++) {\n pdfCopy.addPage(contentPages[idx]);\n }\n if (this.getAuthor() !== undefined) {\n pdfCopy.setAuthor(this.getAuthor());\n }\n if (this.getCreationDate() !== undefined) {\n pdfCopy.setCreationDate(this.getCreationDate());\n }\n if (this.getCreator() !== undefined) {\n pdfCopy.setCreator(this.getCreator());\n }\n if (this.getModificationDate() !== undefined) {\n pdfCopy.setModificationDate(this.getModificationDate());\n }\n if (this.getProducer() !== undefined) {\n pdfCopy.setProducer(this.getProducer());\n }\n if (this.getSubject() !== undefined) {\n pdfCopy.setSubject(this.getSubject());\n }\n if (this.getTitle() !== undefined) {\n pdfCopy.setTitle(this.getTitle());\n }\n pdfCopy.defaultWordBreaks = this.defaultWordBreaks;\n return [2 /*return*/, pdfCopy];\n }\n });\n });\n };\n /**\n * Add JavaScript to this document. The supplied `script` is executed when the\n * document is opened. The `script` can be used to perform some operation\n * when the document is opened (e.g. logging to the console), or it can be\n * used to define a function that can be referenced later in a JavaScript\n * action. For example:\n * ```js\n * // Show \"Hello World!\" in the console when the PDF is opened\n * pdfDoc.addJavaScript(\n * 'main',\n * 'console.show(); console.println(\"Hello World!\");'\n * );\n *\n * // Define a function named \"foo\" that can be called in JavaScript Actions\n * pdfDoc.addJavaScript(\n * 'foo',\n * 'function foo() { return \"foo\"; }'\n * );\n * ```\n * See the [JavaScript for Acrobat API Reference](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_reference.pdf)\n * for details.\n * @param name The name of the script. Must be unique per document.\n * @param script The JavaScript to execute.\n */\n PDFDocument.prototype.addJavaScript = function (name, script) {\n assertIs(name, 'name', ['string']);\n assertIs(script, 'script', ['string']);\n var embedder = JavaScriptEmbedder.for(script, name);\n var ref = this.context.nextRef();\n var javaScript = PDFJavaScript.of(ref, this, embedder);\n this.javaScripts.push(javaScript);\n };\n /**\n * Add an attachment to this document. Attachments are visible in the\n * \"Attachments\" panel of Adobe Acrobat and some other PDF readers. Any\n * type of file can be added as an attachment. This includes, but is not\n * limited to, `.png`, `.jpg`, `.pdf`, `.csv`, `.docx`, and `.xlsx` files.\n *\n * The input data can be provided in multiple formats:\n *\n * | Type | Contents |\n * | ------------- | -------------------------------------------------------------- |\n * | `string` | A base64 encoded string (or data URI) containing an attachment |\n * | `Uint8Array` | The raw bytes of an attachment |\n * | `ArrayBuffer` | The raw bytes of an attachment |\n *\n * For example:\n * ```js\n * // attachment=string\n * await pdfDoc.attach('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...', 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n * await pdfDoc.attach('data:image/jpeg;base64,/9j/4AAQ...', 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n *\n * // attachment=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('cat_riding_unicorn.jpg')\n * await pdfDoc.attach(uint8Array, 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n *\n * // attachment=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/cat_riding_unicorn.jpg'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * await pdfDoc.attach(arrayBuffer, 'cat_riding_unicorn.jpg', {\n * mimeType: 'image/jpeg',\n * description: 'Cool cat riding a unicorn! 🦄🐈🕶️',\n * creationDate: new Date('2019/12/01'),\n * modificationDate: new Date('2020/04/19'),\n * })\n * ```\n *\n * @param attachment The input data containing the file to be attached.\n * @param name The name of the file to be attached.\n * @returns Resolves when the attachment is complete.\n */\n PDFDocument.prototype.attach = function (attachment, name, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var bytes, embedder, ref, embeddedFile;\n return __generator(this, function (_a) {\n assertIs(attachment, 'attachment', ['string', Uint8Array, ArrayBuffer]);\n assertIs(name, 'name', ['string']);\n assertOrUndefined(options.mimeType, 'mimeType', ['string']);\n assertOrUndefined(options.description, 'description', ['string']);\n assertOrUndefined(options.creationDate, 'options.creationDate', [Date]);\n assertOrUndefined(options.modificationDate, 'options.modificationDate', [\n Date,\n ]);\n assertIsOneOfOrUndefined(options.afRelationship, 'options.afRelationship', AFRelationship);\n bytes = toUint8Array(attachment);\n embedder = FileEmbedder.for(bytes, name, options);\n ref = this.context.nextRef();\n embeddedFile = PDFEmbeddedFile.of(ref, this, embedder);\n this.embeddedFiles.push(embeddedFile);\n return [2 /*return*/];\n });\n });\n };\n /**\n * Embed a font into this document. The input data can be provided in multiple\n * formats:\n *\n * | Type | Contents |\n * | --------------- | ------------------------------------------------------- |\n * | `StandardFonts` | One of the standard 14 fonts |\n * | `string` | A base64 encoded string (or data URI) containing a font |\n * | `Uint8Array` | The raw bytes of a font |\n * | `ArrayBuffer` | The raw bytes of a font |\n *\n * For example:\n * ```js\n * // font=StandardFonts\n * import { StandardFonts } from 'pdf-lib'\n * const font1 = await pdfDoc.embedFont(StandardFonts.Helvetica)\n *\n * // font=string\n * const font2 = await pdfDoc.embedFont('AAEAAAAVAQAABABQRFNJRx/upe...')\n * const font3 = await pdfDoc.embedFont('data:font/opentype;base64,AAEAAA...')\n *\n * // font=Uint8Array\n * import fs from 'fs'\n * const font4 = await pdfDoc.embedFont(fs.readFileSync('Ubuntu-R.ttf'))\n *\n * // font=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/ubuntu/Ubuntu-R.ttf'\n * const ubuntuBytes = await fetch(url).then(res => res.arrayBuffer())\n * const font5 = await pdfDoc.embedFont(ubuntuBytes)\n * ```\n * See also: [[registerFontkit]]\n * @param font The input data for a font.\n * @param options The options to be used when embedding the font.\n * @returns Resolves with the embedded font.\n */\n PDFDocument.prototype.embedFont = function (font, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, subset, customName, features, embedder, bytes, fontkit, _b, ref, pdfFont;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.subset, subset = _a === void 0 ? false : _a, customName = options.customName, features = options.features;\n assertIs(font, 'font', ['string', Uint8Array, ArrayBuffer]);\n assertIs(subset, 'subset', ['boolean']);\n if (!isStandardFont(font)) return [3 /*break*/, 1];\n embedder = StandardFontEmbedder.for(font, customName);\n return [3 /*break*/, 7];\n case 1:\n if (!canBeConvertedToUint8Array(font)) return [3 /*break*/, 6];\n bytes = toUint8Array(font);\n fontkit = this.assertFontkit();\n if (!subset) return [3 /*break*/, 3];\n return [4 /*yield*/, CustomFontSubsetEmbedder.for(fontkit, bytes, customName, features)];\n case 2:\n _b = _c.sent();\n return [3 /*break*/, 5];\n case 3: return [4 /*yield*/, CustomFontEmbedder.for(fontkit, bytes, customName, features)];\n case 4:\n _b = _c.sent();\n _c.label = 5;\n case 5:\n embedder = _b;\n return [3 /*break*/, 7];\n case 6: throw new TypeError('`font` must be one of `StandardFonts | string | Uint8Array | ArrayBuffer`');\n case 7:\n ref = this.context.nextRef();\n pdfFont = PDFFont.of(ref, this, embedder);\n this.fonts.push(pdfFont);\n return [2 /*return*/, pdfFont];\n }\n });\n });\n };\n /**\n * Embed a standard font into this document.\n * For example:\n * ```js\n * import { StandardFonts } from 'pdf-lib'\n * const helveticaFont = pdfDoc.embedFont(StandardFonts.Helvetica)\n * ```\n * @param font The standard font to be embedded.\n * @param customName The name to be used when embedding the font.\n * @returns The embedded font.\n */\n PDFDocument.prototype.embedStandardFont = function (font, customName) {\n assertIs(font, 'font', ['string']);\n if (!isStandardFont(font)) {\n throw new TypeError('`font` must be one of type `StandardFonts`');\n }\n var embedder = StandardFontEmbedder.for(font, customName);\n var ref = this.context.nextRef();\n var pdfFont = PDFFont.of(ref, this, embedder);\n this.fonts.push(pdfFont);\n return pdfFont;\n };\n /**\n * Embed a JPEG image into this document. The input data can be provided in\n * multiple formats:\n *\n * | Type | Contents |\n * | ------------- | ------------------------------------------------------------- |\n * | `string` | A base64 encoded string (or data URI) containing a JPEG image |\n * | `Uint8Array` | The raw bytes of a JPEG image |\n * | `ArrayBuffer` | The raw bytes of a JPEG image |\n *\n * For example:\n * ```js\n * // jpg=string\n * const image1 = await pdfDoc.embedJpg('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBD...')\n * const image2 = await pdfDoc.embedJpg('data:image/jpeg;base64,/9j/4AAQ...')\n *\n * // jpg=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('cat_riding_unicorn.jpg')\n * const image3 = await pdfDoc.embedJpg(uint8Array)\n *\n * // jpg=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/cat_riding_unicorn.jpg'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * const image4 = await pdfDoc.embedJpg(arrayBuffer)\n * ```\n *\n * @param jpg The input data for a JPEG image.\n * @returns Resolves with the embedded image.\n */\n PDFDocument.prototype.embedJpg = function (jpg) {\n return __awaiter(this, void 0, void 0, function () {\n var bytes, embedder, ref, pdfImage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(jpg, 'jpg', ['string', Uint8Array, ArrayBuffer]);\n bytes = toUint8Array(jpg);\n return [4 /*yield*/, JpegEmbedder.for(bytes)];\n case 1:\n embedder = _a.sent();\n ref = this.context.nextRef();\n pdfImage = PDFImage.of(ref, this, embedder);\n this.images.push(pdfImage);\n return [2 /*return*/, pdfImage];\n }\n });\n });\n };\n /**\n * Embed a PNG image into this document. The input data can be provided in\n * multiple formats:\n *\n * | Type | Contents |\n * | ------------- | ------------------------------------------------------------ |\n * | `string` | A base64 encoded string (or data URI) containing a PNG image |\n * | `Uint8Array` | The raw bytes of a PNG image |\n * | `ArrayBuffer` | The raw bytes of a PNG image |\n *\n * For example:\n * ```js\n * // png=string\n * const image1 = await pdfDoc.embedPng('iVBORw0KGgoAAAANSUhEUgAAAlgAAAF3...')\n * const image2 = await pdfDoc.embedPng('data:image/png;base64,iVBORw0KGg...')\n *\n * // png=Uint8Array\n * import fs from 'fs'\n * const uint8Array = fs.readFileSync('small_mario.png')\n * const image3 = await pdfDoc.embedPng(uint8Array)\n *\n * // png=ArrayBuffer\n * const url = 'https://pdf-lib.js.org/assets/small_mario.png'\n * const arrayBuffer = await fetch(url).then(res => res.arrayBuffer())\n * const image4 = await pdfDoc.embedPng(arrayBuffer)\n * ```\n *\n * @param png The input data for a PNG image.\n * @returns Resolves with the embedded image.\n */\n PDFDocument.prototype.embedPng = function (png) {\n return __awaiter(this, void 0, void 0, function () {\n var bytes, embedder, ref, pdfImage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(png, 'png', ['string', Uint8Array, ArrayBuffer]);\n bytes = toUint8Array(png);\n return [4 /*yield*/, PngEmbedder.for(bytes)];\n case 1:\n embedder = _a.sent();\n ref = this.context.nextRef();\n pdfImage = PDFImage.of(ref, this, embedder);\n this.images.push(pdfImage);\n return [2 /*return*/, pdfImage];\n }\n });\n });\n };\n /**\n * Embed one or more PDF pages into this document.\n *\n * For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourcePdf = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n *\n * // Embed page 74 of `sourcePdf` into `pdfDoc`\n * const [embeddedPage] = await pdfDoc.embedPdf(sourcePdf, [73])\n * ```\n *\n * See [[PDFDocument.load]] for examples of the allowed input data formats.\n *\n * @param pdf The input data containing a PDF document.\n * @param indices The indices of the pages that should be embedded.\n * @returns Resolves with an array of the embedded pages.\n */\n PDFDocument.prototype.embedPdf = function (pdf, indices) {\n if (indices === void 0) { indices = [0]; }\n return __awaiter(this, void 0, void 0, function () {\n var srcDoc, _a, srcPages;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n assertIs(pdf, 'pdf', [\n 'string',\n Uint8Array,\n ArrayBuffer,\n [PDFDocument, 'PDFDocument'],\n ]);\n assertIs(indices, 'indices', [Array]);\n if (!(pdf instanceof PDFDocument)) return [3 /*break*/, 1];\n _a = pdf;\n return [3 /*break*/, 3];\n case 1: return [4 /*yield*/, PDFDocument.load(pdf)];\n case 2:\n _a = _b.sent();\n _b.label = 3;\n case 3:\n srcDoc = _a;\n srcPages = pluckIndices(srcDoc.getPages(), indices);\n return [2 /*return*/, this.embedPages(srcPages)];\n }\n });\n });\n };\n /**\n * Embed a single PDF page into this document.\n *\n * For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourceBuffer = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n * const sourcePdfDoc = await PDFDocument.load(sourceBuffer)\n * const sourcePdfPage = sourcePdfDoc.getPages()[73]\n *\n * const embeddedPage = await pdfDoc.embedPage(\n * sourcePdfPage,\n *\n * // Clip a section of the source page so that we only embed part of it\n * { left: 100, right: 450, bottom: 330, top: 570 },\n *\n * // Translate all drawings of the embedded page by (10, 200) units\n * [1, 0, 0, 1, 10, 200],\n * )\n * ```\n *\n * @param page The page to be embedded.\n * @param boundingBox\n * Optionally, an area of the source page that should be embedded\n * (defaults to entire page).\n * @param transformationMatrix\n * Optionally, a transformation matrix that is always applied to the embedded\n * page anywhere it is drawn.\n * @returns Resolves with the embedded pdf page.\n */\n PDFDocument.prototype.embedPage = function (page, boundingBox, transformationMatrix) {\n return __awaiter(this, void 0, void 0, function () {\n var embeddedPage;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assertIs(page, 'page', [[PDFPage, 'PDFPage']]);\n return [4 /*yield*/, this.embedPages([page], [boundingBox], [transformationMatrix])];\n case 1:\n embeddedPage = (_a.sent())[0];\n return [2 /*return*/, embeddedPage];\n }\n });\n });\n };\n /**\n * Embed one or more PDF pages into this document.\n *\n * For example:\n * ```js\n * const pdfDoc = await PDFDocument.create()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourceBuffer = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n * const sourcePdfDoc = await PDFDocument.load(sourceBuffer)\n *\n * const page1 = sourcePdfDoc.getPages()[0]\n * const page2 = sourcePdfDoc.getPages()[52]\n * const page3 = sourcePdfDoc.getPages()[73]\n *\n * const embeddedPages = await pdfDoc.embedPages([page1, page2, page3])\n * ```\n *\n * @param page\n * The pages to be embedded (they must all share the same context).\n * @param boundingBoxes\n * Optionally, an array of clipping boundaries - one for each page\n * (defaults to entirety of each page).\n * @param transformationMatrices\n * Optionally, an array of transformation matrices - one for each page\n * (each page's transformation will apply anywhere it is drawn).\n * @returns Resolves with an array of the embedded pdf pages.\n */\n PDFDocument.prototype.embedPages = function (pages, boundingBoxes, transformationMatrices) {\n if (boundingBoxes === void 0) { boundingBoxes = []; }\n if (transformationMatrices === void 0) { transformationMatrices = []; }\n return __awaiter(this, void 0, void 0, function () {\n var idx, len, currPage, nextPage, context, maybeCopyPage, embeddedPages, idx, len, page, box, matrix, embedder, ref;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (pages.length === 0)\n return [2 /*return*/, []];\n // Assert all pages have the same context\n for (idx = 0, len = pages.length - 1; idx < len; idx++) {\n currPage = pages[idx];\n nextPage = pages[idx + 1];\n if (currPage.node.context !== nextPage.node.context) {\n throw new PageEmbeddingMismatchedContextError();\n }\n }\n context = pages[0].node.context;\n maybeCopyPage = context === this.context\n ? function (p) { return p; }\n : PDFObjectCopier.for(context, this.context).copy;\n embeddedPages = new Array(pages.length);\n idx = 0, len = pages.length;\n _b.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n page = maybeCopyPage(pages[idx].node);\n box = boundingBoxes[idx];\n matrix = transformationMatrices[idx];\n return [4 /*yield*/, PDFPageEmbedder.for(page, box, matrix)];\n case 2:\n embedder = _b.sent();\n ref = this.context.nextRef();\n embeddedPages[idx] = PDFEmbeddedPage.of(ref, this, embedder);\n _b.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4:\n (_a = this.embeddedPages).push.apply(_a, embeddedPages);\n return [2 /*return*/, embeddedPages];\n }\n });\n });\n };\n /**\n * > **NOTE:** You shouldn't need to call this method directly. The [[save]]\n * > and [[saveAsBase64]] methods will automatically ensure that all embedded\n * > assets are flushed before serializing the document.\n *\n * Flush all embedded fonts, PDF pages, and images to this document's\n * [[context]].\n *\n * @returns Resolves when the flush is complete.\n */\n PDFDocument.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.embedAll(this.fonts)];\n case 1:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.images)];\n case 2:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.embeddedPages)];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.embeddedFiles)];\n case 4:\n _a.sent();\n return [4 /*yield*/, this.embedAll(this.javaScripts)];\n case 5:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Serialize this document to an array of bytes making up a PDF file.\n * For example:\n * ```js\n * const pdfBytes = await pdfDoc.save()\n * ```\n *\n * There are a number of things you can do with the serialized document,\n * depending on the JavaScript environment you're running in:\n * * Write it to a file in Node or React Native\n * * Download it as a Blob in the browser\n * * Render it in an `iframe`\n *\n * @param options The options to be used when saving the document.\n * @returns Resolves with the bytes of the serialized document.\n */\n PDFDocument.prototype.save = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, useObjectStreams, _b, addDefaultPage, _c, objectsPerTick, _d, updateFieldAppearances, form, Writer;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n _a = options.useObjectStreams, useObjectStreams = _a === void 0 ? true : _a, _b = options.addDefaultPage, addDefaultPage = _b === void 0 ? true : _b, _c = options.objectsPerTick, objectsPerTick = _c === void 0 ? 50 : _c, _d = options.updateFieldAppearances, updateFieldAppearances = _d === void 0 ? true : _d;\n assertIs(useObjectStreams, 'useObjectStreams', ['boolean']);\n assertIs(addDefaultPage, 'addDefaultPage', ['boolean']);\n assertIs(objectsPerTick, 'objectsPerTick', ['number']);\n assertIs(updateFieldAppearances, 'updateFieldAppearances', ['boolean']);\n if (addDefaultPage && this.getPageCount() === 0)\n this.addPage();\n if (updateFieldAppearances) {\n form = this.formCache.getValue();\n if (form)\n form.updateFieldAppearances();\n }\n return [4 /*yield*/, this.flush()];\n case 1:\n _e.sent();\n Writer = useObjectStreams ? PDFStreamWriter : PDFWriter;\n return [2 /*return*/, Writer.forContext(this.context, objectsPerTick).serializeToBuffer()];\n }\n });\n });\n };\n /**\n * Serialize this document to a base64 encoded string or data URI making up a\n * PDF file. For example:\n * ```js\n * const base64String = await pdfDoc.saveAsBase64()\n * base64String // => 'JVBERi0xLjcKJYGBgYEKC...'\n *\n * const base64DataUri = await pdfDoc.saveAsBase64({ dataUri: true })\n * base64DataUri // => 'data:application/pdf;base64,JVBERi0xLjcKJYGBgYEKC...'\n * ```\n *\n * @param options The options to be used when saving the document.\n * @returns Resolves with a base64 encoded string or data URI of the\n * serialized document.\n */\n PDFDocument.prototype.saveAsBase64 = function (options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, dataUri, otherOptions, bytes, base64;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _a = options.dataUri, dataUri = _a === void 0 ? false : _a, otherOptions = __rest(options, [\"dataUri\"]);\n assertIs(dataUri, 'dataUri', ['boolean']);\n return [4 /*yield*/, this.save(otherOptions)];\n case 1:\n bytes = _b.sent();\n base64 = encodeToBase64(bytes);\n return [2 /*return*/, dataUri ? \"data:application/pdf;base64,\" + base64 : base64];\n }\n });\n });\n };\n PDFDocument.prototype.findPageForAnnotationRef = function (ref) {\n var pages = this.getPages();\n for (var idx = 0, len = pages.length; idx < len; idx++) {\n var page = pages[idx];\n var annotations = page.node.Annots();\n if ((annotations === null || annotations === void 0 ? void 0 : annotations.indexOf(ref)) !== undefined) {\n return page;\n }\n }\n return undefined;\n };\n PDFDocument.prototype.embedAll = function (embeddables) {\n return __awaiter(this, void 0, void 0, function () {\n var idx, len;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n idx = 0, len = embeddables.length;\n _a.label = 1;\n case 1:\n if (!(idx < len)) return [3 /*break*/, 4];\n return [4 /*yield*/, embeddables[idx].embed()];\n case 2:\n _a.sent();\n _a.label = 3;\n case 3:\n idx++;\n return [3 /*break*/, 1];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n PDFDocument.prototype.updateInfoDict = function () {\n var pdfLib = \"pdf-lib (https://github.com/Hopding/pdf-lib)\";\n var now = new Date();\n var info = this.getInfoDict();\n this.setProducer(pdfLib);\n this.setModificationDate(now);\n if (!info.get(PDFName.of('Creator')))\n this.setCreator(pdfLib);\n if (!info.get(PDFName.of('CreationDate')))\n this.setCreationDate(now);\n };\n PDFDocument.prototype.getInfoDict = function () {\n var existingInfo = this.context.lookup(this.context.trailerInfo.Info);\n if (existingInfo instanceof PDFDict)\n return existingInfo;\n var newInfo = this.context.obj({});\n this.context.trailerInfo.Info = this.context.register(newInfo);\n return newInfo;\n };\n PDFDocument.prototype.assertFontkit = function () {\n if (!this.fontkit)\n throw new FontkitNotRegisteredError();\n return this.fontkit;\n };\n return PDFDocument;\n}());\nexport default PDFDocument;\n/* tslint:disable-next-line only-arrow-functions */\nfunction assertIsLiteralOrHexString(pdfObject) {\n if (!(pdfObject instanceof PDFHexString) &&\n !(pdfObject instanceof PDFString)) {\n throw new UnexpectedObjectTypeError([PDFHexString, PDFString], pdfObject);\n }\n}\n//# sourceMappingURL=PDFDocument.js.map","export var BlendMode;\n(function (BlendMode) {\n BlendMode[\"Normal\"] = \"Normal\";\n BlendMode[\"Multiply\"] = \"Multiply\";\n BlendMode[\"Screen\"] = \"Screen\";\n BlendMode[\"Overlay\"] = \"Overlay\";\n BlendMode[\"Darken\"] = \"Darken\";\n BlendMode[\"Lighten\"] = \"Lighten\";\n BlendMode[\"ColorDodge\"] = \"ColorDodge\";\n BlendMode[\"ColorBurn\"] = \"ColorBurn\";\n BlendMode[\"HardLight\"] = \"HardLight\";\n BlendMode[\"SoftLight\"] = \"SoftLight\";\n BlendMode[\"Difference\"] = \"Difference\";\n BlendMode[\"Exclusion\"] = \"Exclusion\";\n})(BlendMode || (BlendMode = {}));\n//# sourceMappingURL=PDFPageOptions.js.map","import { __assign } from \"tslib\";\nimport { rgb } from \"./colors\";\nimport { drawImage, drawLine, drawLinesOfText, drawPage, drawRectangle, drawSvgPath, drawEllipse, } from \"./operations\";\nimport { popGraphicsState, pushGraphicsState, translate, LineCapStyle, scale, } from \"./operators\";\nimport PDFDocument from \"./PDFDocument\";\nimport PDFEmbeddedPage from \"./PDFEmbeddedPage\";\nimport PDFFont from \"./PDFFont\";\nimport PDFImage from \"./PDFImage\";\nimport { BlendMode, } from \"./PDFPageOptions\";\nimport { degrees, toDegrees } from \"./rotations\";\nimport { StandardFonts } from \"./StandardFonts\";\nimport { PDFContentStream, PDFName, PDFOperator, PDFPageLeaf, PDFRef, PDFDict, PDFArray, } from \"../core\";\nimport { assertEachIs, assertIs, assertMultiple, assertOrUndefined, breakTextIntoLines, cleanText, rectanglesAreEqual, lineSplit, assertRangeOrUndefined, assertIsOneOfOrUndefined, } from \"../utils\";\n/**\n * Represents a single page of a [[PDFDocument]].\n */\nvar PDFPage = /** @class */ (function () {\n function PDFPage(leafNode, ref, doc) {\n this.fontSize = 24;\n this.fontColor = rgb(0, 0, 0);\n this.lineHeight = 24;\n this.x = 0;\n this.y = 0;\n assertIs(leafNode, 'leafNode', [[PDFPageLeaf, 'PDFPageLeaf']]);\n assertIs(ref, 'ref', [[PDFRef, 'PDFRef']]);\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n this.node = leafNode;\n this.ref = ref;\n this.doc = doc;\n }\n /**\n * Rotate this page by a multiple of 90 degrees. For example:\n * ```js\n * import { degrees } from 'pdf-lib'\n *\n * page.setRotation(degrees(-90))\n * page.setRotation(degrees(0))\n * page.setRotation(degrees(90))\n * page.setRotation(degrees(180))\n * page.setRotation(degrees(270))\n * ```\n * @param angle The angle to rotate this page.\n */\n PDFPage.prototype.setRotation = function (angle) {\n var degreesAngle = toDegrees(angle);\n assertMultiple(degreesAngle, 'degreesAngle', 90);\n this.node.set(PDFName.of('Rotate'), this.doc.context.obj(degreesAngle));\n };\n /**\n * Get this page's rotation angle in degrees. For example:\n * ```js\n * const rotationAngle = page.getRotation().angle;\n * ```\n * @returns The rotation angle of the page in degrees (always a multiple of\n * 90 degrees).\n */\n PDFPage.prototype.getRotation = function () {\n var Rotate = this.node.Rotate();\n return degrees(Rotate ? Rotate.asNumber() : 0);\n };\n /**\n * Resize this page by increasing or decreasing its width and height. For\n * example:\n * ```js\n * page.setSize(250, 500)\n * page.setSize(page.getWidth() + 50, page.getHeight() + 100)\n * page.setSize(page.getWidth() - 50, page.getHeight() - 100)\n * ```\n *\n * Note that the PDF specification does not allow for pages to have explicit\n * widths and heights. Instead it defines the \"size\" of a page in terms of\n * five rectangles: the MediaBox, CropBox, BleedBox, TrimBox, and ArtBox. As a\n * result, this method cannot directly change the width and height of a page.\n * Instead, it works by adjusting these five boxes.\n *\n * This method performs the following steps:\n * 1. Set width & height of MediaBox.\n * 2. Set width & height of CropBox, if it has same dimensions as MediaBox.\n * 3. Set width & height of BleedBox, if it has same dimensions as MediaBox.\n * 4. Set width & height of TrimBox, if it has same dimensions as MediaBox.\n * 5. Set width & height of ArtBox, if it has same dimensions as MediaBox.\n *\n * This approach works well for most PDF documents as all PDF pages must\n * have a MediaBox, but relatively few have a CropBox, BleedBox, TrimBox, or\n * ArtBox. And when they do have these additional boxes, they often have the\n * same dimensions as the MediaBox. However, if you find this method does not\n * work for your document, consider setting the boxes directly:\n * * [[PDFPage.setMediaBox]]\n * * [[PDFPage.setCropBox]]\n * * [[PDFPage.setBleedBox]]\n * * [[PDFPage.setTrimBox]]\n * * [[PDFPage.setArtBox]]\n *\n * @param width The new width of the page.\n * @param height The new height of the page.\n */\n PDFPage.prototype.setSize = function (width, height) {\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var mediaBox = this.getMediaBox();\n this.setMediaBox(mediaBox.x, mediaBox.y, width, height);\n var cropBox = this.getCropBox();\n var bleedBox = this.getBleedBox();\n var trimBox = this.getTrimBox();\n var artBox = this.getArtBox();\n var hasCropBox = this.node.CropBox();\n var hasBleedBox = this.node.BleedBox();\n var hasTrimBox = this.node.TrimBox();\n var hasArtBox = this.node.ArtBox();\n if (hasCropBox && rectanglesAreEqual(cropBox, mediaBox)) {\n this.setCropBox(mediaBox.x, mediaBox.y, width, height);\n }\n if (hasBleedBox && rectanglesAreEqual(bleedBox, mediaBox)) {\n this.setBleedBox(mediaBox.x, mediaBox.y, width, height);\n }\n if (hasTrimBox && rectanglesAreEqual(trimBox, mediaBox)) {\n this.setTrimBox(mediaBox.x, mediaBox.y, width, height);\n }\n if (hasArtBox && rectanglesAreEqual(artBox, mediaBox)) {\n this.setArtBox(mediaBox.x, mediaBox.y, width, height);\n }\n };\n /**\n * Resize this page by increasing or decreasing its width. For example:\n * ```js\n * page.setWidth(250)\n * page.setWidth(page.getWidth() + 50)\n * page.setWidth(page.getWidth() - 50)\n * ```\n *\n * This method uses [[PDFPage.setSize]] to set the page's width.\n *\n * @param width The new width of the page.\n */\n PDFPage.prototype.setWidth = function (width) {\n assertIs(width, 'width', ['number']);\n this.setSize(width, this.getSize().height);\n };\n /**\n * Resize this page by increasing or decreasing its height. For example:\n * ```js\n * page.setHeight(500)\n * page.setHeight(page.getWidth() + 100)\n * page.setHeight(page.getWidth() - 100)\n * ```\n *\n * This method uses [[PDFPage.setSize]] to set the page's height.\n *\n * @param height The new height of the page.\n */\n PDFPage.prototype.setHeight = function (height) {\n assertIs(height, 'height', ['number']);\n this.setSize(this.getSize().width, height);\n };\n /**\n * Set the MediaBox of this page. For example:\n * ```js\n * const mediaBox = page.getMediaBox()\n *\n * page.setMediaBox(0, 0, 250, 500)\n * page.setMediaBox(mediaBox.x, mediaBox.y, 50, 100)\n * page.setMediaBox(15, 5, mediaBox.width - 50, mediaBox.height - 100)\n * ```\n *\n * See [[PDFPage.getMediaBox]] for details about what the MediaBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new MediaBox.\n * @param y The y coordinate of the lower left corner of the new MediaBox.\n * @param width The width of the new MediaBox.\n * @param height The height of the new MediaBox.\n */\n PDFPage.prototype.setMediaBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var mediaBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.MediaBox, mediaBox);\n };\n /**\n * Set the CropBox of this page. For example:\n * ```js\n * const cropBox = page.getCropBox()\n *\n * page.setCropBox(0, 0, 250, 500)\n * page.setCropBox(cropBox.x, cropBox.y, 50, 100)\n * page.setCropBox(15, 5, cropBox.width - 50, cropBox.height - 100)\n * ```\n *\n * See [[PDFPage.getCropBox]] for details about what the CropBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new CropBox.\n * @param y The y coordinate of the lower left corner of the new CropBox.\n * @param width The width of the new CropBox.\n * @param height The height of the new CropBox.\n */\n PDFPage.prototype.setCropBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var cropBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.CropBox, cropBox);\n };\n /**\n * Set the BleedBox of this page. For example:\n * ```js\n * const bleedBox = page.getBleedBox()\n *\n * page.setBleedBox(0, 0, 250, 500)\n * page.setBleedBox(bleedBox.x, bleedBox.y, 50, 100)\n * page.setBleedBox(15, 5, bleedBox.width - 50, bleedBox.height - 100)\n * ```\n *\n * See [[PDFPage.getBleedBox]] for details about what the BleedBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new BleedBox.\n * @param y The y coordinate of the lower left corner of the new BleedBox.\n * @param width The width of the new BleedBox.\n * @param height The height of the new BleedBox.\n */\n PDFPage.prototype.setBleedBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var bleedBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.BleedBox, bleedBox);\n };\n /**\n * Set the TrimBox of this page. For example:\n * ```js\n * const trimBox = page.getTrimBox()\n *\n * page.setTrimBox(0, 0, 250, 500)\n * page.setTrimBox(trimBox.x, trimBox.y, 50, 100)\n * page.setTrimBox(15, 5, trimBox.width - 50, trimBox.height - 100)\n * ```\n *\n * See [[PDFPage.getTrimBox]] for details about what the TrimBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new TrimBox.\n * @param y The y coordinate of the lower left corner of the new TrimBox.\n * @param width The width of the new TrimBox.\n * @param height The height of the new TrimBox.\n */\n PDFPage.prototype.setTrimBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var trimBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.TrimBox, trimBox);\n };\n /**\n * Set the ArtBox of this page. For example:\n * ```js\n * const artBox = page.getArtBox()\n *\n * page.setArtBox(0, 0, 250, 500)\n * page.setArtBox(artBox.x, artBox.y, 50, 100)\n * page.setArtBox(15, 5, artBox.width - 50, artBox.height - 100)\n * ```\n *\n * See [[PDFPage.getArtBox]] for details about what the ArtBox represents.\n *\n * @param x The x coordinate of the lower left corner of the new ArtBox.\n * @param y The y coordinate of the lower left corner of the new ArtBox.\n * @param width The width of the new ArtBox.\n * @param height The height of the new ArtBox.\n */\n PDFPage.prototype.setArtBox = function (x, y, width, height) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n assertIs(width, 'width', ['number']);\n assertIs(height, 'height', ['number']);\n var artBox = this.doc.context.obj([x, y, x + width, y + height]);\n this.node.set(PDFName.ArtBox, artBox);\n };\n /**\n * Get this page's width and height. For example:\n * ```js\n * const { width, height } = page.getSize()\n * ```\n *\n * This method uses [[PDFPage.getMediaBox]] to obtain the page's\n * width and height.\n *\n * @returns The width and height of the page.\n */\n PDFPage.prototype.getSize = function () {\n var _a = this.getMediaBox(), width = _a.width, height = _a.height;\n return { width: width, height: height };\n };\n /**\n * Get this page's width. For example:\n * ```js\n * const width = page.getWidth()\n * ```\n *\n * This method uses [[PDFPage.getSize]] to obtain the page's size.\n *\n * @returns The width of the page.\n */\n PDFPage.prototype.getWidth = function () {\n return this.getSize().width;\n };\n /**\n * Get this page's height. For example:\n * ```js\n * const height = page.getHeight()\n * ```\n *\n * This method uses [[PDFPage.getSize]] to obtain the page's size.\n *\n * @returns The height of the page.\n */\n PDFPage.prototype.getHeight = function () {\n return this.getSize().height;\n };\n /**\n * Get the rectangle defining this page's MediaBox. For example:\n * ```js\n * const { x, y, width, height } = page.getMediaBox()\n * ```\n *\n * The MediaBox of a page defines the boundaries of the physical medium on\n * which the page is to be displayed/printed. It may include extended area\n * surrounding the page content for bleed marks, printing marks, etc...\n * It may also include areas close to the edges of the medium that cannot be\n * marked because of physical limitations of the output device. Content\n * falling outside this boundary may safely be discarded without affecting\n * the meaning of the PDF file.\n *\n * @returns An object defining the lower left corner of the MediaBox and its\n * width & height.\n */\n PDFPage.prototype.getMediaBox = function () {\n var mediaBox = this.node.MediaBox();\n return mediaBox.asRectangle();\n };\n /**\n * Get the rectangle defining this page's CropBox. For example:\n * ```js\n * const { x, y, width, height } = page.getCropBox()\n * ```\n *\n * The CropBox of a page defines the region to which the contents of the page\n * shall be clipped when displayed or printed. Unlike the other boxes, the\n * CropBox does not necessarily represent the physical page geometry. It\n * merely imposes clipping on the page contents.\n *\n * The CropBox's default value is the page's MediaBox.\n *\n * @returns An object defining the lower left corner of the CropBox and its\n * width & height.\n */\n PDFPage.prototype.getCropBox = function () {\n var _a;\n var cropBox = this.node.CropBox();\n return (_a = cropBox === null || cropBox === void 0 ? void 0 : cropBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getMediaBox();\n };\n /**\n * Get the rectangle defining this page's BleedBox. For example:\n * ```js\n * const { x, y, width, height } = page.getBleedBox()\n * ```\n *\n * The BleedBox of a page defines the region to which the contents of the\n * page shall be clipped when output in a production environment. This may\n * include any extra bleed area needed to accommodate the physical\n * limitations of cutting, folding, and trimming equipment. The actual\n * printed page may include printing marks that fall outside the BleedBox.\n *\n * The BleedBox's default value is the page's CropBox.\n *\n * @returns An object defining the lower left corner of the BleedBox and its\n * width & height.\n */\n PDFPage.prototype.getBleedBox = function () {\n var _a;\n var bleedBox = this.node.BleedBox();\n return (_a = bleedBox === null || bleedBox === void 0 ? void 0 : bleedBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getCropBox();\n };\n /**\n * Get the rectangle defining this page's TrimBox. For example:\n * ```js\n * const { x, y, width, height } = page.getTrimBox()\n * ```\n *\n * The TrimBox of a page defines the intended dimensions of the finished\n * page after trimming. It may be smaller than the MediaBox to allow for\n * production-related content, such as printing instructions, cut marks, or\n * color bars.\n *\n * The TrimBox's default value is the page's CropBox.\n *\n * @returns An object defining the lower left corner of the TrimBox and its\n * width & height.\n */\n PDFPage.prototype.getTrimBox = function () {\n var _a;\n var trimBox = this.node.TrimBox();\n return (_a = trimBox === null || trimBox === void 0 ? void 0 : trimBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getCropBox();\n };\n /**\n * Get the rectangle defining this page's ArtBox. For example:\n * ```js\n * const { x, y, width, height } = page.getArtBox()\n * ```\n *\n * The ArtBox of a page defines the extent of the page's meaningful content\n * (including potential white space).\n *\n * The ArtBox's default value is the page's CropBox.\n *\n * @returns An object defining the lower left corner of the ArtBox and its\n * width & height.\n */\n PDFPage.prototype.getArtBox = function () {\n var _a;\n var artBox = this.node.ArtBox();\n return (_a = artBox === null || artBox === void 0 ? void 0 : artBox.asRectangle()) !== null && _a !== void 0 ? _a : this.getCropBox();\n };\n /**\n * Translate this page's content to a new location on the page. This operation\n * is often useful after resizing the page with [[setSize]]. For example:\n * ```js\n * // Add 50 units of whitespace to the top and right of the page\n * page.setSize(page.getWidth() + 50, page.getHeight() + 50)\n *\n * // Move the page's content from the lower-left corner of the page\n * // to the top-right corner.\n * page.translateContent(50, 50)\n *\n * // Now there are 50 units of whitespace to the left and bottom of the page\n * ```\n * See also: [[resetPosition]]\n * @param x The new position on the x-axis for this page's content.\n * @param y The new position on the y-axis for this page's content.\n */\n PDFPage.prototype.translateContent = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.node.normalize();\n this.getContentStream();\n var start = this.createContentStream(pushGraphicsState(), translate(x, y));\n var startRef = this.doc.context.register(start);\n var end = this.createContentStream(popGraphicsState());\n var endRef = this.doc.context.register(end);\n this.node.wrapContentStreams(startRef, endRef);\n };\n /**\n * Scale the size, content, and annotations of a page.\n *\n * For example:\n * ```js\n * page.scale(0.5, 0.5);\n * ```\n *\n * @param x The factor by which the width for the page should be scaled\n * (e.g. `0.5` is 50%).\n * @param y The factor by which the height for the page should be scaled\n * (e.g. `2.0` is 200%).\n */\n PDFPage.prototype.scale = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.setSize(this.getWidth() * x, this.getHeight() * y);\n this.scaleContent(x, y);\n this.scaleAnnotations(x, y);\n };\n /**\n * Scale the content of a page. This is useful after resizing an existing\n * page. This scales only the content, not the annotations.\n *\n * For example:\n * ```js\n * // Bisect the size of the page\n * page.setSize(page.getWidth() / 2, page.getHeight() / 2);\n *\n * // Scale the content of the page down by 50% in x and y\n * page.scaleContent(0.5, 0.5);\n * ```\n * See also: [[scaleAnnotations]]\n * @param x The factor by which the x-axis for the content should be scaled\n * (e.g. `0.5` is 50%).\n * @param y The factor by which the y-axis for the content should be scaled\n * (e.g. `2.0` is 200%).\n */\n PDFPage.prototype.scaleContent = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.node.normalize();\n this.getContentStream();\n var start = this.createContentStream(pushGraphicsState(), scale(x, y));\n var startRef = this.doc.context.register(start);\n var end = this.createContentStream(popGraphicsState());\n var endRef = this.doc.context.register(end);\n this.node.wrapContentStreams(startRef, endRef);\n };\n /**\n * Scale the annotations of a page. This is useful if you want to scale a\n * page with comments or other annotations.\n * ```js\n * // Scale the content of the page down by 50% in x and y\n * page.scaleContent(0.5, 0.5);\n *\n * // Scale the content of the page down by 50% in x and y\n * page.scaleAnnotations(0.5, 0.5);\n * ```\n * See also: [[scaleContent]]\n * @param x The factor by which the x-axis for the annotations should be\n * scaled (e.g. `0.5` is 50%).\n * @param y The factor by which the y-axis for the annotations should be\n * scaled (e.g. `2.0` is 200%).\n */\n PDFPage.prototype.scaleAnnotations = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n var annots = this.node.Annots();\n if (!annots)\n return;\n for (var idx = 0; idx < annots.size(); idx++) {\n var annot = annots.lookup(idx);\n if (annot instanceof PDFDict)\n this.scaleAnnot(annot, x, y);\n }\n };\n /**\n * Reset the x and y coordinates of this page to `(0, 0)`. This operation is\n * often useful after calling [[translateContent]]. For example:\n * ```js\n * // Shift the page's contents up and to the right by 50 units\n * page.translateContent(50, 50)\n *\n * // This text will shifted - it will be drawn at (50, 50)\n * page.drawText('I am shifted')\n *\n * // Move back to (0, 0)\n * page.resetPosition()\n *\n * // This text will not be shifted - it will be drawn at (0, 0)\n * page.drawText('I am not shifted')\n * ```\n */\n PDFPage.prototype.resetPosition = function () {\n this.getContentStream(false);\n this.x = 0;\n this.y = 0;\n };\n /**\n * Choose a default font for this page. The default font will be used whenever\n * text is drawn on this page and no font is specified. For example:\n * ```js\n * import { StandardFonts } from 'pdf-lib'\n *\n * const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)\n * const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const courierFont = await pdfDoc.embedFont(StandardFonts.Courier)\n *\n * const page = pdfDoc.addPage()\n *\n * page.setFont(helveticaFont)\n * page.drawText('I will be drawn in Helvetica')\n *\n * page.setFont(timesRomanFont)\n * page.drawText('I will be drawn in Courier', { font: courierFont })\n * ```\n * @param font The default font to be used when drawing text on this page.\n */\n PDFPage.prototype.setFont = function (font) {\n // TODO: Reuse image Font name if we've already added this image to Resources.Fonts\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.font = font;\n this.fontKey = this.node.newFontDictionary(this.font.name, this.font.ref);\n };\n /**\n * Choose a default font size for this page. The default font size will be\n * used whenever text is drawn on this page and no font size is specified.\n * For example:\n * ```js\n * page.setFontSize(12)\n * page.drawText('I will be drawn in size 12')\n *\n * page.setFontSize(36)\n * page.drawText('I will be drawn in size 24', { fontSize: 24 })\n * ```\n * @param fontSize The default font size to be used when drawing text on this\n * page.\n */\n PDFPage.prototype.setFontSize = function (fontSize) {\n assertIs(fontSize, 'fontSize', ['number']);\n this.fontSize = fontSize;\n };\n /**\n * Choose a default font color for this page. The default font color will be\n * used whenever text is drawn on this page and no font color is specified.\n * For example:\n * ```js\n * import { rgb, cmyk, grayscale } from 'pdf-lib'\n *\n * page.setFontColor(rgb(0.97, 0.02, 0.97))\n * page.drawText('I will be drawn in pink')\n *\n * page.setFontColor(cmyk(0.4, 0.7, 0.39, 0.15))\n * page.drawText('I will be drawn in gray', { color: grayscale(0.5) })\n * ```\n * @param fontColor The default font color to be used when drawing text on\n * this page.\n */\n PDFPage.prototype.setFontColor = function (fontColor) {\n assertIs(fontColor, 'fontColor', [[Object, 'Color']]);\n this.fontColor = fontColor;\n };\n /**\n * Choose a default line height for this page. The default line height will be\n * used whenever text is drawn on this page and no line height is specified.\n * For example:\n * ```js\n * page.setLineHeight(12);\n * page.drawText('These lines will be vertically \\n separated by 12 units')\n *\n * page.setLineHeight(36);\n * page.drawText('These lines will be vertically \\n separated by 24 units', {\n * lineHeight: 24\n * })\n * ```\n * @param lineHeight The default line height to be used when drawing text on\n * this page.\n */\n PDFPage.prototype.setLineHeight = function (lineHeight) {\n assertIs(lineHeight, 'lineHeight', ['number']);\n this.lineHeight = lineHeight;\n };\n /**\n * Get the default position of this page. For example:\n * ```js\n * const { x, y } = page.getPosition()\n * ```\n * @returns The default position of the page.\n */\n PDFPage.prototype.getPosition = function () {\n return { x: this.x, y: this.y };\n };\n /**\n * Get the default x coordinate of this page. For example:\n * ```js\n * const x = page.getX()\n * ```\n * @returns The default x coordinate of the page.\n */\n PDFPage.prototype.getX = function () {\n return this.x;\n };\n /**\n * Get the default y coordinate of this page. For example:\n * ```js\n * const y = page.getY()\n * ```\n * @returns The default y coordinate of the page.\n */\n PDFPage.prototype.getY = function () {\n return this.y;\n };\n /**\n * Change the default position of this page. For example:\n * ```js\n * page.moveTo(0, 0)\n * page.drawText('I will be drawn at the origin')\n *\n * page.moveTo(0, 25)\n * page.drawText('I will be drawn 25 units up')\n *\n * page.moveTo(25, 25)\n * page.drawText('I will be drawn 25 units up and 25 units to the right')\n * ```\n * @param x The new default position on the x-axis for this page.\n * @param y The new default position on the y-axis for this page.\n */\n PDFPage.prototype.moveTo = function (x, y) {\n assertIs(x, 'x', ['number']);\n assertIs(y, 'y', ['number']);\n this.x = x;\n this.y = y;\n };\n /**\n * Change the default position of this page to be further down the y-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveDown(10)\n * page.drawText('I will be drawn at (50, 40)')\n * ```\n * @param yDecrease The amount by which the page's default position along the\n * y-axis should be decreased.\n */\n PDFPage.prototype.moveDown = function (yDecrease) {\n assertIs(yDecrease, 'yDecrease', ['number']);\n this.y -= yDecrease;\n };\n /**\n * Change the default position of this page to be further up the y-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveUp(10)\n * page.drawText('I will be drawn at (50, 60)')\n * ```\n * @param yIncrease The amount by which the page's default position along the\n * y-axis should be increased.\n */\n PDFPage.prototype.moveUp = function (yIncrease) {\n assertIs(yIncrease, 'yIncrease', ['number']);\n this.y += yIncrease;\n };\n /**\n * Change the default position of this page to be further left on the x-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveLeft(10)\n * page.drawText('I will be drawn at (40, 50)')\n * ```\n * @param xDecrease The amount by which the page's default position along the\n * x-axis should be decreased.\n */\n PDFPage.prototype.moveLeft = function (xDecrease) {\n assertIs(xDecrease, 'xDecrease', ['number']);\n this.x -= xDecrease;\n };\n /**\n * Change the default position of this page to be further right on the y-axis.\n * For example:\n * ```js\n * page.moveTo(50, 50)\n * page.drawText('I will be drawn at (50, 50)')\n *\n * page.moveRight(10)\n * page.drawText('I will be drawn at (60, 50)')\n * ```\n * @param xIncrease The amount by which the page's default position along the\n * x-axis should be increased.\n */\n PDFPage.prototype.moveRight = function (xIncrease) {\n assertIs(xIncrease, 'xIncrease', ['number']);\n this.x += xIncrease;\n };\n /**\n * Push one or more operators to the end of this page's current content\n * stream. For example:\n * ```js\n * import {\n * pushGraphicsState,\n * moveTo,\n * lineTo,\n * closePath,\n * setFillingColor,\n * rgb,\n * fill,\n * popGraphicsState,\n * } from 'pdf-lib'\n *\n * // Draw a green triangle in the lower-left corner of the page\n * page.pushOperators(\n * pushGraphicsState(),\n * moveTo(0, 0),\n * lineTo(100, 0),\n * lineTo(50, 100),\n * closePath(),\n * setFillingColor(rgb(0.0, 1.0, 0.0)),\n * fill(),\n * popGraphicsState(),\n * )\n * ```\n * @param operator The operators to be pushed.\n */\n PDFPage.prototype.pushOperators = function () {\n var operator = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operator[_i] = arguments[_i];\n }\n assertEachIs(operator, 'operator', [[PDFOperator, 'PDFOperator']]);\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, operator);\n };\n /**\n * Draw one or more lines of text on this page. For example:\n * ```js\n * import { StandardFonts, rgb } from 'pdf-lib'\n *\n * const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const timesRomanFont = await pdfDoc.embedFont(StandardFonts.TimesRoman)\n *\n * const page = pdfDoc.addPage()\n *\n * page.setFont(helveticaFont)\n *\n * page.moveTo(5, 200)\n * page.drawText('The Life of an Egg', { size: 36 })\n *\n * page.moveDown(36)\n * page.drawText('An Epic Tale of Woe', { size: 30 })\n *\n * page.drawText(\n * `Humpty Dumpty sat on a wall \\n` +\n * `Humpty Dumpty had a great fall; \\n` +\n * `All the king's horses and all the king's men \\n` +\n * `Couldn't put Humpty together again. \\n`,\n * {\n * x: 25,\n * y: 100,\n * font: timesRomanFont,\n * size: 24,\n * color: rgb(1, 0, 0),\n * lineHeight: 24,\n * opacity: 0.75,\n * },\n * )\n * ```\n * @param text The text to be drawn.\n * @param options The options to be used when drawing the text.\n */\n PDFPage.prototype.drawText = function (text, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options === void 0) { options = {}; }\n assertIs(text, 'text', ['string']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.font, 'options.font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(options.size, 'options.size', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.lineHeight, 'options.lineHeight', ['number']);\n assertOrUndefined(options.maxWidth, 'options.maxWidth', ['number']);\n assertOrUndefined(options.wordBreaks, 'options.wordBreaks', [Array]);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var _h = this.setOrEmbedFont(options.font), oldFont = _h.oldFont, newFont = _h.newFont, newFontKey = _h.newFontKey;\n var fontSize = options.size || this.fontSize;\n var wordBreaks = options.wordBreaks || this.doc.defaultWordBreaks;\n var textWidth = function (t) { return newFont.widthOfTextAtSize(t, fontSize); };\n var lines = options.maxWidth === undefined\n ? lineSplit(cleanText(text))\n : breakTextIntoLines(text, wordBreaks, options.maxWidth, textWidth);\n var encodedLines = new Array(lines.length);\n for (var idx = 0, len = lines.length; idx < len; idx++) {\n encodedLines[idx] = newFont.encodeText(lines[idx]);\n }\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n blendMode: options.blendMode,\n });\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawLinesOfText(encodedLines, {\n color: (_a = options.color) !== null && _a !== void 0 ? _a : this.fontColor,\n font: newFontKey,\n size: fontSize,\n rotate: (_b = options.rotate) !== null && _b !== void 0 ? _b : degrees(0),\n xSkew: (_c = options.xSkew) !== null && _c !== void 0 ? _c : degrees(0),\n ySkew: (_d = options.ySkew) !== null && _d !== void 0 ? _d : degrees(0),\n x: (_e = options.x) !== null && _e !== void 0 ? _e : this.x,\n y: (_f = options.y) !== null && _f !== void 0 ? _f : this.y,\n lineHeight: (_g = options.lineHeight) !== null && _g !== void 0 ? _g : this.lineHeight,\n graphicsState: graphicsStateKey,\n }));\n if (options.font) {\n if (oldFont)\n this.setFont(oldFont);\n else\n this.resetFont();\n }\n };\n /**\n * Draw an image on this page. For example:\n * ```js\n * import { degrees } from 'pdf-lib'\n *\n * const jpgUrl = 'https://pdf-lib.js.org/assets/cat_riding_unicorn.jpg'\n * const jpgImageBytes = await fetch(jpgUrl).then((res) => res.arrayBuffer())\n *\n * const jpgImage = await pdfDoc.embedJpg(jpgImageBytes)\n * const jpgDims = jpgImage.scale(0.5)\n *\n * const page = pdfDoc.addPage()\n *\n * page.drawImage(jpgImage, {\n * x: 25,\n * y: 25,\n * width: jpgDims.width,\n * height: jpgDims.height,\n * rotate: degrees(30),\n * opacity: 0.75,\n * })\n * ```\n * @param image The image to be drawn.\n * @param options The options to be used when drawing the image.\n */\n PDFPage.prototype.drawImage = function (image, options) {\n var _a, _b, _c, _d, _e, _f, _g;\n if (options === void 0) { options = {}; }\n // TODO: Reuse image XObject name if we've already added this image to Resources.XObjects\n assertIs(image, 'image', [[PDFImage, 'PDFImage']]);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.width, 'options.width', ['number']);\n assertOrUndefined(options.height, 'options.height', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var xObjectKey = this.node.newXObject('Image', image.ref);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n blendMode: options.blendMode,\n });\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawImage(xObjectKey, {\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : image.size().width,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : image.size().height,\n rotate: (_e = options.rotate) !== null && _e !== void 0 ? _e : degrees(0),\n xSkew: (_f = options.xSkew) !== null && _f !== void 0 ? _f : degrees(0),\n ySkew: (_g = options.ySkew) !== null && _g !== void 0 ? _g : degrees(0),\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw an embedded PDF page on this page. For example:\n * ```js\n * import { degrees } from 'pdf-lib'\n *\n * const pdfDoc = await PDFDocument.create()\n * const page = pdfDoc.addPage()\n *\n * const sourcePdfUrl = 'https://pdf-lib.js.org/assets/with_large_page_count.pdf'\n * const sourcePdf = await fetch(sourcePdfUrl).then((res) => res.arrayBuffer())\n *\n * // Embed page 74 from the PDF\n * const [embeddedPage] = await pdfDoc.embedPdf(sourcePdf, 73)\n *\n * page.drawPage(embeddedPage, {\n * x: 250,\n * y: 200,\n * xScale: 0.5,\n * yScale: 0.5,\n * rotate: degrees(30),\n * opacity: 0.75,\n * })\n * ```\n *\n * The `options` argument accepts both `width`/`height` and `xScale`/`yScale`\n * as options. Since each of these options defines the size of the drawn page,\n * if both options are given, `width` and `height` take precedence and the\n * corresponding scale variants are ignored.\n *\n * @param embeddedPage The embedded page to be drawn.\n * @param options The options to be used when drawing the embedded page.\n */\n PDFPage.prototype.drawPage = function (embeddedPage, options) {\n var _a, _b, _c, _d, _e;\n if (options === void 0) { options = {}; }\n // TODO: Reuse embeddedPage XObject name if we've already added this embeddedPage to Resources.XObjects\n assertIs(embeddedPage, 'embeddedPage', [\n [PDFEmbeddedPage, 'PDFEmbeddedPage'],\n ]);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.xScale, 'options.xScale', ['number']);\n assertOrUndefined(options.yScale, 'options.yScale', ['number']);\n assertOrUndefined(options.width, 'options.width', ['number']);\n assertOrUndefined(options.height, 'options.height', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var xObjectKey = this.node.newXObject('EmbeddedPdfPage', embeddedPage.ref);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n blendMode: options.blendMode,\n });\n // prettier-ignore\n var xScale = (options.width !== undefined ? options.width / embeddedPage.width\n : options.xScale !== undefined ? options.xScale\n : 1);\n // prettier-ignore\n var yScale = (options.height !== undefined ? options.height / embeddedPage.height\n : options.yScale !== undefined ? options.yScale\n : 1);\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawPage(xObjectKey, {\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n xScale: xScale,\n yScale: yScale,\n rotate: (_c = options.rotate) !== null && _c !== void 0 ? _c : degrees(0),\n xSkew: (_d = options.xSkew) !== null && _d !== void 0 ? _d : degrees(0),\n ySkew: (_e = options.ySkew) !== null && _e !== void 0 ? _e : degrees(0),\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw an SVG path on this page. For example:\n * ```js\n * import { rgb } from 'pdf-lib'\n *\n * const svgPath = 'M 0,20 L 100,160 Q 130,200 150,120 C 190,-40 200,200 300,150 L 400,90'\n *\n * // Draw path as black line\n * page.drawSvgPath(svgPath, { x: 25, y: 75 })\n *\n * // Change border style and opacity\n * page.drawSvgPath(svgPath, {\n * x: 25,\n * y: 275,\n * borderColor: rgb(0.5, 0.5, 0.5),\n * borderWidth: 2,\n * borderOpacity: 0.75,\n * })\n *\n * // Set fill color and opacity\n * page.drawSvgPath(svgPath, {\n * x: 25,\n * y: 475,\n * color: rgb(1.0, 0, 0),\n * opacity: 0.75,\n * })\n *\n * // Draw 50% of original size\n * page.drawSvgPath(svgPath, {\n * x: 25,\n * y: 675,\n * scale: 0.5,\n * })\n * ```\n * @param path The SVG path to be drawn.\n * @param options The options to be used when drawing the SVG path.\n */\n PDFPage.prototype.drawSvgPath = function (path, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (options === void 0) { options = {}; }\n assertIs(path, 'path', ['string']);\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.scale, 'options.scale', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options.borderDashArray, 'options.borderDashArray', [\n Array,\n ]);\n assertOrUndefined(options.borderDashPhase, 'options.borderDashPhase', [\n 'number',\n ]);\n assertIsOneOfOrUndefined(options.borderLineCap, 'options.borderLineCap', LineCapStyle);\n assertRangeOrUndefined(options.borderOpacity, 'options.borderOpacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n borderOpacity: options.borderOpacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options) && !('borderColor' in options)) {\n options.borderColor = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawSvgPath(path, {\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n scale: options.scale,\n rotate: (_c = options.rotate) !== null && _c !== void 0 ? _c : degrees(0),\n color: (_d = options.color) !== null && _d !== void 0 ? _d : undefined,\n borderColor: (_e = options.borderColor) !== null && _e !== void 0 ? _e : undefined,\n borderWidth: (_f = options.borderWidth) !== null && _f !== void 0 ? _f : 0,\n borderDashArray: (_g = options.borderDashArray) !== null && _g !== void 0 ? _g : undefined,\n borderDashPhase: (_h = options.borderDashPhase) !== null && _h !== void 0 ? _h : undefined,\n borderLineCap: (_j = options.borderLineCap) !== null && _j !== void 0 ? _j : undefined,\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw a line on this page. For example:\n * ```js\n * import { rgb } from 'pdf-lib'\n *\n * page.drawLine({\n * start: { x: 25, y: 75 },\n * end: { x: 125, y: 175 },\n * thickness: 2,\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the line.\n */\n PDFPage.prototype.drawLine = function (options) {\n var _a, _b, _c, _d, _e;\n assertIs(options.start, 'options.start', [\n [Object, '{ x: number, y: number }'],\n ]);\n assertIs(options.end, 'options.end', [\n [Object, '{ x: number, y: number }'],\n ]);\n assertIs(options.start.x, 'options.start.x', ['number']);\n assertIs(options.start.y, 'options.start.y', ['number']);\n assertIs(options.end.x, 'options.end.x', ['number']);\n assertIs(options.end.y, 'options.end.y', ['number']);\n assertOrUndefined(options.thickness, 'options.thickness', ['number']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertOrUndefined(options.dashArray, 'options.dashArray', [Array]);\n assertOrUndefined(options.dashPhase, 'options.dashPhase', ['number']);\n assertIsOneOfOrUndefined(options.lineCap, 'options.lineCap', LineCapStyle);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n borderOpacity: options.opacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options)) {\n options.color = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawLine({\n start: options.start,\n end: options.end,\n thickness: (_a = options.thickness) !== null && _a !== void 0 ? _a : 1,\n color: (_b = options.color) !== null && _b !== void 0 ? _b : undefined,\n dashArray: (_c = options.dashArray) !== null && _c !== void 0 ? _c : undefined,\n dashPhase: (_d = options.dashPhase) !== null && _d !== void 0 ? _d : undefined,\n lineCap: (_e = options.lineCap) !== null && _e !== void 0 ? _e : undefined,\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw a rectangle on this page. For example:\n * ```js\n * import { degrees, grayscale, rgb } from 'pdf-lib'\n *\n * page.drawRectangle({\n * x: 25,\n * y: 75,\n * width: 250,\n * height: 75,\n * rotate: degrees(-15),\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the rectangle.\n */\n PDFPage.prototype.drawRectangle = function (options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n if (options === void 0) { options = {}; }\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.width, 'options.width', ['number']);\n assertOrUndefined(options.height, 'options.height', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.xSkew, 'options.xSkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.ySkew, 'options.ySkew', [[Object, 'Rotation']]);\n assertOrUndefined(options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertOrUndefined(options.borderDashArray, 'options.borderDashArray', [\n Array,\n ]);\n assertOrUndefined(options.borderDashPhase, 'options.borderDashPhase', [\n 'number',\n ]);\n assertIsOneOfOrUndefined(options.borderLineCap, 'options.borderLineCap', LineCapStyle);\n assertRangeOrUndefined(options.borderOpacity, 'options.borderOpacity', 0, 1);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n borderOpacity: options.borderOpacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options) && !('borderColor' in options)) {\n options.color = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawRectangle({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n width: (_c = options.width) !== null && _c !== void 0 ? _c : 150,\n height: (_d = options.height) !== null && _d !== void 0 ? _d : 100,\n rotate: (_e = options.rotate) !== null && _e !== void 0 ? _e : degrees(0),\n xSkew: (_f = options.xSkew) !== null && _f !== void 0 ? _f : degrees(0),\n ySkew: (_g = options.ySkew) !== null && _g !== void 0 ? _g : degrees(0),\n borderWidth: (_h = options.borderWidth) !== null && _h !== void 0 ? _h : 0,\n color: (_j = options.color) !== null && _j !== void 0 ? _j : undefined,\n borderColor: (_k = options.borderColor) !== null && _k !== void 0 ? _k : undefined,\n borderDashArray: (_l = options.borderDashArray) !== null && _l !== void 0 ? _l : undefined,\n borderDashPhase: (_m = options.borderDashPhase) !== null && _m !== void 0 ? _m : undefined,\n graphicsState: graphicsStateKey,\n borderLineCap: (_o = options.borderLineCap) !== null && _o !== void 0 ? _o : undefined,\n }));\n };\n /**\n * Draw a square on this page. For example:\n * ```js\n * import { degrees, grayscale, rgb } from 'pdf-lib'\n *\n * page.drawSquare({\n * x: 25,\n * y: 75,\n * size: 100,\n * rotate: degrees(-15),\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the square.\n */\n PDFPage.prototype.drawSquare = function (options) {\n if (options === void 0) { options = {}; }\n var size = options.size;\n assertOrUndefined(size, 'size', ['number']);\n this.drawRectangle(__assign(__assign({}, options), { width: size, height: size }));\n };\n /**\n * Draw an ellipse on this page. For example:\n * ```js\n * import { grayscale, rgb } from 'pdf-lib'\n *\n * page.drawEllipse({\n * x: 200,\n * y: 75,\n * xScale: 100,\n * yScale: 50,\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the ellipse.\n */\n PDFPage.prototype.drawEllipse = function (options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n if (options === void 0) { options = {}; }\n assertOrUndefined(options.x, 'options.x', ['number']);\n assertOrUndefined(options.y, 'options.y', ['number']);\n assertOrUndefined(options.xScale, 'options.xScale', ['number']);\n assertOrUndefined(options.yScale, 'options.yScale', ['number']);\n assertOrUndefined(options.rotate, 'options.rotate', [[Object, 'Rotation']]);\n assertOrUndefined(options.color, 'options.color', [[Object, 'Color']]);\n assertRangeOrUndefined(options.opacity, 'opacity.opacity', 0, 1);\n assertOrUndefined(options.borderColor, 'options.borderColor', [\n [Object, 'Color'],\n ]);\n assertRangeOrUndefined(options.borderOpacity, 'options.borderOpacity', 0, 1);\n assertOrUndefined(options.borderWidth, 'options.borderWidth', ['number']);\n assertOrUndefined(options.borderDashArray, 'options.borderDashArray', [\n Array,\n ]);\n assertOrUndefined(options.borderDashPhase, 'options.borderDashPhase', [\n 'number',\n ]);\n assertIsOneOfOrUndefined(options.borderLineCap, 'options.borderLineCap', LineCapStyle);\n assertIsOneOfOrUndefined(options.blendMode, 'options.blendMode', BlendMode);\n var graphicsStateKey = this.maybeEmbedGraphicsState({\n opacity: options.opacity,\n borderOpacity: options.borderOpacity,\n blendMode: options.blendMode,\n });\n if (!('color' in options) && !('borderColor' in options)) {\n options.color = rgb(0, 0, 0);\n }\n var contentStream = this.getContentStream();\n contentStream.push.apply(contentStream, drawEllipse({\n x: (_a = options.x) !== null && _a !== void 0 ? _a : this.x,\n y: (_b = options.y) !== null && _b !== void 0 ? _b : this.y,\n xScale: (_c = options.xScale) !== null && _c !== void 0 ? _c : 100,\n yScale: (_d = options.yScale) !== null && _d !== void 0 ? _d : 100,\n rotate: (_e = options.rotate) !== null && _e !== void 0 ? _e : undefined,\n color: (_f = options.color) !== null && _f !== void 0 ? _f : undefined,\n borderColor: (_g = options.borderColor) !== null && _g !== void 0 ? _g : undefined,\n borderWidth: (_h = options.borderWidth) !== null && _h !== void 0 ? _h : 0,\n borderDashArray: (_j = options.borderDashArray) !== null && _j !== void 0 ? _j : undefined,\n borderDashPhase: (_k = options.borderDashPhase) !== null && _k !== void 0 ? _k : undefined,\n borderLineCap: (_l = options.borderLineCap) !== null && _l !== void 0 ? _l : undefined,\n graphicsState: graphicsStateKey,\n }));\n };\n /**\n * Draw a circle on this page. For example:\n * ```js\n * import { grayscale, rgb } from 'pdf-lib'\n *\n * page.drawCircle({\n * x: 200,\n * y: 150,\n * size: 100,\n * borderWidth: 5,\n * borderColor: grayscale(0.5),\n * color: rgb(0.75, 0.2, 0.2),\n * opacity: 0.5,\n * borderOpacity: 0.75,\n * })\n * ```\n * @param options The options to be used when drawing the ellipse.\n */\n PDFPage.prototype.drawCircle = function (options) {\n if (options === void 0) { options = {}; }\n var _a = options.size, size = _a === void 0 ? 100 : _a;\n assertOrUndefined(size, 'size', ['number']);\n this.drawEllipse(__assign(__assign({}, options), { xScale: size, yScale: size }));\n };\n PDFPage.prototype.setOrEmbedFont = function (font) {\n var oldFont = this.font;\n var oldFontKey = this.fontKey;\n if (font)\n this.setFont(font);\n else\n this.getFont();\n var newFont = this.font;\n var newFontKey = this.fontKey;\n return { oldFont: oldFont, oldFontKey: oldFontKey, newFont: newFont, newFontKey: newFontKey };\n };\n PDFPage.prototype.getFont = function () {\n if (!this.font || !this.fontKey) {\n var font = this.doc.embedStandardFont(StandardFonts.Helvetica);\n this.setFont(font);\n }\n return [this.font, this.fontKey];\n };\n PDFPage.prototype.resetFont = function () {\n this.font = undefined;\n this.fontKey = undefined;\n };\n PDFPage.prototype.getContentStream = function (useExisting) {\n if (useExisting === void 0) { useExisting = true; }\n if (useExisting && this.contentStream)\n return this.contentStream;\n this.contentStream = this.createContentStream();\n this.contentStreamRef = this.doc.context.register(this.contentStream);\n this.node.addContentStream(this.contentStreamRef);\n return this.contentStream;\n };\n PDFPage.prototype.createContentStream = function () {\n var operators = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operators[_i] = arguments[_i];\n }\n var dict = this.doc.context.obj({});\n var contentStream = PDFContentStream.of(dict, operators);\n return contentStream;\n };\n PDFPage.prototype.maybeEmbedGraphicsState = function (options) {\n var opacity = options.opacity, borderOpacity = options.borderOpacity, blendMode = options.blendMode;\n if (opacity === undefined &&\n borderOpacity === undefined &&\n blendMode === undefined) {\n return undefined;\n }\n var graphicsState = this.doc.context.obj({\n Type: 'ExtGState',\n ca: opacity,\n CA: borderOpacity,\n BM: blendMode,\n });\n var key = this.node.newExtGState('GS', graphicsState);\n return key;\n };\n PDFPage.prototype.scaleAnnot = function (annot, x, y) {\n var selectors = ['RD', 'CL', 'Vertices', 'QuadPoints', 'L', 'Rect'];\n for (var idx = 0, len = selectors.length; idx < len; idx++) {\n var list = annot.lookup(PDFName.of(selectors[idx]));\n if (list instanceof PDFArray)\n list.scalePDFNumbers(x, y);\n }\n var inkLists = annot.lookup(PDFName.of('InkList'));\n if (inkLists instanceof PDFArray) {\n for (var idx = 0, len = inkLists.size(); idx < len; idx++) {\n var arr = inkLists.lookup(idx);\n if (arr instanceof PDFArray)\n arr.scalePDFNumbers(x, y);\n }\n }\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.addPage]] and [[PDFDocument.insertPage]]\n * > methods, which can create instances of [[PDFPage]] for you.\n *\n * Create an instance of [[PDFPage]] from an existing leaf node.\n *\n * @param leafNode The leaf node to be wrapped.\n * @param ref The unique reference for the page.\n * @param doc The document to which the page will belong.\n */\n PDFPage.of = function (leafNode, ref, doc) {\n return new PDFPage(leafNode, ref, doc);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFDocument.addPage]] and [[PDFDocument.insertPage]]\n * > methods, which can create instances of [[PDFPage]] for you.\n *\n * Create an instance of [[PDFPage]].\n *\n * @param doc The document to which the page will belong.\n */\n PDFPage.create = function (doc) {\n assertIs(doc, 'doc', [[PDFDocument, 'PDFDocument']]);\n var dummyRef = PDFRef.of(-1);\n var pageLeaf = PDFPageLeaf.withContextAndParent(doc.context, dummyRef);\n var pageRef = doc.context.register(pageLeaf);\n return new PDFPage(pageLeaf, pageRef, doc);\n };\n return PDFPage;\n}());\nexport default PDFPage;\n//# sourceMappingURL=PDFPage.js.map","import { __extends } from \"tslib\";\nimport PDFPage from \"../PDFPage\";\nimport PDFFont from \"../PDFFont\";\nimport { ImageAlignment } from \"../image/alignment\";\nimport { normalizeAppearance, defaultButtonAppearanceProvider, } from \"./appearances\";\nimport PDFField, { assertFieldAppearanceOptions, } from \"./PDFField\";\nimport { rgb } from \"../colors\";\nimport { degrees } from \"../rotations\";\nimport { PDFStream, PDFAcroPushButton, } from \"../../core\";\nimport { assertIs, assertOrUndefined, assertPositive } from \"../../utils\";\n/**\n * Represents a button field of a [[PDFForm]].\n *\n * [[PDFButton]] fields are interactive controls that users can click with their\n * mouse. This type of [[PDFField]] is not stateful. The purpose of a button\n * is to perform an action when the user clicks on it, such as opening a print\n * modal or resetting the form. Buttons are typically rectangular in shape and\n * have a text label describing the action that they perform when clicked.\n */\nvar PDFButton = /** @class */ (function (_super) {\n __extends(PDFButton, _super);\n function PDFButton(acroPushButton, ref, doc) {\n var _this = _super.call(this, acroPushButton, ref, doc) || this;\n assertIs(acroPushButton, 'acroButton', [\n [PDFAcroPushButton, 'PDFAcroPushButton'],\n ]);\n _this.acroField = acroPushButton;\n return _this;\n }\n /**\n * Display an image inside the bounds of this button's widgets. For example:\n * ```js\n * const pngImage = await pdfDoc.embedPng(...)\n * const button = form.getButton('some.button.field')\n * button.setImage(pngImage, ImageAlignment.Center)\n * ```\n * This will update the appearances streams for each of this button's widgets.\n * @param image The image that should be displayed.\n * @param alignment The alignment of the image.\n */\n PDFButton.prototype.setImage = function (image, alignment) {\n if (alignment === void 0) { alignment = ImageAlignment.Center; }\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var streamRef = this.createImageAppearanceStream(widget, image, alignment);\n this.updateWidgetAppearances(widget, { normal: streamRef });\n }\n this.markAsClean();\n };\n /**\n * Set the font size for this field. Larger font sizes will result in larger\n * text being displayed when PDF readers render this button. Font sizes may\n * be integer or floating point numbers. Supplying a negative font size will\n * cause this method to throw an error.\n *\n * For example:\n * ```js\n * const button = form.getButton('some.button.field')\n * button.setFontSize(4)\n * button.setFontSize(15.7)\n * ```\n *\n * > This method depends upon the existence of a default appearance\n * > (`/DA`) string. If this field does not have a default appearance string,\n * > or that string does not contain a font size (via the `Tf` operator),\n * > then this method will throw an error.\n *\n * @param fontSize The font size to be used when rendering text in this field.\n */\n PDFButton.prototype.setFontSize = function (fontSize) {\n assertPositive(fontSize, 'fontSize');\n this.acroField.setFontSize(fontSize);\n this.markAsDirty();\n };\n /**\n * Show this button on the specified page with the given text. For example:\n * ```js\n * const ubuntuFont = await pdfDoc.embedFont(ubuntuFontBytes)\n * const page = pdfDoc.addPage()\n *\n * const form = pdfDoc.getForm()\n * const button = form.createButton('some.button.field')\n *\n * button.addToPage('Do Stuff', page, {\n * x: 50,\n * y: 75,\n * width: 200,\n * height: 100,\n * textColor: rgb(1, 0, 0),\n * backgroundColor: rgb(0, 1, 0),\n * borderColor: rgb(0, 0, 1),\n * borderWidth: 2,\n * rotate: degrees(90),\n * font: ubuntuFont,\n * })\n * ```\n * This will create a new widget for this button field.\n * @param text The text to be displayed for this button widget.\n * @param page The page to which this button widget should be added.\n * @param options The options to be used when adding this button widget.\n */\n PDFButton.prototype.addToPage = function (\n // TODO: This needs to be optional, e.g. for image buttons\n text, page, options) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n assertOrUndefined(text, 'text', ['string']);\n assertOrUndefined(page, 'page', [[PDFPage, 'PDFPage']]);\n assertFieldAppearanceOptions(options);\n // Create a widget for this button\n var widget = this.createWidget({\n x: ((_a = options === null || options === void 0 ? void 0 : options.x) !== null && _a !== void 0 ? _a : 0) - ((_b = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _b !== void 0 ? _b : 0) / 2,\n y: ((_c = options === null || options === void 0 ? void 0 : options.y) !== null && _c !== void 0 ? _c : 0) - ((_d = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _d !== void 0 ? _d : 0) / 2,\n width: (_e = options === null || options === void 0 ? void 0 : options.width) !== null && _e !== void 0 ? _e : 100,\n height: (_f = options === null || options === void 0 ? void 0 : options.height) !== null && _f !== void 0 ? _f : 50,\n textColor: (_g = options === null || options === void 0 ? void 0 : options.textColor) !== null && _g !== void 0 ? _g : rgb(0, 0, 0),\n backgroundColor: (_h = options === null || options === void 0 ? void 0 : options.backgroundColor) !== null && _h !== void 0 ? _h : rgb(0.75, 0.75, 0.75),\n borderColor: options === null || options === void 0 ? void 0 : options.borderColor,\n borderWidth: (_j = options === null || options === void 0 ? void 0 : options.borderWidth) !== null && _j !== void 0 ? _j : 0,\n rotate: (_k = options === null || options === void 0 ? void 0 : options.rotate) !== null && _k !== void 0 ? _k : degrees(0),\n caption: text,\n hidden: options === null || options === void 0 ? void 0 : options.hidden,\n page: page.ref,\n });\n var widgetRef = this.doc.context.register(widget.dict);\n // Add widget to this field\n this.acroField.addWidget(widgetRef);\n // Set appearance streams for widget\n var font = (_l = options === null || options === void 0 ? void 0 : options.font) !== null && _l !== void 0 ? _l : this.doc.getForm().getDefaultFont();\n this.updateWidgetAppearance(widget, font);\n // Add widget to the given page\n page.node.addAnnot(widgetRef);\n };\n /**\n * Returns `true` if this button has been marked as dirty, or if any of this\n * button's widgets do not have an appearance stream. For example:\n * ```js\n * const button = form.getButton('some.button.field')\n * if (button.needsAppearancesUpdate()) console.log('Needs update')\n * ```\n * @returns Whether or not this button needs an appearance update.\n */\n PDFButton.prototype.needsAppearancesUpdate = function () {\n var _a;\n if (this.isDirty())\n return true;\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n var hasAppearances = ((_a = widget.getAppearances()) === null || _a === void 0 ? void 0 : _a.normal) instanceof PDFStream;\n if (!hasAppearances)\n return true;\n }\n return false;\n };\n /**\n * Update the appearance streams for each of this button's widgets using\n * the default appearance provider for buttons. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const button = form.getButton('some.button.field')\n * button.defaultUpdateAppearances(helvetica)\n * ```\n * @param font The font to be used for creating the appearance streams.\n */\n PDFButton.prototype.defaultUpdateAppearances = function (font) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n this.updateAppearances(font);\n };\n /**\n * Update the appearance streams for each of this button's widgets using\n * the given appearance provider. If no `provider` is passed, the default\n * appearance provider for buttons will be used. For example:\n * ```js\n * const helvetica = await pdfDoc.embedFont(StandardFonts.Helvetica)\n * const button = form.getButton('some.button.field')\n * button.updateAppearances(helvetica, (field, widget, font) => {\n * ...\n * return {\n * normal: drawButton(...),\n * down: drawButton(...),\n * }\n * })\n * ```\n * @param font The font to be used for creating the appearance streams.\n * @param provider Optionally, the appearance provider to be used for\n * generating the contents of the appearance streams.\n */\n PDFButton.prototype.updateAppearances = function (font, provider) {\n assertIs(font, 'font', [[PDFFont, 'PDFFont']]);\n assertOrUndefined(provider, 'provider', [Function]);\n var widgets = this.acroField.getWidgets();\n for (var idx = 0, len = widgets.length; idx < len; idx++) {\n var widget = widgets[idx];\n this.updateWidgetAppearance(widget, font, provider);\n }\n };\n PDFButton.prototype.updateWidgetAppearance = function (widget, font, provider) {\n var apProvider = provider !== null && provider !== void 0 ? provider : defaultButtonAppearanceProvider;\n var appearances = normalizeAppearance(apProvider(this, widget, font));\n this.updateWidgetAppearanceWithFont(widget, font, appearances);\n };\n /**\n * > **NOTE:** You probably don't want to call this method directly. Instead,\n * > consider using the [[PDFForm.getButton]] method, which will create an\n * > instance of [[PDFButton]] for you.\n *\n * Create an instance of [[PDFButton]] from an existing acroPushButton and ref\n *\n * @param acroPushButton The underlying `PDFAcroPushButton` for this button.\n * @param ref The unique reference for this button.\n * @param doc The document to which this button will belong.\n */\n PDFButton.of = function (acroPushButton, ref, doc) { return new PDFButton(acroPushButton, ref, doc); };\n return PDFButton;\n}(PDFField));\nexport default PDFButton;\n//# sourceMappingURL=PDFButton.js.map","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","import React from \"react\";\nimport { PDFDocument, rgb, StandardFonts} from 'pdf-lib';\nimport { translate } from '../Services/translation';\nimport { detect } from \"detect-browser\";\n\nconst ProductSheet = ({values}) => {\n\n const browser = detect();\n const getProductImage = async (page, pdfDoc) => {\n\n var imgUrl = values.urlProductImage;\n\n if(imgUrl !== \"\")\n {\n var imageBytes;\n var image;\n const maxWidth = 187;\n const maxHeight = 411;\n\n if(imgUrl.toLowerCase().endsWith('.png')) {\n imageBytes = await fetch(imgUrl).then((res) => res.arrayBuffer());\n image = await pdfDoc.embedPng(imageBytes);\n }\n else if (imgUrl.toLowerCase().endsWith('.jpg') || imgUrl.toLowerCase().endsWith('.jpeg')) {\n imageBytes = await fetch(imgUrl).then((res) => res.arrayBuffer());\n image = await pdfDoc.embedJpg(imageBytes);\n }\n else {\n image = '../../images/fallback_pdf_image.jpg'; \n }\n\n const scaledImage = image.scaleToFit(187, 411);\n\n page.drawImage(image, {\n x: 330 + (maxWidth / 2) - (scaledImage.width / 2),\n y: 125,\n height: scaledImage.height,\n width: scaledImage.width\n });\n }\n }\n\n const getTableRows = (page, helveticaFont) => {\n const tableRowValues = [\n values.brand,\n values.articleNumber,\n values.EAN,\n values.quantity,\n values.netWeight,\n values.STLength,\n values.STWidth,\n values.STHeight\n ];\n\n var xCord = 137;\n var yCord = 319;\n\n tableRowValues.forEach(row => {\n page.drawText(row, {\n x: xCord,\n y: yCord,\n size: 9,\n font: helveticaFont,\n color: rgb(0, 0, 0),\n })\n yCord -= 25;\n });\n }\n\n const getFontSize = (text) => {\n if(text.length >= 550){\n return 8;\n }\n return 10;\n }\n \n const getLineHeight = (text) => {\n if(text.length >= 800){\n return 9;\n }\n if(text.length >= 550){\n return 10;\n }\n return 15;\n }\n\n const getText = (text, sText) => {\n if(text.length >= 950){\n return sText;\n }\n return text;\n }\n \n const getInstructionsLineHeight = (text) => {\n if(text.length >= 850){\n return 10;\n }\n if(text.length >= 550){\n return 15;\n }\n return 20;\n }\n async function createProductSheet(){\n \n const url = values.urlSheet;\n const existingPdfBytes = await fetch(url).then(res => res.arrayBuffer())\n const pdfDoc = await PDFDocument.load(existingPdfBytes)\n\n const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica)\n const validChars = helveticaFont.getCharacterSet();\n\n const pages = pdfDoc.getPages()\n const page = pages[0]\n\n const { width, height } = page.getSize()\n\n var title = \"\";\n\n if(values.name != null || values.name != undefined){\n title = values.name.toUpperCase();\n }\n const titleSize = ((title.length <= 42) ? 20 : 15);\n const titleWidth = helveticaFont.widthOfTextAtSize(title, titleSize);\n\n const stripInvalidCharacters = (text) => {\n let resultText = \"\";\n for (let i = 0; i < text.length; i++) {\n if (validChars.indexOf(text.charCodeAt(i)) != -1 || text.charAt(i) == \" \" || text.charCodeAt(i) == 10) {\n resultText += text.charAt(i);\n }\n }\n return resultText;\n }\n\n const descSize = 10;\n\n //Library used custom rgb values, this is to calculate to normal css rgb\n const rColor = 27/255;\n const gColor = 20/255;\n const bColor = 100/255;\n\n page.drawText(title,{\n x: width / 2 - titleWidth / 2,\n y: 750,\n size: titleSize,\n font: helveticaFont,\n color: rgb(rColor, gColor, bColor),\n })\n\n var description = stripInvalidCharacters(getText(values.description, values.shortDescription));\n var instructions = stripInvalidCharacters(getText(values.instructions, values.shortInstructions));\n\n page.drawText(description, {\n x: 65,\n y: 725,\n maxWidth: width - 100,\n lineHeight: getLineHeight(description),\n size: getFontSize(description),\n lines: 13,\n font: helveticaFont,\n color: rgb(0, 0, 0)\n })\n\n page.drawText(instructions,{\n x: 65,\n y: 550,\n size: getFontSize(instructions),\n font: helveticaFont,\n color: rgb(0, 0, 0),\n maxWidth: width - 350,\n lineHeight: getInstructionsLineHeight(instructions)\n });\n\n getTableRows(page, helveticaFont);\n\n await getProductImage(page, pdfDoc);\n\n const pdfBytes = await pdfDoc.save();\n\n var a = document.createElement(\"a\");\n document.body.appendChild(a);\n a.style = \"display: none\";\n\n const blob = new Blob([pdfBytes], { type: \"application/pdf\" });\n const fileURL = URL.createObjectURL(blob);\n\n switch (browser && browser.name){\n case 'firefox':\n a.href = fileURL\n a.target = '_blank';\n a.click();\n break;\n default:\n const pdfWindow = window.open();\n pdfWindow.create\n pdfWindow.location.href = fileURL;\n \n a.href = fileURL;\n a.download = values.name;\n a.click();\n break;\n \n }\n }\n\n return(\n \n )\n}\n\n\nexport default ProductSheet;","import React, { Fragment, Component } from 'react';\nimport { translate } from '../Services/translation';\n\nclass FacetedSearchGroup extends Component {\n constructor(props) {\n super(props);\n this.state = {\n collapsed: false,\n showLessItemCount : 5\n };\n this.toggleShowMore = this.toggleShowMore.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n\n componentDidMount() {\n const visible = this.refs.list.getBoundingClientRect().height !== 0;\n const tooMuchItem = this.props.group.options.length > this.state.showLessItemCount;\n visible && tooMuchItem && this.toggleShowMore();\n }\n\n toggleShowMore() {\n const topPos = this.refs.list.getBoundingClientRect().top;\n const lessBottomPos = this.refs.showLess.getBoundingClientRect().bottom;\n const moreBottomPos = this.refs.showMore.getBoundingClientRect().bottom;\n const setHeight = () => this.refs.list.style.height = `${ (this.state.collapsed ? lessBottomPos : moreBottomPos ) - topPos }px`;\n const toggleCollapse = () => {\n this.setState((prevState, props) => ({\n collapsed: !prevState.collapsed\n }),()=> {\n setHeight();\n });\n }\n if( !this.refs.list.style.height ) {\n setHeight();\n setTimeout(()=> {toggleCollapse()}, 0);\n }\n else {\n toggleCollapse();\n }\n }\n\n handleClick() {\n this.props.setActiveFacetTab(this.props.group.label);\n\n if(this.props.isToggleOn){\n this.props.outsideClicked(); \n } \n }\n\n render() {\n const { group, searchFacetChange } = this.props;\n return (\n \n
\n
\n
{group.label}
\n \n
\n
\n
\n
\n {group.options && group.options.map((item, itemIndex, array) => (\n
\n
  • \n \n
  • \n
    \n ))}\n
    \n
    \n {group.options.length > this.state.showLessItemCount &&\n \n {/* {`${ this.state.collapsed ? translate('filter.showmore') : translate('filter.showless')}`} */}\n \n }\n
    \n
    \n
    \n )\n }\n}\n\nconst FacetedSearch = ({facetFilters, query, searchFacetChange, navigationTheme, isGreyedOut, toggleGreyOut, setActiveFacetTab, activeFacetTab, outsideClicked }) => navigationTheme !== 'category' && (\n
      \n {facetFilters && facetFilters.map((group, groupIndex, array) => (\n \n ))}\n
    \n)\n\nconst FacetedFilterCheckbox = ({item, group, searchFacetChange}) => (\n \n)\n\nexport default FacetedSearch;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport FacetedSearch from '../Components/FacetedSearch';\nimport { query, searchFacetChange } from '../Actions/FacetedSearch.action';\nimport { toggleGreyOut, setActiveFacetTab, outsideClicked } from '../Actions/UIState.action';\n\nclass FacetedSearchContainer extends Component {\n render() {\n return ;\n }\n}\nconst mapStateToProps = ({ facetedSearch: { facetFilters, navigationTheme }, UIState }) => {\n return {\n facetFilters,\n navigationTheme,\n isGreyedOut: UIState.isGreyedOut,\n activeFacetTab: UIState.activeFacetTab\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n query: (q, replaceResult) => dispatch(query(q, replaceResult)),\n searchFacetChange: (group, item) => dispatch(searchFacetChange(group, item)),\n toggleGreyOut: () => dispatch(toggleGreyOut()),\n setActiveFacetTab: (activeTab) => dispatch(setActiveFacetTab(activeTab)),\n outsideClicked: () => dispatch(outsideClicked())\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FacetedSearchContainer);","import React, { Fragment } from 'react';\nimport { translate } from \"../Services/translation\";\n\nconst FacetedSearchCompact = ({facetFilters, visibleDropdownMenu, toggleVisibleDropdownMenu, onFacetChange, onSubmit}) => (\n
      \n {facetFilters && facetFilters.map((group, groupIndex, array) => group.options && group.options.length > 0 && (\n
    • \n
      toggleVisibleDropdownMenu(group)}>\n { group.label }\n
      \n
        \n {group.options && group.options.map((item, itemIndex, array) => (\n
      • \n \n
      • \n ))}\n
      • \n \n
      • \n
      \n
    • \n ))}\n
    \n)\n\nconst FacetedFilterCheckbox = ({item, group, onFacetChange}) => (\n \n)\n\nexport default FacetedSearchCompact;\n","import React, { Component } from 'react';\n\nexport const AccordionPanel = (props) => props;\n\nexport class Accordion extends Component {\n constructor(props) {\n super(props);\n const {index = -1} = props;\n this.state = {\n index,\n };\n }\n handleClick(e, index) {\n this.setState((prevState, props) => ({\n ...prevState,\n index: index===prevState.index ? -1 : index,\n }));\n }\n render() {\n const accordions = React.Children.toArray(this.props.children);\n const activeClass = index => this.state.index===index ? 'active' : '';\n const headers = accordions.map((accordion, index) =>\n
    \n
    this.handleClick(e, index)}>\n {accordion.props.header||''}\n
    \n
    \n );\n const panels = accordions.map((accordion, index) =>\n
    \n {accordion.props.children}\n
    \n );\n return (\n
    \n \n {panels}\n
    \n );\n }\n}","import React, { Fragment } from 'react';\n\nconst SubNavCompact = ({subNavigation}) => (\n \n)\n\nconst displaySubNav = subnav => (\n
      \n {subnav && subnav.map(({name, url, isSelected, links }, index) =>\n
    • 0 ? 'has-children' : ''} ${isSelected ? 'active' : ''}`} key={`subnavCompact-${index}`}>\n {name}\n {displaySubNav(links)}\n
    • \n )}\n
    \n)\n\nexport default SubNavCompact;","import React, { Fragment } from 'react';\n\nconst SortCriteriaCompact = ({sortCriteria}) => {\n const selectedOption = [...sortCriteria.filter(sort => sort.selected === true), {} ][0];\n return (\n
    \n \n
    \n)};\n\nexport default SortCriteriaCompact;","import React, { Fragment } from 'react';\nimport { translate } from '../Services/translation';\n\nconst FilterTags = (({facetFilters, searchFacetChange, navigationTheme}) => {\n const selectedFacetGroup = facetFilters.filter(filter => filter.selectedOptions.length>0);\n const selectedFacetOption = selectedFacetGroup.reduce((accumulator, group) => {\n if (!group) {\n return accumulator;\n }\n const {options, selectedOptions} = group;\n const groupOptions = options.filter(option => selectedOptions.includes(option.value)).map(option=>({...option, group}));\n return [\n ...accumulator,\n ...groupOptions\n ];\n }, []);\n return ( selectedFacetGroup.length === 0 ? null :\n
    \n \n {translate('search.yourfilter')} : \n {selectedFacetGroup && selectedFacetGroup.map((group, index) =>\n searchFacetChange(group)} key={`group-${index}`}> {group.label} \n )}\n \n {navigationTheme === 'category' &&\n \n {translate('search.yourfilter')} : \n {selectedFacetOption && selectedFacetOption.map((option, index) =>\n searchFacetChange(option.group, option)} key={`option-${index}`}> {option.label} \n )}\n \n }\n
    \n)})\n\nexport default FilterTags;","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport FacetedSearchCompact from '../Components/FacetedSearchCompact';\nimport {AccordionPanel, Accordion} from './Accordion.container';\nimport { query, submitSearchFacet, toggleVisibleDropdownMenu, searchFacetChange } from '../Actions/FacetedSearch.action';\nimport SubNav from '../Components/SubNavCompact';\nimport SortCriteriaCompact from '../Components/SortCriteriaCompact';\nimport FilterTag from '../Components/FilterTags';\nimport { translate } from '../Services/translation';\nimport { PRODUCT_VIEW_CACHED, updateFilterOption } from '../Actions/FacetedSearch.action';\n\nclass FacetedSearchCompactContainer extends Component {\n constructor(props) {\n super(props);\n this.currentProductsViewCachedId = null;\n const {facetFilters} = props;\n const filterString = JSON.stringify(facetFilters);\n this.state = {\n facetFilters,\n filterString,\n };\n }\n\n componentDidMount() {\n this.props.query(window.location.search.substr(1) || '', false);\n }\n\n onFacetChange (filter, option) {\n this.setState((prevState, props) => {\n const { facetFilters } = this.state;\n const newFilters = updateFilterOption(facetFilters, filter, option);\n return {\n ...prevState,\n facetFilters: newFilters,\n };\n });\n }\n\n static getDerivedStateFromProps(nextProp, prevState) {\n const {facetFilters} = nextProp;\n const filterString = JSON.stringify(facetFilters);\n if (filterString !== prevState.filterString) {\n return {\n ...prevState,\n facetFilters,\n filterString,\n }\n }\n return prevState;\n }\n\n onSearchResultDataChange(dom) {\n if ( [null, undefined].includes(dom) ) {\n return;\n }\n const container = document.createElement('div');\n container.innerHTML = dom;\n const existingResult = document.querySelector(\"#search-result\");\n const tempResult = container.querySelector(\"#search-result\");\n const existingFilter = existingResult.querySelector('#facetedSearchCompact');\n const tempFilter = tempResult.querySelector('#facetedSearchCompact');\n const replace = (node, newNode) => node.parentNode.replaceChild(newNode, node);\n // move existingFilter from existingResult to tempResult\n replace(tempFilter, existingFilter);\n // replace existingResult with tempResult ( newResult )\n replace(existingResult, tempResult);\n // bootstrap react components if any exists in the search result\n window.__litium.bootstrapComponents();\n }\n\n componentDidUpdate() {\n const {productsViewCachedId} = this.props;\n if (productsViewCachedId && this.currentProductsViewCachedId !== productsViewCachedId) {\n this.currentProductsViewCachedId = productsViewCachedId;\n const productViewCached = window.__litium.cache ? window.__litium.cache[PRODUCT_VIEW_CACHED] || {} : {};\n if (!productViewCached || productViewCached.productsViewCachedId !== this.currentProductsViewCachedId) {\n return;\n }\n const dom = productViewCached.productsView;\n dom && this.onSearchResultDataChange(dom);\n }\n }\n\n render() {\n const {\n subNavigation=[],\n sortCriteria=[],\n navigationTheme='',\n ...facetProps\n } = this.props;\n const { facetFilters } = this.state;\n const facetState = {\n ...facetProps,\n facetFilters,\n onFacetChange: (filter, option) => this.onFacetChange(filter, option),\n };\n const hidden = [subNavigation, facetFilters, sortCriteria].every(ele => !ele || ele.length === 0);\n return ( hidden ? null :\n \n \n \n {subNavigation.length > 0 &&\n \n \n \n }\n {facetFilters.length > 0 &&\n \n \n \n }\n {sortCriteria.length > 0 &&\n \n \n \n }\n \n {navigationTheme==='category' && (\n
    \n \n
    \n )}\n
    \n );\n }\n}\n\nconst mapStateToProps = ({facetedSearch:{subNavigation, sortCriteria, facetFilters, visibleDropdownMenu, navigationTheme, productsViewCachedId}}) => {\n return {\n subNavigation,\n sortCriteria,\n facetFilters,\n visibleDropdownMenu,\n navigationTheme,\n productsViewCachedId,\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n query: (q, withHtmlResult) => dispatch(query(q, withHtmlResult)),\n onSubmit: (allFilters) => dispatch(submitSearchFacet(allFilters)),\n toggleVisibleDropdownMenu: (group) => dispatch(toggleVisibleDropdownMenu(group)),\n searchFacetChange: (group, item) => dispatch(searchFacetChange(group, item)),\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FacetedSearchCompactContainer);","import React from 'react';\n\nconst Notification = ({ text, top, left }) => (\n {text}\n);\n\nexport default Notification;","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport Notification from '../Components/Notification';\nimport { hide } from '../Actions/Notification.action';\n\nclass NotificationContainer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n timers: [],\n };\n }\n\n componentDidUpdate(prevProps) { \n if (this.props.notification.hash === prevProps.notification.hash) {\n return;\n }\n\n // set timeout to hide the notifications\n const notificationIds = Object.keys(this.props.notification.byId);\n const timersToRemove = this.state.timers.filter(timer => !notificationIds.includes(timer.id));\n const timersToAdd = notificationIds.filter(id => !this.state.timers.find(timer => timer.id === id));\n timersToRemove.forEach(timer => clearTimeout(timer.handle));\n if (!timersToAdd || !timersToAdd.length) {\n this.setState({ timers: [] });\n return;\n }\n const timers = [];\n timersToAdd.forEach(id => {\n timers.push({ id, handle: setTimeout(() => this.props.hide(id, Date.now()), 2000) });\n });\n this.setState({ timers });\n }\n\n render() {\n const ids = Object.keys(this.props.notification.byId);\n const notifications = ids.map(id => ({ ...this.props.notification.byId[id], id }));\n return \n {notifications && notifications.map(notification => )}\n \n }\n\n getPosition(nodeId) {\n let domNode = document.getElementById(nodeId);\n \n if (!domNode) {\n return;\n }\n\n let element;\n const scrollLeft = window.scrollX || (((element = document.documentElement) || (element = document.body.parentNode))\n && typeof element.scrollLeft == 'number' ? element : document.body).scrollLeft;\n const scrollTop = window.scrollY || (((element = document.documentElement) || (element = document.body.parentNode))\n && typeof element.scrollTop == 'number' ? element : document.body).scrollTop;\n const { top, left } = domNode.getBoundingClientRect();\n\n if(nodeId == 'miniCart'){\n return { top: top + scrollTop + 100, left: left + scrollLeft - 105}\n }\n\n return { top: top + scrollTop, left: left + scrollLeft };\n }\n}\n\nconst mapStateToProps = state => {\n return {\n notification: state.notification,\n }\n}\n\nconst mapDispatchToProps = {\n hide,\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NotificationContainer);","import React from \"react\"\nimport { translate } from \"../Services/translation\"\n\nconst NO_LINK_VALUE = \"default\"\n\nexport default function CompanyLinkSelector(props) {\n const { links, productPage } = props\n\n const [currentLink, setCurrentLink] = React.useState(NO_LINK_VALUE)\n\n const onSelect = e => {\n setCurrentLink(e.target.value)\n }\n\n const hasLink = () => currentLink && currentLink != NO_LINK_VALUE\n\n return
    \n
    \n \n
    \n \n
    \n}","\n import API from \"!../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./react-table.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!./react-table.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useState } from 'react';\nimport { get, post, put, remove } from '../../Services/http';\nimport 'react-table-v6/react-table.css'\n\nconst ExcelImportPanel = () => {\n\n const buttonstyle = {\n width: '100px',\n marginRight: '20px',\n };\n const containerStyle = {\n marginTop: '25px',\n };\n return (\n
    \n
    \n

    Excel Import

    \n
    \n \n
    \n \n
    \n
    \n
    \n
    );\n}\n\nexport default ExcelImportPanel;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from 'react';\nimport classnames from 'classnames';\n//\nexport default {\n get: get,\n set: set,\n takeRight: takeRight,\n last: last,\n orderBy: orderBy,\n range: range,\n remove: remove,\n clone: clone,\n getFirstDefined: getFirstDefined,\n sum: sum,\n makeTemplateComponent: makeTemplateComponent,\n groupBy: groupBy,\n isArray: isArray,\n splitProps: splitProps,\n compactObject: compactObject,\n isSortingDesc: isSortingDesc,\n normalizeComponent: normalizeComponent,\n asPx: asPx\n};\n\nfunction get(obj, path, def) {\n if (!path) {\n return obj;\n }\n var pathObj = makePathArray(path);\n var val = void 0;\n try {\n val = pathObj.reduce(function (current, pathPart) {\n return current[pathPart];\n }, obj);\n } catch (e) {\n // continue regardless of error\n }\n return typeof val !== 'undefined' ? val : def;\n}\n\nfunction set() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var path = arguments[1];\n var value = arguments[2];\n\n var keys = makePathArray(path);\n var keyPart = void 0;\n var cursor = obj;\n while ((keyPart = keys.shift()) && keys.length) {\n if (!cursor[keyPart]) {\n cursor[keyPart] = {};\n }\n cursor = cursor[keyPart];\n }\n cursor[keyPart] = value;\n return obj;\n}\n\nfunction takeRight(arr, n) {\n var start = n > arr.length ? 0 : arr.length - n;\n return arr.slice(start);\n}\n\nfunction last(arr) {\n return arr[arr.length - 1];\n}\n\nfunction range(n) {\n var arr = [];\n for (var i = 0; i < n; i += 1) {\n arr.push(n);\n }\n return arr;\n}\n\nfunction orderBy(arr, funcs, dirs, indexKey) {\n return arr.sort(function (rowA, rowB) {\n for (var i = 0; i < funcs.length; i += 1) {\n var comp = funcs[i];\n var desc = dirs[i] === false || dirs[i] === 'desc';\n var sortInt = comp(rowA, rowB);\n if (sortInt) {\n return desc ? -sortInt : sortInt;\n }\n }\n // Use the row index for tie breakers\n return dirs[0] ? rowA[indexKey] - rowB[indexKey] : rowB[indexKey] - rowA[indexKey];\n });\n}\n\nfunction remove(a, b) {\n return a.filter(function (o, i) {\n var r = b(o);\n if (r) {\n a.splice(i, 1);\n return true;\n }\n return false;\n });\n}\n\nfunction clone(a) {\n try {\n return JSON.parse(JSON.stringify(a, function (key, value) {\n if (typeof value === 'function') {\n return value.toString();\n }\n return value;\n }));\n } catch (e) {\n return a;\n }\n}\n\nfunction getFirstDefined() {\n for (var i = 0; i < arguments.length; i += 1) {\n if (typeof (arguments.length <= i ? undefined : arguments[i]) !== 'undefined') {\n return arguments.length <= i ? undefined : arguments[i];\n }\n }\n}\n\nfunction sum(arr) {\n return arr.reduce(function (a, b) {\n return a + b;\n }, 0);\n}\n\nfunction makeTemplateComponent(compClass, displayName) {\n if (!displayName) {\n throw new Error('No displayName found for template component:', compClass);\n }\n var cmp = function cmp(_ref) {\n var children = _ref.children,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, ['children', 'className']);\n\n return React.createElement(\n 'div',\n _extends({ className: classnames(compClass, className) }, rest),\n children\n );\n };\n cmp.displayName = displayName;\n return cmp;\n}\n\nfunction groupBy(xs, key) {\n return xs.reduce(function (rv, x, i) {\n var resKey = typeof key === 'function' ? key(x, i) : x[key];\n rv[resKey] = isArray(rv[resKey]) ? rv[resKey] : [];\n rv[resKey].push(x);\n return rv;\n }, {});\n}\n\nfunction asPx(value) {\n value = Number(value);\n return Number.isNaN(value) ? null : value + 'px';\n}\n\nfunction isArray(a) {\n return Array.isArray(a);\n}\n\n// ########################################################################\n// Non-exported Helpers\n// ########################################################################\n\nfunction makePathArray(obj) {\n return flattenDeep(obj).join('.').replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n}\n\nfunction flattenDeep(arr) {\n var newArr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (!isArray(arr)) {\n newArr.push(arr);\n } else {\n for (var i = 0; i < arr.length; i += 1) {\n flattenDeep(arr[i], newArr);\n }\n }\n return newArr;\n}\n\nfunction splitProps(_ref2) {\n var className = _ref2.className,\n style = _ref2.style,\n rest = _objectWithoutProperties(_ref2, ['className', 'style']);\n\n return {\n className: className,\n style: style,\n rest: rest || {}\n };\n}\n\nfunction compactObject(obj) {\n var newObj = {};\n if (obj) {\n Object.keys(obj).map(function (key) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && obj[key] !== undefined && typeof obj[key] !== 'undefined') {\n newObj[key] = obj[key];\n }\n return true;\n });\n }\n return newObj;\n}\n\nfunction isSortingDesc(d) {\n return !!(d.sort === 'desc' || d.desc === true || d.asc === false);\n}\n\nfunction normalizeComponent(Comp) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var fallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Comp;\n\n return typeof Comp === 'function' ? Object.getPrototypeOf(Comp).isReactComponent ? React.createElement(Comp, params) : Comp(params) : fallback;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsImNsYXNzbmFtZXMiLCJnZXQiLCJzZXQiLCJ0YWtlUmlnaHQiLCJsYXN0Iiwib3JkZXJCeSIsInJhbmdlIiwicmVtb3ZlIiwiY2xvbmUiLCJnZXRGaXJzdERlZmluZWQiLCJzdW0iLCJtYWtlVGVtcGxhdGVDb21wb25lbnQiLCJncm91cEJ5IiwiaXNBcnJheSIsInNwbGl0UHJvcHMiLCJjb21wYWN0T2JqZWN0IiwiaXNTb3J0aW5nRGVzYyIsIm5vcm1hbGl6ZUNvbXBvbmVudCIsImFzUHgiLCJvYmoiLCJwYXRoIiwiZGVmIiwicGF0aE9iaiIsIm1ha2VQYXRoQXJyYXkiLCJ2YWwiLCJyZWR1Y2UiLCJjdXJyZW50IiwicGF0aFBhcnQiLCJlIiwidmFsdWUiLCJrZXlzIiwia2V5UGFydCIsImN1cnNvciIsInNoaWZ0IiwibGVuZ3RoIiwiYXJyIiwibiIsInN0YXJ0Iiwic2xpY2UiLCJpIiwicHVzaCIsImZ1bmNzIiwiZGlycyIsImluZGV4S2V5Iiwic29ydCIsInJvd0EiLCJyb3dCIiwiY29tcCIsImRlc2MiLCJzb3J0SW50IiwiYSIsImIiLCJmaWx0ZXIiLCJvIiwiciIsInNwbGljZSIsIkpTT04iLCJwYXJzZSIsInN0cmluZ2lmeSIsImtleSIsInRvU3RyaW5nIiwiY29tcENsYXNzIiwiZGlzcGxheU5hbWUiLCJFcnJvciIsImNtcCIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwicmVzdCIsInhzIiwicnYiLCJ4IiwicmVzS2V5IiwiTnVtYmVyIiwiaXNOYU4iLCJBcnJheSIsImZsYXR0ZW5EZWVwIiwiam9pbiIsInJlcGxhY2UiLCJzcGxpdCIsIm5ld0FyciIsInN0eWxlIiwibmV3T2JqIiwiT2JqZWN0IiwibWFwIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwidW5kZWZpbmVkIiwiZCIsImFzYyIsIkNvbXAiLCJwYXJhbXMiLCJmYWxsYmFjayIsImdldFByb3RvdHlwZU9m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VUgsTUFBVixDQURGLEdBR0VELEtBQUtDLE1BQUwsQ0FKRyxHQU9MQyxRQVBGO0FBU0QiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuLy9cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0LFxuICBzZXQsXG4gIHRha2VSaWdodCxcbiAgbGFzdCxcbiAgb3JkZXJCeSxcbiAgcmFuZ2UsXG4gIHJlbW92ZSxcbiAgY2xvbmUsXG4gIGdldEZpcnN0RGVmaW5lZCxcbiAgc3VtLFxuICBtYWtlVGVtcGxhdGVDb21wb25lbnQsXG4gIGdyb3VwQnksXG4gIGlzQXJyYXksXG4gIHNwbGl0UHJvcHMsXG4gIGNvbXBhY3RPYmplY3QsXG4gIGlzU29ydGluZ0Rlc2MsXG4gIG5vcm1hbGl6ZUNvbXBvbmVudCxcbiAgYXNQeCxcbn1cblxuZnVuY3Rpb24gZ2V0IChvYmosIHBhdGgsIGRlZikge1xuICBpZiAoIXBhdGgpIHtcbiAgICByZXR1cm4gb2JqXG4gIH1cbiAgY29uc3QgcGF0aE9iaiA9IG1ha2VQYXRoQXJyYXkocGF0aClcbiAgbGV0IHZhbFxuICB0cnkge1xuICAgIHZhbCA9IHBhdGhPYmoucmVkdWNlKChjdXJyZW50LCBwYXRoUGFydCkgPT4gY3VycmVudFtwYXRoUGFydF0sIG9iailcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxuICByZXR1cm4gdHlwZW9mIHZhbCAhPT0gJ3VuZGVmaW5lZCcgPyB2YWwgOiBkZWZcbn1cblxuZnVuY3Rpb24gc2V0IChvYmogPSB7fSwgcGF0aCwgdmFsdWUpIHtcbiAgY29uc3Qga2V5cyA9IG1ha2VQYXRoQXJyYXkocGF0aClcbiAgbGV0IGtleVBhcnRcbiAgbGV0IGN1cnNvciA9IG9ialxuICB3aGlsZSAoKGtleVBhcnQgPSBrZXlzLnNoaWZ0KCkpICYmIGtleXMubGVuZ3RoKSB7XG4gICAgaWYgKCFjdXJzb3Jba2V5UGFydF0pIHtcbiAgICAgIGN1cnNvcltrZXlQYXJ0XSA9IHt9XG4gICAgfVxuICAgIGN1cnNvciA9IGN1cnNvcltrZXlQYXJ0XVxuICB9XG4gIGN1cnNvcltrZXlQYXJ0XSA9IHZhbHVlXG4gIHJldHVybiBvYmpcbn1cblxuZnVuY3Rpb24gdGFrZVJpZ2h0IChhcnIsIG4pIHtcbiAgY29uc3Qgc3RhcnQgPSBuID4gYXJyLmxlbmd0aCA/IDAgOiBhcnIubGVuZ3RoIC0gblxuICByZXR1cm4gYXJyLnNsaWNlKHN0YXJ0KVxufVxuXG5mdW5jdGlvbiBsYXN0IChhcnIpIHtcbiAgcmV0dXJuIGFyclthcnIubGVuZ3RoIC0gMV1cbn1cblxuZnVuY3Rpb24gcmFuZ2UgKG4pIHtcbiAgY29uc3QgYXJyID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpICs9IDEpIHtcbiAgICBhcnIucHVzaChuKVxuICB9XG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gb3JkZXJCeSAoYXJyLCBmdW5jcywgZGlycywgaW5kZXhLZXkpIHtcbiAgcmV0dXJuIGFyci5zb3J0KChyb3dBLCByb3dCKSA9PiB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmdW5jcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgY29tcCA9IGZ1bmNzW2ldXG4gICAgICBjb25zdCBkZXNjID0gZGlyc1tpXSA9PT0gZmFsc2UgfHwgZGlyc1tpXSA9PT0gJ2Rlc2MnXG4gICAgICBjb25zdCBzb3J0SW50ID0gY29tcChyb3dBLCByb3dCKVxuICAgICAgaWYgKHNvcnRJbnQpIHtcbiAgICAgICAgcmV0dXJuIGRlc2MgPyAtc29ydEludCA6IHNvcnRJbnRcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVXNlIHRoZSByb3cgaW5kZXggZm9yIHRpZSBicmVha2Vyc1xuICAgIHJldHVybiBkaXJzWzBdID8gcm93QVtpbmRleEtleV0gLSByb3dCW2luZGV4S2V5XSA6IHJvd0JbaW5kZXhLZXldIC0gcm93QVtpbmRleEtleV1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVtb3ZlIChhLCBiKSB7XG4gIHJldHVybiBhLmZpbHRlcigobywgaSkgPT4ge1xuICAgIGNvbnN0IHIgPSBiKG8pXG4gICAgaWYgKHIpIHtcbiAgICAgIGEuc3BsaWNlKGksIDEpXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2VcbiAgfSlcbn1cblxuZnVuY3Rpb24gY2xvbmUgKGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShcbiAgICAgIEpTT04uc3RyaW5naWZ5KGEsIChrZXksIHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZVxuICAgICAgfSlcbiAgICApXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gYVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZpcnN0RGVmaW5lZCAoLi4uYXJncykge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpICs9IDEpIHtcbiAgICBpZiAodHlwZW9mIGFyZ3NbaV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gYXJnc1tpXVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzdW0gKGFycikge1xuICByZXR1cm4gYXJyLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApXG59XG5cbmZ1bmN0aW9uIG1ha2VUZW1wbGF0ZUNvbXBvbmVudCAoY29tcENsYXNzLCBkaXNwbGF5TmFtZSkge1xuICBpZiAoIWRpc3BsYXlOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBkaXNwbGF5TmFtZSBmb3VuZCBmb3IgdGVtcGxhdGUgY29tcG9uZW50OicsIGNvbXBDbGFzcylcbiAgfVxuICBjb25zdCBjbXAgPSAoeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCAuLi5yZXN0IH0pID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjb21wQ2xhc3MsIGNsYXNzTmFtZSl9IHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKVxuICBjbXAuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZVxuICByZXR1cm4gY21wXG59XG5cbmZ1bmN0aW9uIGdyb3VwQnkgKHhzLCBrZXkpIHtcbiAgcmV0dXJuIHhzLnJlZHVjZSgocnYsIHgsIGkpID0+IHtcbiAgICBjb25zdCByZXNLZXkgPSB0eXBlb2Yga2V5ID09PSAnZnVuY3Rpb24nID8ga2V5KHgsIGkpIDogeFtrZXldXG4gICAgcnZbcmVzS2V5XSA9IGlzQXJyYXkocnZbcmVzS2V5XSkgPyBydltyZXNLZXldIDogW11cbiAgICBydltyZXNLZXldLnB1c2goeClcbiAgICByZXR1cm4gcnZcbiAgfSwge30pXG59XG5cbmZ1bmN0aW9uIGFzUHggKHZhbHVlKSB7XG4gIHZhbHVlID0gTnVtYmVyKHZhbHVlKVxuICByZXR1cm4gTnVtYmVyLmlzTmFOKHZhbHVlKSA/IG51bGwgOiBgJHt2YWx1ZX1weGBcbn1cblxuZnVuY3Rpb24gaXNBcnJheSAoYSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhKVxufVxuXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbi8vIE5vbi1leHBvcnRlZCBIZWxwZXJzXG4vLyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuZnVuY3Rpb24gbWFrZVBhdGhBcnJheSAob2JqKSB7XG4gIHJldHVybiBmbGF0dGVuRGVlcChvYmopXG4gICAgLmpvaW4oJy4nKVxuICAgIC5yZXBsYWNlKC9cXFsvZywgJy4nKVxuICAgIC5yZXBsYWNlKC9cXF0vZywgJycpXG4gICAgLnNwbGl0KCcuJylcbn1cblxuZnVuY3Rpb24gZmxhdHRlbkRlZXAgKGFyciwgbmV3QXJyID0gW10pIHtcbiAgaWYgKCFpc0FycmF5KGFycikpIHtcbiAgICBuZXdBcnIucHVzaChhcnIpXG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGZsYXR0ZW5EZWVwKGFycltpXSwgbmV3QXJyKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3QXJyXG59XG5cbmZ1bmN0aW9uIHNwbGl0UHJvcHMgKHsgY2xhc3NOYW1lLCBzdHlsZSwgLi4ucmVzdCB9KSB7XG4gIHJldHVybiB7XG4gICAgY2xhc3NOYW1lLFxuICAgIHN0eWxlLFxuICAgIHJlc3Q6IHJlc3QgfHwge30sXG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcGFjdE9iamVjdCAob2JqKSB7XG4gIGNvbnN0IG5ld09iaiA9IHt9XG4gIGlmIChvYmopIHtcbiAgICBPYmplY3Qua2V5cyhvYmopLm1hcChrZXkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpICYmXG4gICAgICAgIG9ialtrZXldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgdHlwZW9mIG9ialtrZXldICE9PSAndW5kZWZpbmVkJ1xuICAgICAgKSB7XG4gICAgICAgIG5ld09ialtrZXldID0gb2JqW2tleV1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSlcbiAgfVxuICByZXR1cm4gbmV3T2JqXG59XG5cbmZ1bmN0aW9uIGlzU29ydGluZ0Rlc2MgKGQpIHtcbiAgcmV0dXJuICEhKGQuc29ydCA9PT0gJ2Rlc2MnIHx8IGQuZGVzYyA9PT0gdHJ1ZSB8fCBkLmFzYyA9PT0gZmFsc2UpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudCAoQ29tcCwgcGFyYW1zID0ge30sIGZhbGxiYWNrID0gQ29tcCkge1xuICByZXR1cm4gdHlwZW9mIENvbXAgPT09ICdmdW5jdGlvbicgPyAoXG4gICAgT2JqZWN0LmdldFByb3RvdHlwZU9mKENvbXApLmlzUmVhY3RDb21wb25lbnQgPyAoXG4gICAgICA8Q29tcCB7Li4ucGFyYW1zfSAvPlxuICAgICkgOiAoXG4gICAgICBDb21wKHBhcmFtcylcbiAgICApXG4gICkgOiAoXG4gICAgZmFsbGJhY2tcbiAgKVxufVxuIl19","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nexport default (function (Base) {\n return function (_Base) {\n _inherits(_class, _Base);\n\n function _class() {\n _classCallCheck(this, _class);\n\n return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments));\n }\n\n _createClass(_class, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n this.setStateWithData(this.getDataModel(this.getResolvedState(), true));\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.fireFetchData();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps, nextState) {\n var oldState = this.getResolvedState();\n var newState = this.getResolvedState(nextProps, nextState);\n\n // Do a deep compare of new and old `defaultOption` and\n // if they are different reset `option = defaultOption`\n var defaultableOptions = ['sorted', 'filtered', 'resized', 'expanded'];\n defaultableOptions.forEach(function (x) {\n var defaultName = 'default' + (x.charAt(0).toUpperCase() + x.slice(1));\n if (JSON.stringify(oldState[defaultName]) !== JSON.stringify(newState[defaultName])) {\n newState[x] = newState[defaultName];\n }\n });\n\n // If they change these table options, we need to reset defaults\n // or else we could get into a state where the user has changed the UI\n // and then disabled the ability to change it back.\n // e.g. If `filterable` has changed, set `filtered = defaultFiltered`\n var resettableOptions = ['sortable', 'filterable', 'resizable'];\n resettableOptions.forEach(function (x) {\n if (oldState[x] !== newState[x]) {\n var baseName = x.replace('able', '');\n var optionName = baseName + 'ed';\n var defaultName = 'default' + (optionName.charAt(0).toUpperCase() + optionName.slice(1));\n newState[optionName] = newState[defaultName];\n }\n });\n\n // Props that trigger a data update\n if (oldState.data !== newState.data || oldState.columns !== newState.columns || oldState.pivotBy !== newState.pivotBy || oldState.sorted !== newState.sorted || oldState.filtered !== newState.filtered) {\n this.setStateWithData(this.getDataModel(newState, oldState.data !== newState.data));\n }\n }\n }, {\n key: 'setStateWithData',\n value: function setStateWithData(newState, cb) {\n var _this2 = this;\n\n var oldState = this.getResolvedState();\n var newResolvedState = this.getResolvedState({}, newState);\n var freezeWhenExpanded = newResolvedState.freezeWhenExpanded;\n\n // Default to unfrozen state\n\n newResolvedState.frozen = false;\n\n // If freezeWhenExpanded is set, check for frozen conditions\n if (freezeWhenExpanded) {\n // if any rows are expanded, freeze the existing data and sorting\n var keys = Object.keys(newResolvedState.expanded);\n for (var i = 0; i < keys.length; i += 1) {\n if (newResolvedState.expanded[keys[i]]) {\n newResolvedState.frozen = true;\n break;\n }\n }\n }\n\n // If the data isn't frozen and either the data or\n // sorting model has changed, update the data\n if (oldState.frozen && !newResolvedState.frozen || oldState.sorted !== newResolvedState.sorted || oldState.filtered !== newResolvedState.filtered || oldState.showFilters !== newResolvedState.showFilters || !newResolvedState.frozen && oldState.resolvedData !== newResolvedState.resolvedData) {\n // Handle collapseOnsortedChange & collapseOnDataChange\n if (oldState.sorted !== newResolvedState.sorted && this.props.collapseOnSortingChange || oldState.filtered !== newResolvedState.filtered || oldState.showFilters !== newResolvedState.showFilters || oldState.sortedData && !newResolvedState.frozen && oldState.resolvedData !== newResolvedState.resolvedData && this.props.collapseOnDataChange) {\n newResolvedState.expanded = {};\n }\n\n Object.assign(newResolvedState, this.getSortedData(newResolvedState));\n }\n\n // Set page to 0 if filters change\n if (oldState.filtered !== newResolvedState.filtered) {\n newResolvedState.page = 0;\n }\n\n // Calculate pageSize all the time\n if (newResolvedState.sortedData) {\n newResolvedState.pages = newResolvedState.manual ? newResolvedState.pages : Math.ceil(newResolvedState.sortedData.length / newResolvedState.pageSize);\n newResolvedState.page = Math.max(newResolvedState.page >= newResolvedState.pages ? newResolvedState.pages - 1 : newResolvedState.page, 0);\n }\n\n return this.setState(newResolvedState, function () {\n if (cb) {\n cb();\n }\n if (oldState.page !== newResolvedState.page || oldState.pageSize !== newResolvedState.pageSize || oldState.sorted !== newResolvedState.sorted || oldState.filtered !== newResolvedState.filtered) {\n _this2.fireFetchData();\n }\n });\n }\n }]);\n\n return _class;\n }(Base);\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9saWZlY3ljbGUuanMiXSwibmFtZXMiOlsic2V0U3RhdGVXaXRoRGF0YSIsImdldERhdGFNb2RlbCIsImdldFJlc29sdmVkU3RhdGUiLCJmaXJlRmV0Y2hEYXRhIiwibmV4dFByb3BzIiwibmV4dFN0YXRlIiwib2xkU3RhdGUiLCJuZXdTdGF0ZSIsImRlZmF1bHRhYmxlT3B0aW9ucyIsImZvckVhY2giLCJkZWZhdWx0TmFtZSIsIngiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlc2V0dGFibGVPcHRpb25zIiwiYmFzZU5hbWUiLCJyZXBsYWNlIiwib3B0aW9uTmFtZSIsImRhdGEiLCJjb2x1bW5zIiwicGl2b3RCeSIsInNvcnRlZCIsImZpbHRlcmVkIiwiY2IiLCJuZXdSZXNvbHZlZFN0YXRlIiwiZnJlZXplV2hlbkV4cGFuZGVkIiwiZnJvemVuIiwia2V5cyIsIk9iamVjdCIsImV4cGFuZGVkIiwiaSIsImxlbmd0aCIsInNob3dGaWx0ZXJzIiwicmVzb2x2ZWREYXRhIiwicHJvcHMiLCJjb2xsYXBzZU9uU29ydGluZ0NoYW5nZSIsInNvcnRlZERhdGEiLCJjb2xsYXBzZU9uRGF0YUNoYW5nZSIsImFzc2lnbiIsImdldFNvcnRlZERhdGEiLCJwYWdlIiwicGFnZXMiLCJtYW51YWwiLCJNYXRoIiwiY2VpbCIsInBhZ2VTaXplIiwibWF4Iiwic2V0U3RhdGUiLCJCYXNlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLGdCQUFlO0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTtBQUFBLDJDQUVXO0FBQ3BCLGFBQUtBLGdCQUFMLENBQXNCLEtBQUtDLFlBQUwsQ0FBa0IsS0FBS0MsZ0JBQUwsRUFBbEIsRUFBMkMsSUFBM0MsQ0FBdEI7QUFDRDtBQUpVO0FBQUE7QUFBQSwwQ0FNVTtBQUNuQixhQUFLQyxhQUFMO0FBQ0Q7QUFSVTtBQUFBO0FBQUEsZ0RBVWdCQyxTQVZo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QmlCLEtBQTFDLEdBQ0lqQixpQkFBaUJpQixLQUFqQixHQUF5QixDQUQ3QixHQUVJakIsaUJBQWlCZ0IsSUFIQyxFQUl0QixDQUpzQixDQUF4QjtBQU1EOztBQUVELGVBQU8sS0FBS08sUUFBTCxDQUFjdkIsZ0JBQWQsRUFBZ0MsWUFBTTtBQUMzQyxjQUFJRCxFQUFKLEVBQVE7QUFDTkE7QUFDRDtBQUNELGNBQ0VwQixTQUFTcUMsSUFBVCxLQUFrQmhCLGlCQUFpQmdCLElBQW5DLElBQ0FyQyxTQUFTMEMsUUFBVCxLQUFzQnJCLGlCQUFpQnFCLFFBRHZDLElBRUExQyxTQUFTa0IsTUFBVCxLQUFvQkcsaUJBQWlCSCxNQUZyQyxJQUdBbEIsU0FBU21CLFFBQVQsS0FBc0JFLGlCQUFpQkYsUUFKekMsRUFLRTtBQUNBLG1CQUFLdEIsYUFBTDtBQUNEO0FBQ0YsU0FaTSxDQUFQO0FBYUQ7QUE5SFU7O0FBQUE7QUFBQSxJQUNDZ0QsSUFERDtBQUFBLENBQWYiLCJmaWxlIjoibGlmZWN5Y2xlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgQmFzZSA9PlxuICBjbGFzcyBleHRlbmRzIEJhc2Uge1xuICAgIGNvbXBvbmVudFdpbGxNb3VudCAoKSB7XG4gICAgICB0aGlzLnNldFN0YXRlV2l0aERhdGEodGhpcy5nZXREYXRhTW9kZWwodGhpcy5nZXRSZXNvbHZlZFN0YXRlKCksIHRydWUpKVxuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50ICgpIHtcbiAgICAgIHRoaXMuZmlyZUZldGNoRGF0YSgpXG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAobmV4dFByb3BzLCBuZXh0U3RhdGUpIHtcbiAgICAgIGNvbnN0IG9sZFN0YXRlID0gdGhpcy5nZXRSZXNvbHZlZFN0YXRlKClcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0gdGhpcy5nZXRSZXNvbHZlZFN0YXRlKG5leHRQcm9wcywgbmV4dFN0YXRlKVxuXG4gICAgICAvLyBEbyBhIGRlZXAgY29tcGFyZSBvZiBuZXcgYW5kIG9sZCBgZGVmYXVsdE9wdGlvbmAgYW5kXG4gICAgICAvLyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgcmVzZXQgYG9wdGlvbiA9IGRlZmF1bHRPcHRpb25gXG4gICAgICBjb25zdCBkZWZhdWx0YWJsZU9wdGlvbnMgPSBbJ3NvcnRlZCcsICdmaWx0ZXJlZCcsICdyZXNpemVkJywgJ2V4cGFuZGVkJ11cbiAgICAgIGRlZmF1bHRhYmxlT3B0aW9ucy5mb3JFYWNoKHggPT4ge1xuICAgICAgICBjb25zdCBkZWZhdWx0TmFtZSA9IGBkZWZhdWx0JHt4LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgeC5zbGljZSgxKX1gXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShvbGRTdGF0ZVtkZWZhdWx0TmFtZV0pICE9PSBKU09OLnN0cmluZ2lmeShuZXdTdGF0ZVtkZWZhdWx0TmFtZV0pKSB7XG4gICAgICAgICAgbmV3U3RhdGVbeF0gPSBuZXdTdGF0ZVtkZWZhdWx0TmFtZV1cbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdGhleSBjaGFuZ2UgdGhlc2UgdGFibGUgb3B0aW9ucywgd2UgbmVlZCB0byByZXNldCBkZWZhdWx0c1xuICAgICAgLy8gb3IgZWxzZSB3ZSBjb3VsZCBnZXQgaW50byBhIHN0YXRlIHdoZXJlIHRoZSB1c2VyIGhhcyBjaGFuZ2VkIHRoZSBVSVxuICAgICAgLy8gYW5kIHRoZW4gZGlzYWJsZWQgdGhlIGFiaWxpdHkgdG8gY2hhbmdlIGl0IGJhY2suXG4gICAgICAvLyBlLmcuIElmIGBmaWx0ZXJhYmxlYCBoYXMgY2hhbmdlZCwgc2V0IGBmaWx0ZXJlZCA9IGRlZmF1bHRGaWx0ZXJlZGBcbiAgICAgIGNvbnN0IHJlc2V0dGFibGVPcHRpb25zID0gWydzb3J0YWJsZScsICdmaWx0ZXJhYmxlJywgJ3Jlc2l6YWJsZSddXG4gICAgICByZXNldHRhYmxlT3B0aW9ucy5mb3JFYWNoKHggPT4ge1xuICAgICAgICBpZiAob2xkU3RhdGVbeF0gIT09IG5ld1N0YXRlW3hdKSB7XG4gICAgICAgICAgY29uc3QgYmFzZU5hbWUgPSB4LnJlcGxhY2UoJ2FibGUnLCAnJylcbiAgICAgICAgICBjb25zdCBvcHRpb25OYW1lID0gYCR7YmFzZU5hbWV9ZWRgXG4gICAgICAgICAgY29uc3QgZGVmYXVsdE5hbWUgPSBgZGVmYXVsdCR7b3B0aW9uTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIG9wdGlvbk5hbWUuc2xpY2UoMSl9YFxuICAgICAgICAgIG5ld1N0YXRlW29wdGlvbk5hbWVdID0gbmV3U3RhdGVbZGVmYXVsdE5hbWVdXG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIFByb3BzIHRoYXQgdHJpZ2dlciBhIGRhdGEgdXBkYXRlXG4gICAgICBpZiAoXG4gICAgICAgIG9sZFN0YXRlLmRhdGEgIT09IG5ld1N0YXRlLmRhdGEgfHxcbiAgICAgICAgb2xkU3RhdGUuY29sdW1ucyAhPT0gbmV3U3RhdGUuY29sdW1ucyB8fFxuICAgICAgICBvbGRTdGF0ZS5waXZvdEJ5ICE9PSBuZXdTdGF0ZS5waXZvdEJ5IHx8XG4gICAgICAgIG9sZFN0YXRlLnNvcnRlZCAhPT0gbmV3U3RhdGUuc29ydGVkIHx8XG4gICAgICAgIG9sZFN0YXRlLmZpbHRlcmVkICE9PSBuZXdTdGF0ZS5maWx0ZXJlZFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGVXaXRoRGF0YSh0aGlzLmdldERhdGFNb2RlbChuZXdTdGF0ZSwgb2xkU3RhdGUuZGF0YSAhPT0gbmV3U3RhdGUuZGF0YSkpXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0U3RhdGVXaXRoRGF0YSAobmV3U3RhdGUsIGNiKSB7XG4gICAgICBjb25zdCBvbGRTdGF0ZSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpXG4gICAgICBjb25zdCBuZXdSZXNvbHZlZFN0YXRlID0gdGhpcy5nZXRSZXNvbHZlZFN0YXRlKHt9LCBuZXdTdGF0ZSlcbiAgICAgIGNvbnN0IHsgZnJlZXplV2hlbkV4cGFuZGVkIH0gPSBuZXdSZXNvbHZlZFN0YXRlXG5cbiAgICAgIC8vIERlZmF1bHQgdG8gdW5mcm96ZW4gc3RhdGVcbiAgICAgIG5ld1Jlc29sdmVkU3RhdGUuZnJvemVuID0gZmFsc2VcblxuICAgICAgLy8gSWYgZnJlZXplV2hlbkV4cGFuZGVkIGlzIHNldCwgY2hlY2sgZm9yIGZyb3plbiBjb25kaXRpb25zXG4gICAgICBpZiAoZnJlZXplV2hlbkV4cGFuZGVkKSB7XG4gICAgICAgIC8vIGlmIGFueSByb3dzIGFyZSBleHBhbmRlZCwgZnJlZXplIHRoZSBleGlzdGluZyBkYXRhIGFuZCBzb3J0aW5nXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhuZXdSZXNvbHZlZFN0YXRlLmV4cGFuZGVkKVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICBpZiAobmV3UmVzb2x2ZWRTdGF0ZS5leHBhbmRlZFtrZXlzW2ldXSkge1xuICAgICAgICAgICAgbmV3UmVzb2x2ZWRTdGF0ZS5mcm96ZW4gPSB0cnVlXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZGF0YSBpc24ndCBmcm96ZW4gYW5kIGVpdGhlciB0aGUgZGF0YSBvclxuICAgICAgLy8gc29ydGluZyBtb2RlbCBoYXMgY2hhbmdlZCwgdXBkYXRlIHRoZSBkYXRhXG4gICAgICBpZiAoXG4gICAgICAgIChvbGRTdGF0ZS5mcm96ZW4gJiYgIW5ld1Jlc29sdmVkU3RhdGUuZnJvemVuKSB8fFxuICAgICAgICBvbGRTdGF0ZS5zb3J0ZWQgIT09IG5ld1Jlc29sdmVkU3RhdGUuc29ydGVkIHx8XG4gICAgICAgIG9sZFN0YXRlLmZpbHRlcmVkICE9PSBuZXdSZXNvbHZlZFN0YXRlLmZpbHRlcmVkIHx8XG4gICAgICAgIG9sZFN0YXRlLnNob3dGaWx0ZXJzICE9PSBuZXdSZXNvbHZlZFN0YXRlLnNob3dGaWx0ZXJzIHx8XG4gICAgICAgICghbmV3UmVzb2x2ZWRTdGF0ZS5mcm96ZW4gJiYgb2xkU3RhdGUucmVzb2x2ZWREYXRhICE9PSBuZXdSZXNvbHZlZFN0YXRlLnJlc29sdmVkRGF0YSlcbiAgICAgICkge1xuICAgICAgICAvLyBIYW5kbGUgY29sbGFwc2VPbnNvcnRlZENoYW5nZSAmIGNvbGxhcHNlT25EYXRhQ2hhbmdlXG4gICAgICAgIGlmIChcbiAgICAgICAgICAob2xkU3RhdGUuc29ydGVkICE9PSBuZXdSZXNvbHZlZFN0YXRlLnNvcnRlZCAmJiB0aGlzLnByb3BzLmNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlKSB8fFxuICAgICAgICAgIG9sZFN0YXRlLmZpbHRlcmVkICE9PSBuZXdSZXNvbHZlZFN0YXRlLmZpbHRlcmVkIHx8XG4gICAgICAgICAgb2xkU3RhdGUuc2hvd0ZpbHRlcnMgIT09IG5ld1Jlc29sdmVkU3RhdGUuc2hvd0ZpbHRlcnMgfHxcbiAgICAgICAgICAob2xkU3RhdGUuc29ydGVkRGF0YSAmJlxuICAgICAgICAgICAgIW5ld1Jlc29sdmVkU3RhdGUuZnJvemVuICYmXG4gICAgICAgICAgICBvbGRTdGF0ZS5yZXNvbHZlZERhdGEgIT09IG5ld1Jlc29sdmVkU3RhdGUucmVzb2x2ZWREYXRhICYmXG4gICAgICAgICAgICB0aGlzLnByb3BzLmNvbGxhcHNlT25EYXRhQ2hhbmdlKVxuICAgICAgICApIHtcbiAgICAgICAgICBuZXdSZXNvbHZlZFN0YXRlLmV4cGFuZGVkID0ge31cbiAgICAgICAgfVxuXG4gICAgICAgIE9iamVjdC5hc3NpZ24obmV3UmVzb2x2ZWRTdGF0ZSwgdGhpcy5nZXRTb3J0ZWREYXRhKG5ld1Jlc29sdmVkU3RhdGUpKVxuICAgICAgfVxuXG4gICAgICAvLyBTZXQgcGFnZSB0byAwIGlmIGZpbHRlcnMgY2hhbmdlXG4gICAgICBpZiAob2xkU3RhdGUuZmlsdGVyZWQgIT09IG5ld1Jlc29sdmVkU3RhdGUuZmlsdGVyZWQpIHtcbiAgICAgICAgbmV3UmVzb2x2ZWRTdGF0ZS5wYWdlID0gMFxuICAgICAgfVxuXG4gICAgICAvLyBDYWxjdWxhdGUgcGFnZVNpemUgYWxsIHRoZSB0aW1lXG4gICAgICBpZiAobmV3UmVzb2x2ZWRTdGF0ZS5zb3J0ZWREYXRhKSB7XG4gICAgICAgIG5ld1Jlc29sdmVkU3RhdGUucGFnZXMgPSBuZXdSZXNvbHZlZFN0YXRlLm1hbnVhbFxuICAgICAgICAgID8gbmV3UmVzb2x2ZWRTdGF0ZS5wYWdlc1xuICAgICAgICAgIDogTWF0aC5jZWlsKG5ld1Jlc29sdmVkU3RhdGUuc29ydGVkRGF0YS5sZW5ndGggLyBuZXdSZXNvbHZlZFN0YXRlLnBhZ2VTaXplKVxuICAgICAgICBuZXdSZXNvbHZlZFN0YXRlLnBhZ2UgPSBNYXRoLm1heChcbiAgICAgICAgICBuZXdSZXNvbHZlZFN0YXRlLnBhZ2UgPj0gbmV3UmVzb2x2ZWRTdGF0ZS5wYWdlc1xuICAgICAgICAgICAgPyBuZXdSZXNvbHZlZFN0YXRlLnBhZ2VzIC0gMVxuICAgICAgICAgICAgOiBuZXdSZXNvbHZlZFN0YXRlLnBhZ2UsXG4gICAgICAgICAgMFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKG5ld1Jlc29sdmVkU3RhdGUsICgpID0+IHtcbiAgICAgICAgaWYgKGNiKSB7XG4gICAgICAgICAgY2IoKVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBvbGRTdGF0ZS5wYWdlICE9PSBuZXdSZXNvbHZlZFN0YXRlLnBhZ2UgfHxcbiAgICAgICAgICBvbGRTdGF0ZS5wYWdlU2l6ZSAhPT0gbmV3UmVzb2x2ZWRTdGF0ZS5wYWdlU2l6ZSB8fFxuICAgICAgICAgIG9sZFN0YXRlLnNvcnRlZCAhPT0gbmV3UmVzb2x2ZWRTdGF0ZS5zb3J0ZWQgfHxcbiAgICAgICAgICBvbGRTdGF0ZS5maWx0ZXJlZCAhPT0gbmV3UmVzb2x2ZWRTdGF0ZS5maWx0ZXJlZFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZpcmVGZXRjaERhdGEoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuIl19","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport _ from './utils';\n\nexport default (function (Base) {\n return function (_Base) {\n _inherits(_class, _Base);\n\n function _class() {\n _classCallCheck(this, _class);\n\n return _possibleConstructorReturn(this, (_class.__proto__ || Object.getPrototypeOf(_class)).apply(this, arguments));\n }\n\n _createClass(_class, [{\n key: 'getResolvedState',\n value: function getResolvedState(props, state) {\n var resolvedState = _extends({}, _.compactObject(this.state), _.compactObject(this.props), _.compactObject(state), _.compactObject(props));\n return resolvedState;\n }\n }, {\n key: 'getDataModel',\n value: function getDataModel(newState, dataChanged) {\n var _this2 = this;\n\n var columns = newState.columns,\n _newState$pivotBy = newState.pivotBy,\n pivotBy = _newState$pivotBy === undefined ? [] : _newState$pivotBy,\n data = newState.data,\n resolveData = newState.resolveData,\n pivotIDKey = newState.pivotIDKey,\n pivotValKey = newState.pivotValKey,\n subRowsKey = newState.subRowsKey,\n aggregatedKey = newState.aggregatedKey,\n nestingLevelKey = newState.nestingLevelKey,\n originalKey = newState.originalKey,\n indexKey = newState.indexKey,\n groupedByPivotKey = newState.groupedByPivotKey,\n SubComponent = newState.SubComponent;\n\n // Determine Header Groups\n\n var hasHeaderGroups = false;\n columns.forEach(function (column) {\n if (column.columns) {\n hasHeaderGroups = true;\n }\n });\n\n var columnsWithExpander = [].concat(_toConsumableArray(columns));\n\n var expanderColumn = columns.find(function (col) {\n return col.expander || col.columns && col.columns.some(function (col2) {\n return col2.expander;\n });\n });\n // The actual expander might be in the columns field of a group column\n if (expanderColumn && !expanderColumn.expander) {\n expanderColumn = expanderColumn.columns.find(function (col) {\n return col.expander;\n });\n }\n\n // If we have SubComponent's we need to make sure we have an expander column\n if (SubComponent && !expanderColumn) {\n expanderColumn = { expander: true };\n columnsWithExpander = [expanderColumn].concat(_toConsumableArray(columnsWithExpander));\n }\n\n var makeDecoratedColumn = function makeDecoratedColumn(column, parentColumn) {\n var dcol = void 0;\n if (column.expander) {\n dcol = _extends({}, _this2.props.column, _this2.props.expanderDefaults, column);\n } else {\n dcol = _extends({}, _this2.props.column, column);\n }\n\n // Ensure minWidth is not greater than maxWidth if set\n if (dcol.maxWidth < dcol.minWidth) {\n dcol.minWidth = dcol.maxWidth;\n }\n\n if (parentColumn) {\n dcol.parentColumn = parentColumn;\n }\n\n // First check for string accessor\n if (typeof dcol.accessor === 'string') {\n dcol.id = dcol.id || dcol.accessor;\n var accessorString = dcol.accessor;\n dcol.accessor = function (row) {\n return _.get(row, accessorString);\n };\n return dcol;\n }\n\n // Fall back to functional accessor (but require an ID)\n if (dcol.accessor && !dcol.id) {\n console.warn(dcol);\n throw new Error('A column id is required if using a non-string accessor for column above.');\n }\n\n // Fall back to an undefined accessor\n if (!dcol.accessor) {\n dcol.accessor = function () {\n return undefined;\n };\n }\n\n return dcol;\n };\n\n var allDecoratedColumns = [];\n\n // Decorate the columns\n var decorateAndAddToAll = function decorateAndAddToAll(column, parentColumn) {\n var decoratedColumn = makeDecoratedColumn(column, parentColumn);\n allDecoratedColumns.push(decoratedColumn);\n return decoratedColumn;\n };\n\n var decoratedColumns = columnsWithExpander.map(function (column) {\n if (column.columns) {\n return _extends({}, column, {\n columns: column.columns.map(function (d) {\n return decorateAndAddToAll(d, column);\n })\n });\n }\n return decorateAndAddToAll(column);\n });\n\n // Build the visible columns, headers and flat column list\n var visibleColumns = decoratedColumns.slice();\n var allVisibleColumns = [];\n\n visibleColumns = visibleColumns.map(function (column) {\n if (column.columns) {\n var visibleSubColumns = column.columns.filter(function (d) {\n return pivotBy.indexOf(d.id) > -1 ? false : _.getFirstDefined(d.show, true);\n });\n return _extends({}, column, {\n columns: visibleSubColumns\n });\n }\n return column;\n });\n\n visibleColumns = visibleColumns.filter(function (column) {\n return column.columns ? column.columns.length : pivotBy.indexOf(column.id) > -1 ? false : _.getFirstDefined(column.show, true);\n });\n\n // Find any custom pivot location\n var pivotIndex = visibleColumns.findIndex(function (col) {\n return col.pivot;\n });\n\n // Handle Pivot Columns\n if (pivotBy.length) {\n // Retrieve the pivot columns in the correct pivot order\n var pivotColumns = [];\n pivotBy.forEach(function (pivotID) {\n var found = allDecoratedColumns.find(function (d) {\n return d.id === pivotID;\n });\n if (found) {\n pivotColumns.push(found);\n }\n });\n\n var PivotParentColumn = pivotColumns.reduce(function (prev, current) {\n return prev && prev === current.parentColumn && current.parentColumn;\n }, pivotColumns[0].parentColumn);\n\n var PivotGroupHeader = hasHeaderGroups && PivotParentColumn.Header;\n PivotGroupHeader = PivotGroupHeader || function () {\n return React.createElement(\n 'strong',\n null,\n 'Pivoted'\n );\n };\n\n var pivotColumnGroup = {\n Header: PivotGroupHeader,\n columns: pivotColumns.map(function (col) {\n return _extends({}, _this2.props.pivotDefaults, col, {\n pivoted: true\n });\n })\n\n // Place the pivotColumns back into the visibleColumns\n };if (pivotIndex >= 0) {\n pivotColumnGroup = _extends({}, visibleColumns[pivotIndex], pivotColumnGroup);\n visibleColumns.splice(pivotIndex, 1, pivotColumnGroup);\n } else {\n visibleColumns.unshift(pivotColumnGroup);\n }\n }\n\n // Build Header Groups\n var headerGroups = [];\n var currentSpan = [];\n\n // A convenience function to add a header and reset the currentSpan\n var addHeader = function addHeader(columns, column) {\n headerGroups.push(_extends({}, _this2.props.column, column, {\n columns: columns\n }));\n currentSpan = [];\n };\n\n // Build flast list of allVisibleColumns and HeaderGroups\n visibleColumns.forEach(function (column) {\n if (column.columns) {\n allVisibleColumns = allVisibleColumns.concat(column.columns);\n if (currentSpan.length > 0) {\n addHeader(currentSpan);\n }\n addHeader(column.columns, column);\n return;\n }\n allVisibleColumns.push(column);\n currentSpan.push(column);\n });\n if (hasHeaderGroups && currentSpan.length > 0) {\n addHeader(currentSpan);\n }\n\n // Access the data\n var accessRow = function accessRow(d, i) {\n var _row;\n\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var row = (_row = {}, _defineProperty(_row, originalKey, d), _defineProperty(_row, indexKey, i), _defineProperty(_row, subRowsKey, d[subRowsKey]), _defineProperty(_row, nestingLevelKey, level), _row);\n allDecoratedColumns.forEach(function (column) {\n if (column.expander) return;\n row[column.id] = column.accessor(d);\n });\n if (row[subRowsKey]) {\n row[subRowsKey] = row[subRowsKey].map(function (d, i) {\n return accessRow(d, i, level + 1);\n });\n }\n return row;\n };\n\n // // If the data hasn't changed, just use the cached data\n var resolvedData = this.resolvedData;\n // If the data has changed, run the data resolver and cache the result\n if (!this.resolvedData || dataChanged) {\n resolvedData = resolveData(data);\n this.resolvedData = resolvedData;\n }\n // Use the resolved data\n resolvedData = resolvedData.map(function (d, i) {\n return accessRow(d, i);\n });\n\n // TODO: Make it possible to fabricate nested rows without pivoting\n var aggregatingColumns = allVisibleColumns.filter(function (d) {\n return !d.expander && d.aggregate;\n });\n\n // If pivoting, recursively group the data\n var aggregate = function aggregate(rows) {\n var aggregationValues = {};\n aggregatingColumns.forEach(function (column) {\n var values = rows.map(function (d) {\n return d[column.id];\n });\n aggregationValues[column.id] = column.aggregate(values, rows);\n });\n return aggregationValues;\n };\n if (pivotBy.length) {\n var groupRecursively = function groupRecursively(rows, keys) {\n var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n // This is the last level, just return the rows\n if (i === keys.length) {\n return rows;\n }\n // Group the rows together for this level\n var groupedRows = Object.entries(_.groupBy(rows, keys[i])).map(function (_ref) {\n var _ref3;\n\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n\n return _ref3 = {}, _defineProperty(_ref3, pivotIDKey, keys[i]), _defineProperty(_ref3, pivotValKey, key), _defineProperty(_ref3, keys[i], key), _defineProperty(_ref3, subRowsKey, value), _defineProperty(_ref3, nestingLevelKey, i), _defineProperty(_ref3, groupedByPivotKey, true), _ref3;\n });\n // Recurse into the subRows\n groupedRows = groupedRows.map(function (rowGroup) {\n var _extends2;\n\n var subRows = groupRecursively(rowGroup[subRowsKey], keys, i + 1);\n return _extends({}, rowGroup, (_extends2 = {}, _defineProperty(_extends2, subRowsKey, subRows), _defineProperty(_extends2, aggregatedKey, true), _extends2), aggregate(subRows));\n });\n return groupedRows;\n };\n resolvedData = groupRecursively(resolvedData, pivotBy);\n }\n\n return _extends({}, newState, {\n resolvedData: resolvedData,\n allVisibleColumns: allVisibleColumns,\n headerGroups: headerGroups,\n allDecoratedColumns: allDecoratedColumns,\n hasHeaderGroups: hasHeaderGroups\n });\n }\n }, {\n key: 'getSortedData',\n value: function getSortedData(resolvedState) {\n var manual = resolvedState.manual,\n sorted = resolvedState.sorted,\n filtered = resolvedState.filtered,\n defaultFilterMethod = resolvedState.defaultFilterMethod,\n resolvedData = resolvedState.resolvedData,\n allVisibleColumns = resolvedState.allVisibleColumns,\n allDecoratedColumns = resolvedState.allDecoratedColumns;\n\n\n var sortMethodsByColumnID = {};\n\n allDecoratedColumns.filter(function (col) {\n return col.sortMethod;\n }).forEach(function (col) {\n sortMethodsByColumnID[col.id] = col.sortMethod;\n });\n\n // Resolve the data from either manual data or sorted data\n return {\n sortedData: manual ? resolvedData : this.sortData(this.filterData(resolvedData, filtered, defaultFilterMethod, allVisibleColumns), sorted, sortMethodsByColumnID)\n };\n }\n }, {\n key: 'fireFetchData',\n value: function fireFetchData() {\n this.props.onFetchData(this.getResolvedState(), this);\n }\n }, {\n key: 'getPropOrState',\n value: function getPropOrState(key) {\n return _.getFirstDefined(this.props[key], this.state[key]);\n }\n }, {\n key: 'getStateOrProp',\n value: function getStateOrProp(key) {\n return _.getFirstDefined(this.state[key], this.props[key]);\n }\n }, {\n key: 'filterData',\n value: function filterData(data, filtered, defaultFilterMethod, allVisibleColumns) {\n var _this3 = this;\n\n var filteredData = data;\n\n if (filtered.length) {\n filteredData = filtered.reduce(function (filteredSoFar, nextFilter) {\n var column = allVisibleColumns.find(function (x) {\n return x.id === nextFilter.id;\n });\n\n // Don't filter hidden columns or columns that have had their filters disabled\n if (!column || column.filterable === false) {\n return filteredSoFar;\n }\n\n var filterMethod = column.filterMethod || defaultFilterMethod;\n\n // If 'filterAll' is set to true, pass the entire dataset to the filter method\n if (column.filterAll) {\n return filterMethod(nextFilter, filteredSoFar, column);\n }\n return filteredSoFar.filter(function (row) {\n return filterMethod(nextFilter, row, column);\n });\n }, filteredData);\n\n // Apply the filter to the subrows if we are pivoting, and then\n // filter any rows without subcolumns because it would be strange to show\n filteredData = filteredData.map(function (row) {\n if (!row[_this3.props.subRowsKey]) {\n return row;\n }\n return _extends({}, row, _defineProperty({}, _this3.props.subRowsKey, _this3.filterData(row[_this3.props.subRowsKey], filtered, defaultFilterMethod, allVisibleColumns)));\n }).filter(function (row) {\n if (!row[_this3.props.subRowsKey]) {\n return true;\n }\n return row[_this3.props.subRowsKey].length > 0;\n });\n }\n\n return filteredData;\n }\n }, {\n key: 'sortData',\n value: function sortData(data, sorted) {\n var _this4 = this;\n\n var sortMethodsByColumnID = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!sorted.length) {\n return data;\n }\n\n var sortedData = (this.props.orderByMethod || _.orderBy)(data, sorted.map(function (sort) {\n // Support custom sorting methods for each column\n if (sortMethodsByColumnID[sort.id]) {\n return function (a, b) {\n return sortMethodsByColumnID[sort.id](a[sort.id], b[sort.id], sort.desc);\n };\n }\n return function (a, b) {\n return _this4.props.defaultSortMethod(a[sort.id], b[sort.id], sort.desc);\n };\n }), sorted.map(function (d) {\n return !d.desc;\n }), this.props.indexKey);\n\n sortedData.forEach(function (row) {\n if (!row[_this4.props.subRowsKey]) {\n return;\n }\n row[_this4.props.subRowsKey] = _this4.sortData(row[_this4.props.subRowsKey], sorted, sortMethodsByColumnID);\n });\n\n return sortedData;\n }\n }, {\n key: 'getMinRows',\n value: function getMinRows() {\n return _.getFirstDefined(this.props.minRows, this.getStateOrProp('pageSize'));\n }\n\n // User actions\n\n }, {\n key: 'onPageChange',\n value: function onPageChange(page) {\n var _props = this.props,\n onPageChange = _props.onPageChange,\n collapseOnPageChange = _props.collapseOnPageChange;\n\n\n var newState = { page: page };\n if (collapseOnPageChange) {\n newState.expanded = {};\n }\n this.setStateWithData(newState, function () {\n return onPageChange && onPageChange(page);\n });\n }\n }, {\n key: 'onPageSizeChange',\n value: function onPageSizeChange(newPageSize) {\n var onPageSizeChange = this.props.onPageSizeChange;\n\n var _getResolvedState = this.getResolvedState(),\n pageSize = _getResolvedState.pageSize,\n page = _getResolvedState.page;\n\n // Normalize the page to display\n\n\n var currentRow = pageSize * page;\n var newPage = Math.floor(currentRow / newPageSize);\n\n this.setStateWithData({\n pageSize: newPageSize,\n page: newPage\n }, function () {\n return onPageSizeChange && onPageSizeChange(newPageSize, newPage);\n });\n }\n }, {\n key: 'sortColumn',\n value: function sortColumn(column, additive) {\n var _getResolvedState2 = this.getResolvedState(),\n sorted = _getResolvedState2.sorted,\n skipNextSort = _getResolvedState2.skipNextSort,\n defaultSortDesc = _getResolvedState2.defaultSortDesc;\n\n var firstSortDirection = Object.prototype.hasOwnProperty.call(column, 'defaultSortDesc') ? column.defaultSortDesc : defaultSortDesc;\n var secondSortDirection = !firstSortDirection;\n\n // we can't stop event propagation from the column resize move handlers\n // attached to the document because of react's synthetic events\n // so we have to prevent the sort function from actually sorting\n // if we click on the column resize element within a header.\n if (skipNextSort) {\n this.setStateWithData({\n skipNextSort: false\n });\n return;\n }\n\n var onSortedChange = this.props.onSortedChange;\n\n\n var newSorted = _.clone(sorted || []).map(function (d) {\n d.desc = _.isSortingDesc(d);\n return d;\n });\n if (!_.isArray(column)) {\n // Single-Sort\n var existingIndex = newSorted.findIndex(function (d) {\n return d.id === column.id;\n });\n if (existingIndex > -1) {\n var existing = newSorted[existingIndex];\n if (existing.desc === secondSortDirection) {\n if (additive) {\n newSorted.splice(existingIndex, 1);\n } else {\n existing.desc = firstSortDirection;\n newSorted = [existing];\n }\n } else {\n existing.desc = secondSortDirection;\n if (!additive) {\n newSorted = [existing];\n }\n }\n } else if (additive) {\n newSorted.push({\n id: column.id,\n desc: firstSortDirection\n });\n } else {\n newSorted = [{\n id: column.id,\n desc: firstSortDirection\n }];\n }\n } else {\n // Multi-Sort\n var _existingIndex = newSorted.findIndex(function (d) {\n return d.id === column[0].id;\n });\n // Existing Sorted Column\n if (_existingIndex > -1) {\n var _existing = newSorted[_existingIndex];\n if (_existing.desc === secondSortDirection) {\n if (additive) {\n newSorted.splice(_existingIndex, column.length);\n } else {\n column.forEach(function (d, i) {\n newSorted[_existingIndex + i].desc = firstSortDirection;\n });\n }\n } else {\n column.forEach(function (d, i) {\n newSorted[_existingIndex + i].desc = secondSortDirection;\n });\n }\n if (!additive) {\n newSorted = newSorted.slice(_existingIndex, column.length);\n }\n // New Sort Column\n } else if (additive) {\n newSorted = newSorted.concat(column.map(function (d) {\n return {\n id: d.id,\n desc: firstSortDirection\n };\n }));\n } else {\n newSorted = column.map(function (d) {\n return {\n id: d.id,\n desc: firstSortDirection\n };\n });\n }\n }\n\n this.setStateWithData({\n page: !sorted.length && newSorted.length || !additive ? 0 : this.state.page,\n sorted: newSorted\n }, function () {\n return onSortedChange && onSortedChange(newSorted, column, additive);\n });\n }\n }, {\n key: 'filterColumn',\n value: function filterColumn(column, value) {\n var _getResolvedState3 = this.getResolvedState(),\n filtered = _getResolvedState3.filtered;\n\n var onFilteredChange = this.props.onFilteredChange;\n\n // Remove old filter first if it exists\n\n var newFiltering = (filtered || []).filter(function (x) {\n return x.id !== column.id;\n });\n\n if (value !== '') {\n newFiltering.push({\n id: column.id,\n value: value\n });\n }\n\n this.setStateWithData({\n filtered: newFiltering\n }, function () {\n return onFilteredChange && onFilteredChange(newFiltering, column, value);\n });\n }\n }, {\n key: 'resizeColumnStart',\n value: function resizeColumnStart(event, column, isTouch) {\n var _this5 = this;\n\n event.stopPropagation();\n var parentWidth = event.target.parentElement.getBoundingClientRect().width;\n\n var pageX = void 0;\n if (isTouch) {\n pageX = event.changedTouches[0].pageX;\n } else {\n pageX = event.pageX;\n }\n\n this.trapEvents = true;\n this.setStateWithData({\n currentlyResizing: {\n id: column.id,\n startX: pageX,\n parentWidth: parentWidth\n }\n }, function () {\n if (isTouch) {\n document.addEventListener('touchmove', _this5.resizeColumnMoving);\n document.addEventListener('touchcancel', _this5.resizeColumnEnd);\n document.addEventListener('touchend', _this5.resizeColumnEnd);\n } else {\n document.addEventListener('mousemove', _this5.resizeColumnMoving);\n document.addEventListener('mouseup', _this5.resizeColumnEnd);\n document.addEventListener('mouseleave', _this5.resizeColumnEnd);\n }\n });\n }\n }, {\n key: 'resizeColumnMoving',\n value: function resizeColumnMoving(event) {\n event.stopPropagation();\n var onResizedChange = this.props.onResizedChange;\n\n var _getResolvedState4 = this.getResolvedState(),\n resized = _getResolvedState4.resized,\n currentlyResizing = _getResolvedState4.currentlyResizing;\n\n // Delete old value\n\n\n var newResized = resized.filter(function (x) {\n return x.id !== currentlyResizing.id;\n });\n\n var pageX = void 0;\n\n if (event.type === 'touchmove') {\n pageX = event.changedTouches[0].pageX;\n } else if (event.type === 'mousemove') {\n pageX = event.pageX;\n }\n\n // Set the min size to 10 to account for margin and border or else the\n // group headers don't line up correctly\n var newWidth = Math.max(currentlyResizing.parentWidth + pageX - currentlyResizing.startX, 11);\n\n newResized.push({\n id: currentlyResizing.id,\n value: newWidth\n });\n\n this.setStateWithData({\n resized: newResized\n }, function () {\n return onResizedChange && onResizedChange(newResized, event);\n });\n }\n }, {\n key: 'resizeColumnEnd',\n value: function resizeColumnEnd(event) {\n event.stopPropagation();\n var isTouch = event.type === 'touchend' || event.type === 'touchcancel';\n\n if (isTouch) {\n document.removeEventListener('touchmove', this.resizeColumnMoving);\n document.removeEventListener('touchcancel', this.resizeColumnEnd);\n document.removeEventListener('touchend', this.resizeColumnEnd);\n }\n\n // If its a touch event clear the mouse one's as well because sometimes\n // the mouseDown event gets called as well, but the mouseUp event doesn't\n document.removeEventListener('mousemove', this.resizeColumnMoving);\n document.removeEventListener('mouseup', this.resizeColumnEnd);\n document.removeEventListener('mouseleave', this.resizeColumnEnd);\n\n // The touch events don't propagate up to the sorting's onMouseDown event so\n // no need to prevent it from happening or else the first click after a touch\n // event resize will not sort the column.\n if (!isTouch) {\n this.setStateWithData({\n skipNextSort: true,\n currentlyResizing: false\n });\n }\n }\n }]);\n\n return _class;\n }(Base);\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRob2RzLmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiXyIsInByb3BzIiwic3RhdGUiLCJyZXNvbHZlZFN0YXRlIiwiY29tcGFjdE9iamVjdCIsIm5ld1N0YXRlIiwiZGF0YUNoYW5nZWQiLCJjb2x1bW5zIiwicGl2b3RCeSIsImRhdGEiLCJyZXNvbHZlRGF0YSIsInBpdm90SURLZXkiLCJwaXZvdFZhbEtleSIsInN1YlJvd3NLZXkiLCJhZ2dyZWdhdGVkS2V5IiwibmVzdGluZ0xldmVsS2V5Iiwib3JpZ2luYWxLZXkiLCJpbmRleEtleSIsImdyb3VwZWRCeVBpdm90S2V5IiwiU3ViQ29tcG9uZW50IiwiaGFzSGVhZGVyR3JvdXBzIiwiZm9yRWFjaCIsImNvbHVtbiIsImNvbHVtbnNXaXRoRXhwYW5kZXIiLCJleHBhbmRlckNvbHVtbiIsImZpbmQiLCJjb2wiLCJleHBhbmRlciIsInNvbWUiLCJjb2wyIiwibWFrZURlY29yYXRlZENvbHVtbiIsInBhcmVudENvbHVtbiIsImRjb2wiLCJleHBhbmRlckRlZmF1bHRzIiwibWF4V2lkdGgiLCJtaW5XaWR0aCIsImFjY2Vzc29yIiwiaWQiLCJhY2Nlc3NvclN0cmluZyIsImdldCIsInJvdyIsImNvbnNvbGUiLCJ3YXJuIiwiRXJyb3IiLCJ1bmRlZmluZWQiLCJhbGxEZWNvcmF0ZWRDb2x1bW5zIiwiZGVjb3JhdGVBbmRBZGRUb0FsbCIsImRlY29yYXRlZENvbHVtbiIsInB1c2giLCJkZWNvcmF0ZWRDb2x1bW5zIiwibWFwIiwiZCIsInZpc2libGVDb2x1bW5zIiwic2xpY2UiLCJhbGxWaXNpYmxlQ29sdW1ucyIsInZpc2libGVTdWJDb2x1bW5zIiwiZmlsdGVyIiwiaW5kZXhPZiIsImdldEZpcnN0RGVmaW5lZCIsInNob3ciLCJsZW5ndGgiLCJwaXZvdEluZGV4IiwiZmluZEluZGV4IiwicGl2b3QiLCJwaXZvdENvbHVtbnMiLCJmb3VuZCIsInBpdm90SUQiLCJQaXZvdFBhcmVudENvbHVtbiIsInJlZHVjZSIsInByZXYiLCJjdXJyZW50IiwiUGl2b3RHcm91cEhlYWRlciIsIkhlYWRlciIsInBpdm90Q29sdW1uR3JvdXAiLCJwaXZvdERlZmF1bHRzIiwicGl2b3RlZCIsInNwbGljZSIsInVuc2hpZnQiLCJoZWFkZXJHcm91cHMiLCJjdXJyZW50U3BhbiIsImFkZEhlYWRlciIsImNvbmNhdCIsImFjY2Vzc1JvdyIsImkiLCJsZXZlbCIsInJlc29sdmVkRGF0YSIsImFnZ3JlZ2F0aW5nQ29sdW1ucyIsImFnZ3JlZ2F0ZSIsImFnZ3JlZ2F0aW9uVmFsdWVzIiwidmFsdWVzIiwicm93cyIsImdyb3VwUmVjdXJzaXZlbHkiLCJrZXlzIiwiZ3JvdXBlZFJvd3MiLCJPYmplY3QiLCJlbnRyaWVzIiwiZ3JvdXBCeSIsImtleSIsInZhbHVlIiwic3ViUm93cyIsInJvd0dyb3VwIiwibWFudWFsIiwic29ydGVkIiwiZmlsdGVyZWQiLCJkZWZhdWx0RmlsdGVyTWV0aG9kIiwic29ydE1ldGhvZHNCeUNvbHVtbklEIiwic29ydE1ldGhvZCIsInNvcnRlZERhdGEiLCJzb3J0RGF0YSIsImZpbHRlckRhdGEiLCJvbkZldGNoRGF0YSIsImdldFJlc29sdmVkU3RhdGUiLCJmaWx0ZXJlZERhdGEiLCJmaWx0ZXJlZFNvRmFyIiwibmV4dEZpbHRlciIsIngiLCJmaWx0ZXJhYmxlIiwiZmlsdGVyTWV0aG9kIiwiZmlsdGVyQWxsIiwib3JkZXJCeU1ldGhvZCIsIm9yZGVyQnkiLCJzb3J0IiwiYSIsImIiLCJkZXNjIiwiZGVmYXVsdFNvcnRNZXRob2QiLCJtaW5Sb3dzIiwiZ2V0U3RhdGVPclByb3AiLCJwYWdlIiwib25QYWdlQ2hhbmdlIiwiY29sbGFwc2VPblBhZ2VDaGFuZ2UiLCJleHBhbmRlZCIsInNldFN0YXRlV2l0aERhdGEiLCJuZXdQYWdlU2l6ZSIsIm9uUGFnZVNpemVDaGFuZ2UiLCJwYWdlU2l6ZSIsImN1cnJlbnRSb3ciLCJuZXdQYWdlIiwiTWF0aCIsImZsb29yIiwiYWRkaXRpdmUiLCJza2lwTmV4dFNvcnQiLCJkZWZhdWx0U29ydERlc2MiLCJmaXJzdFNvcnREaXJlY3Rpb24iLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzZWNvbmRTb3J0RGlyZWN0aW9uIiwib25Tb3J0ZWRDaGFuZ2UiLCJuZXdTb3J0ZWQiLCJjbG9uZSIsImlzU29ydGluZ0Rlc2MiLCJpc0FycmF5IiwiZXhpc3RpbmdJbmRleCIsImV4aXN0aW5nIiwib25GaWx0ZXJlZENoYW5nZSIsIm5ld0ZpbHRlcmluZyIsImV2ZW50IiwiaXNUb3VjaCIsInN0b3BQcm9wYWdhdGlvbiIsInBhcmVudFdpZHRoIiwidGFyZ2V0IiwicGFyZW50RWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwicGFnZVgiLCJjaGFuZ2VkVG91Y2hlcyIsInRyYXBFdmVudHMiLCJjdXJyZW50bHlSZXNpemluZyIsInN0YXJ0WCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlc2l6ZUNvbHVtbk1vdmluZyIsInJlc2l6ZUNvbHVtbkVuZCIsIm9uUmVzaXplZENoYW5nZSIsInJlc2l6ZWQiLCJuZXdSZXNpemVkIiwidHlwZSIsIm5ld1dpZHRoIiwibWF4IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIkJhc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLE1BQWtCLE9BQWxCO0FBQ0EsT0FBT0MsQ0FBUCxNQUFjLFNBQWQ7O0FBRUEsZ0JBQWU7QUFBQTtBQUFBOztBQUFBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsdUNBRU9DLEtBRlAsRUFFY0MsS0FGZCxFQUVxQjtBQUM5QixZQUFNQyw2QkFDREgsRUFBRUksYUFBRixDQUFnQixLQUFLRixLQUFyQixDQURDLEVBRURGLEVBQUVJLGFBQUYsQ0FBZ0IsS0FBS0gsS0FBckIsQ0FGQyxFQUdERCxFQUFFSSxhQUFGLENBQWdCRixLQUFoQixDQUhDLEVBSURGLEVBQUVJLGFBQUYsQ0FBZ0JILEtBQWhCLENBSkMsQ0FBTjtB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U1UsbUJBQVQsQ0FBNkIsV0FBN0IsRUFBMEMsS0FBS1Isa0JBQS9DO0FBQ0FGLG1CQUFTVSxtQkFBVCxDQUE2QixhQUE3QixFQUE0QyxLQUFLUCxlQUFqRDtBQUNBSCxtQkFBU1UsbUJBQVQsQ0FBNkIsVUFBN0IsRUFBeUMsS0FBS1AsZUFBOUM7QUFDRDs7QUFFRDtBQUNBO0FBQ0FILGlCQUFTVSxtQkFBVCxDQUE2QixXQUE3QixFQUEwQyxLQUFLUixrQkFBL0M7QUFDQUYsaUJBQVNVLG1CQUFULENBQTZCLFNBQTdCLEVBQXdDLEtBQUtQLGVBQTdDO0FBQ0FILGlCQUFTVSxtQkFBVCxDQUE2QixZQUE3QixFQUEyQyxLQUFLUCxlQUFoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFJLENBQUNmLE9BQUwsRUFBYztBQUNaLGVBQUsxQixnQkFBTCxDQUFzQjtBQUNwQlMsMEJBQWMsSUFETTtBQUVwQjJCLCtCQUFtQjtBQUZDLFdBQXRCO0FBSUQ7QUFDRjtBQWxxQlU7O0FBQUE7QUFBQSxJQUNDYSxJQUREO0FBQUEsQ0FBZiIsImZpbGUiOiJtZXRob2RzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IF8gZnJvbSAnLi91dGlscydcblxuZXhwb3J0IGRlZmF1bHQgQmFzZSA9PlxuICBjbGFzcyBleHRlbmRzIEJhc2Uge1xuICAgIGdldFJlc29sdmVkU3RhdGUgKHByb3BzLCBzdGF0ZSkge1xuICAgICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHtcbiAgICAgICAgLi4uXy5jb21wYWN0T2JqZWN0KHRoaXMuc3RhdGUpLFxuICAgICAgICAuLi5fLmNvbXBhY3RPYmplY3QodGhpcy5wcm9wcyksXG4gICAgICAgIC4uLl8uY29tcGFjdE9iamVjdChzdGF0ZSksXG4gICAgICAgIC4uLl8uY29tcGFjdE9iamVjdChwcm9wcyksXG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZWRTdGF0ZVxuICAgIH1cblxuICAgIGdldERhdGFNb2RlbCAobmV3U3RhdGUsIGRhdGFDaGFuZ2VkKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGNvbHVtbnMsXG4gICAgICAgIHBpdm90QnkgPSBbXSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgcmVzb2x2ZURhdGEsXG4gICAgICAgIHBpdm90SURLZXksXG4gICAgICAgIHBpdm90VmFsS2V5LFxuICAgICAgICBzdWJSb3dzS2V5LFxuICAgICAgICBhZ2dyZWdhdGVkS2V5LFxuICAgICAgICBuZXN0aW5nTGV2ZWxLZXksXG4gICAgICAgIG9yaWdpbmFsS2V5LFxuICAgICAgICBpbmRleEtleSxcbiAgICAgICAgZ3JvdXBlZEJ5UGl2b3RLZXksXG4gICAgICAgIFN1YkNvbXBvbmVudCxcbiAgICAgIH0gPSBuZXdTdGF0ZVxuXG4gICAgICAvLyBEZXRlcm1pbmUgSGVhZGVyIEdyb3Vwc1xuICAgICAgbGV0IGhhc0hlYWRlckdyb3VwcyA9IGZhbHNlXG4gICAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5jb2x1bW5zKSB7XG4gICAgICAgICAgaGFzSGVhZGVyR3JvdXBzID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBsZXQgY29sdW1uc1dpdGhFeHBhbmRlciA9IFsuLi5jb2x1bW5zXVxuXG4gICAgICBsZXQgZXhwYW5kZXJDb2x1bW4gPSBjb2x1bW5zLmZpbmQoXG4gICAgICAgIGNvbCA9PiBjb2wuZXhwYW5kZXIgfHwgKGNvbC5jb2x1bW5zICYmIGNvbC5jb2x1bW5zLnNvbWUoY29sMiA9PiBjb2wyLmV4cGFuZGVyKSlcbiAgICAgIClcbiAgICAgIC8vIFRoZSBhY3R1YWwgZXhwYW5kZXIgbWlnaHQgYmUgaW4gdGhlIGNvbHVtbnMgZmllbGQgb2YgYSBncm91cCBjb2x1bW5cbiAgICAgIGlmIChleHBhbmRlckNvbHVtbiAmJiAhZXhwYW5kZXJDb2x1bW4uZXhwYW5kZXIpIHtcbiAgICAgICAgZXhwYW5kZXJDb2x1bW4gPSBleHBhbmRlckNvbHVtbi5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5leHBhbmRlcilcbiAgICAgIH1cblxuICAgICAgLy8gSWYgd2UgaGF2ZSBTdWJDb21wb25lbnQncyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGV4cGFuZGVyIGNvbHVtblxuICAgICAgaWYgKFN1YkNvbXBvbmVudCAmJiAhZXhwYW5kZXJDb2x1bW4pIHtcbiAgICAgICAgZXhwYW5kZXJDb2x1bW4gPSB7IGV4cGFuZGVyOiB0cnVlIH1cbiAgICAgICAgY29sdW1uc1dpdGhFeHBhbmRlciA9IFtleHBhbmRlckNvbHVtbiwgLi4uY29sdW1uc1dpdGhFeHBhbmRlcl1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFrZURlY29yYXRlZENvbHVtbiA9IChjb2x1bW4sIHBhcmVudENvbHVtbikgPT4ge1xuICAgICAgICBsZXQgZGNvbFxuICAgICAgICBpZiAoY29sdW1uLmV4cGFuZGVyKSB7XG4gICAgICAgICAgZGNvbCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucHJvcHMuY29sdW1uLFxuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5leHBhbmRlckRlZmF1bHRzLFxuICAgICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkY29sID0ge1xuICAgICAgICAgICAgLi4udGhpcy5wcm9wcy5jb2x1bW4sXG4gICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW5zdXJlIG1pbldpZHRoIGlzIG5vdCBncmVhdGVyIHRoYW4gbWF4V2lkdGggaWYgc2V0XG4gICAgICAgIGlmIChkY29sLm1heFdpZHRoIDwgZGNvbC5taW5XaWR0aCkge1xuICAgICAgICAgIGRjb2wubWluV2lkdGggPSBkY29sLm1heFdpZHRoXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGFyZW50Q29sdW1uKSB7XG4gICAgICAgICAgZGNvbC5wYXJlbnRDb2x1bW4gPSBwYXJlbnRDb2x1bW5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpcnN0IGNoZWNrIGZvciBzdHJpbmcgYWNjZXNzb3JcbiAgICAgICAgaWYgKHR5cGVvZiBkY29sLmFjY2Vzc29yID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIGRjb2wuaWQgPSBkY29sLmlkIHx8IGRjb2wuYWNjZXNzb3JcbiAgICAgICAgICBjb25zdCBhY2Nlc3NvclN0cmluZyA9IGRjb2wuYWNjZXNzb3JcbiAgICAgICAgICBkY29sLmFjY2Vzc29yID0gcm93ID0+IF8uZ2V0KHJvdywgYWNjZXNzb3JTdHJpbmcpXG4gICAgICAgICAgcmV0dXJuIGRjb2xcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBmdW5jdGlvbmFsIGFjY2Vzc29yIChidXQgcmVxdWlyZSBhbiBJRClcbiAgICAgICAgaWYgKGRjb2wuYWNjZXNzb3IgJiYgIWRjb2wuaWQpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oZGNvbClcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnQSBjb2x1bW4gaWQgaXMgcmVxdWlyZWQgaWYgdXNpbmcgYSBub24tc3RyaW5nIGFjY2Vzc29yIGZvciBjb2x1bW4gYWJvdmUuJ1xuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZhbGwgYmFjayB0byBhbiB1bmRlZmluZWQgYWNjZXNzb3JcbiAgICAgICAgaWYgKCFkY29sLmFjY2Vzc29yKSB7XG4gICAgICAgICAgZGNvbC5hY2Nlc3NvciA9ICgpID0+IHVuZGVmaW5lZFxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGRjb2xcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWxsRGVjb3JhdGVkQ29sdW1ucyA9IFtdXG5cbiAgICAgIC8vIERlY29yYXRlIHRoZSBjb2x1bW5zXG4gICAgICBjb25zdCBkZWNvcmF0ZUFuZEFkZFRvQWxsID0gKGNvbHVtbiwgcGFyZW50Q29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlY29yYXRlZENvbHVtbiA9IG1ha2VEZWNvcmF0ZWRDb2x1bW4oY29sdW1uLCBwYXJlbnRDb2x1bW4pXG4gICAgICAgIGFsbERlY29yYXRlZENvbHVtbnMucHVzaChkZWNvcmF0ZWRDb2x1bW4pXG4gICAgICAgIHJldHVybiBkZWNvcmF0ZWRDb2x1bW5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVjb3JhdGVkQ29sdW1ucyA9IGNvbHVtbnNXaXRoRXhwYW5kZXIubWFwKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uY29sdW1ucykge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICBjb2x1bW5zOiBjb2x1bW4uY29sdW1ucy5tYXAoZCA9PiBkZWNvcmF0ZUFuZEFkZFRvQWxsKGQsIGNvbHVtbikpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVjb3JhdGVBbmRBZGRUb0FsbChjb2x1bW4pXG4gICAgICB9KVxuXG4gICAgICAvLyBCdWlsZCB0aGUgdmlzaWJsZSBjb2x1bW5zLCBoZWFkZXJzIGFuZCBmbGF0IGNvbHVtbiBsaXN0XG4gICAgICBsZXQgdmlzaWJsZUNvbHVtbnMgPSBkZWNvcmF0ZWRDb2x1bW5zLnNsaWNlKClcbiAgICAgIGxldCBhbGxWaXNpYmxlQ29sdW1ucyA9IFtdXG5cbiAgICAgIHZpc2libGVDb2x1bW5zID0gdmlzaWJsZUNvbHVtbnMubWFwKGNvbHVtbiA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4uY29sdW1ucykge1xuICAgICAgICAgIGNvbnN0IHZpc2libGVTdWJDb2x1bW5zID0gY29sdW1uLmNvbHVtbnMuZmlsdGVyKFxuICAgICAgICAgICAgZCA9PiAocGl2b3RCeS5pbmRleE9mKGQuaWQpID4gLTEgPyBmYWxzZSA6IF8uZ2V0Rmlyc3REZWZpbmVkKGQuc2hvdywgdHJ1ZSkpXG4gICAgICAgICAgKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgICBjb2x1bW5zOiB2aXNpYmxlU3ViQ29sdW1ucyxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbHVtblxuICAgICAgfSlcblxuICAgICAgdmlzaWJsZUNvbHVtbnMgPSB2aXNpYmxlQ29sdW1ucy5maWx0ZXIoXG4gICAgICAgIGNvbHVtbiA9PlxuICAgICAgICAgIGNvbHVtbi5jb2x1bW5zXG4gICAgICAgICAgICA/IGNvbHVtbi5jb2x1bW5zLmxlbmd0aFxuICAgICAgICAgICAgOiBwaXZvdEJ5LmluZGV4T2YoY29sdW1uLmlkKSA+IC0xXG4gICAgICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICAgICAgOiBfLmdldEZpcnN0RGVmaW5lZChjb2x1bW4uc2hvdywgdHJ1ZSlcbiAgICAgIClcblxuICAgICAgLy8gRmluZCBhbnkgY3VzdG9tIHBpdm90IGxvY2F0aW9uXG4gICAgICBjb25zdCBwaXZvdEluZGV4ID0gdmlzaWJsZUNvbHVtbnMuZmluZEluZGV4KGNvbCA9PiBjb2wucGl2b3QpXG5cbiAgICAgIC8vIEhhbmRsZSBQaXZvdCBDb2x1bW5zXG4gICAgICBpZiAocGl2b3RCeS5sZW5ndGgpIHtcbiAgICAgICAgLy8gUmV0cmlldmUgdGhlIHBpdm90IGNvbHVtbnMgaW4gdGhlIGNvcnJlY3QgcGl2b3Qgb3JkZXJcbiAgICAgICAgY29uc3QgcGl2b3RDb2x1bW5zID0gW11cbiAgICAgICAgcGl2b3RCeS5mb3JFYWNoKHBpdm90SUQgPT4ge1xuICAgICAgICAgIGNvbnN0IGZvdW5kID0gYWxsRGVjb3JhdGVkQ29sdW1ucy5maW5kKGQgPT4gZC5pZCA9PT0gcGl2b3RJRClcbiAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgIHBpdm90Q29sdW1ucy5wdXNoKGZvdW5kKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBQaXZvdFBhcmVudENvbHVtbiA9IHBpdm90Q29sdW1ucy5yZWR1Y2UoXG4gICAgICAgICAgKHByZXYsIGN1cnJlbnQpID0+IHByZXYgJiYgcHJldiA9PT0gY3VycmVudC5wYXJlbnRDb2x1bW4gJiYgY3VycmVudC5wYXJlbnRDb2x1bW4sXG4gICAgICAgICAgcGl2b3RDb2x1bW5zWzBdLnBhcmVudENvbHVtblxuICAgICAgICApXG5cbiAgICAgICAgbGV0IFBpdm90R3JvdXBIZWFkZXIgPSBoYXNIZWFkZXJHcm91cHMgJiYgUGl2b3RQYXJlbnRDb2x1bW4uSGVhZGVyXG4gICAgICAgIFBpdm90R3JvdXBIZWFkZXIgPSBQaXZvdEdyb3VwSGVhZGVyIHx8ICgoKSA9PiA8c3Ryb25nPlBpdm90ZWQ8L3N0cm9uZz4pXG5cbiAgICAgICAgbGV0IHBpdm90Q29sdW1uR3JvdXAgPSB7XG4gICAgICAgICAgSGVhZGVyOiBQaXZvdEdyb3VwSGVhZGVyLFxuICAgICAgICAgIGNvbHVtbnM6IHBpdm90Q29sdW1ucy5tYXAoY29sID0+ICh7XG4gICAgICAgICAgICAuLi50aGlzLnByb3BzLnBpdm90RGVmYXVsdHMsXG4gICAgICAgICAgICAuLi5jb2wsXG4gICAgICAgICAgICBwaXZvdGVkOiB0cnVlLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBsYWNlIHRoZSBwaXZvdENvbHVtbnMgYmFjayBpbnRvIHRoZSB2aXNpYmxlQ29sdW1uc1xuICAgICAgICBpZiAocGl2b3RJbmRleCA+PSAwKSB7XG4gICAgICAgICAgcGl2b3RDb2x1bW5Hcm91cCA9IHtcbiAgICAgICAgICAgIC4uLnZpc2libGVDb2x1bW5zW3Bpdm90SW5kZXhdLFxuICAgICAgICAgICAgLi4ucGl2b3RDb2x1bW5Hcm91cCxcbiAgICAgICAgICB9XG4gICAgICAgICAgdmlzaWJsZUNvbHVtbnMuc3BsaWNlKHBpdm90SW5kZXgsIDEsIHBpdm90Q29sdW1uR3JvdXApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmlzaWJsZUNvbHVtbnMudW5zaGlmdChwaXZvdENvbHVtbkdyb3VwKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEJ1aWxkIEhlYWRlciBHcm91cHNcbiAgICAgIGNvbnN0IGhlYWRlckdyb3VwcyA9IFtdXG4gICAgICBsZXQgY3VycmVudFNwYW4gPSBbXVxuXG4gICAgICAvLyBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGFkZCBhIGhlYWRlciBhbmQgcmVzZXQgdGhlIGN1cnJlbnRTcGFuXG4gICAgICBjb25zdCBhZGRIZWFkZXIgPSAoY29sdW1ucywgY29sdW1uKSA9PiB7XG4gICAgICAgIGhlYWRlckdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAuLi50aGlzLnByb3BzLmNvbHVtbixcbiAgICAgICAgICAuLi5jb2x1bW4sXG4gICAgICAgICAgY29sdW1ucyxcbiAgICAgICAgfSlcbiAgICAgICAgY3VycmVudFNwYW4gPSBbXVxuICAgICAgfVxuXG4gICAgICAvLyBCdWlsZCBmbGFzdCBsaXN0IG9mIGFsbFZpc2libGVDb2x1bW5zIGFuZCBIZWFkZXJHcm91cHNcbiAgICAgIHZpc2libGVDb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgaWYgKGNvbHVtbi5jb2x1bW5zKSB7XG4gICAgICAgICAgYWxsVmlzaWJsZUNvbHVtbnMgPSBhbGxWaXNpYmxlQ29sdW1ucy5jb25jYXQoY29sdW1uLmNvbHVtbnMpXG4gICAgICAgICAgaWYgKGN1cnJlbnRTcGFuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGFkZEhlYWRlcihjdXJyZW50U3BhbilcbiAgICAgICAgICB9XG4gICAgICAgICAgYWRkSGVhZGVyKGNvbHVtbi5jb2x1bW5zLCBjb2x1bW4pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgYWxsVmlzaWJsZUNvbHVtbnMucHVzaChjb2x1bW4pXG4gICAgICAgIGN1cnJlbnRTcGFuLnB1c2goY29sdW1uKVxuICAgICAgfSlcbiAgICAgIGlmIChoYXNIZWFkZXJHcm91cHMgJiYgY3VycmVudFNwYW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBhZGRIZWFkZXIoY3VycmVudFNwYW4pXG4gICAgICB9XG5cbiAgICAgIC8vIEFjY2VzcyB0aGUgZGF0YVxuICAgICAgY29uc3QgYWNjZXNzUm93ID0gKGQsIGksIGxldmVsID0gMCkgPT4ge1xuICAgICAgICBjb25zdCByb3cgPSB7XG4gICAgICAgICAgW29yaWdpbmFsS2V5XTogZCxcbiAgICAgICAgICBbaW5kZXhLZXldOiBpLFxuICAgICAgICAgIFtzdWJSb3dzS2V5XTogZFtzdWJSb3dzS2V5XSxcbiAgICAgICAgICBbbmVzdGluZ0xldmVsS2V5XTogbGV2ZWwsXG4gICAgICAgIH1cbiAgICAgICAgYWxsRGVjb3JhdGVkQ29sdW1ucy5mb3JFYWNoKGNvbHVtbiA9PiB7XG4gICAgICAgICAgaWYgKGNvbHVtbi5leHBhbmRlcikgcmV0dXJuXG4gICAgICAgICAgcm93W2NvbHVtbi5pZF0gPSBjb2x1bW4uYWNjZXNzb3IoZClcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKHJvd1tzdWJSb3dzS2V5XSkge1xuICAgICAgICAgIHJvd1tzdWJSb3dzS2V5XSA9IHJvd1tzdWJSb3dzS2V5XS5tYXAoKGQsIGkpID0+IGFjY2Vzc1JvdyhkLCBpLCBsZXZlbCArIDEpKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dcbiAgICAgIH1cblxuICAgICAgLy8gLy8gSWYgdGhlIGRhdGEgaGFzbid0IGNoYW5nZWQsIGp1c3QgdXNlIHRoZSBjYWNoZWQgZGF0YVxuICAgICAgbGV0IHJlc29sdmVkRGF0YSA9IHRoaXMucmVzb2x2ZWREYXRhXG4gICAgICAvLyBJZiB0aGUgZGF0YSBoYXMgY2hhbmdlZCwgcnVuIHRoZSBkYXRhIHJlc29sdmVyIGFuZCBjYWNoZSB0aGUgcmVzdWx0XG4gICAgICBpZiAoIXRoaXMucmVzb2x2ZWREYXRhIHx8IGRhdGFDaGFuZ2VkKSB7XG4gICAgICAgIHJlc29sdmVkRGF0YSA9IHJlc29sdmVEYXRhKGRhdGEpXG4gICAgICAgIHRoaXMucmVzb2x2ZWREYXRhID0gcmVzb2x2ZWREYXRhXG4gICAgICB9XG4gICAgICAvLyBVc2UgdGhlIHJlc29sdmVkIGRhdGFcbiAgICAgIHJlc29sdmVkRGF0YSA9IHJlc29sdmVkRGF0YS5tYXAoKGQsIGkpID0+IGFjY2Vzc1JvdyhkLCBpKSlcblxuICAgICAgLy8gVE9ETzogTWFrZSBpdCBwb3NzaWJsZSB0byBmYWJyaWNhdGUgbmVzdGVkIHJvd3Mgd2l0aG91dCBwaXZvdGluZ1xuICAgICAgY29uc3QgYWdncmVnYXRpbmdDb2x1bW5zID0gYWxsVmlzaWJsZUNvbHVtbnMuZmlsdGVyKGQgPT4gIWQuZXhwYW5kZXIgJiYgZC5hZ2dyZWdhdGUpXG5cbiAgICAgIC8vIElmIHBpdm90aW5nLCByZWN1cnNpdmVseSBncm91cCB0aGUgZGF0YVxuICAgICAgY29uc3QgYWdncmVnYXRlID0gcm93cyA9PiB7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uVmFsdWVzID0ge31cbiAgICAgICAgYWdncmVnYXRpbmdDb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZXMgPSByb3dzLm1hcChkID0+IGRbY29sdW1uLmlkXSlcbiAgICAgICAgICBhZ2dyZWdhdGlvblZhbHVlc1tjb2x1bW4uaWRdID0gY29sdW1uLmFnZ3JlZ2F0ZSh2YWx1ZXMsIHJvd3MpXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVybiBhZ2dyZWdhdGlvblZhbHVlc1xuICAgICAgfVxuICAgICAgaWYgKHBpdm90QnkubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwUmVjdXJzaXZlbHkgPSAocm93cywga2V5cywgaSA9IDApID0+IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBsYXN0IGxldmVsLCBqdXN0IHJldHVybiB0aGUgcm93c1xuICAgICAgICAgIGlmIChpID09PSBrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3NcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gR3JvdXAgdGhlIHJvd3MgdG9nZXRoZXIgZm9yIHRoaXMgbGV2ZWxcbiAgICAgICAgICBsZXQgZ3JvdXBlZFJvd3MgPSBPYmplY3QuZW50cmllcyhfLmdyb3VwQnkocm93cywga2V5c1tpXSkpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgW3Bpdm90SURLZXldOiBrZXlzW2ldLFxuICAgICAgICAgICAgW3Bpdm90VmFsS2V5XToga2V5LFxuICAgICAgICAgICAgW2tleXNbaV1dOiBrZXksXG4gICAgICAgICAgICBbc3ViUm93c0tleV06IHZhbHVlLFxuICAgICAgICAgICAgW25lc3RpbmdMZXZlbEtleV06IGksXG4gICAgICAgICAgICBbZ3JvdXBlZEJ5UGl2b3RLZXldOiB0cnVlLFxuICAgICAgICAgIH0pKVxuICAgICAgICAgIC8vIFJlY3Vyc2UgaW50byB0aGUgc3ViUm93c1xuICAgICAgICAgIGdyb3VwZWRSb3dzID0gZ3JvdXBlZFJvd3MubWFwKHJvd0dyb3VwID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN1YlJvd3MgPSBncm91cFJlY3Vyc2l2ZWx5KHJvd0dyb3VwW3N1YlJvd3NLZXldLCBrZXlzLCBpICsgMSlcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnJvd0dyb3VwLFxuICAgICAgICAgICAgICBbc3ViUm93c0tleV06IHN1YlJvd3MsXG4gICAgICAgICAgICAgIFthZ2dyZWdhdGVkS2V5XTogdHJ1ZSxcbiAgICAgICAgICAgICAgLi4uYWdncmVnYXRlKHN1YlJvd3MpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuIGdyb3VwZWRSb3dzXG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZWREYXRhID0gZ3JvdXBSZWN1cnNpdmVseShyZXNvbHZlZERhdGEsIHBpdm90QnkpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5ld1N0YXRlLFxuICAgICAgICByZXNvbHZlZERhdGEsXG4gICAgICAgIGFsbFZpc2libGVDb2x1bW5zLFxuICAgICAgICBoZWFkZXJHcm91cHMsXG4gICAgICAgIGFsbERlY29yYXRlZENvbHVtbnMsXG4gICAgICAgIGhhc0hlYWRlckdyb3VwcyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTb3J0ZWREYXRhIChyZXNvbHZlZFN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hbnVhbCxcbiAgICAgICAgc29ydGVkLFxuICAgICAgICBmaWx0ZXJlZCxcbiAgICAgICAgZGVmYXVsdEZpbHRlck1ldGhvZCxcbiAgICAgICAgcmVzb2x2ZWREYXRhLFxuICAgICAgICBhbGxWaXNpYmxlQ29sdW1ucyxcbiAgICAgICAgYWxsRGVjb3JhdGVkQ29sdW1ucyxcbiAgICAgIH0gPSByZXNvbHZlZFN0YXRlXG5cbiAgICAgIGNvbnN0IHNvcnRNZXRob2RzQnlDb2x1bW5JRCA9IHt9XG5cbiAgICAgIGFsbERlY29yYXRlZENvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuc29ydE1ldGhvZCkuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgICBzb3J0TWV0aG9kc0J5Q29sdW1uSURbY29sLmlkXSA9IGNvbC5zb3J0TWV0aG9kXG4gICAgICB9KVxuXG4gICAgICAvLyBSZXNvbHZlIHRoZSBkYXRhIGZyb20gZWl0aGVyIG1hbnVhbCBkYXRhIG9yIHNvcnRlZCBkYXRhXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3J0ZWREYXRhOiBtYW51YWxcbiAgICAgICAgICA/IHJlc29sdmVkRGF0YVxuICAgICAgICAgIDogdGhpcy5zb3J0RGF0YShcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRGF0YShyZXNvbHZlZERhdGEsIGZpbHRlcmVkLCBkZWZhdWx0RmlsdGVyTWV0aG9kLCBhbGxWaXNpYmxlQ29sdW1ucyksXG4gICAgICAgICAgICBzb3J0ZWQsXG4gICAgICAgICAgICBzb3J0TWV0aG9kc0J5Q29sdW1uSURcbiAgICAgICAgICApLFxuICAgICAgfVxuICAgIH1cblxuICAgIGZpcmVGZXRjaERhdGEgKCkge1xuICAgICAgdGhpcy5wcm9wcy5vbkZldGNoRGF0YSh0aGlzLmdldFJlc29sdmVkU3RhdGUoKSwgdGhpcylcbiAgICB9XG5cbiAgICBnZXRQcm9wT3JTdGF0ZSAoa2V5KSB7XG4gICAgICByZXR1cm4gXy5nZXRGaXJzdERlZmluZWQodGhpcy5wcm9wc1trZXldLCB0aGlzLnN0YXRlW2tleV0pXG4gICAgfVxuXG4gICAgZ2V0U3RhdGVPclByb3AgKGtleSkge1xuICAgICAgcmV0dXJuIF8uZ2V0Rmlyc3REZWZpbmVkKHRoaXMuc3RhdGVba2V5XSwgdGhpcy5wcm9wc1trZXldKVxuICAgIH1cblxuICAgIGZpbHRlckRhdGEgKGRhdGEsIGZpbHRlcmVkLCBkZWZhdWx0RmlsdGVyTWV0aG9kLCBhbGxWaXNpYmxlQ29sdW1ucykge1xuICAgICAgbGV0IGZpbHRlcmVkRGF0YSA9IGRhdGFcblxuICAgICAgaWYgKGZpbHRlcmVkLmxlbmd0aCkge1xuICAgICAgICBmaWx0ZXJlZERhdGEgPSBmaWx0ZXJlZC5yZWR1Y2UoKGZpbHRlcmVkU29GYXIsIG5leHRGaWx0ZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBjb2x1bW4gPSBhbGxWaXNpYmxlQ29sdW1ucy5maW5kKHggPT4geC5pZCA9PT0gbmV4dEZpbHRlci5pZClcblxuICAgICAgICAgIC8vIERvbid0IGZpbHRlciBoaWRkZW4gY29sdW1ucyBvciBjb2x1bW5zIHRoYXQgaGF2ZSBoYWQgdGhlaXIgZmlsdGVycyBkaXNhYmxlZFxuICAgICAgICAgIGlmICghY29sdW1uIHx8IGNvbHVtbi5maWx0ZXJhYmxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZpbHRlcmVkU29GYXJcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBmaWx0ZXJNZXRob2QgPSBjb2x1bW4uZmlsdGVyTWV0aG9kIHx8IGRlZmF1bHRGaWx0ZXJNZXRob2RcblxuICAgICAgICAgIC8vIElmICdmaWx0ZXJBbGwnIGlzIHNldCB0byB0cnVlLCBwYXNzIHRoZSBlbnRpcmUgZGF0YXNldCB0byB0aGUgZmlsdGVyIG1ldGhvZFxuICAgICAgICAgIGlmIChjb2x1bW4uZmlsdGVyQWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyTWV0aG9kKG5leHRGaWx0ZXIsIGZpbHRlcmVkU29GYXIsIGNvbHVtbilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZpbHRlcmVkU29GYXIuZmlsdGVyKHJvdyA9PiBmaWx0ZXJNZXRob2QobmV4dEZpbHRlciwgcm93LCBjb2x1bW4pKVxuICAgICAgICB9LCBmaWx0ZXJlZERhdGEpXG5cbiAgICAgICAgLy8gQXBwbHkgdGhlIGZpbHRlciB0byB0aGUgc3Vicm93cyBpZiB3ZSBhcmUgcGl2b3RpbmcsIGFuZCB0aGVuXG4gICAgICAgIC8vIGZpbHRlciBhbnkgcm93cyB3aXRob3V0IHN1YmNvbHVtbnMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdHJhbmdlIHRvIHNob3dcbiAgICAgICAgZmlsdGVyZWREYXRhID0gZmlsdGVyZWREYXRhXG4gICAgICAgICAgLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgaWYgKCFyb3dbdGhpcy5wcm9wcy5zdWJSb3dzS2V5XSkge1xuICAgICAgICAgICAgICByZXR1cm4gcm93XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5yb3csXG4gICAgICAgICAgICAgIFt0aGlzLnByb3BzLnN1YlJvd3NLZXldOiB0aGlzLmZpbHRlckRhdGEoXG4gICAgICAgICAgICAgICAgcm93W3RoaXMucHJvcHMuc3ViUm93c0tleV0sXG4gICAgICAgICAgICAgICAgZmlsdGVyZWQsXG4gICAgICAgICAgICAgICAgZGVmYXVsdEZpbHRlck1ldGhvZCxcbiAgICAgICAgICAgICAgICBhbGxWaXNpYmxlQ29sdW1uc1xuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcihyb3cgPT4ge1xuICAgICAgICAgICAgaWYgKCFyb3dbdGhpcy5wcm9wcy5zdWJSb3dzS2V5XSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJvd1t0aGlzLnByb3BzLnN1YlJvd3NLZXldLmxlbmd0aCA+IDBcbiAgICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmlsdGVyZWREYXRhXG4gICAgfVxuXG4gICAgc29ydERhdGEgKGRhdGEsIHNvcnRlZCwgc29ydE1ldGhvZHNCeUNvbHVtbklEID0ge30pIHtcbiAgICAgIGlmICghc29ydGVkLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gZGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gKHRoaXMucHJvcHMub3JkZXJCeU1ldGhvZCB8fCBfLm9yZGVyQnkpKFxuICAgICAgICBkYXRhLFxuICAgICAgICBzb3J0ZWQubWFwKHNvcnQgPT4ge1xuICAgICAgICAgIC8vIFN1cHBvcnQgY3VzdG9tIHNvcnRpbmcgbWV0aG9kcyBmb3IgZWFjaCBjb2x1bW5cbiAgICAgICAgICBpZiAoc29ydE1ldGhvZHNCeUNvbHVtbklEW3NvcnQuaWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gKGEsIGIpID0+IHNvcnRNZXRob2RzQnlDb2x1bW5JRFtzb3J0LmlkXShhW3NvcnQuaWRdLCBiW3NvcnQuaWRdLCBzb3J0LmRlc2MpXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAoYSwgYikgPT4gdGhpcy5wcm9wcy5kZWZhdWx0U29ydE1ldGhvZChhW3NvcnQuaWRdLCBiW3NvcnQuaWRdLCBzb3J0LmRlc2MpXG4gICAgICAgIH0pLFxuICAgICAgICBzb3J0ZWQubWFwKGQgPT4gIWQuZGVzYyksXG4gICAgICAgIHRoaXMucHJvcHMuaW5kZXhLZXlcbiAgICAgIClcblxuICAgICAgc29ydGVkRGF0YS5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIGlmICghcm93W3RoaXMucHJvcHMuc3ViUm93c0tleV0pIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICByb3dbdGhpcy5wcm9wcy5zdWJSb3dzS2V5XSA9IHRoaXMuc29ydERhdGEoXG4gICAgICAgICAgcm93W3RoaXMucHJvcHMuc3ViUm93c0tleV0sXG4gICAgICAgICAgc29ydGVkLFxuICAgICAgICAgIHNvcnRNZXRob2RzQnlDb2x1bW5JRFxuICAgICAgICApXG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gc29ydGVkRGF0YVxuICAgIH1cblxuICAgIGdldE1pblJvd3MgKCkge1xuICAgICAgcmV0dXJuIF8uZ2V0Rmlyc3REZWZpbmVkKHRoaXMucHJvcHMubWluUm93cywgdGhpcy5nZXRTdGF0ZU9yUHJvcCgncGFnZVNpemUnKSlcbiAgICB9XG5cbiAgICAvLyBVc2VyIGFjdGlvbnNcbiAgICBvblBhZ2VDaGFuZ2UgKHBhZ2UpIHtcbiAgICAgIGNvbnN0IHsgb25QYWdlQ2hhbmdlLCBjb2xsYXBzZU9uUGFnZUNoYW5nZSB9ID0gdGhpcy5wcm9wc1xuXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgcGFnZSB9XG4gICAgICBpZiAoY29sbGFwc2VPblBhZ2VDaGFuZ2UpIHtcbiAgICAgICAgbmV3U3RhdGUuZXhwYW5kZWQgPSB7fVxuICAgICAgfVxuICAgICAgdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKG5ld1N0YXRlLCAoKSA9PiBvblBhZ2VDaGFuZ2UgJiYgb25QYWdlQ2hhbmdlKHBhZ2UpKVxuICAgIH1cblxuICAgIG9uUGFnZVNpemVDaGFuZ2UgKG5ld1BhZ2VTaXplKSB7XG4gICAgICBjb25zdCB7IG9uUGFnZVNpemVDaGFuZ2UgfSA9IHRoaXMucHJvcHNcbiAgICAgIGNvbnN0IHsgcGFnZVNpemUsIHBhZ2UgfSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpXG5cbiAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgcGFnZSB0byBkaXNwbGF5XG4gICAgICBjb25zdCBjdXJyZW50Um93ID0gcGFnZVNpemUgKiBwYWdlXG4gICAgICBjb25zdCBuZXdQYWdlID0gTWF0aC5mbG9vcihjdXJyZW50Um93IC8gbmV3UGFnZVNpemUpXG5cbiAgICAgIHRoaXMuc2V0U3RhdGVXaXRoRGF0YShcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VTaXplOiBuZXdQYWdlU2l6ZSxcbiAgICAgICAgICBwYWdlOiBuZXdQYWdlLFxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiBvblBhZ2VTaXplQ2hhbmdlICYmIG9uUGFnZVNpemVDaGFuZ2UobmV3UGFnZVNpemUsIG5ld1BhZ2UpXG4gICAgICApXG4gICAgfVxuXG4gICAgc29ydENvbHVtbiAoY29sdW1uLCBhZGRpdGl2ZSkge1xuICAgICAgY29uc3QgeyBzb3J0ZWQsIHNraXBOZXh0U29ydCwgZGVmYXVsdFNvcnREZXNjIH0gPSB0aGlzLmdldFJlc29sdmVkU3RhdGUoKVxuXG4gICAgICBjb25zdCBmaXJzdFNvcnREaXJlY3Rpb24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29sdW1uLCAnZGVmYXVsdFNvcnREZXNjJylcbiAgICAgICAgPyBjb2x1bW4uZGVmYXVsdFNvcnREZXNjXG4gICAgICAgIDogZGVmYXVsdFNvcnREZXNjXG4gICAgICBjb25zdCBzZWNvbmRTb3J0RGlyZWN0aW9uID0gIWZpcnN0U29ydERpcmVjdGlvblxuXG4gICAgICAvLyB3ZSBjYW4ndCBzdG9wIGV2ZW50IHByb3BhZ2F0aW9uIGZyb20gdGhlIGNvbHVtbiByZXNpemUgbW92ZSBoYW5kbGVyc1xuICAgICAgLy8gYXR0YWNoZWQgdG8gdGhlIGRvY3VtZW50IGJlY2F1c2Ugb2YgcmVhY3QncyBzeW50aGV0aWMgZXZlbnRzXG4gICAgICAvLyBzbyB3ZSBoYXZlIHRvIHByZXZlbnQgdGhlIHNvcnQgZnVuY3Rpb24gZnJvbSBhY3R1YWxseSBzb3J0aW5nXG4gICAgICAvLyBpZiB3ZSBjbGljayBvbiB0aGUgY29sdW1uIHJlc2l6ZSBlbGVtZW50IHdpdGhpbiBhIGhlYWRlci5cbiAgICAgIGlmIChza2lwTmV4dFNvcnQpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKHtcbiAgICAgICAgICBza2lwTmV4dFNvcnQ6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBvblNvcnRlZENoYW5nZSB9ID0gdGhpcy5wcm9wc1xuXG4gICAgICBsZXQgbmV3U29ydGVkID0gXy5jbG9uZShzb3J0ZWQgfHwgW10pLm1hcChkID0+IHtcbiAgICAgICAgZC5kZXNjID0gXy5pc1NvcnRpbmdEZXNjKGQpXG4gICAgICAgIHJldHVybiBkXG4gICAgICB9KVxuICAgICAgaWYgKCFfLmlzQXJyYXkoY29sdW1uKSkge1xuICAgICAgICAvLyBTaW5nbGUtU29ydFxuICAgICAgICBjb25zdCBleGlzdGluZ0luZGV4ID0gbmV3U29ydGVkLmZpbmRJbmRleChkID0+IGQuaWQgPT09IGNvbHVtbi5pZClcbiAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggPiAtMSkge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gbmV3U29ydGVkW2V4aXN0aW5nSW5kZXhdXG4gICAgICAgICAgaWYgKGV4aXN0aW5nLmRlc2MgPT09IHNlY29uZFNvcnREaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmIChhZGRpdGl2ZSkge1xuICAgICAgICAgICAgICBuZXdTb3J0ZWQuc3BsaWNlKGV4aXN0aW5nSW5kZXgsIDEpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBleGlzdGluZy5kZXNjID0gZmlyc3RTb3J0RGlyZWN0aW9uXG4gICAgICAgICAgICAgIG5ld1NvcnRlZCA9IFtleGlzdGluZ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhpc3RpbmcuZGVzYyA9IHNlY29uZFNvcnREaXJlY3Rpb25cbiAgICAgICAgICAgIGlmICghYWRkaXRpdmUpIHtcbiAgICAgICAgICAgICAgbmV3U29ydGVkID0gW2V4aXN0aW5nXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhZGRpdGl2ZSkge1xuICAgICAgICAgIG5ld1NvcnRlZC5wdXNoKHtcbiAgICAgICAgICAgIGlkOiBjb2x1bW4uaWQsXG4gICAgICAgICAgICBkZXNjOiBmaXJzdFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdTb3J0ZWQgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBjb2x1bW4uaWQsXG4gICAgICAgICAgICAgIGRlc2M6IGZpcnN0U29ydERpcmVjdGlvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNdWx0aS1Tb3J0XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBuZXdTb3J0ZWQuZmluZEluZGV4KGQgPT4gZC5pZCA9PT0gY29sdW1uWzBdLmlkKVxuICAgICAgICAvLyBFeGlzdGluZyBTb3J0ZWQgQ29sdW1uXG4gICAgICAgIGlmIChleGlzdGluZ0luZGV4ID4gLTEpIHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZyA9IG5ld1NvcnRlZFtleGlzdGluZ0luZGV4XVxuICAgICAgICAgIGlmIChleGlzdGluZy5kZXNjID09PSBzZWNvbmRTb3J0RGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoYWRkaXRpdmUpIHtcbiAgICAgICAgICAgICAgbmV3U29ydGVkLnNwbGljZShleGlzdGluZ0luZGV4LCBjb2x1bW4ubGVuZ3RoKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICBuZXdTb3J0ZWRbZXhpc3RpbmdJbmRleCArIGldLmRlc2MgPSBmaXJzdFNvcnREaXJlY3Rpb25cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uLmZvckVhY2goKGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgbmV3U29ydGVkW2V4aXN0aW5nSW5kZXggKyBpXS5kZXNjID0gc2Vjb25kU29ydERpcmVjdGlvblxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFhZGRpdGl2ZSkge1xuICAgICAgICAgICAgbmV3U29ydGVkID0gbmV3U29ydGVkLnNsaWNlKGV4aXN0aW5nSW5kZXgsIGNvbHVtbi5sZW5ndGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIE5ldyBTb3J0IENvbHVtblxuICAgICAgICB9IGVsc2UgaWYgKGFkZGl0aXZlKSB7XG4gICAgICAgICAgbmV3U29ydGVkID0gbmV3U29ydGVkLmNvbmNhdChcbiAgICAgICAgICAgIGNvbHVtbi5tYXAoZCA9PiAoe1xuICAgICAgICAgICAgICBpZDogZC5pZCxcbiAgICAgICAgICAgICAgZGVzYzogZmlyc3RTb3J0RGlyZWN0aW9uLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1NvcnRlZCA9IGNvbHVtbi5tYXAoZCA9PiAoe1xuICAgICAgICAgICAgaWQ6IGQuaWQsXG4gICAgICAgICAgICBkZXNjOiBmaXJzdFNvcnREaXJlY3Rpb24sXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZTogKCFzb3J0ZWQubGVuZ3RoICYmIG5ld1NvcnRlZC5sZW5ndGgpIHx8ICFhZGRpdGl2ZSA/IDAgOiB0aGlzLnN0YXRlLnBhZ2UsXG4gICAgICAgICAgc29ydGVkOiBuZXdTb3J0ZWQsXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IG9uU29ydGVkQ2hhbmdlICYmIG9uU29ydGVkQ2hhbmdlKG5ld1NvcnRlZCwgY29sdW1uLCBhZGRpdGl2ZSlcbiAgICAgIClcbiAgICB9XG5cbiAgICBmaWx0ZXJDb2x1bW4gKGNvbHVtbiwgdmFsdWUpIHtcbiAgICAgIGNvbnN0IHsgZmlsdGVyZWQgfSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpXG4gICAgICBjb25zdCB7IG9uRmlsdGVyZWRDaGFuZ2UgfSA9IHRoaXMucHJvcHNcblxuICAgICAgLy8gUmVtb3ZlIG9sZCBmaWx0ZXIgZmlyc3QgaWYgaXQgZXhpc3RzXG4gICAgICBjb25zdCBuZXdGaWx0ZXJpbmcgPSAoZmlsdGVyZWQgfHwgW10pLmZpbHRlcih4ID0+IHguaWQgIT09IGNvbHVtbi5pZClcblxuICAgICAgaWYgKHZhbHVlICE9PSAnJykge1xuICAgICAgICBuZXdGaWx0ZXJpbmcucHVzaCh7XG4gICAgICAgICAgaWQ6IGNvbHVtbi5pZCxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRTdGF0ZVdpdGhEYXRhKFxuICAgICAgICB7XG4gICAgICAgICAgZmlsdGVyZWQ6IG5ld0ZpbHRlcmluZyxcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4gb25GaWx0ZXJlZENoYW5nZSAmJiBvbkZpbHRlcmVkQ2hhbmdlKG5ld0ZpbHRlcmluZywgY29sdW1uLCB2YWx1ZSlcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXNpemVDb2x1bW5TdGFydCAoZXZlbnQsIGNvbHVtbiwgaXNUb3VjaCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGhcblxuICAgICAgbGV0IHBhZ2VYXG4gICAgICBpZiAoaXNUb3VjaCkge1xuICAgICAgICBwYWdlWCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYWdlWCA9IGV2ZW50LnBhZ2VYXG4gICAgICB9XG5cbiAgICAgIHRoaXMudHJhcEV2ZW50cyA9IHRydWVcbiAgICAgIHRoaXMuc2V0U3RhdGVXaXRoRGF0YShcbiAgICAgICAge1xuICAgICAgICAgIGN1cnJlbnRseVJlc2l6aW5nOiB7XG4gICAgICAgICAgICBpZDogY29sdW1uLmlkLFxuICAgICAgICAgICAgc3RhcnRYOiBwYWdlWCxcbiAgICAgICAgICAgIHBhcmVudFdpZHRoLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICBpZiAoaXNUb3VjaCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcpXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIHRoaXMucmVzaXplQ29sdW1uRW5kKVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLnJlc2l6ZUNvbHVtbkVuZClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcpXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5yZXNpemVDb2x1bW5FbmQpXG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5yZXNpemVDb2x1bW5FbmQpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuXG4gICAgcmVzaXplQ29sdW1uTW92aW5nIChldmVudCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIGNvbnN0IHsgb25SZXNpemVkQ2hhbmdlIH0gPSB0aGlzLnByb3BzXG4gICAgICBjb25zdCB7IHJlc2l6ZWQsIGN1cnJlbnRseVJlc2l6aW5nIH0gPSB0aGlzLmdldFJlc29sdmVkU3RhdGUoKVxuXG4gICAgICAvLyBEZWxldGUgb2xkIHZhbHVlXG4gICAgICBjb25zdCBuZXdSZXNpemVkID0gcmVzaXplZC5maWx0ZXIoeCA9PiB4LmlkICE9PSBjdXJyZW50bHlSZXNpemluZy5pZClcblxuICAgICAgbGV0IHBhZ2VYXG5cbiAgICAgIGlmIChldmVudC50eXBlID09PSAndG91Y2htb3ZlJykge1xuICAgICAgICBwYWdlWCA9IGV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYXG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09ICdtb3VzZW1vdmUnKSB7XG4gICAgICAgIHBhZ2VYID0gZXZlbnQucGFnZVhcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHRoZSBtaW4gc2l6ZSB0byAxMCB0byBhY2NvdW50IGZvciBtYXJnaW4gYW5kIGJvcmRlciBvciBlbHNlIHRoZVxuICAgICAgLy8gZ3JvdXAgaGVhZGVycyBkb24ndCBsaW5lIHVwIGNvcnJlY3RseVxuICAgICAgY29uc3QgbmV3V2lkdGggPSBNYXRoLm1heChcbiAgICAgICAgY3VycmVudGx5UmVzaXppbmcucGFyZW50V2lkdGggKyBwYWdlWCAtIGN1cnJlbnRseVJlc2l6aW5nLnN0YXJ0WCxcbiAgICAgICAgMTFcbiAgICAgIClcblxuICAgICAgbmV3UmVzaXplZC5wdXNoKHtcbiAgICAgICAgaWQ6IGN1cnJlbnRseVJlc2l6aW5nLmlkLFxuICAgICAgICB2YWx1ZTogbmV3V2lkdGgsXG4gICAgICB9KVxuXG4gICAgICB0aGlzLnNldFN0YXRlV2l0aERhdGEoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNpemVkOiBuZXdSZXNpemVkLFxuICAgICAgICB9LFxuICAgICAgICAoKSA9PiBvblJlc2l6ZWRDaGFuZ2UgJiYgb25SZXNpemVkQ2hhbmdlKG5ld1Jlc2l6ZWQsIGV2ZW50KVxuICAgICAgKVxuICAgIH1cblxuICAgIHJlc2l6ZUNvbHVtbkVuZCAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICBjb25zdCBpc1RvdWNoID0gZXZlbnQudHlwZSA9PT0gJ3RvdWNoZW5kJyB8fCBldmVudC50eXBlID09PSAndG91Y2hjYW5jZWwnXG5cbiAgICAgIGlmIChpc1RvdWNoKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMucmVzaXplQ29sdW1uTW92aW5nKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGNhbmNlbCcsIHRoaXMucmVzaXplQ29sdW1uRW5kKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIHRoaXMucmVzaXplQ29sdW1uRW5kKVxuICAgICAgfVxuXG4gICAgICAvLyBJZiBpdHMgYSB0b3VjaCBldmVudCBjbGVhciB0aGUgbW91c2Ugb25lJ3MgYXMgd2VsbCBiZWNhdXNlIHNvbWV0aW1lc1xuICAgICAgLy8gdGhlIG1vdXNlRG93biBldmVudCBnZXRzIGNhbGxlZCBhcyB3ZWxsLCBidXQgdGhlIG1vdXNlVXAgZXZlbnQgZG9lc24ndFxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5yZXNpemVDb2x1bW5Nb3ZpbmcpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5yZXNpemVDb2x1bW5FbmQpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5yZXNpemVDb2x1bW5FbmQpXG5cbiAgICAgIC8vIFRoZSB0b3VjaCBldmVudHMgZG9uJ3QgcHJvcGFnYXRlIHVwIHRvIHRoZSBzb3J0aW5nJ3Mgb25Nb3VzZURvd24gZXZlbnQgc29cbiAgICAgIC8vIG5vIG5lZWQgdG8gcHJldmVudCBpdCBmcm9tIGhhcHBlbmluZyBvciBlbHNlIHRoZSBmaXJzdCBjbGljayBhZnRlciBhIHRvdWNoXG4gICAgICAvLyBldmVudCByZXNpemUgd2lsbCBub3Qgc29ydCB0aGUgY29sdW1uLlxuICAgICAgaWYgKCFpc1RvdWNoKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGVXaXRoRGF0YSh7XG4gICAgICAgICAgc2tpcE5leHRTb3J0OiB0cnVlLFxuICAgICAgICAgIGN1cnJlbnRseVJlc2l6aW5nOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbiJdfQ==","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\n//\n// import _ from './utils'\n\nvar defaultButton = function defaultButton(props) {\n return React.createElement(\n 'button',\n _extends({ type: 'button' }, props, { className: '-btn' }),\n props.children\n );\n};\n\nvar ReactTablePagination = function (_Component) {\n _inherits(ReactTablePagination, _Component);\n\n function ReactTablePagination(props) {\n _classCallCheck(this, ReactTablePagination);\n\n var _this = _possibleConstructorReturn(this, (ReactTablePagination.__proto__ || Object.getPrototypeOf(ReactTablePagination)).call(this));\n\n _this.getSafePage = _this.getSafePage.bind(_this);\n _this.changePage = _this.changePage.bind(_this);\n _this.applyPage = _this.applyPage.bind(_this);\n\n _this.state = {\n page: props.page\n };\n return _this;\n }\n\n _createClass(ReactTablePagination, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.setState({ page: nextProps.page });\n }\n }, {\n key: 'getSafePage',\n value: function getSafePage(page) {\n if (Number.isNaN(page)) {\n page = this.props.page;\n }\n return Math.min(Math.max(page, 0), this.props.pages - 1);\n }\n }, {\n key: 'changePage',\n value: function changePage(page) {\n page = this.getSafePage(page);\n this.setState({ page: page });\n if (this.props.page !== page) {\n this.props.onPageChange(page);\n }\n }\n }, {\n key: 'applyPage',\n value: function applyPage(e) {\n if (e) {\n e.preventDefault();\n }\n var page = this.state.page;\n this.changePage(page === '' ? this.props.page : page);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n pages = _props.pages,\n page = _props.page,\n showPageSizeOptions = _props.showPageSizeOptions,\n pageSizeOptions = _props.pageSizeOptions,\n pageSize = _props.pageSize,\n showPageJump = _props.showPageJump,\n canPrevious = _props.canPrevious,\n canNext = _props.canNext,\n onPageSizeChange = _props.onPageSizeChange,\n className = _props.className,\n _props$PreviousCompon = _props.PreviousComponent,\n PreviousComponent = _props$PreviousCompon === undefined ? defaultButton : _props$PreviousCompon,\n _props$NextComponent = _props.NextComponent,\n NextComponent = _props$NextComponent === undefined ? defaultButton : _props$NextComponent;\n\n\n return React.createElement(\n 'div',\n { className: classnames(className, '-pagination'), style: this.props.style },\n React.createElement(\n 'div',\n { className: '-previous' },\n React.createElement(\n PreviousComponent,\n {\n onClick: function onClick() {\n if (!canPrevious) return;\n _this2.changePage(page - 1);\n },\n disabled: !canPrevious\n },\n this.props.previousText\n )\n ),\n React.createElement(\n 'div',\n { className: '-center' },\n React.createElement(\n 'span',\n { className: '-pageInfo' },\n this.props.pageText,\n ' ',\n showPageJump ? React.createElement(\n 'div',\n { className: '-pageJump' },\n React.createElement('input', {\n type: this.state.page === '' ? 'text' : 'number',\n onChange: function onChange(e) {\n var val = e.target.value;\n var page = val - 1;\n if (val === '') {\n return _this2.setState({ page: val });\n }\n _this2.setState({ page: _this2.getSafePage(page) });\n },\n value: this.state.page === '' ? '' : this.state.page + 1,\n onBlur: this.applyPage,\n onKeyPress: function onKeyPress(e) {\n if (e.which === 13 || e.keyCode === 13) {\n _this2.applyPage();\n }\n }\n })\n ) : React.createElement(\n 'span',\n { className: '-currentPage' },\n page + 1\n ),\n ' ',\n this.props.ofText,\n ' ',\n React.createElement(\n 'span',\n { className: '-totalPages' },\n pages || 1\n )\n ),\n showPageSizeOptions && React.createElement(\n 'span',\n { className: 'select-wrap -pageSizeOptions' },\n React.createElement(\n 'select',\n { onChange: function onChange(e) {\n return onPageSizeChange(Number(e.target.value));\n }, value: pageSize },\n pageSizeOptions.map(function (option, i) {\n return (\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\n 'option',\n { key: i, value: option },\n option,\n ' ',\n _this2.props.rowsText\n )\n );\n })\n )\n )\n ),\n React.createElement(\n 'div',\n { className: '-next' },\n React.createElement(\n NextComponent,\n {\n onClick: function onClick() {\n if (!canNext) return;\n _this2.changePage(page + 1);\n },\n disabled: !canNext\n },\n this.props.nextText\n )\n )\n );\n }\n }]);\n\n return ReactTablePagination;\n}(Component);\n\nexport default ReactTablePagination;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYWdpbmF0aW9uLmpzIl0sIm5hbWVzIjpbIlJlYWN0IiwiQ29tcG9uZW50IiwiY2xhc3NuYW1lcyIsImRlZmF1bHRCdXR0b24iLCJwcm9wcyIsImNoaWxkcmVuIiwiUmVhY3RUYWJsZVBhZ2luYXRpb24iLCJnZXRTYWZlUGFnZSIsImJpbmQiLCJjaGFuZ2VQYWdlIiwiYXBwbHlQYWdlIiwic3RhdGUiLCJwYWdlIiwibmV4dFByb3BzIiwic2V0U3RhdGUiLCJOdW1iZXIiLCJpc05hTiIsIk1hdGgiLCJtaW4iLCJtYXgiLCJwYWdlcyIsIm9uUGFnZUNoYW5nZSIsImUiLCJwcmV2ZW50RGVmYXVsdCIsInNob3dQYWdlU2l6ZU9wdGlvbnMiLCJwYWdlU2l6ZU9wdGlvbnMiLCJwYWdlU2l6ZSIsInNob3dQYWdlSnVtcCIsImNhblByZXZpb3VzIiwiY2FuTmV4dCIsIm9uUGFnZVNpemVDaGFuZ2UiLCJjbGFzc05hbWUiLCJQcmV2aW91c0NvbXBvbmVudCIsIk5leHRDb21wb25lbnQiLCJzdHlsZSIsInByZXZpb3VzVGV4dCIsInBhZ2VUZXh0IiwidmFsIiwidGFyZ2V0IiwidmFsdWUiLCJ3aGljaCIsImtleUNvZGUiLCJvZlRleHQiLCJtYXAiLCJvcHRpb24iLCJpIiwicm93c1RleHQiLCJuZXh0VGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixZQUF2QjtBQUNBO0FBQ0E7O0FBRUEsSUFBTUMsZ0JBQWdCLFNBQWhCQSxhQUFnQjtBQUFBLFNBQ3BCO0FBQUE7QUFBQSxlQUFRLE1BQUssUUFBYixJQUEwQkMsS0FBMUIsSUFBaUMsV0FBVSxNQUEzQztBQUNHQSxVQUFNQztBQURULEdBRG9CO0FBQUEsQ0FBdEI7O0lBTXFCQyxvQjs7O0FBQ25CLGdDQUFhRixLQUFiLEVBQW9CO0FBQUE7O0FBQUE7O0FBR2xCLFVBQUtHLFdBQUwsR0FBbUIs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QUFBLHNCQUFRLEtBQUtBLENBQWIsRUFBZ0IsT0FBT0QsTUFBdkI7QUFDR0EsMEJBREg7QUFBQTtBQUNZLDJCQUFLeEMsS0FBTCxDQUFXMEM7QUFEdkI7QUFGbUI7QUFBQSxlQUFwQjtBQURIO0FBREY7QUE5QkosU0FaRjtBQXNERTtBQUFBO0FBQUEsWUFBSyxXQUFVLE9BQWY7QUFDRTtBQUFDLHlCQUFEO0FBQUE7QUFDRSx1QkFBUyxtQkFBTTtBQUNiLG9CQUFJLENBQUNqQixPQUFMLEVBQWM7QUFDZCx1QkFBS3BCLFVBQUwsQ0FBZ0JHLE9BQU8sQ0FBdkI7QUFDRCxlQUpIO0FBS0Usd0JBQVUsQ0FBQ2lCO0FBTGI7QUFPRyxpQkFBS3pCLEtBQUwsQ0FBVzJDO0FBUGQ7QUFERjtBQXRERixPQURGO0FBb0VEOzs7O0VBOUgrQzlDLFM7O2VBQTdCSyxvQiIsImZpbGUiOiJwYWdpbmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbi8vXG4vLyBpbXBvcnQgXyBmcm9tICcuL3V0aWxzJ1xuXG5jb25zdCBkZWZhdWx0QnV0dG9uID0gcHJvcHMgPT4gKFxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB7Li4ucHJvcHN9IGNsYXNzTmFtZT1cIi1idG5cIj5cbiAgICB7cHJvcHMuY2hpbGRyZW59XG4gIDwvYnV0dG9uPlxuKVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFjdFRhYmxlUGFnaW5hdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yIChwcm9wcykge1xuICAgIHN1cGVyKClcblxuICAgIHRoaXMuZ2V0U2FmZVBhZ2UgPSB0aGlzLmdldFNhZmVQYWdlLmJpbmQodGhpcylcbiAgICB0aGlzLmNoYW5nZVBhZ2UgPSB0aGlzLmNoYW5nZVBhZ2UuYmluZCh0aGlzKVxuICAgIHRoaXMuYXBwbHlQYWdlID0gdGhpcy5hcHBseVBhZ2UuYmluZCh0aGlzKVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHBhZ2U6IHByb3BzLnBhZ2UsXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyAobmV4dFByb3BzKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHBhZ2U6IG5leHRQcm9wcy5wYWdlIH0pXG4gIH1cblxuICBnZXRTYWZlUGFnZSAocGFnZSkge1xuICAgIGlmIChOdW1iZXIuaXNOYU4ocGFnZSkpIHtcbiAgICAgIHBhZ2UgPSB0aGlzLnByb3BzLnBhZ2VcbiAgICB9XG4gICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHBhZ2UsIDApLCB0aGlzLnByb3BzLnBhZ2VzIC0gMSlcbiAgfVxuXG4gIGNoYW5nZVBhZ2UgKHBhZ2UpIHtcbiAgICBwYWdlID0gdGhpcy5nZXRTYWZlUGFnZShwYWdlKVxuICAgIHRoaXMuc2V0U3RhdGUoeyBwYWdlIH0pXG4gICAgaWYgKHRoaXMucHJvcHMucGFnZSAhPT0gcGFnZSkge1xuICAgICAgdGhpcy5wcm9wcy5vblBhZ2VDaGFuZ2UocGFnZSlcbiAgICB9XG4gIH1cblxuICBhcHBseVBhZ2UgKGUpIHtcbiAgICBpZiAoZSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfVxuICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnN0YXRlLnBhZ2VcbiAgICB0aGlzLmNoYW5nZVBhZ2UocGFnZSA9PT0gJycgPyB0aGlzLnByb3BzLnBhZ2UgOiBwYWdlKVxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCB7XG4gICAgICAvLyBDb21wdXRlZFxuICAgICAgcGFnZXMsXG4gICAgICAvLyBQcm9wc1xuICAgICAgcGFnZSxcbiAgICAgIHNob3dQYWdlU2l6ZU9wdGlvbnMsXG4gICAgICBwYWdlU2l6ZU9wdGlvbnMsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIHNob3dQYWdlSnVtcCxcbiAgICAgIGNhblByZXZpb3VzLFxuICAgICAgY2FuTmV4dCxcbiAgICAgIG9uUGFnZVNpemVDaGFuZ2UsXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBQcmV2aW91c0NvbXBvbmVudCA9IGRlZmF1bHRCdXR0b24sXG4gICAgICBOZXh0Q29tcG9uZW50ID0gZGVmYXVsdEJ1dHRvbixcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzTmFtZSwgJy1wYWdpbmF0aW9uJyl9IHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCItcHJldmlvdXNcIj5cbiAgICAgICAgICA8UHJldmlvdXNDb21wb25lbnRcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjYW5QcmV2aW91cykgcmV0dXJuXG4gICAgICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZShwYWdlIC0gMSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWNhblByZXZpb3VzfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnByZXZpb3VzVGV4dH1cbiAgICAgICAgICA8L1ByZXZpb3VzQ29tcG9uZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCItY2VudGVyXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiLXBhZ2VJbmZvXCI+XG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGV4dH17JyAnfVxuICAgICAgICAgICAge3Nob3dQYWdlSnVtcCA/IChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCItcGFnZUp1bXBcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9e3RoaXMuc3RhdGUucGFnZSA9PT0gJycgPyAndGV4dCcgOiAnbnVtYmVyJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmFsID0gZS50YXJnZXQudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IHZhbCAtIDFcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7IHBhZ2U6IHZhbCB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBwYWdlOiB0aGlzLmdldFNhZmVQYWdlKHBhZ2UpIH0pXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RoaXMuc3RhdGUucGFnZSA9PT0gJycgPyAnJyA6IHRoaXMuc3RhdGUucGFnZSArIDF9XG4gICAgICAgICAgICAgICAgICBvbkJsdXI9e3RoaXMuYXBwbHlQYWdlfVxuICAgICAgICAgICAgICAgICAgb25LZXlQcmVzcz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLndoaWNoID09PSAxMyB8fCBlLmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBhZ2UoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiLWN1cnJlbnRQYWdlXCI+e3BhZ2UgKyAxfTwvc3Bhbj5cbiAgICAgICAgICAgICl9eycgJ31cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLm9mVGV4dH0gPHNwYW4gY2xhc3NOYW1lPVwiLXRvdGFsUGFnZXNcIj57cGFnZXMgfHwgMX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIHtzaG93UGFnZVNpemVPcHRpb25zICYmIChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInNlbGVjdC13cmFwIC1wYWdlU2l6ZU9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgPHNlbGVjdCBvbkNoYW5nZT17ZSA9PiBvblBhZ2VTaXplQ2hhbmdlKE51bWJlcihlLnRhcmdldC52YWx1ZSkpfSB2YWx1ZT17cGFnZVNpemV9PlxuICAgICAgICAgICAgICAgIHtwYWdlU2l6ZU9wdGlvbnMubWFwKChvcHRpb24sIGkpID0+IChcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtpfSB2YWx1ZT17b3B0aW9ufT5cbiAgICAgICAgICAgICAgICAgICAge29wdGlvbn0ge3RoaXMucHJvcHMucm93c1RleHR9XG4gICAgICAgICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiLW5leHRcIj5cbiAgICAgICAgICA8TmV4dENvbXBvbmVudFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNhbk5leHQpIHJldHVyblxuICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2UocGFnZSArIDEpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFjYW5OZXh0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aGlzLnByb3BzLm5leHRUZXh0fVxuICAgICAgICAgIDwvTmV4dENvbXBvbmVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cbiJdfQ==","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nimport React from 'react';\nimport classnames from 'classnames';\n//\nimport _ from './utils';\nimport Pagination from './pagination';\n\nvar emptyObj = function emptyObj() {\n return {};\n};\n\nexport default {\n // General\n data: [],\n resolveData: function resolveData(data) {\n return data;\n },\n loading: false,\n showPagination: true,\n showPaginationTop: false,\n showPaginationBottom: true,\n showPageSizeOptions: true,\n pageSizeOptions: [5, 10, 20, 25, 50, 100],\n defaultPageSize: 20,\n showPageJump: true,\n collapseOnSortingChange: true,\n collapseOnPageChange: true,\n collapseOnDataChange: true,\n freezeWhenExpanded: false,\n sortable: true,\n multiSort: true,\n resizable: true,\n filterable: false,\n defaultSortDesc: false,\n defaultSorted: [],\n defaultFiltered: [],\n defaultResized: [],\n defaultExpanded: {},\n // eslint-disable-next-line no-unused-vars\n defaultFilterMethod: function defaultFilterMethod(filter, row, column) {\n var id = filter.pivotId || filter.id;\n return row[id] !== undefined ? String(row[id]).startsWith(filter.value) : true;\n },\n // eslint-disable-next-line no-unused-vars\n defaultSortMethod: function defaultSortMethod(a, b, desc) {\n // force null and undefined to the bottom\n a = a === null || a === undefined ? '' : a;\n b = b === null || b === undefined ? '' : b;\n // force any string values to lowercase\n a = typeof a === 'string' ? a.toLowerCase() : a;\n b = typeof b === 'string' ? b.toLowerCase() : b;\n // Return either 1 or -1 to indicate a sort priority\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // returning 0, undefined or any falsey value will use subsequent sorts or\n // the index as a tiebreaker\n return 0;\n },\n\n // Controlled State Props\n // page: undefined,\n // pageSize: undefined,\n // sorted: [],\n // filtered: [],\n // resized: [],\n // expanded: {},\n\n // Controlled State Callbacks\n onPageChange: undefined,\n onPageSizeChange: undefined,\n onSortedChange: undefined,\n onFilteredChange: undefined,\n onResizedChange: undefined,\n onExpandedChange: undefined,\n\n // Pivoting\n pivotBy: undefined,\n\n // Key Constants\n pivotValKey: '_pivotVal',\n pivotIDKey: '_pivotID',\n subRowsKey: '_subRows',\n aggregatedKey: '_aggregated',\n nestingLevelKey: '_nestingLevel',\n originalKey: '_original',\n indexKey: '_index',\n groupedByPivotKey: '_groupedByPivot',\n\n // Server-side Callbacks\n onFetchData: function onFetchData() {\n return null;\n },\n\n // Classes\n className: '',\n style: {},\n\n // Component decorators\n getProps: emptyObj,\n getTableProps: emptyObj,\n getTheadGroupProps: emptyObj,\n getTheadGroupTrProps: emptyObj,\n getTheadGroupThProps: emptyObj,\n getTheadProps: emptyObj,\n getTheadTrProps: emptyObj,\n getTheadThProps: emptyObj,\n getTheadFilterProps: emptyObj,\n getTheadFilterTrProps: emptyObj,\n getTheadFilterThProps: emptyObj,\n getTbodyProps: emptyObj,\n getTrGroupProps: emptyObj,\n getTrProps: emptyObj,\n getTdProps: emptyObj,\n getTfootProps: emptyObj,\n getTfootTrProps: emptyObj,\n getTfootTdProps: emptyObj,\n getPaginationProps: emptyObj,\n getLoadingProps: emptyObj,\n getNoDataProps: emptyObj,\n getResizerProps: emptyObj,\n\n // Global Column Defaults\n column: {\n // Renderers\n Cell: undefined,\n Header: undefined,\n Footer: undefined,\n Aggregated: undefined,\n Pivot: undefined,\n PivotValue: undefined,\n Expander: undefined,\n Filter: undefined,\n // All Columns\n sortable: undefined, // use table default\n resizable: undefined, // use table default\n filterable: undefined, // use table default\n show: true,\n minWidth: 100,\n // Cells only\n className: '',\n style: {},\n getProps: emptyObj,\n // Pivot only\n aggregate: undefined,\n // Headers only\n headerClassName: '',\n headerStyle: {},\n getHeaderProps: emptyObj,\n // Footers only\n footerClassName: '',\n footerStyle: {},\n getFooterProps: emptyObj,\n filterMethod: undefined,\n filterAll: false,\n sortMethod: undefined\n },\n\n // Global Expander Column Defaults\n expanderDefaults: {\n sortable: false,\n resizable: false,\n filterable: false,\n width: 35\n },\n\n pivotDefaults: {\n // extend the defaults for pivoted columns here\n },\n\n // Text\n previousText: 'Previous',\n nextText: 'Next',\n loadingText: 'Loading...',\n noDataText: 'No rows found',\n pageText: 'Page',\n ofText: 'of',\n rowsText: 'rows',\n\n // Components\n TableComponent: function TableComponent(_ref) {\n var children = _ref.children,\n className = _ref.className,\n rest = _objectWithoutProperties(_ref, ['children', 'className']);\n\n return React.createElement(\n 'div',\n _extends({\n className: classnames('rt-table', className),\n role: 'grid'\n // tabIndex='0'\n }, rest),\n children\n );\n },\n TheadComponent: _.makeTemplateComponent('rt-thead', 'Thead'),\n TbodyComponent: _.makeTemplateComponent('rt-tbody', 'Tbody'),\n TrGroupComponent: function TrGroupComponent(_ref2) {\n var children = _ref2.children,\n className = _ref2.className,\n rest = _objectWithoutProperties(_ref2, ['children', 'className']);\n\n return React.createElement(\n 'div',\n _extends({ className: classnames('rt-tr-group', className), role: 'rowgroup' }, rest),\n children\n );\n },\n TrComponent: function TrComponent(_ref3) {\n var children = _ref3.children,\n className = _ref3.className,\n rest = _objectWithoutProperties(_ref3, ['children', 'className']);\n\n return React.createElement(\n 'div',\n _extends({ className: classnames('rt-tr', className), role: 'row' }, rest),\n children\n );\n },\n ThComponent: function ThComponent(_ref4) {\n var toggleSort = _ref4.toggleSort,\n className = _ref4.className,\n children = _ref4.children,\n rest = _objectWithoutProperties(_ref4, ['toggleSort', 'className', 'children']);\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n React.createElement(\n 'div',\n _extends({\n className: classnames('rt-th', className),\n onClick: function onClick(e) {\n return toggleSort && toggleSort(e);\n },\n role: 'columnheader',\n tabIndex: '-1' // Resolves eslint issues without implementing keyboard navigation incorrectly\n }, rest),\n children\n )\n );\n },\n TdComponent: function TdComponent(_ref5) {\n var toggleSort = _ref5.toggleSort,\n className = _ref5.className,\n children = _ref5.children,\n rest = _objectWithoutProperties(_ref5, ['toggleSort', 'className', 'children']);\n\n return React.createElement(\n 'div',\n _extends({ className: classnames('rt-td', className), role: 'gridcell' }, rest),\n children\n );\n },\n TfootComponent: _.makeTemplateComponent('rt-tfoot', 'Tfoot'),\n FilterComponent: function FilterComponent(_ref6) {\n var filter = _ref6.filter,\n _onChange = _ref6.onChange;\n return React.createElement('input', {\n type: 'text',\n style: {\n width: '100%'\n },\n value: filter ? filter.value : '',\n onChange: function onChange(event) {\n return _onChange(event.target.value);\n }\n });\n },\n ExpanderComponent: function ExpanderComponent(_ref7) {\n var isExpanded = _ref7.isExpanded;\n return React.createElement(\n 'div',\n { className: classnames('rt-expander', isExpanded && '-open') },\n '\\u2022'\n );\n },\n PivotValueComponent: function PivotValueComponent(_ref8) {\n var subRows = _ref8.subRows,\n value = _ref8.value;\n return React.createElement(\n 'span',\n null,\n value,\n ' ',\n subRows && '(' + subRows.length + ')'\n );\n },\n AggregatedComponent: function AggregatedComponent(_ref9) {\n var subRows = _ref9.subRows,\n column = _ref9.column;\n\n var previewValues = subRows.filter(function (d) {\n return typeof d[column.id] !== 'undefined';\n }).map(function (row, i) {\n return (\n // eslint-disable-next-line react/no-array-index-key\n React.createElement(\n 'span',\n { key: i },\n row[column.id],\n i < subRows.length - 1 ? ', ' : ''\n )\n );\n });\n return React.createElement(\n 'span',\n null,\n previewValues\n );\n },\n PivotComponent: undefined, // this is a computed default generated using\n // the ExpanderComponent and PivotValueComponent at run-time in methods.js\n PaginationComponent: Pagination,\n PreviousComponent: undefined,\n NextComponent: undefined,\n LoadingComponent: function LoadingComponent(_ref10) {\n var className = _ref10.className,\n loading = _ref10.loading,\n loadingText = _ref10.loadingText,\n rest = _objectWithoutProperties(_ref10, ['className', 'loading', 'loadingText']);\n\n return React.createElement(\n 'div',\n _extends({ className: classnames('-loading', { '-active': loading }, className) }, rest),\n React.createElement(\n 'div',\n { className: '-loading-inner' },\n loadingText\n )\n );\n },\n NoDataComponent: _.makeTemplateComponent('rt-noData', 'NoData'),\n ResizerComponent: _.makeTemplateComponent('rt-resizer', 'Resizer'),\n PadRowComponent: function PadRowComponent() {\n return React.createElement(\n 'span',\n null,\n '\\xA0'\n );\n }\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWZhdWx0UHJvcHMuanMiXSwibmFtZXMiOlsiUmVhY3QiLCJjbGFzc25hbWVzIiwiXyIsIlBhZ2luYXRpb24iLCJlbXB0eU9iaiIsImRhdGEiLCJyZXNvbHZlRGF0YSIsImxvYWRpbmciLCJzaG93UGFnaW5hdGlvbiIsInNob3dQYWdpbmF0aW9uVG9wIiwic2hvd1BhZ2luYXRpb25Cb3R0b20iLCJzaG93UGFnZVNpemVPcHRpb25zIiwicGFnZVNpemVPcHRpb25zIiwiZGVmYXVsdFBhZ2VTaXplIiwic2hvd1BhZ2VKdW1wIiwiY29sbGFwc2VPblNvcnRpbmdDaGFuZ2UiLCJjb2xsYXBzZU9uUGFnZUNoYW5nZSIsImNvbGxhcHNlT25EYXRhQ2hhbmdlIiwiZnJlZXplV2hlbkV4cGFuZGVkIiwic29ydGFibGUiLCJtdWx0aVNvcnQiLCJyZXNpemFibGUiLCJmaWx0ZXJhYmxlIiwiZGVmYXVsdFNvcnREZXNjIiwiZGVmYXVsdFNvcnRlZCIsImRlZmF1bHRGaWx0ZXJlZCIsImRlZmF1bHRSZXNpemVkIiwiZGVmYXVsdEV4cGFuZGVkIiwiZGVmYXVsdEZpbHRlck1ldGhvZCIsImZpbHRlciIsInJvdyIsImNvbHVtbiIsImlkIiwicGl2b3RJZCIsInVuZGVmaW5lZCIsIlN0cmluZyIsInN0YXJ0c1dpdGgiLCJ2YWx1ZSIsImRlZmF1bHRTb3J0TWV0aG9kIiwiYSIsImIiLCJkZXNjIiwidG9Mb3dlckNhc2UiLCJvblBhZ2VDaGFuZ2UiLCJvblBhZ2VTaXplQ2hhbmdlIiwib25Tb3J0ZWRDaGFuZ2UiLCJvbkZpbHRlcmVkQ2hhbmdlIiwib25SZXNpemVkQ2hhbmdlIiwib25FeHBhbmRlZENoYW5nZSIsInBpdm90QnkiLCJwaXZvdFZhbEtleSIsInBpdm90SURLZXkiLCJzdWJSb3dzS2V5IiwiYWdncmVnYXRlZEtleSIsIm5lc3RpbmdMZXZlbEtleSIsIm9yaWdpbmFsS2V5IiwiaW5kZXhLZXkiLCJncm91cGVkQnlQaXZvdEtleSIsIm9uRmV0Y2hEYXRhIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJnZXRQcm9wcyIsImdldFRhYmxlUHJvcHMiLCJnZXRUaGVhZEdyb3VwUHJvcHMiLCJnZXRUaGVhZEdyb3VwVHJQcm9wcyIsImdldFRoZWFkR3JvdXBUaFByb3BzIiwiZ2V0VGhlYWRQcm9wcyIsImdldFRoZWFkVHJQcm9wcyIsImdldFRoZWFkVGhQcm9wcyIsImdldFRoZWFkRmlsdGVyUHJvcHMiLCJnZXRUaGVhZEZpbHRlclRyUHJvcHMiLCJnZXRUaGVhZEZpbHRlclRoUHJvcHMiLCJnZXRUYm9keVByb3BzIiwiZ2V0VHJHcm91cFByb3BzIiwiZ2V0VHJQcm9wcyIsImdldFRkUHJvcHMiLCJnZXRUZm9vdFByb3BzIiwiZ2V0VGZvb3RUclByb3BzIiwiZ2V0VGZvb3RUZFByb3BzIiwiZ2V0UGFnaW5hdGlvblByb3BzIiwiZ2V0TG9hZGluZ1Byb3BzIiwiZ2V0Tm9EYXRhUHJvcHMiLCJnZXRSZXNpemVyUHJvcHMiLCJDZWxsIiwiSGVhZGVyIiwiRm9vdGVyIiwiQWdncmVnYXRlZCIsIlBpdm90IiwiUGl2b3RWYWx1ZSIsIkV4cGFuZGVyIiwiRmlsdGVyIiwic2hvdyIsIm1pbldpZHRoIiwiYWdncmVnYXRlIiwiaGVhZGVyQ2xhc3NOYW1lIiwiaGVhZGVyU3R5bGUiLCJnZXRIZWFkZXJQcm9wcyIsImZvb3RlckNsYXNzTmFtZSIsImZvb3RlclN0eWxlIiwiZ2V0Rm9vdGVyUHJvcHMiLCJmaWx0ZXJNZXRob2QiLCJmaWx0ZXJBbGwiLCJzb3J0TWV0aG9kIiwiZXhwYW5kZXJEZWZhdWx0cyIsIndpZHRoIiwicGl2b3REZWZhdWx0cyIsInByZXZpb3VzVGV4dCIsIm5leHRUZXh0IiwibG9hZGluZ1RleHQiLCJub0RhdGFUZXh0IiwicGFnZVRleHQiLCJvZlRleHQiLCJyb3dzVGV4dCIsIlRhYmxlQ29tcG9uZW50IiwiY2hpbGRyZW4iLCJyZXN0IiwiVGhlYWRDb21wb25lbnQiLCJtYWtlVGVtcGxhdGVDb21wb25lbnQiLCJUYm9keUNvbXBvbmVudCIsIlRyR3JvdXBDb21wb25lbnQiLCJUckNvbXBvbmVudCIsIlRoQ29tcG9uZW50IiwidG9nZ2xlU29ydCIsImUiLCJUZENvbXBvbmVudCIsIlRmb290Q29tcG9uZW50IiwiRmlsdGVyQ29tcG9uZW50Iiwib25DaGFuZ2UiLCJldmVudCIsInRhcmdldCIsIkV4cGFuZGVyQ29tcG9uZW50IiwiaXNFeHBhbmRlZCIsIlBpdm90VmFsdWVDb21wb25lbnQiLCJzdWJSb3dzIiwibGVuZ3RoIiwiQWdncmVnYXRlZENvbXBvbmVudCIsInByZXZpZXdWYWx1ZXMiLCJkIiwibWFwIiwiaSIsIlBpdm90Q29tcG9uZW50IiwiUGFnaW5hdGlvbkNvbXBvbmVudCIsIlByZXZpb3VzQ29tcG9uZW50IiwiTmV4dENvbXBvbmVudCIsIkxvYWRpbmdDb21wb25lbnQiLCJOb0RhdGFDb21wb25lbnQiLCJSZXNpemVyQ29tcG9uZW50IiwiUGFkUm93Q29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBT0EsS0FBUCxNQUFrQixPQUFsQjtBQUNBLE9BQU9DLFVBQVAsTUFBdUIsWUFBdkI7QUFDQTtBQUNBLE9BQU9DLENBQVAsTUFBYyxTQUFkO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixjQUF2Qjs7QUFFQSxJQUFNQyxXQUFXLFNBQVhBLFFBQVc7QUFBQSxTQUFPLEVBQVA7QUFBQSxDQUFqQjs7QUFFQSxlQUFlO0FBQ2I7QUFDQUMsUUFBTSxFQUZPO0FBR2JDLGVBQWE7QUFBQSxXQUFRRCxJQUFSO0FBQUEsR0FIQTtBQUliRSxXQUFTLEtBSkk7QUFLYkMsa0JBQWdCLElBTEg7QUFNYkMscUJBQW1CLEtBTk47QUFPYkMsd0JBQXNCLElBUFQ7QUFRYkMsdUJBQXFCLElBUlI7QUFTYkMsbUJBQWlCLENBQUMsQ0FBRCxFQUFJLEVBQUosRUFBUSxFQUFSLEVBQVksRUFBWixFQUFnQixFQUFoQixFQUFvQixHQUFwQixDQVRKO0FBVWJDLG1CQUFpQixFQVZKO0FBV2JDLGdCQUFjLElBWEQ7QUFZYkMsMkJBQXlCLElBWlo7QUFhYkMsd0JBQXNCLElB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QWpDO0FBREYsS0FIZ0I7QUFBQSxHQXJQTDtBQTRQYnFDLG1CQUFpQi9JLEVBQUVtSCxxQkFBRixDQUF3QixXQUF4QixFQUFxQyxRQUFyQyxDQTVQSjtBQTZQYjZCLG9CQUFrQmhKLEVBQUVtSCxxQkFBRixDQUF3QixZQUF4QixFQUFzQyxTQUF0QyxDQTdQTDtBQThQYjhCLG1CQUFpQjtBQUFBLFdBQU07QUFBQTtBQUFBO0FBQUE7QUFBQSxLQUFOO0FBQUE7QUE5UEosQ0FBZiIsImZpbGUiOiJkZWZhdWx0UHJvcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuLy9cbmltcG9ydCBfIGZyb20gJy4vdXRpbHMnXG5pbXBvcnQgUGFnaW5hdGlvbiBmcm9tICcuL3BhZ2luYXRpb24nXG5cbmNvbnN0IGVtcHR5T2JqID0gKCkgPT4gKHt9KVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIC8vIEdlbmVyYWxcbiAgZGF0YTogW10sXG4gIHJlc29sdmVEYXRhOiBkYXRhID0+IGRhdGEsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBzaG93UGFnaW5hdGlvbjogdHJ1ZSxcbiAgc2hvd1BhZ2luYXRpb25Ub3A6IGZhbHNlLFxuICBzaG93UGFnaW5hdGlvbkJvdHRvbTogdHJ1ZSxcbiAgc2hvd1BhZ2VTaXplT3B0aW9uczogdHJ1ZSxcbiAgcGFnZVNpemVPcHRpb25zOiBbNSwgMTAsIDIwLCAyNSwgNTAsIDEwMF0sXG4gIGRlZmF1bHRQYWdlU2l6ZTogMjAsXG4gIHNob3dQYWdlSnVtcDogdHJ1ZSxcbiAgY29sbGFwc2VPblNvcnRpbmdDaGFuZ2U6IHRydWUsXG4gIGNvbGxhcHNlT25QYWdlQ2hhbmdlOiB0cnVlLFxuICBjb2xsYXBzZU9uRGF0YUNoYW5nZTogdHJ1ZSxcbiAgZnJlZXplV2hlbkV4cGFuZGVkOiBmYWxzZSxcbiAgc29ydGFibGU6IHRydWUsXG4gIG11bHRpU29ydDogdHJ1ZSxcbiAgcmVzaXphYmxlOiB0cnVlLFxuICBmaWx0ZXJhYmxlOiBmYWxzZSxcbiAgZGVmYXVsdFNvcnREZXNjOiBmYWxzZSxcbiAgZGVmYXVsdFNvcnRlZDogW10sXG4gIGRlZmF1bHRGaWx0ZXJlZDogW10sXG4gIGRlZmF1bHRSZXNpemVkOiBbXSxcbiAgZGVmYXVsdEV4cGFuZGVkOiB7fSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGRlZmF1bHRGaWx0ZXJNZXRob2Q6IChmaWx0ZXIsIHJvdywgY29sdW1uKSA9PiB7XG4gICAgY29uc3QgaWQgPSBmaWx0ZXIucGl2b3RJZCB8fCBmaWx0ZXIuaWRcbiAgICByZXR1cm4gcm93W2lkXSAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHJvd1tpZF0pLnN0YXJ0c1dpdGgoZmlsdGVyLnZhbHVlKSA6IHRydWVcbiAgfSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGRlZmF1bHRTb3J0TWV0aG9kOiAoYSwgYiwgZGVzYykgPT4ge1xuICAgIC8vIGZvcmNlIG51bGwgYW5kIHVuZGVmaW5lZCB0byB0aGUgYm90dG9tXG4gICAgYSA9IGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkID8gJycgOiBhXG4gICAgYiA9IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkID8gJycgOiBiXG4gICAgLy8gZm9yY2UgYW55IHN0cmluZyB2YWx1ZXMgdG8gbG93ZXJjYXNlXG4gICAgYSA9IHR5cGVvZiBhID09PSAnc3RyaW5nJyA/IGEudG9Mb3dlckNhc2UoKSA6IGFcbiAgICBiID0gdHlwZW9mIGIgPT09ICdzdHJpbmcnID8gYi50b0xvd2VyQ2FzZSgpIDogYlxuICAgIC8vIFJldHVybiBlaXRoZXIgMSBvciAtMSB0byBpbmRpY2F0ZSBhIHNvcnQgcHJpb3JpdHlcbiAgICBpZiAoYSA+IGIpIHtcbiAgICAgIHJldHVybiAxXG4gICAgfVxuICAgIGlmIChhIDwgYikge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIC8vIHJldHVybmluZyAwLCB1bmRlZmluZWQgb3IgYW55IGZhbHNleSB2YWx1ZSB3aWxsIHVzZSBzdWJzZXF1ZW50IHNvcnRzIG9yXG4gICAgLy8gdGhlIGluZGV4IGFzIGEgdGllYnJlYWtlclxuICAgIHJldHVybiAwXG4gIH0sXG5cbiAgLy8gQ29udHJvbGxlZCBTdGF0ZSBQcm9wc1xuICAvLyBwYWdlOiB1bmRlZmluZWQsXG4gIC8vIHBhZ2VTaXplOiB1bmRlZmluZWQsXG4gIC8vIHNvcnRlZDogW10sXG4gIC8vIGZpbHRlcmVkOiBbXSxcbiAgLy8gcmVzaXplZDogW10sXG4gIC8vIGV4cGFuZGVkOiB7fSxcblxuICAvLyBDb250cm9sbGVkIFN0YXRlIENhbGxiYWNrc1xuICBvblBhZ2VDaGFuZ2U6IHVuZGVmaW5lZCxcbiAgb25QYWdlU2l6ZUNoYW5nZTogdW5kZWZpbmVkLFxuICBvblNvcnRlZENoYW5nZTogdW5kZWZpbmVkLFxuICBvbkZpbHRlcmVkQ2hhbmdlOiB1bmRlZmluZWQsXG4gIG9uUmVzaXplZENoYW5nZTogdW5kZWZpbmVkLFxuICBvbkV4cGFuZGVkQ2hhbmdlOiB1bmRlZmluZWQsXG5cbiAgLy8gUGl2b3RpbmdcbiAgcGl2b3RCeTogdW5kZWZpbmVkLFxuXG4gIC8vIEtleSBDb25zdGFudHNcbiAgcGl2b3RWYWxLZXk6ICdfcGl2b3RWYWwnLFxuICBwaXZvdElES2V5OiAnX3Bpdm90SUQnLFxuICBzdWJSb3dzS2V5OiAnX3N1YlJvd3MnLFxuICBhZ2dyZWdhdGVkS2V5OiAnX2FnZ3JlZ2F0ZWQnLFxuICBuZXN0aW5nTGV2ZWxLZXk6ICdfbmVzdGluZ0xldmVsJyxcbiAgb3JpZ2luYWxLZXk6ICdfb3JpZ2luYWwnLFxuICBpbmRleEtleTogJ19pbmRleCcsXG4gIGdyb3VwZWRCeVBpdm90S2V5OiAnX2dyb3VwZWRCeVBpdm90JyxcblxuICAvLyBTZXJ2ZXItc2lkZSBDYWxsYmFja3NcbiAgb25GZXRjaERhdGE6ICgpID0+IG51bGwsXG5cbiAgLy8gQ2xhc3Nlc1xuICBjbGFzc05hbWU6ICcnLFxuICBzdHlsZToge30sXG5cbiAgLy8gQ29tcG9uZW50IGRlY29yYXRvcnNcbiAgZ2V0UHJvcHM6IGVtcHR5T2JqLFxuICBnZXRUYWJsZVByb3BzOiBlbXB0eU9iaixcbiAgZ2V0VGhlYWRHcm91cFByb3BzOiBlbXB0eU9iaixcbiAgZ2V0VGhlYWRHcm91cFRyUHJvcHM6IGVtcHR5T2JqLFxuICBnZXRUaGVhZEdyb3VwVGhQcm9wczogZW1wdHlPYmosXG4gIGdldFRoZWFkUHJvcHM6IGVtcHR5T2JqLFxuICBnZXRUaGVhZFRyUHJvcHM6IGVtcHR5T2JqLFxuICBnZXRUaGVhZFRoUHJvcHM6IGVtcHR5T2JqLFxuICBnZXRUaGVhZEZpbHRlclByb3BzOiBlbXB0eU9iaixcbiAgZ2V0VGhlYWRGaWx0ZXJUclByb3BzOiBlbXB0eU9iaixcbiAgZ2V0VGhlYWRGaWx0ZXJUaFByb3BzOiBlbXB0eU9iaixcbiAgZ2V0VGJvZHlQcm9wczogZW1wdHlPYmosXG4gIGdldFRyR3JvdXBQcm9wczogZW1wdHlPYmosXG4gIGdldFRyUHJvcHM6IGVtcHR5T2JqLFxuICBnZXRUZFByb3BzOiBlbXB0eU9iaixcbiAgZ2V0VGZvb3RQcm9wczogZW1wdHlPYmosXG4gIGdldFRmb290VHJQcm9wczogZW1wdHlPYmosXG4gIGdldFRmb290VGRQcm9wczogZW1wdHlPYmosXG4gIGdldFBhZ2luYXRpb25Qcm9wczogZW1wdHlPYmosXG4gIGdldExvYWRpbmdQcm9wczogZW1wdHlPYmosXG4gIGdldE5vRGF0YVByb3BzOiBlbXB0eU9iaixcbiAgZ2V0UmVzaXplclByb3BzOiBlbXB0eU9iaixcblxuICAvLyBHbG9iYWwgQ29sdW1uIERlZmF1bHRzXG4gIGNvbHVtbjoge1xuICAgIC8vIFJlbmRlcmVyc1xuICAgIENlbGw6IHVuZGVmaW5lZCxcbiAgICBIZWFkZXI6IHVuZGVmaW5lZCxcbiAgICBGb290ZXI6IHVuZGVmaW5lZCxcbiAgICBBZ2dyZWdhdGVkOiB1bmRlZmluZWQsXG4gICAgUGl2b3Q6IHVuZGVmaW5lZCxcbiAgICBQaXZvdFZhbHVlOiB1bmRlZmluZWQsXG4gICAgRXhwYW5kZXI6IHVuZGVmaW5lZCxcbiAgICBGaWx0ZXI6IHVuZGVmaW5lZCxcbiAgICAvLyBBbGwgQ29sdW1uc1xuICAgIHNvcnRhYmxlOiB1bmRlZmluZWQsIC8vIHVzZSB0YWJsZSBkZWZhdWx0XG4gICAgcmVzaXphYmxlOiB1bmRlZmluZWQsIC8vIHVzZSB0YWJsZSBkZWZhdWx0XG4gICAgZmlsdGVyYWJsZTogdW5kZWZpbmVkLCAvLyB1c2UgdGFibGUgZGVmYXVsdFxuICAgIHNob3c6IHRydWUsXG4gICAgbWluV2lkdGg6IDEwMCxcbiAgICAvLyBDZWxscyBvbmx5XG4gICAgY2xhc3NOYW1lOiAnJyxcbiAgICBzdHlsZToge30sXG4gICAgZ2V0UHJvcHM6IGVtcHR5T2JqLFxuICAgIC8vIFBpdm90IG9ubHlcbiAgICBhZ2dyZWdhdGU6IHVuZGVmaW5lZCxcbiAgICAvLyBIZWFkZXJzIG9ubHlcbiAgICBoZWFkZXJDbGFzc05hbWU6ICcnLFxuICAgIGhlYWRlclN0eWxlOiB7fSxcbiAgICBnZXRIZWFkZXJQcm9wczogZW1wdHlPYmosXG4gICAgLy8gRm9vdGVycyBvbmx5XG4gICAgZm9vdGVyQ2xhc3NOYW1lOiAnJyxcbiAgICBmb290ZXJTdHlsZToge30sXG4gICAgZ2V0Rm9vdGVyUHJvcHM6IGVtcHR5T2JqLFxuICAgIGZpbHRlck1ldGhvZDogdW5kZWZpbmVkLFxuICAgIGZpbHRlckFsbDogZmFsc2UsXG4gICAgc29ydE1ldGhvZDogdW5kZWZpbmVkLFxuICB9LFxuXG4gIC8vIEdsb2JhbCBFeHBhbmRlciBDb2x1bW4gRGVmYXVsdHNcbiAgZXhwYW5kZXJEZWZhdWx0czoge1xuICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICByZXNpemFibGU6IGZhbHNlLFxuICAgIGZpbHRlcmFibGU6IGZhbHNlLFxuICAgIHdpZHRoOiAzNSxcbiAgfSxcblxuICBwaXZvdERlZmF1bHRzOiB7XG4gICAgLy8gZXh0ZW5kIHRoZSBkZWZhdWx0cyBmb3IgcGl2b3RlZCBjb2x1bW5zIGhlcmVcbiAgfSxcblxuICAvLyBUZXh0XG4gIHByZXZpb3VzVGV4dDogJ1ByZXZpb3VzJyxcbiAgbmV4dFRleHQ6ICdOZXh0JyxcbiAgbG9hZGluZ1RleHQ6ICdMb2FkaW5nLi4uJyxcbiAgbm9EYXRhVGV4dDogJ05vIHJvd3MgZm91bmQnLFxuICBwYWdlVGV4dDogJ1BhZ2UnLFxuICBvZlRleHQ6ICdvZicsXG4gIHJvd3NUZXh0OiAncm93cycsXG5cbiAgLy8gQ29tcG9uZW50c1xuICBUYWJsZUNvbXBvbmVudDogKHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgLi4ucmVzdCB9KSA9PiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdydC10YWJsZScsIGNsYXNzTmFtZSl9XG4gICAgICByb2xlPVwiZ3JpZFwiXG4gICAgICAvLyB0YWJJbmRleD0nMCdcbiAgICAgIHsuLi5yZXN0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKSxcbiAgVGhlYWRDb21wb25lbnQ6IF8ubWFrZVRlbXBsYXRlQ29tcG9uZW50KCdydC10aGVhZCcsICdUaGVhZCcpLFxuICBUYm9keUNvbXBvbmVudDogXy5tYWtlVGVtcGxhdGVDb21wb25lbnQoJ3J0LXRib2R5JywgJ1Rib2R5JyksXG4gIFRyR3JvdXBDb21wb25lbnQ6ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIC4uLnJlc3QgfSkgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdydC10ci1ncm91cCcsIGNsYXNzTmFtZSl9IHJvbGU9XCJyb3dncm91cFwiIHsuLi5yZXN0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKSxcbiAgVHJDb21wb25lbnQ6ICh7IGNoaWxkcmVuLCBjbGFzc05hbWUsIC4uLnJlc3QgfSkgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdydC10cicsIGNsYXNzTmFtZSl9IHJvbGU9XCJyb3dcIiB7Li4ucmVzdH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICksXG4gIFRoQ29tcG9uZW50OiAoe1xuICAgIHRvZ2dsZVNvcnQsIGNsYXNzTmFtZSwgY2hpbGRyZW4sIC4uLnJlc3RcbiAgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdydC10aCcsIGNsYXNzTmFtZSl9XG4gICAgICBvbkNsaWNrPXtlID0+IHRvZ2dsZVNvcnQgJiYgdG9nZ2xlU29ydChlKX1cbiAgICAgIHJvbGU9XCJjb2x1bW5oZWFkZXJcIlxuICAgICAgdGFiSW5kZXg9XCItMVwiIC8vIFJlc29sdmVzIGVzbGludCBpc3N1ZXMgd2l0aG91dCBpbXBsZW1lbnRpbmcga2V5Ym9hcmQgbmF2aWdhdGlvbiBpbmNvcnJlY3RseVxuICAgICAgey4uLnJlc3R9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApLFxuICBUZENvbXBvbmVudDogKHtcbiAgICB0b2dnbGVTb3J0LCBjbGFzc05hbWUsIGNoaWxkcmVuLCAuLi5yZXN0XG4gIH0pID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcygncnQtdGQnLCBjbGFzc05hbWUpfSByb2xlPVwiZ3JpZGNlbGxcIiB7Li4ucmVzdH0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICksXG4gIFRmb290Q29tcG9uZW50OiBfLm1ha2VUZW1wbGF0ZUNvbXBvbmVudCgncnQtdGZvb3QnLCAnVGZvb3QnKSxcbiAgRmlsdGVyQ29tcG9uZW50OiAoeyBmaWx0ZXIsIG9uQ2hhbmdlIH0pID0+IChcbiAgICA8aW5wdXRcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICB9fVxuICAgICAgdmFsdWU9e2ZpbHRlciA/IGZpbHRlci52YWx1ZSA6ICcnfVxuICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IG9uQ2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgLz5cbiAgKSxcbiAgRXhwYW5kZXJDb21wb25lbnQ6ICh7IGlzRXhwYW5kZWQgfSkgPT4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCdydC1leHBhbmRlcicsIGlzRXhwYW5kZWQgJiYgJy1vcGVuJyl9PiZidWxsOzwvZGl2PlxuICApLFxuICBQaXZvdFZhbHVlQ29tcG9uZW50OiAoeyBzdWJSb3dzLCB2YWx1ZSB9KSA9PiAoXG4gICAgPHNwYW4+XG4gICAgICB7dmFsdWV9IHtzdWJSb3dzICYmIGAoJHtzdWJSb3dzLmxlbmd0aH0pYH1cbiAgICA8L3NwYW4+XG4gICksXG4gIEFnZ3JlZ2F0ZWRDb21wb25lbnQ6ICh7IHN1YlJvd3MsIGNvbHVtbiB9KSA9PiB7XG4gICAgY29uc3QgcHJldmlld1ZhbHVlcyA9IHN1YlJvd3MuZmlsdGVyKGQgPT4gdHlwZW9mIGRbY29sdW1uLmlkXSAhPT0gJ3VuZGVmaW5lZCcpLm1hcCgocm93LCBpKSA9PiAoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICA8c3BhbiBrZXk9e2l9PlxuICAgICAgICB7cm93W2NvbHVtbi5pZF19XG4gICAgICAgIHtpIDwgc3ViUm93cy5sZW5ndGggLSAxID8gJywgJyA6ICcnfVxuICAgICAgPC9zcGFuPlxuICAgICkpXG4gICAgcmV0dXJuIDxzcGFuPntwcmV2aWV3VmFsdWVzfTwvc3Bhbj5cbiAgfSxcbiAgUGl2b3RDb21wb25lbnQ6IHVuZGVmaW5lZCwgLy8gdGhpcyBpcyBhIGNvbXB1dGVkIGRlZmF1bHQgZ2VuZXJhdGVkIHVzaW5nXG4gIC8vIHRoZSBFeHBhbmRlckNvbXBvbmVudCBhbmQgUGl2b3RWYWx1ZUNvbXBvbmVudCBhdCBydW4tdGltZSBpbiBtZXRob2RzLmpzXG4gIFBhZ2luYXRpb25Db21wb25lbnQ6IFBhZ2luYXRpb24sXG4gIFByZXZpb3VzQ29tcG9uZW50OiB1bmRlZmluZWQsXG4gIE5leHRDb21wb25lbnQ6IHVuZGVmaW5lZCxcbiAgTG9hZGluZ0NvbXBvbmVudDogKHtcbiAgICBjbGFzc05hbWUsIGxvYWRpbmcsIGxvYWRpbmdUZXh0LCAuLi5yZXN0XG4gIH0pID0+IChcbiAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWxvYWRpbmcnLCB7ICctYWN0aXZlJzogbG9hZGluZyB9LCBjbGFzc05hbWUpfSB7Li4ucmVzdH0+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIi1sb2FkaW5nLWlubmVyXCI+e2xvYWRpbmdUZXh0fTwvZGl2PlxuICAgIDwvZGl2PlxuICApLFxuICBOb0RhdGFDb21wb25lbnQ6IF8ubWFrZVRlbXBsYXRlQ29tcG9uZW50KCdydC1ub0RhdGEnLCAnTm9EYXRhJyksXG4gIFJlc2l6ZXJDb21wb25lbnQ6IF8ubWFrZVRlbXBsYXRlQ29tcG9uZW50KCdydC1yZXNpemVyJywgJ1Jlc2l6ZXInKSxcbiAgUGFkUm93Q29tcG9uZW50OiAoKSA9PiA8c3Bhbj4mbmJzcDs8L3NwYW4+LFxufVxuIl19","import PropTypes from 'prop-types';\n\nexport default {\n // General\n data: PropTypes.any,\n loading: PropTypes.bool,\n showPagination: PropTypes.bool,\n showPaginationTop: PropTypes.bool,\n showPaginationBottom: PropTypes.bool,\n showPageSizeOptions: PropTypes.bool,\n pageSizeOptions: PropTypes.array,\n defaultPageSize: PropTypes.number,\n showPageJump: PropTypes.bool,\n collapseOnSortingChange: PropTypes.bool,\n collapseOnPageChange: PropTypes.bool,\n collapseOnDataChange: PropTypes.bool,\n freezeWhenExpanded: PropTypes.bool,\n sortable: PropTypes.bool,\n resizable: PropTypes.bool,\n filterable: PropTypes.bool,\n defaultSortDesc: PropTypes.bool,\n defaultSorted: PropTypes.array,\n defaultFiltered: PropTypes.array,\n defaultResized: PropTypes.array,\n defaultExpanded: PropTypes.object,\n defaultFilterMethod: PropTypes.func,\n defaultSortMethod: PropTypes.func,\n\n // Controlled State Callbacks\n onPageChange: PropTypes.func,\n onPageSizeChange: PropTypes.func,\n onSortedChange: PropTypes.func,\n onFilteredChange: PropTypes.func,\n onResizedChange: PropTypes.func,\n onExpandedChange: PropTypes.func,\n\n // Pivoting\n pivotBy: PropTypes.array,\n\n // Key Constants\n pivotValKey: PropTypes.string,\n pivotIDKey: PropTypes.string,\n subRowsKey: PropTypes.string,\n aggregatedKey: PropTypes.string,\n nestingLevelKey: PropTypes.string,\n originalKey: PropTypes.string,\n indexKey: PropTypes.string,\n groupedByPivotKey: PropTypes.string,\n\n // Server-side Callbacks\n onFetchData: PropTypes.func,\n\n // Classes\n className: PropTypes.string,\n style: PropTypes.object,\n\n // Component decorators\n getProps: PropTypes.func,\n getTableProps: PropTypes.func,\n getTheadGroupProps: PropTypes.func,\n getTheadGroupTrProps: PropTypes.func,\n getTheadGroupThProps: PropTypes.func,\n getTheadProps: PropTypes.func,\n getTheadTrProps: PropTypes.func,\n getTheadThProps: PropTypes.func,\n getTheadFilterProps: PropTypes.func,\n getTheadFilterTrProps: PropTypes.func,\n getTheadFilterThProps: PropTypes.func,\n getTbodyProps: PropTypes.func,\n getTrGroupProps: PropTypes.func,\n getTrProps: PropTypes.func,\n getTdProps: PropTypes.func,\n getTfootProps: PropTypes.func,\n getTfootTrProps: PropTypes.func,\n getTfootTdProps: PropTypes.func,\n getPaginationProps: PropTypes.func,\n getLoadingProps: PropTypes.func,\n getNoDataProps: PropTypes.func,\n getResizerProps: PropTypes.func,\n\n // Global Column Defaults\n columns: PropTypes.arrayOf(PropTypes.shape({\n // Renderers\n Cell: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n Header: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n Footer: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n Aggregated: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n Pivot: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n PivotValue: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n Expander: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n Filter: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),\n\n // All Columns\n sortable: PropTypes.bool, // use table default\n resizable: PropTypes.bool, // use table default\n filterable: PropTypes.bool, // use table default\n show: PropTypes.bool,\n minWidth: PropTypes.number,\n\n // Cells only\n className: PropTypes.string,\n style: PropTypes.object,\n getProps: PropTypes.func,\n\n // Pivot only\n aggregate: PropTypes.func,\n\n // Headers only\n headerClassName: PropTypes.string,\n headerStyle: PropTypes.object,\n getHeaderProps: PropTypes.func,\n\n // Footers only\n footerClassName: PropTypes.string,\n footerStyle: PropTypes.object,\n getFooterProps: PropTypes.object,\n filterMethod: PropTypes.func,\n filterAll: PropTypes.bool,\n sortMethod: PropTypes.func\n })),\n\n // Global Expander Column Defaults\n expanderDefaults: PropTypes.shape({\n sortable: PropTypes.bool,\n resizable: PropTypes.bool,\n filterable: PropTypes.bool,\n width: PropTypes.number\n }),\n\n pivotDefaults: PropTypes.object,\n\n // Text\n previousText: PropTypes.node,\n nextText: PropTypes.node,\n loadingText: PropTypes.node,\n noDataText: PropTypes.node,\n pageText: PropTypes.node,\n ofText: PropTypes.node,\n rowsText: PropTypes.node,\n\n // Components\n TableComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n TheadComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n TbodyComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n TrGroupComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n TrComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n ThComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n TdComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n TfootComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n FilterComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n ExpanderComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n PivotValueComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n AggregatedComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n // this is a computed default generated using\n PivotComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n // the ExpanderComponent and PivotValueComponent at run-time in methods.js\n PaginationComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n PreviousComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n NextComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n LoadingComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n NoDataComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n ResizerComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element]),\n PadRowComponent: PropTypes.oneOfType([PropTypes.func, PropTypes.element])\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9wVHlwZXMuanMiXSwibmFtZXMiOlsiUHJvcFR5cGVzIiwiZGF0YSIsImFueSIsImxvYWRpbmciLCJib29sIiwic2hvd1BhZ2luYXRpb24iLCJzaG93UGFnaW5hdGlvblRvcCIsInNob3dQYWdpbmF0aW9uQm90dG9tIiwic2hvd1BhZ2VTaXplT3B0aW9ucyIsInBhZ2VTaXplT3B0aW9ucyIsImFycmF5IiwiZGVmYXVsdFBhZ2VTaXplIiwibnVtYmVyIiwic2hvd1BhZ2VKdW1wIiwiY29sbGFwc2VPblNvcnRpbmdDaGFuZ2UiLCJjb2xsYXBzZU9uUGFnZUNoYW5nZSIsImNvbGxhcHNlT25EYXRhQ2hhbmdlIiwiZnJlZXplV2hlbkV4cGFuZGVkIiwic29ydGFibGUiLCJyZXNpemFibGUiLCJmaWx0ZXJhYmxlIiwiZGVmYXVsdFNvcnREZXNjIiwiZGVmYXVsdFNvcnRlZCIsImRlZmF1bHRGaWx0ZXJlZCIsImRlZmF1bHRSZXNpemVkIiwiZGVmYXVsdEV4cGFuZGVkIiwib2JqZWN0IiwiZGVmYXVsdEZpbHRlck1ldGhvZCIsImZ1bmMiLCJkZWZhdWx0U29ydE1ldGhvZCIsIm9uUGFnZUNoYW5nZSIsIm9uUGFnZVNpemVDaGFuZ2UiLCJvblNvcnRlZENoYW5nZSIsIm9uRmlsdGVyZWRDaGFuZ2UiLCJvblJlc2l6ZWRDaGFuZ2UiLCJvbkV4cGFuZGVkQ2hhbmdlIiwicGl2b3RCeSIsInBpdm90VmFsS2V5Iiwic3RyaW5nIiwicGl2b3RJREtleSIsInN1YlJvd3NLZXkiLCJhZ2dyZWdhdGVkS2V5IiwibmVzdGluZ0xldmVsS2V5Iiwib3JpZ2luYWxLZXkiLCJpbmRleEtleSIsImdyb3VwZWRCeVBpdm90S2V5Iiwib25GZXRjaERhdGEiLCJjbGFzc05hbWUiLCJzdHlsZSIsImdldFByb3BzIiwiZ2V0VGFibGVQcm9wcyIsImdldFRoZWFkR3JvdXBQcm9wcyIsImdldFRoZWFkR3JvdXBUclByb3BzIiwiZ2V0VGhlYWRHcm91cFRoUHJvcHMiLCJnZXRUaGVhZFByb3BzIiwiZ2V0VGhlYWRUclByb3BzIiwiZ2V0VGhlYWRUaFByb3BzIiwiZ2V0VGhlYWRGaWx0ZXJQcm9wcyIsImdldFRoZWFkRmlsdGVyVHJQcm9wcyIsImdldFRoZWFkRmlsdGVyVGhQcm9wcyIsImdldFRib2R5UHJvcHMiLCJnZXRUckdyb3VwUHJvcHMiLCJnZXRUclByb3BzIiwiZ2V0VGRQcm9wcyIsImdldFRmb290UHJvcHMiLCJnZXRUZm9vdFRyUHJvcHMiLCJnZXRUZm9vdFRkUHJvcHMiLCJnZXRQYWdpbmF0aW9uUHJvcHMiLCJnZXRMb2FkaW5nUHJvcHMiLCJnZXROb0RhdGFQcm9wcyIsImdldFJlc2l6ZXJQcm9wcyIsImNvbHVtbnMiLCJhcnJheU9mIiwic2hhcGUiLCJDZWxsIiwib25lT2ZUeXBlIiwiZWxlbWVudCIsIkhlYWRlciIsIkZvb3RlciIsIkFnZ3JlZ2F0ZWQiLCJQaXZvdCIsIlBpdm90VmFsdWUiLCJFeHBhbmRlciIsIkZpbHRlciIsInNob3ciLCJtaW5XaWR0aCIsImFnZ3JlZ2F0ZSIsImhlYWRlckNsYXNzTmFtZSIsImhlYWRlclN0eWxlIiwiZ2V0SGVhZGVyUHJvcHMiLCJmb290ZXJDbGFzc05hbWUiLCJmb290ZXJTdHlsZSIsImdldEZvb3RlclByb3BzIiwiZmlsdGVyTWV0aG9kIiwiZmlsdGVyQWxsIiwic29ydE1ldGhvZCIsImV4cGFuZGVyRGVmYXVsdHMiLCJ3aWR0aCIsInBpdm90RGVmYXVsdHMiLCJwcmV2aW91c1RleHQiLCJub2RlIiwibmV4dFRleHQiLCJsb2FkaW5nVGV4dCIsIm5vRGF0YVRleHQiLCJwYWdlVGV4dCIsIm9mVGV4dCIsInJvd3NUZXh0IiwiVGFibGVDb21wb25lbnQiLCJUaGVhZENvbXBvbmVudCIsIlRib2R5Q29tcG9uZW50IiwiVHJHcm91cENvbXBvbmVudCIsIlRyQ29tcG9uZW50IiwiVGhDb21wb25lbnQiLCJUZENvbXBvbmVudCIsIlRmb290Q29tcG9uZW50IiwiRmlsdGVyQ29tcG9uZW50IiwiRXhwYW5kZXJDb21wb25lbnQiLCJQaXZvdFZhbHVlQ29tcG9uZW50IiwiQWdncmVnYXRlZENvbXBvbmVudCIsIlBpdm90Q29tcG9uZW50IiwiUGFnaW5hdGlvbkNvbXBvbmVudCIsIlByZXZpb3VzQ29tcG9uZW50IiwiTmV4dENvbXBvbmVudCIsIkxvYWRpbmdDb21wb25lbnQiLCJOb0RhdGFDb21wb25lbnQiLCJSZXNpemVyQ29tcG9uZW50IiwiUGFkUm93Q29tcG9uZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxTQUFQLE1BQXNCLFlBQXRCOztBQUVBLGVBQWU7QUFDYjtBQUNBQyxRQUFNRCxVQUFVRSxHQUZIO0FBR2JDLFdBQVNILFVBQVVJLElBSE47QUFJYkMsa0JBQWdCTCxVQUFVSSxJQUpiO0FBS2JFLHFCQUFtQk4sVUFBVUksSUFMaEI7QUFNYkcsd0JBQXNCUCxVQUFVSSxJQU5uQjtBQU9iSSx1QkFBcUJSLFVBQVVJLElBUGxCO0FBUWJLLG1CQUFpQlQsVUFBVVUsS0FSZDtBQVNiQyxtQkFBaUJYLFVBQVVZLE1BVGQ7QUFVYkMsZ0JBQWNiLFVBQVVJLElBVlg7QUFXYlUsMkJBQXlCZCxVQUFVSSxJQVh0QjtBQVliVyx3QkFBc0JmLFVBQVVJLElBWm5CO0FBYWJZLHdCQUFzQmhCLFVBQVVJLElBYm5CO0FBY2JhLHNCQUFvQmpCLFVBQVVJLElBZGpCO0FBZWJjLFlBQVVsQixVQUFVSSxJQWZQO0FBZ0JiZSxhQUFXbkIsVUFBVUksSUFoQlI7QUFpQmJnQixjQUFZcEIsVUFBVUksSUFqQlQ7QUFrQmJpQixtQkFBaUJyQixVQUFVSSxJQWxCZDtBQW1CYmtCLGlCQUFldEIsVUFBVVUsS0FuQlo7QUFvQmJhLG1CQUFpQnZCLFVBQVVVLEtBcEJkO0FBcUJiYyxrQkFBZ0J4QixVQUFVVSxLQXJCYjtBQXNCYmUsbUJBQWlCekIsVUFBVTBCLE1BdEJkO0FBdUJiQyx1QkFBcUIzQixVQUFVNEIsSUF2QmxCO0FBd0JiQyxxQkFBbUI3QixVQUFVNEIsSUF4QmhCOztBQTBCYjtBQUNBRSxnQkFBYzlCLFVBQVU0QixJQTNCWDtBQTRCYkcs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QixDQUFDM0UsVUFBVTRCLElBQVgsRUFBaUI1QixVQUFVNEUsT0FBM0IsQ0FBcEIsQ0FoS0o7QUFpS2JpRCxvQkFBa0I3SCxVQUFVMkUsU0FBVixDQUFvQixDQUFDM0UsVUFBVTRCLElBQVgsRUFBaUI1QixVQUFVNEUsT0FBM0IsQ0FBcEIsQ0FqS0w7QUFrS2JrRCxtQkFBaUI5SCxVQUFVMkUsU0FBVixDQUFvQixDQUFDM0UsVUFBVTRCLElBQVgsRUFBaUI1QixVQUFVNEUsT0FBM0IsQ0FBcEI7QUFsS0osQ0FBZiIsImZpbGUiOiJwcm9wVHlwZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgLy8gR2VuZXJhbFxuICBkYXRhOiBQcm9wVHlwZXMuYW55LFxuICBsb2FkaW5nOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2hvd1BhZ2luYXRpb246IFByb3BUeXBlcy5ib29sLFxuICBzaG93UGFnaW5hdGlvblRvcDogUHJvcFR5cGVzLmJvb2wsXG4gIHNob3dQYWdpbmF0aW9uQm90dG9tOiBQcm9wVHlwZXMuYm9vbCxcbiAgc2hvd1BhZ2VTaXplT3B0aW9uczogUHJvcFR5cGVzLmJvb2wsXG4gIHBhZ2VTaXplT3B0aW9uczogUHJvcFR5cGVzLmFycmF5LFxuICBkZWZhdWx0UGFnZVNpemU6IFByb3BUeXBlcy5udW1iZXIsXG4gIHNob3dQYWdlSnVtcDogUHJvcFR5cGVzLmJvb2wsXG4gIGNvbGxhcHNlT25Tb3J0aW5nQ2hhbmdlOiBQcm9wVHlwZXMuYm9vbCxcbiAgY29sbGFwc2VPblBhZ2VDaGFuZ2U6IFByb3BUeXBlcy5ib29sLFxuICBjb2xsYXBzZU9uRGF0YUNoYW5nZTogUHJvcFR5cGVzLmJvb2wsXG4gIGZyZWV6ZVdoZW5FeHBhbmRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNvcnRhYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZmlsdGVyYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRlZmF1bHRTb3J0RGVzYzogUHJvcFR5cGVzLmJvb2wsXG4gIGRlZmF1bHRTb3J0ZWQ6IFByb3BUeXBlcy5hcnJheSxcbiAgZGVmYXVsdEZpbHRlcmVkOiBQcm9wVHlwZXMuYXJyYXksXG4gIGRlZmF1bHRSZXNpemVkOiBQcm9wVHlwZXMuYXJyYXksXG4gIGRlZmF1bHRFeHBhbmRlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZGVmYXVsdEZpbHRlck1ldGhvZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGRlZmF1bHRTb3J0TWV0aG9kOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvLyBDb250cm9sbGVkIFN0YXRlIENhbGxiYWNrc1xuICBvblBhZ2VDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblBhZ2VTaXplQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0ZWRDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkZpbHRlcmVkQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNpemVkQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25FeHBhbmRlZENoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLy8gUGl2b3RpbmdcbiAgcGl2b3RCeTogUHJvcFR5cGVzLmFycmF5LFxuXG4gIC8vIEtleSBDb25zdGFudHNcbiAgcGl2b3RWYWxLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHBpdm90SURLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1YlJvd3NLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFnZ3JlZ2F0ZWRLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG5lc3RpbmdMZXZlbEtleTogUHJvcFR5cGVzLnN0cmluZyxcbiAgb3JpZ2luYWxLZXk6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGluZGV4S2V5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBncm91cGVkQnlQaXZvdEtleTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvLyBTZXJ2ZXItc2lkZSBDYWxsYmFja3NcbiAgb25GZXRjaERhdGE6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8vIENsYXNzZXNcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICAvLyBDb21wb25lbnQgZGVjb3JhdG9yc1xuICBnZXRQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldFRhYmxlUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRUaGVhZEdyb3VwUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRUaGVhZEdyb3VwVHJQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldFRoZWFkR3JvdXBUaFByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0VGhlYWRQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldFRoZWFkVHJQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldFRoZWFkVGhQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldFRoZWFkRmlsdGVyUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRUaGVhZEZpbHRlclRyUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRUaGVhZEZpbHRlclRoUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRUYm9keVByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0VHJHcm91cFByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0VHJQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG4gIGdldFRkUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRUZm9vdFByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0VGZvb3RUclByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0VGZvb3RUZFByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0UGFnaW5hdGlvblByb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0TG9hZGluZ1Byb3BzOiBQcm9wVHlwZXMuZnVuYyxcbiAgZ2V0Tm9EYXRhUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuICBnZXRSZXNpemVyUHJvcHM6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8vIEdsb2JhbCBDb2x1bW4gRGVmYXVsdHNcbiAgY29sdW1uczogUHJvcFR5cGVzLmFycmF5T2YoXG4gICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIC8vIFJlbmRlcmVyc1xuICAgICAgQ2VsbDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgICBIZWFkZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pLFxuICAgICAgRm9vdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICAgIEFnZ3JlZ2F0ZWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pLFxuICAgICAgUGl2b3Q6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZnVuY10pLFxuICAgICAgUGl2b3RWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgICBFeHBhbmRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmVsZW1lbnQsIFByb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5mdW5jXSksXG4gICAgICBGaWx0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5lbGVtZW50LCBQcm9wVHlwZXMuZnVuY10pLFxuXG4gICAgICAvLyBBbGwgQ29sdW1uc1xuICAgICAgc29ydGFibGU6IFByb3BUeXBlcy5ib29sLCAvLyB1c2UgdGFibGUgZGVmYXVsdFxuICAgICAgcmVzaXphYmxlOiBQcm9wVHlwZXMuYm9vbCwgLy8gdXNlIHRhYmxlIGRlZmF1bHRcbiAgICAgIGZpbHRlcmFibGU6IFByb3BUeXBlcy5ib29sLCAvLyB1c2UgdGFibGUgZGVmYXVsdFxuICAgICAgc2hvdzogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBtaW5XaWR0aDogUHJvcFR5cGVzLm51bWJlcixcblxuICAgICAgLy8gQ2VsbHMgb25seVxuICAgICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBnZXRQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgIC8vIFBpdm90IG9ubHlcbiAgICAgIGFnZ3JlZ2F0ZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgIC8vIEhlYWRlcnMgb25seVxuICAgICAgaGVhZGVyQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgaGVhZGVyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBnZXRIZWFkZXJQcm9wczogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgICAgIC8vIEZvb3RlcnMgb25seVxuICAgICAgZm9vdGVyQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZm9vdGVyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBnZXRGb290ZXJQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGZpbHRlck1ldGhvZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBmaWx0ZXJBbGw6IFByb3BUeXBlcy5ib29sLFxuICAgICAgc29ydE1ldGhvZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgfSlcbiAgKSxcblxuICAvLyBHbG9iYWwgRXhwYW5kZXIgQ29sdW1uIERlZmF1bHRzXG4gIGV4cGFuZGVyRGVmYXVsdHM6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgc29ydGFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIHJlc2l6YWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgZmlsdGVyYWJsZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gIH0pLFxuXG4gIHBpdm90RGVmYXVsdHM6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLy8gVGV4dFxuICBwcmV2aW91c1RleHQ6IFByb3BUeXBlcy5ub2RlLFxuICBuZXh0VGV4dDogUHJvcFR5cGVzLm5vZGUsXG4gIGxvYWRpbmdUZXh0OiBQcm9wVHlwZXMubm9kZSxcbiAgbm9EYXRhVGV4dDogUHJvcFR5cGVzLm5vZGUsXG4gIHBhZ2VUZXh0OiBQcm9wVHlwZXMubm9kZSxcbiAgb2ZUZXh0OiBQcm9wVHlwZXMubm9kZSxcbiAgcm93c1RleHQ6IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8vIENvbXBvbmVudHNcbiAgVGFibGVDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICBUaGVhZENvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIFRib2R5Q29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgVHJHcm91cENvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIFRyQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgVGhDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICBUZENvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIFRmb290Q29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgRmlsdGVyQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgRXhwYW5kZXJDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICBQaXZvdFZhbHVlQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgQWdncmVnYXRlZENvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIC8vIHRoaXMgaXMgYSBjb21wdXRlZCBkZWZhdWx0IGdlbmVyYXRlZCB1c2luZ1xuICBQaXZvdENvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIC8vIHRoZSBFeHBhbmRlckNvbXBvbmVudCBhbmQgUGl2b3RWYWx1ZUNvbXBvbmVudCBhdCBydW4tdGltZSBpbiBtZXRob2RzLmpzXG4gIFBhZ2luYXRpb25Db21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICBQcmV2aW91c0NvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIE5leHRDb21wb25lbnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICBMb2FkaW5nQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgTm9EYXRhQ29tcG9uZW50OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLmVsZW1lbnRdKSxcbiAgUmVzaXplckNvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG4gIFBhZFJvd0NvbXBvbmVudDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5lbGVtZW50XSksXG59XG4iXX0=","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React, { Component } from 'react';\nimport classnames from 'classnames';\n//\nimport _ from './utils';\nimport Lifecycle from './lifecycle';\nimport Methods from './methods';\nimport defaultProps from './defaultProps';\nimport propTypes from './propTypes';\n\nexport var ReactTableDefaults = defaultProps;\n\nvar ReactTable = function (_Methods) {\n _inherits(ReactTable, _Methods);\n\n function ReactTable(props) {\n _classCallCheck(this, ReactTable);\n\n var _this = _possibleConstructorReturn(this, (ReactTable.__proto__ || Object.getPrototypeOf(ReactTable)).call(this));\n\n _this.getResolvedState = _this.getResolvedState.bind(_this);\n _this.getDataModel = _this.getDataModel.bind(_this);\n _this.getSortedData = _this.getSortedData.bind(_this);\n _this.fireFetchData = _this.fireFetchData.bind(_this);\n _this.getPropOrState = _this.getPropOrState.bind(_this);\n _this.getStateOrProp = _this.getStateOrProp.bind(_this);\n _this.filterData = _this.filterData.bind(_this);\n _this.sortData = _this.sortData.bind(_this);\n _this.getMinRows = _this.getMinRows.bind(_this);\n _this.onPageChange = _this.onPageChange.bind(_this);\n _this.onPageSizeChange = _this.onPageSizeChange.bind(_this);\n _this.sortColumn = _this.sortColumn.bind(_this);\n _this.filterColumn = _this.filterColumn.bind(_this);\n _this.resizeColumnStart = _this.resizeColumnStart.bind(_this);\n _this.resizeColumnEnd = _this.resizeColumnEnd.bind(_this);\n _this.resizeColumnMoving = _this.resizeColumnMoving.bind(_this);\n\n _this.state = {\n page: 0,\n pageSize: props.defaultPageSize,\n sorted: props.defaultSorted,\n expanded: props.defaultExpanded,\n filtered: props.defaultFiltered,\n resized: props.defaultResized,\n currentlyResizing: false,\n skipNextSort: false\n };\n return _this;\n }\n\n _createClass(ReactTable, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var resolvedState = this.getResolvedState();\n var children = resolvedState.children,\n className = resolvedState.className,\n style = resolvedState.style,\n getProps = resolvedState.getProps,\n getTableProps = resolvedState.getTableProps,\n getTheadGroupProps = resolvedState.getTheadGroupProps,\n getTheadGroupTrProps = resolvedState.getTheadGroupTrProps,\n getTheadGroupThProps = resolvedState.getTheadGroupThProps,\n getTheadProps = resolvedState.getTheadProps,\n getTheadTrProps = resolvedState.getTheadTrProps,\n getTheadThProps = resolvedState.getTheadThProps,\n getTheadFilterProps = resolvedState.getTheadFilterProps,\n getTheadFilterTrProps = resolvedState.getTheadFilterTrProps,\n getTheadFilterThProps = resolvedState.getTheadFilterThProps,\n getTbodyProps = resolvedState.getTbodyProps,\n getTrGroupProps = resolvedState.getTrGroupProps,\n getTrProps = resolvedState.getTrProps,\n getTdProps = resolvedState.getTdProps,\n getTfootProps = resolvedState.getTfootProps,\n getTfootTrProps = resolvedState.getTfootTrProps,\n getTfootTdProps = resolvedState.getTfootTdProps,\n getPaginationProps = resolvedState.getPaginationProps,\n getLoadingProps = resolvedState.getLoadingProps,\n getNoDataProps = resolvedState.getNoDataProps,\n getResizerProps = resolvedState.getResizerProps,\n showPagination = resolvedState.showPagination,\n showPaginationTop = resolvedState.showPaginationTop,\n showPaginationBottom = resolvedState.showPaginationBottom,\n manual = resolvedState.manual,\n loadingText = resolvedState.loadingText,\n noDataText = resolvedState.noDataText,\n sortable = resolvedState.sortable,\n multiSort = resolvedState.multiSort,\n resizable = resolvedState.resizable,\n filterable = resolvedState.filterable,\n pivotIDKey = resolvedState.pivotIDKey,\n pivotValKey = resolvedState.pivotValKey,\n pivotBy = resolvedState.pivotBy,\n subRowsKey = resolvedState.subRowsKey,\n aggregatedKey = resolvedState.aggregatedKey,\n originalKey = resolvedState.originalKey,\n indexKey = resolvedState.indexKey,\n groupedByPivotKey = resolvedState.groupedByPivotKey,\n loading = resolvedState.loading,\n pageSize = resolvedState.pageSize,\n page = resolvedState.page,\n sorted = resolvedState.sorted,\n filtered = resolvedState.filtered,\n resized = resolvedState.resized,\n expanded = resolvedState.expanded,\n pages = resolvedState.pages,\n onExpandedChange = resolvedState.onExpandedChange,\n TableComponent = resolvedState.TableComponent,\n TheadComponent = resolvedState.TheadComponent,\n TbodyComponent = resolvedState.TbodyComponent,\n TrGroupComponent = resolvedState.TrGroupComponent,\n TrComponent = resolvedState.TrComponent,\n ThComponent = resolvedState.ThComponent,\n TdComponent = resolvedState.TdComponent,\n TfootComponent = resolvedState.TfootComponent,\n PaginationComponent = resolvedState.PaginationComponent,\n LoadingComponent = resolvedState.LoadingComponent,\n SubComponent = resolvedState.SubComponent,\n NoDataComponent = resolvedState.NoDataComponent,\n ResizerComponent = resolvedState.ResizerComponent,\n ExpanderComponent = resolvedState.ExpanderComponent,\n PivotValueComponent = resolvedState.PivotValueComponent,\n PivotComponent = resolvedState.PivotComponent,\n AggregatedComponent = resolvedState.AggregatedComponent,\n FilterComponent = resolvedState.FilterComponent,\n PadRowComponent = resolvedState.PadRowComponent,\n resolvedData = resolvedState.resolvedData,\n allVisibleColumns = resolvedState.allVisibleColumns,\n headerGroups = resolvedState.headerGroups,\n hasHeaderGroups = resolvedState.hasHeaderGroups,\n sortedData = resolvedState.sortedData,\n currentlyResizing = resolvedState.currentlyResizing;\n\n // Pagination\n\n var startRow = pageSize * page;\n var endRow = startRow + pageSize;\n var pageRows = manual ? resolvedData : sortedData.slice(startRow, endRow);\n var minRows = this.getMinRows();\n var padRows = _.range(Math.max(minRows - pageRows.length, 0));\n\n var hasColumnFooter = allVisibleColumns.some(function (d) {\n return d.Footer;\n });\n var hasFilters = filterable || allVisibleColumns.some(function (d) {\n return d.filterable;\n });\n\n var recurseRowsViewIndex = function recurseRowsViewIndex(rows) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;\n return [rows.map(function (row, i) {\n index += 1;\n var rowWithViewIndex = _extends({}, row, {\n _viewIndex: index\n });\n var newPath = path.concat([i]);\n if (rowWithViewIndex[subRowsKey] && _.get(expanded, newPath)) {\n var _recurseRowsViewIndex = recurseRowsViewIndex(rowWithViewIndex[subRowsKey], newPath, index);\n\n var _recurseRowsViewIndex2 = _slicedToArray(_recurseRowsViewIndex, 2);\n\n rowWithViewIndex[subRowsKey] = _recurseRowsViewIndex2[0];\n index = _recurseRowsViewIndex2[1];\n }\n return rowWithViewIndex;\n }), index];\n };\n\n var _recurseRowsViewIndex3 = recurseRowsViewIndex(pageRows);\n\n var _recurseRowsViewIndex4 = _slicedToArray(_recurseRowsViewIndex3, 1);\n\n pageRows = _recurseRowsViewIndex4[0];\n\n\n var canPrevious = page > 0;\n var canNext = page + 1 < pages;\n\n var rowMinWidth = _.sum(allVisibleColumns.map(function (d) {\n var resizedColumn = resized.find(function (x) {\n return x.id === d.id;\n }) || {};\n return _.getFirstDefined(resizedColumn.value, d.width, d.minWidth);\n }));\n\n var rowIndex = -1;\n\n var finalState = _extends({}, resolvedState, {\n startRow: startRow,\n endRow: endRow,\n pageRows: pageRows,\n minRows: minRows,\n padRows: padRows,\n hasColumnFooter: hasColumnFooter,\n canPrevious: canPrevious,\n canNext: canNext,\n rowMinWidth: rowMinWidth\n });\n\n var rootProps = _.splitProps(getProps(finalState, undefined, undefined, this));\n var tableProps = _.splitProps(getTableProps(finalState, undefined, undefined, this));\n var tBodyProps = _.splitProps(getTbodyProps(finalState, undefined, undefined, this));\n var loadingProps = getLoadingProps(finalState, undefined, undefined, this);\n var noDataProps = getNoDataProps(finalState, undefined, undefined, this);\n\n // Visual Components\n\n var makeHeaderGroup = function makeHeaderGroup(column, i) {\n var resizedValue = function resizedValue(col) {\n return (resized.find(function (x) {\n return x.id === col.id;\n }) || {}).value;\n };\n var flex = _.sum(column.columns.map(function (col) {\n return col.width || resizedValue(col) ? 0 : col.minWidth;\n }));\n var width = _.sum(column.columns.map(function (col) {\n return _.getFirstDefined(resizedValue(col), col.width, col.minWidth);\n }));\n var maxWidth = _.sum(column.columns.map(function (col) {\n return _.getFirstDefined(resizedValue(col), col.width, col.maxWidth);\n }));\n\n var theadGroupThProps = _.splitProps(getTheadGroupThProps(finalState, undefined, column, _this2));\n var columnHeaderProps = _.splitProps(column.getHeaderProps(finalState, undefined, column, _this2));\n\n var classes = [column.headerClassName, theadGroupThProps.className, columnHeaderProps.className];\n\n var styles = _extends({}, column.headerStyle, theadGroupThProps.style, columnHeaderProps.style);\n\n var rest = _extends({}, theadGroupThProps.rest, columnHeaderProps.rest);\n\n var flexStyles = {\n flex: flex + ' 0 auto',\n width: _.asPx(width),\n maxWidth: _.asPx(maxWidth)\n };\n\n return React.createElement(\n ThComponent,\n _extends({\n key: i + '-' + column.id,\n className: classnames(classes),\n style: _extends({}, styles, flexStyles)\n }, rest),\n _.normalizeComponent(column.Header, {\n data: sortedData,\n column: column\n })\n );\n };\n\n var makeHeaderGroups = function makeHeaderGroups() {\n var theadGroupProps = _.splitProps(getTheadGroupProps(finalState, undefined, undefined, _this2));\n var theadGroupTrProps = _.splitProps(getTheadGroupTrProps(finalState, undefined, undefined, _this2));\n return React.createElement(\n TheadComponent,\n _extends({\n className: classnames('-headerGroups', theadGroupProps.className),\n style: _extends({}, theadGroupProps.style, {\n minWidth: rowMinWidth + 'px'\n })\n }, theadGroupProps.rest),\n React.createElement(\n TrComponent,\n _extends({\n className: theadGroupTrProps.className,\n style: theadGroupTrProps.style\n }, theadGroupTrProps.rest),\n headerGroups.map(makeHeaderGroup)\n )\n );\n };\n\n var makeHeader = function makeHeader(column, i) {\n var resizedCol = resized.find(function (x) {\n return x.id === column.id;\n }) || {};\n var sort = sorted.find(function (d) {\n return d.id === column.id;\n });\n var show = typeof column.show === 'function' ? column.show() : column.show;\n var width = _.getFirstDefined(resizedCol.value, column.width, column.minWidth);\n var maxWidth = _.getFirstDefined(resizedCol.value, column.width, column.maxWidth);\n var theadThProps = _.splitProps(getTheadThProps(finalState, undefined, column, _this2));\n var columnHeaderProps = _.splitProps(column.getHeaderProps(finalState, undefined, column, _this2));\n\n var classes = [column.headerClassName, theadThProps.className, columnHeaderProps.className];\n\n var styles = _extends({}, column.headerStyle, theadThProps.style, columnHeaderProps.style);\n\n var rest = _extends({}, theadThProps.rest, columnHeaderProps.rest);\n\n var isResizable = _.getFirstDefined(column.resizable, resizable, false);\n var resizer = isResizable ? React.createElement(ResizerComponent, _extends({\n onMouseDown: function onMouseDown(e) {\n return _this2.resizeColumnStart(e, column, false);\n },\n onTouchStart: function onTouchStart(e) {\n return _this2.resizeColumnStart(e, column, true);\n }\n }, getResizerProps('finalState', undefined, column, _this2))) : null;\n\n var isSortable = _.getFirstDefined(column.sortable, sortable, false);\n\n return React.createElement(\n ThComponent,\n _extends({\n key: i + '-' + column.id,\n className: classnames(classes, isResizable && 'rt-resizable-header', sort ? sort.desc ? '-sort-desc' : '-sort-asc' : '', isSortable && '-cursor-pointer', !show && '-hidden', pivotBy && pivotBy.slice(0, -1).includes(column.id) && 'rt-header-pivot'),\n style: _extends({}, styles, {\n flex: width + ' 0 auto',\n width: _.asPx(width),\n maxWidth: _.asPx(maxWidth)\n }),\n toggleSort: function toggleSort(e) {\n if (isSortable) _this2.sortColumn(column, multiSort ? e.shiftKey : false);\n }\n }, rest),\n React.createElement(\n 'div',\n { className: classnames(isResizable && 'rt-resizable-header-content') },\n _.normalizeComponent(column.Header, {\n data: sortedData,\n column: column\n })\n ),\n resizer\n );\n };\n\n var makeHeaders = function makeHeaders() {\n var theadProps = _.splitProps(getTheadProps(finalState, undefined, undefined, _this2));\n var theadTrProps = _.splitProps(getTheadTrProps(finalState, undefined, undefined, _this2));\n return React.createElement(\n TheadComponent,\n _extends({\n className: classnames('-header', theadProps.className),\n style: _extends({}, theadProps.style, {\n minWidth: rowMinWidth + 'px'\n })\n }, theadProps.rest),\n React.createElement(\n TrComponent,\n _extends({\n className: theadTrProps.className,\n style: theadTrProps.style\n }, theadTrProps.rest),\n allVisibleColumns.map(makeHeader)\n )\n );\n };\n\n var makeFilter = function makeFilter(column, i) {\n var resizedCol = resized.find(function (x) {\n return x.id === column.id;\n }) || {};\n var width = _.getFirstDefined(resizedCol.value, column.width, column.minWidth);\n var maxWidth = _.getFirstDefined(resizedCol.value, column.width, column.maxWidth);\n var theadFilterThProps = _.splitProps(getTheadFilterThProps(finalState, undefined, column, _this2));\n var columnHeaderProps = _.splitProps(column.getHeaderProps(finalState, undefined, column, _this2));\n\n var classes = [column.headerClassName, theadFilterThProps.className, columnHeaderProps.className];\n\n var styles = _extends({}, column.headerStyle, theadFilterThProps.style, columnHeaderProps.style);\n\n var rest = _extends({}, theadFilterThProps.rest, columnHeaderProps.rest);\n\n var filter = filtered.find(function (filter) {\n return filter.id === column.id;\n });\n\n var ResolvedFilterComponent = column.Filter || FilterComponent;\n\n var isFilterable = _.getFirstDefined(column.filterable, filterable, false);\n\n return React.createElement(\n ThComponent,\n _extends({\n key: i + '-' + column.id,\n className: classnames(classes),\n style: _extends({}, styles, {\n flex: width + ' 0 auto',\n width: _.asPx(width),\n maxWidth: _.asPx(maxWidth)\n })\n }, rest),\n isFilterable ? _.normalizeComponent(ResolvedFilterComponent, {\n column: column,\n filter: filter,\n onChange: function onChange(value) {\n return _this2.filterColumn(column, value);\n }\n }, defaultProps.column.Filter) : null\n );\n };\n\n var makeFilters = function makeFilters() {\n var theadFilterProps = _.splitProps(getTheadFilterProps(finalState, undefined, undefined, _this2));\n var theadFilterTrProps = _.splitProps(getTheadFilterTrProps(finalState, undefined, undefined, _this2));\n return React.createElement(\n TheadComponent,\n _extends({\n className: classnames('-filters', theadFilterProps.className),\n style: _extends({}, theadFilterProps.style, {\n minWidth: rowMinWidth + 'px'\n })\n }, theadFilterProps.rest),\n React.createElement(\n TrComponent,\n _extends({\n className: theadFilterTrProps.className,\n style: theadFilterTrProps.style\n }, theadFilterTrProps.rest),\n allVisibleColumns.map(makeFilter)\n )\n );\n };\n\n var makePageRow = function makePageRow(row, i) {\n var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n var rowInfo = {\n original: row[originalKey],\n row: row,\n index: row[indexKey],\n viewIndex: rowIndex += 1,\n pageSize: pageSize,\n page: page,\n level: path.length,\n nestingPath: path.concat([i]),\n aggregated: row[aggregatedKey],\n groupedByPivot: row[groupedByPivotKey],\n subRows: row[subRowsKey]\n };\n var isExpanded = _.get(expanded, rowInfo.nestingPath);\n var trGroupProps = getTrGroupProps(finalState, rowInfo, undefined, _this2);\n var trProps = _.splitProps(getTrProps(finalState, rowInfo, undefined, _this2));\n return React.createElement(\n TrGroupComponent,\n _extends({ key: rowInfo.nestingPath.join('_') }, trGroupProps),\n React.createElement(\n TrComponent,\n _extends({\n className: classnames(trProps.className, row._viewIndex % 2 ? '-even' : '-odd'),\n style: trProps.style\n }, trProps.rest),\n allVisibleColumns.map(function (column, i2) {\n var resizedCol = resized.find(function (x) {\n return x.id === column.id;\n }) || {};\n var show = typeof column.show === 'function' ? column.show() : column.show;\n var width = _.getFirstDefined(resizedCol.value, column.width, column.minWidth);\n var maxWidth = _.getFirstDefined(resizedCol.value, column.width, column.maxWidth);\n var tdProps = _.splitProps(getTdProps(finalState, rowInfo, column, _this2));\n var columnProps = _.splitProps(column.getProps(finalState, rowInfo, column, _this2));\n\n var classes = [tdProps.className, column.className, columnProps.className];\n\n var styles = _extends({}, tdProps.style, column.style, columnProps.style);\n\n var cellInfo = _extends({}, rowInfo, {\n isExpanded: isExpanded,\n column: _extends({}, column),\n value: rowInfo.row[column.id],\n pivoted: column.pivoted,\n expander: column.expander,\n resized: resized,\n show: show,\n width: width,\n maxWidth: maxWidth,\n tdProps: tdProps,\n columnProps: columnProps,\n classes: classes,\n styles: styles\n });\n\n var value = cellInfo.value;\n\n var useOnExpanderClick = void 0;\n var isBranch = void 0;\n var isPreview = void 0;\n\n var onExpanderClick = function onExpanderClick(e) {\n var newExpanded = _.clone(expanded);\n if (isExpanded) {\n newExpanded = _.set(newExpanded, cellInfo.nestingPath, false);\n } else {\n newExpanded = _.set(newExpanded, cellInfo.nestingPath, {});\n }\n\n return _this2.setStateWithData({\n expanded: newExpanded\n }, function () {\n return onExpandedChange && onExpandedChange(newExpanded, cellInfo.nestingPath, e);\n });\n };\n\n // Default to a standard cell\n var resolvedCell = _.normalizeComponent(column.Cell, cellInfo, value);\n\n // Resolve Renderers\n var ResolvedAggregatedComponent = column.Aggregated || (!column.aggregate ? AggregatedComponent : column.Cell);\n var ResolvedExpanderComponent = column.Expander || ExpanderComponent;\n var ResolvedPivotValueComponent = column.PivotValue || PivotValueComponent;\n var DefaultResolvedPivotComponent = PivotComponent || function (props) {\n return React.createElement(\n 'div',\n null,\n React.createElement(ResolvedExpanderComponent, props),\n React.createElement(ResolvedPivotValueComponent, props)\n );\n };\n var ResolvedPivotComponent = column.Pivot || DefaultResolvedPivotComponent;\n\n // Is this cell expandable?\n if (cellInfo.pivoted || cellInfo.expander) {\n // Make it expandable by defualt\n cellInfo.expandable = true;\n useOnExpanderClick = true;\n // If pivoted, has no subRows, and does not have a subComponent,\n // do not make expandable\n if (cellInfo.pivoted && !cellInfo.subRows && !SubComponent) {\n cellInfo.expandable = false;\n }\n }\n\n if (cellInfo.pivoted) {\n // Is this column a branch?\n isBranch = rowInfo.row[pivotIDKey] === column.id && cellInfo.subRows;\n // Should this column be blank?\n isPreview = pivotBy.indexOf(column.id) > pivotBy.indexOf(rowInfo.row[pivotIDKey]) && cellInfo.subRows;\n // Pivot Cell Render Override\n if (isBranch) {\n // isPivot\n resolvedCell = _.normalizeComponent(ResolvedPivotComponent, _extends({}, cellInfo, {\n value: row[pivotValKey]\n }), row[pivotValKey]);\n } else if (isPreview) {\n // Show the pivot preview\n resolvedCell = _.normalizeComponent(ResolvedAggregatedComponent, cellInfo, value);\n } else {\n resolvedCell = null;\n }\n } else if (cellInfo.aggregated) {\n resolvedCell = _.normalizeComponent(ResolvedAggregatedComponent, cellInfo, value);\n }\n\n if (cellInfo.expander) {\n resolvedCell = _.normalizeComponent(ResolvedExpanderComponent, cellInfo, row[pivotValKey]);\n if (pivotBy) {\n if (cellInfo.groupedByPivot) {\n resolvedCell = null;\n }\n if (!cellInfo.subRows && !SubComponent) {\n resolvedCell = null;\n }\n }\n }\n\n var resolvedOnExpanderClick = useOnExpanderClick ? onExpanderClick : function () {};\n\n // If there are multiple onClick events, make sure they don't\n // override eachother. This should maybe be expanded to handle all\n // function attributes\n var interactionProps = {\n onClick: resolvedOnExpanderClick\n };\n\n if (tdProps.rest.onClick) {\n interactionProps.onClick = function (e) {\n tdProps.rest.onClick(e, function () {\n return resolvedOnExpanderClick(e);\n });\n };\n }\n\n if (columnProps.rest.onClick) {\n interactionProps.onClick = function (e) {\n columnProps.rest.onClick(e, function () {\n return resolvedOnExpanderClick(e);\n });\n };\n }\n\n // Return the cell\n return React.createElement(\n TdComponent\n // eslint-disable-next-line react/no-array-index-key\n ,\n _extends({ key: i2 + '-' + column.id,\n className: classnames(classes, !show && 'hidden', cellInfo.expandable && 'rt-expandable', (isBranch || isPreview) && 'rt-pivot'),\n style: _extends({}, styles, {\n flex: width + ' 0 auto',\n width: _.asPx(width),\n maxWidth: _.asPx(maxWidth)\n })\n }, tdProps.rest, columnProps.rest, interactionProps),\n resolvedCell\n );\n })\n ),\n rowInfo.subRows && isExpanded && rowInfo.subRows.map(function (d, i) {\n return makePageRow(d, i, rowInfo.nestingPath);\n }),\n SubComponent && !rowInfo.subRows && isExpanded && SubComponent(rowInfo)\n );\n };\n\n var makePadColumn = function makePadColumn(column, i) {\n var resizedCol = resized.find(function (x) {\n return x.id === column.id;\n }) || {};\n var show = typeof column.show === 'function' ? column.show() : column.show;\n var width = _.getFirstDefined(resizedCol.value, column.width, column.minWidth);\n var flex = width;\n var maxWidth = _.getFirstDefined(resizedCol.value, column.width, column.maxWidth);\n var tdProps = _.splitProps(getTdProps(finalState, undefined, column, _this2));\n var columnProps = _.splitProps(column.getProps(finalState, undefined, column, _this2));\n\n var classes = [tdProps.className, column.className, columnProps.className];\n\n var styles = _extends({}, tdProps.style, column.style, columnProps.style);\n\n return React.createElement(\n TdComponent,\n _extends({\n key: i + '-' + column.id,\n className: classnames(classes, !show && 'hidden'),\n style: _extends({}, styles, {\n flex: flex + ' 0 auto',\n width: _.asPx(width),\n maxWidth: _.asPx(maxWidth)\n })\n }, tdProps.rest),\n _.normalizeComponent(PadRowComponent)\n );\n };\n\n var makePadRow = function makePadRow(row, i) {\n var trGroupProps = getTrGroupProps(finalState, undefined, undefined, _this2);\n var trProps = _.splitProps(getTrProps(finalState, undefined, undefined, _this2));\n return React.createElement(\n TrGroupComponent,\n _extends({ key: i }, trGroupProps),\n React.createElement(\n TrComponent,\n {\n className: classnames('-padRow', (pageRows.length + i) % 2 ? '-even' : '-odd', trProps.className),\n style: trProps.style || {}\n },\n allVisibleColumns.map(makePadColumn)\n )\n );\n };\n\n var makeColumnFooter = function makeColumnFooter(column, i) {\n var resizedCol = resized.find(function (x) {\n return x.id === column.id;\n }) || {};\n var show = typeof column.show === 'function' ? column.show() : column.show;\n var width = _.getFirstDefined(resizedCol.value, column.width, column.minWidth);\n var maxWidth = _.getFirstDefined(resizedCol.value, column.width, column.maxWidth);\n var tFootTdProps = _.splitProps(getTfootTdProps(finalState, undefined, undefined, _this2));\n var columnProps = _.splitProps(column.getProps(finalState, undefined, column, _this2));\n var columnFooterProps = _.splitProps(column.getFooterProps(finalState, undefined, column, _this2));\n\n var classes = [tFootTdProps.className, column.className, columnProps.className, columnFooterProps.className];\n\n var styles = _extends({}, tFootTdProps.style, column.style, columnProps.style, columnFooterProps.style);\n\n return React.createElement(\n TdComponent,\n _extends({\n key: i + '-' + column.id,\n className: classnames(classes, !show && 'hidden'),\n style: _extends({}, styles, {\n flex: width + ' 0 auto',\n width: _.asPx(width),\n maxWidth: _.asPx(maxWidth)\n })\n }, columnProps.rest, tFootTdProps.rest, columnFooterProps.rest),\n _.normalizeComponent(column.Footer, {\n data: sortedData,\n column: column\n })\n );\n };\n\n var makeColumnFooters = function makeColumnFooters() {\n var tFootProps = getTfootProps(finalState, undefined, undefined, _this2);\n var tFootTrProps = _.splitProps(getTfootTrProps(finalState, undefined, undefined, _this2));\n return React.createElement(\n TfootComponent,\n _extends({\n className: tFootProps.className,\n style: _extends({}, tFootProps.style, {\n minWidth: rowMinWidth + 'px'\n })\n }, tFootProps.rest),\n React.createElement(\n TrComponent,\n _extends({\n className: classnames(tFootTrProps.className),\n style: tFootTrProps.style\n }, tFootTrProps.rest),\n allVisibleColumns.map(makeColumnFooter)\n )\n );\n };\n\n var makePagination = function makePagination() {\n var paginationProps = _.splitProps(getPaginationProps(finalState, undefined, undefined, _this2));\n return React.createElement(PaginationComponent, _extends({}, resolvedState, {\n pages: pages,\n canPrevious: canPrevious,\n canNext: canNext,\n onPageChange: _this2.onPageChange,\n onPageSizeChange: _this2.onPageSizeChange,\n className: paginationProps.className,\n style: paginationProps.style\n }, paginationProps.rest));\n };\n\n var makeTable = function makeTable() {\n var pagination = makePagination();\n return React.createElement(\n 'div',\n _extends({\n className: classnames('ReactTable', className, rootProps.className),\n style: _extends({}, style, rootProps.style)\n }, rootProps.rest),\n showPagination && showPaginationTop ? React.createElement(\n 'div',\n { className: 'pagination-top' },\n pagination\n ) : null,\n React.createElement(\n TableComponent,\n _extends({\n className: classnames(tableProps.className, currentlyResizing ? 'rt-resizing' : ''),\n style: tableProps.style\n }, tableProps.rest),\n hasHeaderGroups ? makeHeaderGroups() : null,\n makeHeaders(),\n hasFilters ? makeFilters() : null,\n React.createElement(\n TbodyComponent,\n _extends({\n className: classnames(tBodyProps.className),\n style: _extends({}, tBodyProps.style, {\n minWidth: rowMinWidth + 'px'\n })\n }, tBodyProps.rest),\n pageRows.map(function (d, i) {\n return makePageRow(d, i);\n }),\n padRows.map(makePadRow)\n ),\n hasColumnFooter ? makeColumnFooters() : null\n ),\n showPagination && showPaginationBottom ? React.createElement(\n 'div',\n { className: 'pagination-bottom' },\n pagination\n ) : null,\n !pageRows.length && React.createElement(\n NoDataComponent,\n noDataProps,\n _.normalizeComponent(noDataText)\n ),\n React.createElement(LoadingComponent, _extends({ loading: loading, loadingText: loadingText }, loadingProps))\n );\n };\n\n // childProps are optionally passed to a function-as-a-child\n return children ? children(finalState, makeTable, this) : makeTable();\n }\n }]);\n\n return ReactTable;\n}(Methods(Lifecycle(Component)));\n\nReactTable.propTypes = propTypes;\nReactTable.defaultProps = defaultProps;\nexport default ReactTable;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJSZWFjdCIsIkNvbXBvbmVudCIsImNsYXNzbmFtZXMiLCJfIiwiTGlmZWN5Y2xlIiwiTWV0aG9kcyIsImRlZmF1bHRQcm9wcyIsInByb3BUeXBlcyIsIlJlYWN0VGFibGVEZWZhdWx0cyIsIlJlYWN0VGFibGUiLCJwcm9wcyIsImdldFJlc29sdmVkU3RhdGUiLCJiaW5kIiwiZ2V0RGF0YU1vZGVsIiwiZ2V0U29ydGVkRGF0YSIsImZpcmVGZXRjaERhdGEiLCJnZXRQcm9wT3JTdGF0ZSIsImdldFN0YXRlT3JQcm9wIiwiZmlsdGVyRGF0YSIsInNvcnREYXRhIiwiZ2V0TWluUm93cyIsIm9uUGFnZUNoYW5nZSIsIm9uUGFnZVNpemVDaGFuZ2UiLCJzb3J0Q29sdW1uIiwiZmlsdGVyQ29sdW1uIiwicmVzaXplQ29sdW1uU3RhcnQiLCJyZXNpemVDb2x1bW5FbmQiLCJyZXNpemVDb2x1bW5Nb3ZpbmciLCJzdGF0ZSIsInBhZ2UiLCJwYWdlU2l6ZSIsImRlZmF1bHRQYWdlU2l6ZSIsInNvcnRlZCIsImRlZmF1bHRTb3J0ZWQiLCJleHBhbmRlZCIsImRlZmF1bHRFeHBhbmRlZCIsImZpbHRlcmVkIiwiZGVmYXVsdEZpbHRlcmVkIiwicmVzaXplZCIsImRlZmF1bHRSZXNpemVkIiwiY3VycmVudGx5UmVzaXppbmciLCJza2lwTmV4dFNvcnQiLCJyZXNvbHZlZFN0YXRlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJzdHlsZSIsImdldFByb3BzIiwiZ2V0VGFibGVQcm9wcyIsImdldFRoZWFkR3JvdXBQcm9wcyIsImdldFRoZWFkR3JvdXBUclByb3BzIiwiZ2V0VGhlYWRHcm91cFRoUHJvcHMiLCJnZXRUaGVhZFByb3BzIiwiZ2V0VGhlYWRUclByb3BzIiwiZ2V0VGhlYWRUaFByb3BzIiwiZ2V0VGhlYWRGaWx0ZXJQcm9wcyIsImdldFRoZWFkRmlsdGVyVHJQcm9wcyIsImdldFRoZWFkRmlsdGVyVGhQcm9wcyIsImdldFRib2R5UHJvcHMiLCJnZXRUckdyb3VwUHJvcHMiLCJnZXRUclByb3BzIiwiZ2V0VGRQcm9wcyIsImdldFRmb290UHJvcHMiLCJnZXRUZm9vdFRyUHJvcHMiLCJnZXRUZm9vdFRkUHJvcHMiLCJnZXRQYWdpbmF0aW9uUHJvcHMiLCJnZXRMb2FkaW5nUHJvcHMiLCJnZXROb0RhdGFQcm9wcyIsImdldFJlc2l6ZXJQcm9wcyIsInNob3dQYWdpbmF0aW9uIiwic2hvd1BhZ2luYXRpb25Ub3AiLCJzaG93UGFnaW5hdGlvbkJvdHRvbSIsIm1hbnVhbCIsImxvYWRpbmdUZXh0Iiwibm9EYXRhVGV4dCIsInNvcnRhYmxlIiwibXVsdGlTb3J0IiwicmVzaXphYmxlIiwiZmlsdGVyYWJsZSIsInBpdm90SURLZXkiLCJwaXZvdFZhbEtleSIsInBpdm90QnkiLCJzdWJSb3dzS2V5IiwiYWdncmVnYXRlZEtleSIsIm9yaWdpbmFsS2V5IiwiaW5kZXhLZXkiLCJncm91cGVkQnlQaXZvdEtleSIsImxvYWRpbmciLCJwYWdlcyIsIm9uRXhwYW5kZWRDaGFuZ2UiLCJUYWJsZUNvbXBvbmVudCIsIlRoZWFkQ29tcG9uZW50IiwiVGJvZHlDb21wb25lbnQiLCJUckdyb3VwQ29tcG9uZW50IiwiVHJDb21wb25lbnQiLCJUaENvbXBvbmVudCIsIlRkQ29tcG9uZW50IiwiVGZvb3RDb21wb25lbnQiLCJQYWdpbmF0aW9uQ29tcG9uZW50IiwiTG9hZGluZ0NvbXBvbmVudCIsIlN1YkNvbXBvbmVudCIsIk5vRGF0YUNvbXBvbmVudCIsIlJlc2l6ZXJDb21wb25lbnQiLCJFeHBhbmRlckNvbXBvbmVudCIsIlBpdm90VmFsdWVDb21wb25lbnQiLCJQaXZvdENvbXBvbmVudCIsIkFnZ3JlZ2F0ZWRDb21wb25lbnQiLCJGaWx0ZXJDb21wb25lbnQiLCJQYWRSb3dDb21wb25lbnQiLCJyZXNvbHZlZERhdGEiLCJhbGxWaXNpYmxlQ29sdW1ucyIsImhlYWRlckdyb3VwcyIsImhhc0hlYWRlckdyb3VwcyIsInNvcnRlZERhdGEiLCJzdGFydFJvdyIsImVuZFJvdyIsInBhZ2VSb3dzIiwic2xpY2UiLCJtaW5Sb3dzIiwicGFkUm93cyIsInJhbmdlIiwiTWF0aCIsIm1heCIsImxlbmd0aCIsImhhc0NvbHVtbkZvb3RlciIsInNvbWUiLCJkIiwiRm9vdGVyIiwiaGFzRmlsdGVycyIsInJlY3Vyc2VSb3dzVmlld0luZGV4Iiwicm93cyIsInBhdGgiLCJpbmRleCIsIm1hcCIsInJvdyIsImkiLCJyb3dXaXRoVmlld0luZGV4IiwiX3ZpZXdJbmRleCIsIm5ld1BhdGgiLCJjb25jYXQiLCJnZXQiLCJjYW5QcmV2aW91cyIsImNhbk5leHQiLCJyb3dNaW5XaWR0aCIsInN1bSIsInJlc2l6ZWRDb2x1bW4iLCJmaW5kIiwieCIsImlkIiwiZ2V0Rmlyc3REZWZpbmVkIiwidmFsdWUiLCJ3aWR0aCIsIm1pbldpZHRoIiwicm93SW5kZXgiLCJmaW5hbFN0YXRlIiwicm9vdFByb3BzIiwic3BsaXRQcm9wcyIsInVuZGVmaW5lZCIsInRhYmxlUHJvcHMiLCJ0Qm9keVByb3BzIiwibG9hZGluZ1Byb3BzIiwibm9EYXRhUHJvcHMiLCJtYWtlSGVhZGVyR3JvdXAiLCJjb2x1bW4iLCJyZXNpemVkVmFsdWUiLCJjb2wiLCJmbGV4IiwiY29sdW1ucyIsIm1heFdpZHRoIiwidGhlYWRHcm91cFRoUHJvcHMiLCJjb2x1bW5IZWFkZXJQcm9wcyIsImdldEhlYWRlclByb3BzIiwiY2xhc3NlcyIsImhlYWRlckNsYXNzTmFtZSIsInN0eWxlcyIsImhlYWRlclN0eWxlIiwicmVzdCIsImZsZXhTdHlsZXMiLCJhc1B4Iiwibm9ybWFsaXplQ29tcG9uZW50IiwiSGVhZGVyIiwiZGF0YSIsIm1ha2VIZWFkZXJHcm91cHMiLCJ0aGVhZEdyb3VwUHJvcHMiLCJ0aGVhZEdyb3VwVHJQcm9wcyIsIm1ha2VIZWFkZXIiLCJyZXNpemVkQ29sIiwic29ydCIsInNob3ciLCJ0aGVhZFRoUHJvcHMiLCJpc1Jlc2l6YWJsZSIsInJlc2l6ZXIiLCJlIiwiaXNTb3J0YWJsZSIsImRlc2MiLCJpbmNsdWRlcyIsInNoaWZ0S2V5IiwibWFrZUhlYWRlcnMiLCJ0aGVhZFByb3BzIiwidGhlYWRUclByb3BzIiwibWFrZUZpbHRlciIsInRoZWFkRmlsdGVyVGhQcm9wcyIsImZpbHRlciIsIlJlc29sdmVkRmlsdGVyQ29tcG9uZW50IiwiRmlsdGVyIiwiaXNGaWx0ZXJhYmxlIiwib25DaGFuZ2UiLCJtYWtlRmlsdGVycyIsInRoZWFkRmlsdGVyUHJvcHMiLCJ0aGVhZEZpbHRlclRyUHJvcHMiLCJtYWtlUGFnZVJvdyIsInJvd0luZm8iLCJvcmlnaW5hbCIsInZpZXdJbmRleCIsImxldmVsIiwibmVzdGluZ1BhdGgiLCJhZ2dyZWdhdGVkIiwiZ3JvdXBlZEJ5UGl2b3QiLCJzdWJSb3dzIiwiaXNFeHBhbmRlZCIsInRyR3JvdXBQcm9wcyIsInRyUHJvcHMiLCJqb2luIiwiaTIiLCJ0ZFByb3BzIiwiY29sdW1uUHJvcHMiLCJjZWxsSW5mbyIsInBpdm90ZWQiLCJleHBhbmRlciIsInVzZU9uRXhwYW5kZXJDbGljayIsImlzQnJhbmNoIiwiaXNQcmV2aWV3Iiwib25FeHBhbmRlckNsaWNrIiwibmV3RXhwYW5kZWQiLCJjbG9uZSIsInNldCIsInNldFN0YXRlV2l0aERhdGEiLCJyZXNvbHZlZENlbGwiLCJDZWxsIiwiUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50IiwiQWdncmVnYXRlZCIsImFnZ3JlZ2F0ZSIsIlJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQiLCJFeHBhbmRlciIsIlJlc29sdmVkUGl2b3RWYWx1ZUNvbXBvbmVudCIsIlBpdm90VmFsdWUiLCJEZWZhdWx0UmVzb2x2ZWRQaXZvdENvbXBvbmVudCIsIlJlc29sdmVkUGl2b3RDb21wb25lbnQiLCJQaXZvdCIsImV4cGFuZGFibGUiLCJpbmRleE9mIiwicmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2siLCJpbnRlcmFjdGlvblByb3BzIiwib25DbGljayIsIm1ha2VQYWRDb2x1bW4iLCJtYWtlUGFkUm93IiwibWFrZUNvbHVtbkZvb3RlciIsInRGb290VGRQcm9wcyIsImNvbHVtbkZvb3RlclByb3BzIiwiZ2V0Rm9vdGVyUHJvcHMiLCJtYWtlQ29sdW1uRm9vdGVycyIsInRGb290UHJvcHMiLCJ0Rm9vdFRyUHJvcHMiLCJtYWtlUGFnaW5hdGlvbiIsInBhZ2luYXRpb25Qcm9wcyIsIm1ha2VUYWJsZSIsInBhZ2luYXRpb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQWlDLE9BQWpDO0FBQ0EsT0FBT0MsVUFBUCxNQUF1QixZQUF2QjtBQUNBO0FBQ0EsT0FBT0MsQ0FBUCxNQUFjLFNBQWQ7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLGFBQXRCO0FBQ0EsT0FBT0MsT0FBUCxNQUFvQixXQUFwQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsZ0JBQXpCO0FBQ0EsT0FBT0MsU0FBUCxNQUFzQixhQUF0Qjs7QUFFQSxPQUFPLElBQU1DLHFCQUFxQkYsWUFBM0I7O0lBRWNHLFU7OztBQUluQixzQkFBYUMsS0FBYixFQUFvQjtBQUFBOztBQUFBOztBQUdsQixVQUFLQyxnQkFBTCxHQUF3QixNQUFLQSxnQkFBTCxDQUFzQkMsSUFBdEIsT0FBeEI7QUFDQSxVQUFLQyxZQUFMLEdBQW9CLE1BQUtBLFlBQUwsQ0FBa0JELElBQWxCLE9BQXBCO0FBQ0EsVUFBS0UsYUFBTCxHQUFxQixNQUFLQSxhQUFMLENBQW1CRixJQUFuQixPQUFyQjtBQUNBLFVBQUtHLGFBQUwsR0FBcUIsTUFBS0EsYUFBTCxDQUFtQkgsSUFBbkIsT0FBckI7QUFDQSxVQUFLSSxjQUFMLEdBQXNCLE1BQUtBLGNBQUwsQ0FBb0JKLElBQXBCLE9BQXRCO0FBQ0EsVUFBS0ssY0FBTCxHQUFzQixNQUFLQSxjQUFMLENBQW9CTCxJQUFwQixPQUF0QjtBQUNBLFVBQUtNLFVBQUwsR0FBa0IsTUFBS0EsVUFBTCxDQUFnQk4sSUFBaEIsT0FBbEI7QUFDQSxVQUFLTyxRQUFMLEdBQWdCLE1BQUtBLFFBQUwsQ0FBY1AsSUFBZCxPQUFoQjtBQUNBLFVBQUtRLFVB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OztBQUFuQlEsVSxDQUNaRixTLEdBQVlBLFM7QUFEQUUsVSxDQUVaSCxZLEdBQWVBLFk7ZUFGSEcsVSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG4vL1xuaW1wb3J0IF8gZnJvbSAnLi91dGlscydcbmltcG9ydCBMaWZlY3ljbGUgZnJvbSAnLi9saWZlY3ljbGUnXG5pbXBvcnQgTWV0aG9kcyBmcm9tICcuL21ldGhvZHMnXG5pbXBvcnQgZGVmYXVsdFByb3BzIGZyb20gJy4vZGVmYXVsdFByb3BzJ1xuaW1wb3J0IHByb3BUeXBlcyBmcm9tICcuL3Byb3BUeXBlcydcblxuZXhwb3J0IGNvbnN0IFJlYWN0VGFibGVEZWZhdWx0cyA9IGRlZmF1bHRQcm9wc1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFjdFRhYmxlIGV4dGVuZHMgTWV0aG9kcyhMaWZlY3ljbGUoQ29tcG9uZW50KSkge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHNcblxuICBjb25zdHJ1Y3RvciAocHJvcHMpIHtcbiAgICBzdXBlcigpXG5cbiAgICB0aGlzLmdldFJlc29sdmVkU3RhdGUgPSB0aGlzLmdldFJlc29sdmVkU3RhdGUuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0RGF0YU1vZGVsID0gdGhpcy5nZXREYXRhTW9kZWwuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0U29ydGVkRGF0YSA9IHRoaXMuZ2V0U29ydGVkRGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5maXJlRmV0Y2hEYXRhID0gdGhpcy5maXJlRmV0Y2hEYXRhLmJpbmQodGhpcylcbiAgICB0aGlzLmdldFByb3BPclN0YXRlID0gdGhpcy5nZXRQcm9wT3JTdGF0ZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5nZXRTdGF0ZU9yUHJvcCA9IHRoaXMuZ2V0U3RhdGVPclByb3AuYmluZCh0aGlzKVxuICAgIHRoaXMuZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRGF0YS5iaW5kKHRoaXMpXG4gICAgdGhpcy5zb3J0RGF0YSA9IHRoaXMuc29ydERhdGEuYmluZCh0aGlzKVxuICAgIHRoaXMuZ2V0TWluUm93cyA9IHRoaXMuZ2V0TWluUm93cy5iaW5kKHRoaXMpXG4gICAgdGhpcy5vblBhZ2VDaGFuZ2UgPSB0aGlzLm9uUGFnZUNoYW5nZS5iaW5kKHRoaXMpXG4gICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlID0gdGhpcy5vblBhZ2VTaXplQ2hhbmdlLmJpbmQodGhpcylcbiAgICB0aGlzLnNvcnRDb2x1bW4gPSB0aGlzLnNvcnRDb2x1bW4uYmluZCh0aGlzKVxuICAgIHRoaXMuZmlsdGVyQ29sdW1uID0gdGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKVxuICAgIHRoaXMucmVzaXplQ29sdW1uU3RhcnQgPSB0aGlzLnJlc2l6ZUNvbHVtblN0YXJ0LmJpbmQodGhpcylcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbkVuZCA9IHRoaXMucmVzaXplQ29sdW1uRW5kLmJpbmQodGhpcylcbiAgICB0aGlzLnJlc2l6ZUNvbHVtbk1vdmluZyA9IHRoaXMucmVzaXplQ29sdW1uTW92aW5nLmJpbmQodGhpcylcblxuICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICBwYWdlOiAwLFxuICAgICAgcGFnZVNpemU6IHByb3BzLmRlZmF1bHRQYWdlU2l6ZSxcbiAgICAgIHNvcnRlZDogcHJvcHMuZGVmYXVsdFNvcnRlZCxcbiAgICAgIGV4cGFuZGVkOiBwcm9wcy5kZWZhdWx0RXhwYW5kZWQsXG4gICAgICBmaWx0ZXJlZDogcHJvcHMuZGVmYXVsdEZpbHRlcmVkLFxuICAgICAgcmVzaXplZDogcHJvcHMuZGVmYXVsdFJlc2l6ZWQsXG4gICAgICBjdXJyZW50bHlSZXNpemluZzogZmFsc2UsXG4gICAgICBza2lwTmV4dFNvcnQ6IGZhbHNlLFxuICAgIH1cbiAgfVxuXG4gIHJlbmRlciAoKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZSA9IHRoaXMuZ2V0UmVzb2x2ZWRTdGF0ZSgpXG4gICAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBzdHlsZSxcbiAgICAgIGdldFByb3BzLFxuICAgICAgZ2V0VGFibGVQcm9wcyxcbiAgICAgIGdldFRoZWFkR3JvdXBQcm9wcyxcbiAgICAgIGdldFRoZWFkR3JvdXBUclByb3BzLFxuICAgICAgZ2V0VGhlYWRHcm91cFRoUHJvcHMsXG4gICAgICBnZXRUaGVhZFByb3BzLFxuICAgICAgZ2V0VGhlYWRUclByb3BzLFxuICAgICAgZ2V0VGhlYWRUaFByb3BzLFxuICAgICAgZ2V0VGhlYWRGaWx0ZXJQcm9wcyxcbiAgICAgIGdldFRoZWFkRmlsdGVyVHJQcm9wcyxcbiAgICAgIGdldFRoZWFkRmlsdGVyVGhQcm9wcyxcbiAgICAgIGdldFRib2R5UHJvcHMsXG4gICAgICBnZXRUckdyb3VwUHJvcHMsXG4gICAgICBnZXRUclByb3BzLFxuICAgICAgZ2V0VGRQcm9wcyxcbiAgICAgIGdldFRmb290UHJvcHMsXG4gICAgICBnZXRUZm9vdFRyUHJvcHMsXG4gICAgICBnZXRUZm9vdFRkUHJvcHMsXG4gICAgICBnZXRQYWdpbmF0aW9uUHJvcHMsXG4gICAgICBnZXRMb2FkaW5nUHJvcHMsXG4gICAgICBnZXROb0RhdGFQcm9wcyxcbiAgICAgIGdldFJlc2l6ZXJQcm9wcyxcbiAgICAgIHNob3dQYWdpbmF0aW9uLFxuICAgICAgc2hvd1BhZ2luYXRpb25Ub3AsXG4gICAgICBzaG93UGFnaW5hdGlvbkJvdHRvbSxcbiAgICAgIG1hbnVhbCxcbiAgICAgIGxvYWRpbmdUZXh0LFxuICAgICAgbm9EYXRhVGV4dCxcbiAgICAgIHNvcnRhYmxlLFxuICAgICAgbXVsdGlTb3J0LFxuICAgICAgcmVzaXphYmxlLFxuICAgICAgZmlsdGVyYWJsZSxcbiAgICAgIC8vIFBpdm90aW5nIFN0YXRlXG4gICAgICBwaXZvdElES2V5LFxuICAgICAgcGl2b3RWYWxLZXksXG4gICAgICBwaXZvdEJ5LFxuICAgICAgc3ViUm93c0tleSxcbiAgICAgIGFnZ3JlZ2F0ZWRLZXksXG4gICAgICBvcmlnaW5hbEtleSxcbiAgICAgIGluZGV4S2V5LFxuICAgICAgZ3JvdXBlZEJ5UGl2b3RLZXksXG4gICAgICAvLyBTdGF0ZVxuICAgICAgbG9hZGluZyxcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgcGFnZSxcbiAgICAgIHNvcnRlZCxcbiAgICAgIGZpbHRlcmVkLFxuICAgICAgcmVzaXplZCxcbiAgICAgIGV4cGFuZGVkLFxuICAgICAgcGFnZXMsXG4gICAgICBvbkV4cGFuZGVkQ2hhbmdlLFxuICAgICAgLy8gQ29tcG9uZW50c1xuICAgICAgVGFibGVDb21wb25lbnQsXG4gICAgICBUaGVhZENvbXBvbmVudCxcbiAgICAgIFRib2R5Q29tcG9uZW50LFxuICAgICAgVHJHcm91cENvbXBvbmVudCxcbiAgICAgIFRyQ29tcG9uZW50LFxuICAgICAgVGhDb21wb25lbnQsXG4gICAgICBUZENvbXBvbmVudCxcbiAgICAgIFRmb290Q29tcG9uZW50LFxuICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIExvYWRpbmdDb21wb25lbnQsXG4gICAgICBTdWJDb21wb25lbnQsXG4gICAgICBOb0RhdGFDb21wb25lbnQsXG4gICAgICBSZXNpemVyQ29tcG9uZW50LFxuICAgICAgRXhwYW5kZXJDb21wb25lbnQsXG4gICAgICBQaXZvdFZhbHVlQ29tcG9uZW50LFxuICAgICAgUGl2b3RDb21wb25lbnQsXG4gICAgICBBZ2dyZWdhdGVkQ29tcG9uZW50LFxuICAgICAgRmlsdGVyQ29tcG9uZW50LFxuICAgICAgUGFkUm93Q29tcG9uZW50LFxuICAgICAgLy8gRGF0YSBtb2RlbFxuICAgICAgcmVzb2x2ZWREYXRhLFxuICAgICAgYWxsVmlzaWJsZUNvbHVtbnMsXG4gICAgICBoZWFkZXJHcm91cHMsXG4gICAgICBoYXNIZWFkZXJHcm91cHMsXG4gICAgICAvLyBTb3J0ZWQgRGF0YVxuICAgICAgc29ydGVkRGF0YSxcbiAgICAgIGN1cnJlbnRseVJlc2l6aW5nLFxuICAgIH0gPSByZXNvbHZlZFN0YXRlXG5cbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgY29uc3Qgc3RhcnRSb3cgPSBwYWdlU2l6ZSAqIHBhZ2VcbiAgICBjb25zdCBlbmRSb3cgPSBzdGFydFJvdyArIHBhZ2VTaXplXG4gICAgbGV0IHBhZ2VSb3dzID0gbWFudWFsID8gcmVzb2x2ZWREYXRhIDogc29ydGVkRGF0YS5zbGljZShzdGFydFJvdywgZW5kUm93KVxuICAgIGNvbnN0IG1pblJvd3MgPSB0aGlzLmdldE1pblJvd3MoKVxuICAgIGNvbnN0IHBhZFJvd3MgPSBfLnJhbmdlKE1hdGgubWF4KG1pblJvd3MgLSBwYWdlUm93cy5sZW5ndGgsIDApKVxuXG4gICAgY29uc3QgaGFzQ29sdW1uRm9vdGVyID0gYWxsVmlzaWJsZUNvbHVtbnMuc29tZShkID0+IGQuRm9vdGVyKVxuICAgIGNvbnN0IGhhc0ZpbHRlcnMgPSBmaWx0ZXJhYmxlIHx8IGFsbFZpc2libGVDb2x1bW5zLnNvbWUoZCA9PiBkLmZpbHRlcmFibGUpXG5cbiAgICBjb25zdCByZWN1cnNlUm93c1ZpZXdJbmRleCA9IChyb3dzLCBwYXRoID0gW10sIGluZGV4ID0gLTEpID0+IFtcbiAgICAgIHJvd3MubWFwKChyb3csIGkpID0+IHtcbiAgICAgICAgaW5kZXggKz0gMVxuICAgICAgICBjb25zdCByb3dXaXRoVmlld0luZGV4ID0ge1xuICAgICAgICAgIC4uLnJvdyxcbiAgICAgICAgICBfdmlld0luZGV4OiBpbmRleCxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdQYXRoID0gcGF0aC5jb25jYXQoW2ldKVxuICAgICAgICBpZiAocm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSAmJiBfLmdldChleHBhbmRlZCwgbmV3UGF0aCkpIHtcbiAgICAgICAgICBbcm93V2l0aFZpZXdJbmRleFtzdWJSb3dzS2V5XSwgaW5kZXhdID0gcmVjdXJzZVJvd3NWaWV3SW5kZXgoXG4gICAgICAgICAgICByb3dXaXRoVmlld0luZGV4W3N1YlJvd3NLZXldLFxuICAgICAgICAgICAgbmV3UGF0aCxcbiAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dXaXRoVmlld0luZGV4XG4gICAgICB9KSxcbiAgICAgIGluZGV4LFxuICAgIF07XG4gICAgW3BhZ2VSb3dzXSA9IHJlY3Vyc2VSb3dzVmlld0luZGV4KHBhZ2VSb3dzKVxuXG4gICAgY29uc3QgY2FuUHJldmlvdXMgPSBwYWdlID4gMFxuICAgIGNvbnN0IGNhbk5leHQgPSBwYWdlICsgMSA8IHBhZ2VzXG5cbiAgICBjb25zdCByb3dNaW5XaWR0aCA9IF8uc3VtKFxuICAgICAgYWxsVmlzaWJsZUNvbHVtbnMubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCByZXNpemVkQ29sdW1uID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gZC5pZCkgfHwge31cbiAgICAgICAgcmV0dXJuIF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2x1bW4udmFsdWUsIGQud2lkdGgsIGQubWluV2lkdGgpXG4gICAgICB9KVxuICAgIClcblxuICAgIGxldCByb3dJbmRleCA9IC0xXG5cbiAgICBjb25zdCBmaW5hbFN0YXRlID0ge1xuICAgICAgLi4ucmVzb2x2ZWRTdGF0ZSxcbiAgICAgIHN0YXJ0Um93LFxuICAgICAgZW5kUm93LFxuICAgICAgcGFnZVJvd3MsXG4gICAgICBtaW5Sb3dzLFxuICAgICAgcGFkUm93cyxcbiAgICAgIGhhc0NvbHVtbkZvb3RlcixcbiAgICAgIGNhblByZXZpb3VzLFxuICAgICAgY2FuTmV4dCxcbiAgICAgIHJvd01pbldpZHRoLFxuICAgIH1cblxuICAgIGNvbnN0IHJvb3RQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgY29uc3QgdGFibGVQcm9wcyA9IF8uc3BsaXRQcm9wcyhnZXRUYWJsZVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICBjb25zdCB0Qm9keVByb3BzID0gXy5zcGxpdFByb3BzKGdldFRib2R5UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgIGNvbnN0IGxvYWRpbmdQcm9wcyA9IGdldExvYWRpbmdQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICBjb25zdCBub0RhdGFQcm9wcyA9IGdldE5vRGF0YVByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuXG4gICAgLy8gVmlzdWFsIENvbXBvbmVudHNcblxuICAgIGNvbnN0IG1ha2VIZWFkZXJHcm91cCA9IChjb2x1bW4sIGkpID0+IHtcbiAgICAgIGNvbnN0IHJlc2l6ZWRWYWx1ZSA9IGNvbCA9PiAocmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sLmlkKSB8fCB7fSkudmFsdWVcbiAgICAgIGNvbnN0IGZsZXggPSBfLnN1bShcbiAgICAgICAgY29sdW1uLmNvbHVtbnMubWFwKGNvbCA9PiAoY29sLndpZHRoIHx8IHJlc2l6ZWRWYWx1ZShjb2wpID8gMCA6IGNvbC5taW5XaWR0aCkpXG4gICAgICApXG4gICAgICBjb25zdCB3aWR0aCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRWYWx1ZShjb2wpLCBjb2wud2lkdGgsIGNvbC5taW5XaWR0aCkpXG4gICAgICApXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uc3VtKFxuICAgICAgICBjb2x1bW4uY29sdW1ucy5tYXAoY29sID0+IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRWYWx1ZShjb2wpLCBjb2wud2lkdGgsIGNvbC5tYXhXaWR0aCkpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBUaFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IGNvbHVtbkhlYWRlclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBjb2x1bW4uZ2V0SGVhZGVyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGNsYXNzZXMgPSBbXG4gICAgICAgIGNvbHVtbi5oZWFkZXJDbGFzc05hbWUsXG4gICAgICAgIHRoZWFkR3JvdXBUaFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uSGVhZGVyUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgXVxuXG4gICAgICBjb25zdCBzdHlsZXMgPSB7XG4gICAgICAgIC4uLmNvbHVtbi5oZWFkZXJTdHlsZSxcbiAgICAgICAgLi4udGhlYWRHcm91cFRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZEdyb3VwVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBmbGV4U3R5bGVzID0ge1xuICAgICAgICBmbGV4OiBgJHtmbGV4fSAwIGF1dG9gLFxuICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoY2xhc3Nlcyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIC4uLmZsZXhTdHlsZXMsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uSGVhZGVyLCB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VIZWFkZXJHcm91cHMgPSAoKSA9PiB7XG4gICAgICBjb25zdCB0aGVhZEdyb3VwUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFRoZWFkR3JvdXBQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IHRoZWFkR3JvdXBUclByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEdyb3VwVHJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWhlYWRlckdyb3VwcycsIHRoZWFkR3JvdXBQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi50aGVhZEdyb3VwUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRoZWFkR3JvdXBQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkR3JvdXBUclByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGVhZEdyb3VwVHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50aGVhZEdyb3VwVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtoZWFkZXJHcm91cHMubWFwKG1ha2VIZWFkZXJHcm91cCl9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNvcnQgPSBzb3J0ZWQuZmluZChkID0+IGQuaWQgPT09IGNvbHVtbi5pZClcbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGhlYWRUaFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRoZWFkVGhQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW2NvbHVtbi5oZWFkZXJDbGFzc05hbWUsIHRoZWFkVGhQcm9wcy5jbGFzc05hbWUsIGNvbHVtbkhlYWRlclByb3BzLmNsYXNzTmFtZV1cblxuICAgICAgY29uc3Qgc3R5bGVzID0ge1xuICAgICAgICAuLi5jb2x1bW4uaGVhZGVyU3R5bGUsXG4gICAgICAgIC4uLnRoZWFkVGhQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMuc3R5bGUsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3QgPSB7XG4gICAgICAgIC4uLnRoZWFkVGhQcm9wcy5yZXN0LFxuICAgICAgICAuLi5jb2x1bW5IZWFkZXJQcm9wcy5yZXN0LFxuICAgICAgfVxuXG4gICAgICBjb25zdCBpc1Jlc2l6YWJsZSA9IF8uZ2V0Rmlyc3REZWZpbmVkKGNvbHVtbi5yZXNpemFibGUsIHJlc2l6YWJsZSwgZmFsc2UpXG4gICAgICBjb25zdCByZXNpemVyID0gaXNSZXNpemFibGUgPyAoXG4gICAgICAgIDxSZXNpemVyQ29tcG9uZW50XG4gICAgICAgICAgb25Nb3VzZURvd249e2UgPT4gdGhpcy5yZXNpemVDb2x1bW5TdGFydChlLCBjb2x1bW4sIGZhbHNlKX1cbiAgICAgICAgICBvblRvdWNoU3RhcnQ9e2UgPT4gdGhpcy5yZXNpemVDb2x1bW5TdGFydChlLCBjb2x1bW4sIHRydWUpfVxuICAgICAgICAgIHsuLi5nZXRSZXNpemVyUHJvcHMoJ2ZpbmFsU3RhdGUnLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcyl9XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbFxuXG4gICAgICBjb25zdCBpc1NvcnRhYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLnNvcnRhYmxlLCBzb3J0YWJsZSwgZmFsc2UpXG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaENvbXBvbmVudFxuICAgICAgICAgIGtleT17YCR7aX0tJHtjb2x1bW4uaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgaXNSZXNpemFibGUgJiYgJ3J0LXJlc2l6YWJsZS1oZWFkZXInLFxuICAgICAgICAgICAgc29ydCA/IChzb3J0LmRlc2MgPyAnLXNvcnQtZGVzYycgOiAnLXNvcnQtYXNjJykgOiAnJyxcbiAgICAgICAgICAgIGlzU29ydGFibGUgJiYgJy1jdXJzb3ItcG9pbnRlcicsXG4gICAgICAgICAgICAhc2hvdyAmJiAnLWhpZGRlbicsXG4gICAgICAgICAgICBwaXZvdEJ5ICYmIHBpdm90Qnkuc2xpY2UoMCwgLTEpLmluY2x1ZGVzKGNvbHVtbi5pZCkgJiYgJ3J0LWhlYWRlci1waXZvdCdcbiAgICAgICAgICApfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB0b2dnbGVTb3J0PXtlID0+IHtcbiAgICAgICAgICAgIGlmIChpc1NvcnRhYmxlKSB0aGlzLnNvcnRDb2x1bW4oY29sdW1uLCBtdWx0aVNvcnQgPyBlLnNoaWZ0S2V5IDogZmFsc2UpXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGlzUmVzaXphYmxlICYmICdydC1yZXNpemFibGUtaGVhZGVyLWNvbnRlbnQnKX0+XG4gICAgICAgICAgICB7Xy5ub3JtYWxpemVDb21wb25lbnQoY29sdW1uLkhlYWRlciwge1xuICAgICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7cmVzaXplcn1cbiAgICAgICAgPC9UaENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlSGVhZGVycyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHRoZWFkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICBjb25zdCB0aGVhZFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGhlYWRUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUaGVhZENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnLWhlYWRlcicsIHRoZWFkUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUhlYWRlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlRmlsdGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJUaFByb3BzID0gXy5zcGxpdFByb3BzKFxuICAgICAgICBnZXRUaGVhZEZpbHRlclRoUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpXG4gICAgICApXG4gICAgICBjb25zdCBjb2x1bW5IZWFkZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgY29sdW1uLmdldEhlYWRlclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgY29sdW1uLCB0aGlzKVxuICAgICAgKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW1xuICAgICAgICBjb2x1bW4uaGVhZGVyQ2xhc3NOYW1lLFxuICAgICAgICB0aGVhZEZpbHRlclRoUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5IZWFkZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4uY29sdW1uLmhlYWRlclN0eWxlLFxuICAgICAgICAuLi50aGVhZEZpbHRlclRoUHJvcHMuc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtbkhlYWRlclByb3BzLnN0eWxlLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN0ID0ge1xuICAgICAgICAuLi50aGVhZEZpbHRlclRoUHJvcHMucmVzdCxcbiAgICAgICAgLi4uY29sdW1uSGVhZGVyUHJvcHMucmVzdCxcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyID0gZmlsdGVyZWQuZmluZChmaWx0ZXIgPT4gZmlsdGVyLmlkID09PSBjb2x1bW4uaWQpXG5cbiAgICAgIGNvbnN0IFJlc29sdmVkRmlsdGVyQ29tcG9uZW50ID0gY29sdW1uLkZpbHRlciB8fCBGaWx0ZXJDb21wb25lbnRcblxuICAgICAgY29uc3QgaXNGaWx0ZXJhYmxlID0gXy5nZXRGaXJzdERlZmluZWQoY29sdW1uLmZpbHRlcmFibGUsIGZpbHRlcmFibGUsIGZhbHNlKVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8VGhDb21wb25lbnRcbiAgICAgICAgICBrZXk9e2Ake2l9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKGNsYXNzZXMpfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAuLi5zdHlsZXMsXG4gICAgICAgICAgICBmbGV4OiBgJHt3aWR0aH0gMCBhdXRvYCxcbiAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgbWF4V2lkdGg6IF8uYXNQeChtYXhXaWR0aCksXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtpc0ZpbHRlcmFibGVcbiAgICAgICAgICAgID8gXy5ub3JtYWxpemVDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgUmVzb2x2ZWRGaWx0ZXJDb21wb25lbnQsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IHZhbHVlID0+IHRoaXMuZmlsdGVyQ29sdW1uKGNvbHVtbiwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZGVmYXVsdFByb3BzLmNvbHVtbi5GaWx0ZXJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICA8L1RoQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VGaWx0ZXJzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdGhlYWRGaWx0ZXJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIGNvbnN0IHRoZWFkRmlsdGVyVHJQcm9wcyA9IF8uc3BsaXRQcm9wcyhcbiAgICAgICAgZ2V0VGhlYWRGaWx0ZXJUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKVxuICAgICAgKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRoZWFkQ29tcG9uZW50XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKCctZmlsdGVycycsIHRoZWFkRmlsdGVyUHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgLi4udGhlYWRGaWx0ZXJQcm9wcy5zdHlsZSxcbiAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB7Li4udGhlYWRGaWx0ZXJQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e3RoZWFkRmlsdGVyVHJQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgICBzdHlsZT17dGhlYWRGaWx0ZXJUclByb3BzLnN0eWxlfVxuICAgICAgICAgICAgey4uLnRoZWFkRmlsdGVyVHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAobWFrZUZpbHRlcil9XG4gICAgICAgICAgPC9UckNvbXBvbmVudD5cbiAgICAgICAgPC9UaGVhZENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlUGFnZVJvdyA9IChyb3csIGksIHBhdGggPSBbXSkgPT4ge1xuICAgICAgY29uc3Qgcm93SW5mbyA9IHtcbiAgICAgICAgb3JpZ2luYWw6IHJvd1tvcmlnaW5hbEtleV0sXG4gICAgICAgIHJvdyxcbiAgICAgICAgaW5kZXg6IHJvd1tpbmRleEtleV0sXG4gICAgICAgIHZpZXdJbmRleDogKHJvd0luZGV4ICs9IDEpLFxuICAgICAgICBwYWdlU2l6ZSxcbiAgICAgICAgcGFnZSxcbiAgICAgICAgbGV2ZWw6IHBhdGgubGVuZ3RoLFxuICAgICAgICBuZXN0aW5nUGF0aDogcGF0aC5jb25jYXQoW2ldKSxcbiAgICAgICAgYWdncmVnYXRlZDogcm93W2FnZ3JlZ2F0ZWRLZXldLFxuICAgICAgICBncm91cGVkQnlQaXZvdDogcm93W2dyb3VwZWRCeVBpdm90S2V5XSxcbiAgICAgICAgc3ViUm93czogcm93W3N1YlJvd3NLZXldLFxuICAgICAgfVxuICAgICAgY29uc3QgaXNFeHBhbmRlZCA9IF8uZ2V0KGV4cGFuZGVkLCByb3dJbmZvLm5lc3RpbmdQYXRoKVxuICAgICAgY29uc3QgdHJHcm91cFByb3BzID0gZ2V0VHJHcm91cFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIGNvbnN0IHRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VHJQcm9wcyhmaW5hbFN0YXRlLCByb3dJbmZvLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRyR3JvdXBDb21wb25lbnQga2V5PXtyb3dJbmZvLm5lc3RpbmdQYXRoLmpvaW4oJ18nKX0gey4uLnRyR3JvdXBQcm9wc30+XG4gICAgICAgICAgPFRyQ29tcG9uZW50XG4gICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXModHJQcm9wcy5jbGFzc05hbWUsIHJvdy5fdmlld0luZGV4ICUgMiA/ICctZXZlbicgOiAnLW9kZCcpfVxuICAgICAgICAgICAgc3R5bGU9e3RyUHJvcHMuc3R5bGV9XG4gICAgICAgICAgICB7Li4udHJQcm9wcy5yZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHthbGxWaXNpYmxlQ29sdW1ucy5tYXAoKGNvbHVtbiwgaTIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgICAgICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgICAgICAgICBjb25zdCB3aWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1pbldpZHRoKVxuICAgICAgICAgICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgICAgICAgICBjb25zdCB0ZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRkUHJvcHMoZmluYWxTdGF0ZSwgcm93SW5mbywgY29sdW1uLCB0aGlzKSlcbiAgICAgICAgICAgICAgY29uc3QgY29sdW1uUHJvcHMgPSBfLnNwbGl0UHJvcHMoY29sdW1uLmdldFByb3BzKGZpbmFsU3RhdGUsIHJvd0luZm8sIGNvbHVtbiwgdGhpcykpXG5cbiAgICAgICAgICAgICAgY29uc3QgY2xhc3NlcyA9IFt0ZFByb3BzLmNsYXNzTmFtZSwgY29sdW1uLmNsYXNzTmFtZSwgY29sdW1uUHJvcHMuY2xhc3NOYW1lXVxuXG4gICAgICAgICAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgICAgICAgICAuLi50ZFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIC4uLmNvbHVtbi5zdHlsZSxcbiAgICAgICAgICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IGNlbGxJbmZvID0ge1xuICAgICAgICAgICAgICAgIC4uLnJvd0luZm8sXG4gICAgICAgICAgICAgICAgaXNFeHBhbmRlZCxcbiAgICAgICAgICAgICAgICBjb2x1bW46IHsgLi4uY29sdW1uIH0sXG4gICAgICAgICAgICAgICAgdmFsdWU6IHJvd0luZm8ucm93W2NvbHVtbi5pZF0sXG4gICAgICAgICAgICAgICAgcGl2b3RlZDogY29sdW1uLnBpdm90ZWQsXG4gICAgICAgICAgICAgICAgZXhwYW5kZXI6IGNvbHVtbi5leHBhbmRlcixcbiAgICAgICAgICAgICAgICByZXNpemVkLFxuICAgICAgICAgICAgICAgIHNob3csXG4gICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgdGRQcm9wcyxcbiAgICAgICAgICAgICAgICBjb2x1bW5Qcm9wcyxcbiAgICAgICAgICAgICAgICBjbGFzc2VzLFxuICAgICAgICAgICAgICAgIHN0eWxlcyxcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2VsbEluZm8udmFsdWVcblxuICAgICAgICAgICAgICBsZXQgdXNlT25FeHBhbmRlckNsaWNrXG4gICAgICAgICAgICAgIGxldCBpc0JyYW5jaFxuICAgICAgICAgICAgICBsZXQgaXNQcmV2aWV3XG5cbiAgICAgICAgICAgICAgY29uc3Qgb25FeHBhbmRlckNsaWNrID0gZSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld0V4cGFuZGVkID0gXy5jbG9uZShleHBhbmRlZClcbiAgICAgICAgICAgICAgICBpZiAoaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgICAgICAgbmV3RXhwYW5kZWQgPSBfLnNldChuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIGZhbHNlKVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBuZXdFeHBhbmRlZCA9IF8uc2V0KG5ld0V4cGFuZGVkLCBjZWxsSW5mby5uZXN0aW5nUGF0aCwge30pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGVXaXRoRGF0YShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWQ6IG5ld0V4cGFuZGVkLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICgpID0+IG9uRXhwYW5kZWRDaGFuZ2UgJiYgb25FeHBhbmRlZENoYW5nZShuZXdFeHBhbmRlZCwgY2VsbEluZm8ubmVzdGluZ1BhdGgsIGUpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBhIHN0YW5kYXJkIGNlbGxcbiAgICAgICAgICAgICAgbGV0IHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KGNvbHVtbi5DZWxsLCBjZWxsSW5mbywgdmFsdWUpXG5cbiAgICAgICAgICAgICAgLy8gUmVzb2x2ZSBSZW5kZXJlcnNcbiAgICAgICAgICAgICAgY29uc3QgUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50ID1cbiAgICAgICAgICAgICAgICBjb2x1bW4uQWdncmVnYXRlZCB8fCAoIWNvbHVtbi5hZ2dyZWdhdGUgPyBBZ2dyZWdhdGVkQ29tcG9uZW50IDogY29sdW1uLkNlbGwpXG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQgPSBjb2x1bW4uRXhwYW5kZXIgfHwgRXhwYW5kZXJDb21wb25lbnRcbiAgICAgICAgICAgICAgY29uc3QgUmVzb2x2ZWRQaXZvdFZhbHVlQ29tcG9uZW50ID0gY29sdW1uLlBpdm90VmFsdWUgfHwgUGl2b3RWYWx1ZUNvbXBvbmVudFxuICAgICAgICAgICAgICBjb25zdCBEZWZhdWx0UmVzb2x2ZWRQaXZvdENvbXBvbmVudCA9XG4gICAgICAgICAgICAgICAgUGl2b3RDb21wb25lbnQgfHxcbiAgICAgICAgICAgICAgICAocHJvcHMgPT4gKFxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPFJlc29sdmVkRXhwYW5kZXJDb21wb25lbnQgey4uLnByb3BzfSAvPlxuICAgICAgICAgICAgICAgICAgICA8UmVzb2x2ZWRQaXZvdFZhbHVlQ29tcG9uZW50IHsuLi5wcm9wc30gLz5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgIGNvbnN0IFJlc29sdmVkUGl2b3RDb21wb25lbnQgPSBjb2x1bW4uUGl2b3QgfHwgRGVmYXVsdFJlc29sdmVkUGl2b3RDb21wb25lbnRcblxuICAgICAgICAgICAgICAvLyBJcyB0aGlzIGNlbGwgZXhwYW5kYWJsZT9cbiAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLnBpdm90ZWQgfHwgY2VsbEluZm8uZXhwYW5kZXIpIHtcbiAgICAgICAgICAgICAgICAvLyBNYWtlIGl0IGV4cGFuZGFibGUgYnkgZGVmdWFsdFxuICAgICAgICAgICAgICAgIGNlbGxJbmZvLmV4cGFuZGFibGUgPSB0cnVlXG4gICAgICAgICAgICAgICAgdXNlT25FeHBhbmRlckNsaWNrID0gdHJ1ZVxuICAgICAgICAgICAgICAgIC8vIElmIHBpdm90ZWQsIGhhcyBubyBzdWJSb3dzLCBhbmQgZG9lcyBub3QgaGF2ZSBhIHN1YkNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAvLyBkbyBub3QgbWFrZSBleHBhbmRhYmxlXG4gICAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLnBpdm90ZWQgJiYgIWNlbGxJbmZvLnN1YlJvd3MgJiYgIVN1YkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgY2VsbEluZm8uZXhwYW5kYWJsZSA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLnBpdm90ZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJcyB0aGlzIGNvbHVtbiBhIGJyYW5jaD9cbiAgICAgICAgICAgICAgICBpc0JyYW5jaCA9IHJvd0luZm8ucm93W3Bpdm90SURLZXldID09PSBjb2x1bW4uaWQgJiYgY2VsbEluZm8uc3ViUm93c1xuICAgICAgICAgICAgICAgIC8vIFNob3VsZCB0aGlzIGNvbHVtbiBiZSBibGFuaz9cbiAgICAgICAgICAgICAgICBpc1ByZXZpZXcgPVxuICAgICAgICAgICAgICAgICAgcGl2b3RCeS5pbmRleE9mKGNvbHVtbi5pZCkgPiBwaXZvdEJ5LmluZGV4T2Yocm93SW5mby5yb3dbcGl2b3RJREtleV0pICYmXG4gICAgICAgICAgICAgICAgICBjZWxsSW5mby5zdWJSb3dzXG4gICAgICAgICAgICAgICAgLy8gUGl2b3QgQ2VsbCBSZW5kZXIgT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICBpZiAoaXNCcmFuY2gpIHtcbiAgICAgICAgICAgICAgICAgIC8vIGlzUGl2b3RcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFxuICAgICAgICAgICAgICAgICAgICBSZXNvbHZlZFBpdm90Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2VsbEluZm8sXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHJvd1twaXZvdFZhbEtleV0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHJvd1twaXZvdFZhbEtleV1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzUHJldmlldykge1xuICAgICAgICAgICAgICAgICAgLy8gU2hvdyB0aGUgcGl2b3QgcHJldmlld1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoUmVzb2x2ZWRBZ2dyZWdhdGVkQ29tcG9uZW50LCBjZWxsSW5mbywgdmFsdWUpXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2VsbEluZm8uYWdncmVnYXRlZCkge1xuICAgICAgICAgICAgICAgIHJlc29sdmVkQ2VsbCA9IF8ubm9ybWFsaXplQ29tcG9uZW50KFJlc29sdmVkQWdncmVnYXRlZENvbXBvbmVudCwgY2VsbEluZm8sIHZhbHVlKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGNlbGxJbmZvLmV4cGFuZGVyKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gXy5ub3JtYWxpemVDb21wb25lbnQoXG4gICAgICAgICAgICAgICAgICBSZXNvbHZlZEV4cGFuZGVyQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgY2VsbEluZm8sXG4gICAgICAgICAgICAgICAgICByb3dbcGl2b3RWYWxLZXldXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGlmIChwaXZvdEJ5KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoY2VsbEluZm8uZ3JvdXBlZEJ5UGl2b3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKCFjZWxsSW5mby5zdWJSb3dzICYmICFTdWJDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDZWxsID0gbnVsbFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkT25FeHBhbmRlckNsaWNrID0gdXNlT25FeHBhbmRlckNsaWNrID8gb25FeHBhbmRlckNsaWNrIDogKCkgPT4ge31cblxuICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgb25DbGljayBldmVudHMsIG1ha2Ugc3VyZSB0aGV5IGRvbid0XG4gICAgICAgICAgICAgIC8vIG92ZXJyaWRlIGVhY2hvdGhlci4gVGhpcyBzaG91bGQgbWF5YmUgYmUgZXhwYW5kZWQgdG8gaGFuZGxlIGFsbFxuICAgICAgICAgICAgICAvLyBmdW5jdGlvbiBhdHRyaWJ1dGVzXG4gICAgICAgICAgICAgIGNvbnN0IGludGVyYWN0aW9uUHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgb25DbGljazogcmVzb2x2ZWRPbkV4cGFuZGVyQ2xpY2ssXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGRQcm9wcy5yZXN0Lm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvblByb3BzLm9uQ2xpY2sgPSBlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRkUHJvcHMucmVzdC5vbkNsaWNrKGUsICgpID0+IHJlc29sdmVkT25FeHBhbmRlckNsaWNrKGUpKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5Qcm9wcy5yZXN0Lm9uQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBpbnRlcmFjdGlvblByb3BzLm9uQ2xpY2sgPSBlID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbHVtblByb3BzLnJlc3Qub25DbGljayhlLCAoKSA9PiByZXNvbHZlZE9uRXhwYW5kZXJDbGljayhlKSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBSZXR1cm4gdGhlIGNlbGxcbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VGRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcbiAgICAgICAgICAgICAgICAgIGtleT17YCR7aTJ9LSR7Y29sdW1uLmlkfWB9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzZXMsXG4gICAgICAgICAgICAgICAgICAgICFzaG93ICYmICdoaWRkZW4nLFxuICAgICAgICAgICAgICAgICAgICBjZWxsSW5mby5leHBhbmRhYmxlICYmICdydC1leHBhbmRhYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoIHx8IGlzUHJldmlldykgJiYgJ3J0LXBpdm90J1xuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgICAgICAgICAgZmxleDogYCR7d2lkdGh9IDAgYXV0b2AsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBfLmFzUHgod2lkdGgpLFxuICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICB7Li4udGRQcm9wcy5yZXN0fVxuICAgICAgICAgICAgICAgICAgey4uLmNvbHVtblByb3BzLnJlc3R9XG4gICAgICAgICAgICAgICAgICB7Li4uaW50ZXJhY3Rpb25Qcm9wc31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7cmVzb2x2ZWRDZWxsfVxuICAgICAgICAgICAgICAgIDwvVGRDb21wb25lbnQ+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgICAge3Jvd0luZm8uc3ViUm93cyAmJlxuICAgICAgICAgICAgaXNFeHBhbmRlZCAmJlxuICAgICAgICAgICAgcm93SW5mby5zdWJSb3dzLm1hcCgoZCwgaSkgPT4gbWFrZVBhZ2VSb3coZCwgaSwgcm93SW5mby5uZXN0aW5nUGF0aCkpfVxuICAgICAgICAgIHtTdWJDb21wb25lbnQgJiYgIXJvd0luZm8uc3ViUm93cyAmJiBpc0V4cGFuZGVkICYmIFN1YkNvbXBvbmVudChyb3dJbmZvKX1cbiAgICAgICAgPC9Uckdyb3VwQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VQYWRDb2x1bW4gPSAoY29sdW1uLCBpKSA9PiB7XG4gICAgICBjb25zdCByZXNpemVkQ29sID0gcmVzaXplZC5maW5kKHggPT4geC5pZCA9PT0gY29sdW1uLmlkKSB8fCB7fVxuICAgICAgY29uc3Qgc2hvdyA9IHR5cGVvZiBjb2x1bW4uc2hvdyA9PT0gJ2Z1bmN0aW9uJyA/IGNvbHVtbi5zaG93KCkgOiBjb2x1bW4uc2hvd1xuICAgICAgY29uc3Qgd2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5taW5XaWR0aClcbiAgICAgIGNvbnN0IGZsZXggPSB3aWR0aFxuICAgICAgY29uc3QgbWF4V2lkdGggPSBfLmdldEZpcnN0RGVmaW5lZChyZXNpemVkQ29sLnZhbHVlLCBjb2x1bW4ud2lkdGgsIGNvbHVtbi5tYXhXaWR0aClcbiAgICAgIGNvbnN0IHRkUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5Qcm9wcyA9IF8uc3BsaXRQcm9wcyhjb2x1bW4uZ2V0UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuXG4gICAgICBjb25zdCBjbGFzc2VzID0gW3RkUHJvcHMuY2xhc3NOYW1lLCBjb2x1bW4uY2xhc3NOYW1lLCBjb2x1bW5Qcm9wcy5jbGFzc05hbWVdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4udGRQcm9wcy5zdHlsZSxcbiAgICAgICAgLi4uY29sdW1uLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5Qcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRkQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzLCAhc2hvdyAmJiAnaGlkZGVuJyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIGZsZXg6IGAke2ZsZXh9IDAgYXV0b2AsXG4gICAgICAgICAgICB3aWR0aDogXy5hc1B4KHdpZHRoKSxcbiAgICAgICAgICAgIG1heFdpZHRoOiBfLmFzUHgobWF4V2lkdGgpLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRkUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChQYWRSb3dDb21wb25lbnQpfVxuICAgICAgICA8L1RkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VQYWRSb3cgPSAocm93LCBpKSA9PiB7XG4gICAgICBjb25zdCB0ckdyb3VwUHJvcHMgPSBnZXRUckdyb3VwUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICBjb25zdCB0clByb3BzID0gXy5zcGxpdFByb3BzKGdldFRyUHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRyR3JvdXBDb21wb25lbnQga2V5PXtpfSB7Li4udHJHcm91cFByb3BzfT5cbiAgICAgICAgICA8VHJDb21wb25lbnRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhcbiAgICAgICAgICAgICAgJy1wYWRSb3cnLFxuICAgICAgICAgICAgICAocGFnZVJvd3MubGVuZ3RoICsgaSkgJSAyID8gJy1ldmVuJyA6ICctb2RkJyxcbiAgICAgICAgICAgICAgdHJQcm9wcy5jbGFzc05hbWVcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICBzdHlsZT17dHJQcm9wcy5zdHlsZSB8fCB7fX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VQYWRDb2x1bW4pfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVHJHcm91cENvbXBvbmVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlQ29sdW1uRm9vdGVyID0gKGNvbHVtbiwgaSkgPT4ge1xuICAgICAgY29uc3QgcmVzaXplZENvbCA9IHJlc2l6ZWQuZmluZCh4ID0+IHguaWQgPT09IGNvbHVtbi5pZCkgfHwge31cbiAgICAgIGNvbnN0IHNob3cgPSB0eXBlb2YgY29sdW1uLnNob3cgPT09ICdmdW5jdGlvbicgPyBjb2x1bW4uc2hvdygpIDogY29sdW1uLnNob3dcbiAgICAgIGNvbnN0IHdpZHRoID0gXy5nZXRGaXJzdERlZmluZWQocmVzaXplZENvbC52YWx1ZSwgY29sdW1uLndpZHRoLCBjb2x1bW4ubWluV2lkdGgpXG4gICAgICBjb25zdCBtYXhXaWR0aCA9IF8uZ2V0Rmlyc3REZWZpbmVkKHJlc2l6ZWRDb2wudmFsdWUsIGNvbHVtbi53aWR0aCwgY29sdW1uLm1heFdpZHRoKVxuICAgICAgY29uc3QgdEZvb3RUZFByb3BzID0gXy5zcGxpdFByb3BzKGdldFRmb290VGRQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcykpXG4gICAgICBjb25zdCBjb2x1bW5Qcm9wcyA9IF8uc3BsaXRQcm9wcyhjb2x1bW4uZ2V0UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCBjb2x1bW4sIHRoaXMpKVxuICAgICAgY29uc3QgY29sdW1uRm9vdGVyUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGNvbHVtbi5nZXRGb290ZXJQcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIGNvbHVtbiwgdGhpcylcbiAgICAgIClcblxuICAgICAgY29uc3QgY2xhc3NlcyA9IFtcbiAgICAgICAgdEZvb3RUZFByb3BzLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uLmNsYXNzTmFtZSxcbiAgICAgICAgY29sdW1uUHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICBjb2x1bW5Gb290ZXJQcm9wcy5jbGFzc05hbWUsXG4gICAgICBdXG5cbiAgICAgIGNvbnN0IHN0eWxlcyA9IHtcbiAgICAgICAgLi4udEZvb3RUZFByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW4uc3R5bGUsXG4gICAgICAgIC4uLmNvbHVtblByb3BzLnN0eWxlLFxuICAgICAgICAuLi5jb2x1bW5Gb290ZXJQcm9wcy5zdHlsZSxcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFRkQ29tcG9uZW50XG4gICAgICAgICAga2V5PXtgJHtpfS0ke2NvbHVtbi5pZH1gfVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyhjbGFzc2VzLCAhc2hvdyAmJiAnaGlkZGVuJyl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlcyxcbiAgICAgICAgICAgIGZsZXg6IGAke3dpZHRofSAwIGF1dG9gLFxuICAgICAgICAgICAgd2lkdGg6IF8uYXNQeCh3aWR0aCksXG4gICAgICAgICAgICBtYXhXaWR0aDogXy5hc1B4KG1heFdpZHRoKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi5jb2x1bW5Qcm9wcy5yZXN0fVxuICAgICAgICAgIHsuLi50Rm9vdFRkUHJvcHMucmVzdH1cbiAgICAgICAgICB7Li4uY29sdW1uRm9vdGVyUHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtfLm5vcm1hbGl6ZUNvbXBvbmVudChjb2x1bW4uRm9vdGVyLCB7XG4gICAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgIH0pfVxuICAgICAgICA8L1RkQ29tcG9uZW50PlxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IG1ha2VDb2x1bW5Gb290ZXJzID0gKCkgPT4ge1xuICAgICAgY29uc3QgdEZvb3RQcm9wcyA9IGdldFRmb290UHJvcHMoZmluYWxTdGF0ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHRoaXMpXG4gICAgICBjb25zdCB0Rm9vdFRyUHJvcHMgPSBfLnNwbGl0UHJvcHMoZ2V0VGZvb3RUclByb3BzKGZpbmFsU3RhdGUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB0aGlzKSlcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxUZm9vdENvbXBvbmVudFxuICAgICAgICAgIGNsYXNzTmFtZT17dEZvb3RQcm9wcy5jbGFzc05hbWV9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnRGb290UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICBtaW5XaWR0aDogYCR7cm93TWluV2lkdGh9cHhgLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnRGb290UHJvcHMucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIDxUckNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRGb290VHJQcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICAgICAgc3R5bGU9e3RGb290VHJQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50Rm9vdFRyUHJvcHMucmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7YWxsVmlzaWJsZUNvbHVtbnMubWFwKG1ha2VDb2x1bW5Gb290ZXIpfVxuICAgICAgICAgIDwvVHJDb21wb25lbnQ+XG4gICAgICAgIDwvVGZvb3RDb21wb25lbnQ+XG4gICAgICApXG4gICAgfVxuXG4gICAgY29uc3QgbWFrZVBhZ2luYXRpb24gPSAoKSA9PiB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uUHJvcHMgPSBfLnNwbGl0UHJvcHMoXG4gICAgICAgIGdldFBhZ2luYXRpb25Qcm9wcyhmaW5hbFN0YXRlLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdGhpcylcbiAgICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50XG4gICAgICAgICAgey4uLnJlc29sdmVkU3RhdGV9XG4gICAgICAgICAgcGFnZXM9e3BhZ2VzfVxuICAgICAgICAgIGNhblByZXZpb3VzPXtjYW5QcmV2aW91c31cbiAgICAgICAgICBjYW5OZXh0PXtjYW5OZXh0fVxuICAgICAgICAgIG9uUGFnZUNoYW5nZT17dGhpcy5vblBhZ2VDaGFuZ2V9XG4gICAgICAgICAgb25QYWdlU2l6ZUNoYW5nZT17dGhpcy5vblBhZ2VTaXplQ2hhbmdlfVxuICAgICAgICAgIGNsYXNzTmFtZT17cGFnaW5hdGlvblByb3BzLmNsYXNzTmFtZX1cbiAgICAgICAgICBzdHlsZT17cGFnaW5hdGlvblByb3BzLnN0eWxlfVxuICAgICAgICAgIHsuLi5wYWdpbmF0aW9uUHJvcHMucmVzdH1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBtYWtlVGFibGUgPSAoKSA9PiB7XG4gICAgICBjb25zdCBwYWdpbmF0aW9uID0gbWFrZVBhZ2luYXRpb24oKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnUmVhY3RUYWJsZScsIGNsYXNzTmFtZSwgcm9vdFByb3BzLmNsYXNzTmFtZSl9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIC4uLnN0eWxlLFxuICAgICAgICAgICAgLi4ucm9vdFByb3BzLnN0eWxlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgey4uLnJvb3RQcm9wcy5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3Nob3dQYWdpbmF0aW9uICYmIHNob3dQYWdpbmF0aW9uVG9wID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwYWdpbmF0aW9uLXRvcFwiPntwYWdpbmF0aW9ufTwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxUYWJsZUNvbXBvbmVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRhYmxlUHJvcHMuY2xhc3NOYW1lLCBjdXJyZW50bHlSZXNpemluZyA/ICdydC1yZXNpemluZycgOiAnJyl9XG4gICAgICAgICAgICBzdHlsZT17dGFibGVQcm9wcy5zdHlsZX1cbiAgICAgICAgICAgIHsuLi50YWJsZVByb3BzLnJlc3R9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2hhc0hlYWRlckdyb3VwcyA/IG1ha2VIZWFkZXJHcm91cHMoKSA6IG51bGx9XG4gICAgICAgICAgICB7bWFrZUhlYWRlcnMoKX1cbiAgICAgICAgICAgIHtoYXNGaWx0ZXJzID8gbWFrZUZpbHRlcnMoKSA6IG51bGx9XG4gICAgICAgICAgICA8VGJvZHlDb21wb25lbnRcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHRCb2R5UHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAuLi50Qm9keVByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiBgJHtyb3dNaW5XaWR0aH1weGAsXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHsuLi50Qm9keVByb3BzLnJlc3R9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtwYWdlUm93cy5tYXAoKGQsIGkpID0+IG1ha2VQYWdlUm93KGQsIGkpKX1cbiAgICAgICAgICAgICAge3BhZFJvd3MubWFwKG1ha2VQYWRSb3cpfVxuICAgICAgICAgICAgPC9UYm9keUNvbXBvbmVudD5cbiAgICAgICAgICAgIHtoYXNDb2x1bW5Gb290ZXIgPyBtYWtlQ29sdW1uRm9vdGVycygpIDogbnVsbH1cbiAgICAgICAgICA8L1RhYmxlQ29tcG9uZW50PlxuICAgICAgICAgIHtzaG93UGFnaW5hdGlvbiAmJiBzaG93UGFnaW5hdGlvbkJvdHRvbSA/IChcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicGFnaW5hdGlvbi1ib3R0b21cIj57cGFnaW5hdGlvbn08L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7IXBhZ2VSb3dzLmxlbmd0aCAmJiAoXG4gICAgICAgICAgICA8Tm9EYXRhQ29tcG9uZW50IHsuLi5ub0RhdGFQcm9wc30+e18ubm9ybWFsaXplQ29tcG9uZW50KG5vRGF0YVRleHQpfTwvTm9EYXRhQ29tcG9uZW50PlxuICAgICAgICAgICl9XG4gICAgICAgICAgPExvYWRpbmdDb21wb25lbnQgbG9hZGluZz17bG9hZGluZ30gbG9hZGluZ1RleHQ9e2xvYWRpbmdUZXh0fSB7Li4ubG9hZGluZ1Byb3BzfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBjaGlsZFByb3BzIGFyZSBvcHRpb25hbGx5IHBhc3NlZCB0byBhIGZ1bmN0aW9uLWFzLWEtY2hpbGRcbiAgICByZXR1cm4gY2hpbGRyZW4gPyBjaGlsZHJlbihmaW5hbFN0YXRlLCBtYWtlVGFibGUsIHRoaXMpIDogbWFrZVRhYmxlKClcbiAgfVxufVxuIl19","import React, { useState } from 'react';\nimport { get, post, put, remove } from '../../Services/http';\nimport ReactTable from 'react-table-v6';\nimport 'react-table-v6/react-table.css';\n\nexport default function NavControllerContainer() {\n\n const [rowInfo, setRowInfo] = useState(\"\");\n const [data, setData] = useState([]);\n const [innerData, setInnerData] = useState([]);\n\n const SendOrdersToNav = () => {\n post('/api/integration/sendorderstonav')\n console.log(\"Orders sent to NAV\");\n }\n\n const StartIntegration = () => {\n post('/api/integration/runintegration')\n console.log(\"Integration ran\");\n }\n\n const TestErrorMail = () => {\n post('/api/integration/testerroremail')\n console.log(\"testerroremail ran\");\n }\n\n const LoadQueue = () => {\n post('/api/integration/loadqueue')\n .then(response => response.json())\n .then(result => {\n setRowInfo(\"\");\n setInnerData([]);\n var timeResult = result.filter(x => x.timeStamp != null);\n timeResult.map((item) => {\n item.timeStamp = new Date(item.timeStamp).toString();\n }\n )\n setData(result);\n })\n }\n\n const LoadItem = (id) => {\n post('/api/integration/loaditem', id)\n .then(response => response.json())\n .then(result => {\n setInnerData(result.items);\n setRowInfo(result.items[0].info);\n })\n }\n\n const buttonStyle = {\n color: \"white\",\n cursor: \"pointer\",\n border: \"solid 1px\",\n borderColor: \"transparent\",\n borderRadius: \"6px\",\n textAlign: \"center\",\n padding: \"12px\",\n fontSize: \"13px\",\n display: 'flex',\n alignItems: 'center',\n marginRight: '10px',\n marginBottom: '20px',\n marginTop: '10px'\n }\n\n const greenBtn = {\n background: \"#5c9870\"\n }\n const blueBtn = {\n background: \"#46aaf8\"\n }\n const yellowBtn = {\n background: \"#ffb000\"\n }\n const orangeBtn = {\n background: \"#ff781f\"\n }\n\n const rowStyle = {\n border: 'solid #e8e8e8 1px',\n marginTop: '17px',\n borderRadius: '5px',\n padding: '15px'\n }\n\n const columns = [{\n Header: 'Id',\n accessor: 'id'\n }, {\n Header: 'Transaction Id',\n accessor: 'transactionId'\n }, {\n Header: 'Type',\n accessor: 'type'\n }, {\n Header: 'Time stamp',\n accessor: 'timeStamp',\n },\n {\n Header: 'Status',\n accessor: 'status'\n }]\n\n const innerColumns = [{\n Header: 'Id',\n accessor: 'id'\n }, {\n Header: 'Integration status id',\n accessor: 'integrationStatusId'\n }, {\n Header: 'Status',\n accessor: 'status',\n }]\n\n return (\n
    \n
    \n
    StartIntegration()} style={{...buttonStyle, ...greenBtn}}>Run task
    \n
    LoadQueue()} style={{...buttonStyle, ...blueBtn}}>Load queue
    \n
    SendOrdersToNav()} style={{...buttonStyle, ...yellowBtn}}>Send orders to NAV
    \n
    TestErrorMail()} style={{...buttonStyle, ...orangeBtn}}>Test error mail
    \n\n
    \n {\n return {\n onClick: (e, handleOriginal) => {\n LoadItem(rowInfo.original.id);\n }\n }\n }}\n style={{ cursor: 'pointer' }}\n />\n {innerData.length > 0 &&\n <>\n

    Details

    \n \n \n }\n {rowInfo != \"\" &&\n <>\n

    Info

    \n
    \n
    \n
    {rowInfo}
    \n
    \n
    \n \n }\n
    \n )\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport ExcelImportPanel from './ExcelImportPanel';\nimport NavControllerContainer from './NavController';\n\nif (document.getElementById('navcontroller')) {\n\n ReactDOM.render(\n ,\n document.getElementById('navcontroller')\n );\n}\nif (document.getElementById('excelimportpanel')) {\n\n ReactDOM.render(\n ,\n document.getElementById('excelimportpanel')\n );\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport Loadable from 'react-loadable';\nimport { Provider } from 'react-redux';\nimport { applyMiddleware, bindActionCreators, createStore } from 'redux';\nimport { historyMiddleware } from './Middlewares/History.middleware';\nimport { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';\nimport thunk from 'redux-thunk';\nimport app, { createReducer } from './reducers'\nimport { add as addToCart, reorder} from './Actions/Cart.action';\nimport { show as showNotification } from './Actions/Notification.action'\nimport UIStateContainer from './Containers/UIState.container';\nimport MiniCartContainer from './Containers/MiniCart.container';\nimport QuickSearchContainer from './Containers/QuickSearch.container';\nimport NavigationContainer from './Containers/Navigation.container';\nimport QuickOrderContainer from './Containers/QuickOrder.container';\nimport ProductSheet from './Components/ProductSheet';\nimport FacetedSearchContainer from './Containers/FacetedSearch.container';\nimport FacetedSearchCompactContainer from './Containers/FacetedSearchCompact.container';\nimport NotificationContainer from './Containers/Notification.container';\nimport CompanyLinkSelector from './Components/CompanyLinkSelector';\nimport DynamicComponent from './Components/DynamicComponent';\nimport {\n setImages as setProductImageSlideShows,\n show as showProductImageSlideShow,\n setCurrentIndex as setProductImageSlideShowIndex\n} from './Actions/LightboxImages.action';\nimport { translate } from './Services/translation';\nimport 'whatwg-fetch';\nimport './Components/CustomPanel/CustomPanels.js';\nimport \"../Styles/site.scss\"\n\nwindow.__litium = window.__litium || {};\nconst preloadState = window.__litium.preloadState || {};\nconst store = createStore(app, preloadState, composeWithDevTools(applyMiddleware(thunk, historyMiddleware)));\n\nstore.asyncReducers = {};\n\n// Create an inject reducer function\n// This function adds the async reducer, and creates a new combined reducer\nstore.injectReducer = (key, asyncReducer) => {\n if (!store.asyncReducers[key]) {\n store.asyncReducers[key] = asyncReducer;\n store.replaceReducer(createReducer(store.asyncReducers));\n }\n};\n// register redux's actions so we can invoke them from vanilla JS\n// usage: window.__litium.reduxActions.addToCart(...);\nwindow.__litium = {\n ...window.__litium,\n reduxActions: bindActionCreators({ addToCart, reorder, setProductImageSlideShows, showProductImageSlideShow, setProductImageSlideShowIndex, showNotification }, store.dispatch),\n events: {\n onAddToCartButtonClick: (sourceDomNode, articleNumber, quantityFieldId = null) => {\n const nodeIdToShowNotification = sourceDomNode.id = Date.now();\n let packagingQuantity = 1\n let maxQuantity = 0;\n let minQuantity = 0;\n let inputNumber = Number(document.getElementById(quantityFieldId).value);\n let minText = \"\", maxText = \"\";\n minText = translate('buybutton.mintext');\n maxText = translate('buybutton.maxtext');\n let maxExceeded = \"\";\n\n if (sourceDomNode.getAttribute(\"data-select-quantity\")) {\n packagingQuantity = sourceDomNode.getAttribute(\"data-select-quantity\");\n }\n if (sourceDomNode.getAttribute(\"data-max-quantity\")) {\n maxQuantity = sourceDomNode.getAttribute(\"data-max-quantity\");\n }\n if (sourceDomNode.getAttribute(\"data-min-quantity\")) {\n minQuantity = sourceDomNode.getAttribute(\"data-min-quantity\");\n }\n if (sourceDomNode.getAttribute(\"data-max-exceeded\")) {\n maxExceeded = sourceDomNode.getAttribute(\"data-max-exceeded\");\n }\n if (packagingQuantity == \"0\")\n packagingQuantity = 1;\n\n if (maxExceeded !== \"True\") {\n window.__litium.reduxActions.addToCart({\n articleNumber,\n quantity: quantityFieldId ? document.getElementById(quantityFieldId).value : 1,\n inputValue: inputNumber ? inputNumber : 0,\n nodeIdToShowNotification,\n notificationMessage: translate('tooltip.addedtocart'),\n hash: Date.now(),\n packageQuantity: packagingQuantity,\n minQuant: Number(minQuantity) ? Number(minQuantity) : 1,\n maxQuant: Number(maxQuantity) ? Number(maxQuantity) : 999,\n minText: minText,\n maxText: maxText\n });\n }\n },\n onShowNotification: (sourceDomNode) => {\n const nodeIdToShowNotification = sourceDomNode.id = Date.now();\n window.__litium.reduxActions.showNotification(\n nodeIdToShowNotification,\n translate('tooltip.notinstock'),\n Date.now()\n );\n },\n\n onReorderClick: (sourceDomNode, orderid) => {\n const nodeIdToShowNotification = sourceDomNode.id;\n const notificationMessage = translate('tooltip.addedtocart');\n const hash = Date.now();\n if (orderid) {\n window.__litium.reduxActions.reorder({ orderid,\n notificationMessage,\n hash,\n });\n }\n },\n onSearchResultDataChange: dom => {\n let temp = document.createElement('div');\n temp.innerHTML = dom;\n const currentResult = document.querySelector(\"#search-result\");\n const newResult = temp.querySelector(\"#search-result\");\n //move facetSearchCompact from currentResult to newResult\n newResult.replaceChild(currentResult.querySelector('#facetedSearchCompact'), newResult.querySelector('#facetedSearchCompact'));\n //replace currentResult with newResult\n currentResult.parentNode.replaceChild(newResult, currentResult);\n },\n onProductImageClick: ele => {\n const productImagesSelector = 'product-images';\n const productImageSelector = 'product-image';\n const closest = (el, className) => el ? (el.classList.contains(className) ? el : closest(el.parentNode, className)) : null;\n const parentNodes = ele.closest ? ele.closest(`.${productImagesSelector}`) : closest(ele, productImagesSelector);\n const images = Array.from(parentNodes.querySelectorAll(`.${productImageSelector}`))\n .map(img => ({ type: img.dataset.type, src: img.dataset.src, thumbnail: img.dataset.thumbnail }));\n const index = images.findIndex(_ele => ele.dataset.src === _ele.src);\n\n window.__litium.reduxActions.setProductImageSlideShows(images);\n window.__litium.reduxActions.showProductImageSlideShow(true);\n window.__litium.reduxActions.setProductImageSlideShowIndex(index);\n },\n onPackagingSelectChange: (sourceDomNode) => {\n let parentNode = sourceDomNode.closest(\".info-button\") ?\n sourceDomNode.closest(\".info-button\").querySelector(\".product__buy-button\") :\n sourceDomNode.closest(\".product-detail__quantity-container\").querySelector(\".product-detail__buy-button\");\n parentNode.setAttribute(\"data-select-quantity\", sourceDomNode.value);\n },\n },\n bootstrapComponents: () => {\n // bootstrap React components, in case the HTML response we receive from the server\n // has React components. ReactDOM.render performs only an update on previous rendered\n // components and only mutate the DOM as necessary to reflect latest React element.\n bootstrapComponents();\n },\n cache: {}, // for storing cache data for current request\n};\nconst bootstrapComponents = () => {\n if (document.getElementById('grey-out')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('grey-out')\n );\n }\n if (document.getElementById('miniCart')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('miniCart')\n );\n }\n if (document.getElementById('quickSearch')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('quickSearch')\n );\n }\n if (document.getElementById('navbar')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('navbar')\n );\n }\n if (document.getElementById('facetedSearch')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('facetedSearch')\n );\n }\n if (document.getElementById('facetedSearchCompact')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('facetedSearchCompact')\n );\n }\n if (document.getElementById('globalNotification')) {\n ReactDOM.render(\n \n \n ,\n document.getElementById('globalNotification')\n );\n }\n\n if (document.getElementById('myPagePersons')) {\n const PersonList = DynamicComponent({\n loader: () => import('./Containers/PersonList.container')\n });\n ReactDOM.render(\n \n \n ,\n document.getElementById('myPagePersons')\n );\n }\n if (document.getElementById('myPageAddresses')) {\n const AddressList = DynamicComponent({\n loader: () => import('./Containers/AddressList.container')\n });\n ReactDOM.render(\n \n \n ,\n document.getElementById('myPageAddresses')\n );\n }\n if (document.getElementById('checkout')) {\n const Checkout = DynamicComponent({\n loader: () => import('./Containers/Checkout.container')\n });\n ReactDOM.render(\n \n \n ,\n document.getElementById('checkout')\n );\n }\n if (document.getElementById('lightBoxImages')) {\n const LightboxImages = DynamicComponent({\n loader: () => import('./Containers/LightboxImages.container')\n });\n\n ReactDOM.render(\n \n \n ,\n document.getElementById('lightBoxImages')\n );\n }\n\n if (document.querySelectorAll('.slider').length > 0) {\n const Slider = DynamicComponent({\n loader: () => import('./Components/Slider'),\n });\n Array.from(document.querySelectorAll('.slider')).forEach((slider, index) => {\n const values = [...slider.querySelectorAll('.slider__block')].map(block => {\n return ({\n image: block.dataset.image,\n url: block.dataset.url,\n text: block.dataset.text,\n })\n });\n if (values.length > 0) {\n ReactDOM.render(\n ,\n slider\n );\n }\n });\n }\n\n if (document.querySelectorAll('.campaignslider').length > 0) {\n const CampaignSlider = Loadable({\n loader: () => import('./Components/CampaignSlider'),\n loading: () =>
    ,\n });\n Array.from(document.querySelectorAll('.campaignslider')).forEach((slider, index) => {\n const values = [...slider.querySelectorAll('.slider__block')].map(block => {\n return ({\n backgroundimage: block.dataset.backgroundimage,\n campaigntext: block.dataset.campaigntext,\n campaignurl: block.dataset.campaignurl,\n campaignstickertext: block.dataset.campaignstickertext,\n largecolumns: block.dataset.largecolumns\n })\n });\n if (values.length > 0) {\n ReactDOM.render(\n ,\n slider\n );\n }\n });\n }\n\n if (document.querySelectorAll('.big_slideshow').length > 0) {\n const StartpageBigSlider = Loadable({\n loader: () => import('./Components/StartpageBigSlider'),\n loading: () =>
    ,\n });\n Array.from(document.querySelectorAll('.big_slideshow')).forEach((slider, index) => {\n const values = [...slider.querySelectorAll('.slider__block')].map(block => {\n return ({\n backgroundimage: block.dataset.backgroundimage,\n backgroundimagemobile: block.dataset.backgroundimagemobile,\n text: block.dataset.text,\n smallimage: block.dataset.smallimage,\n displayimagetoleft: block.dataset.displayimagetoleft,\n link: block.dataset.link,\n slidername: block.dataset.slidername,\n displaymobileimageontop: block.dataset.displaymobileimageontop,\n sitename: block.dataset.sitename\n })\n });\n if (values.length > 0) {\n ReactDOM.render(\n ,\n slider\n );\n }\n });\n }\n\n if (document.querySelectorAll('.media_slideshow').length > 0) {\n const StartpageBigSlider = Loadable({\n loader: () => import('./Components/MediaSlider'),\n loading: () =>
    ,\n });\n Array.from(document.querySelectorAll('.media_slideshow')).forEach((slider, index) => {\n const values = [...slider.querySelectorAll('.slider__block')].map(block => {\n return ({\n text: block.dataset.text,\n thumbnail: block.dataset.thumbnail,\n posterimageurl: block.dataset.posterimageurl,\n mediafile: block.dataset.mediafile,\n mediacontenttype: block.dataset.mediacontenttype,\n isvideo: block.dataset.isvideo,\n sitename: block.dataset.sitename\n })\n });\n if (values.length > 0) {\n ReactDOM.render(\n ,\n slider\n );\n }\n });\n }\n\n if (document.getElementById('quickorder')) {\n const QuickOrderContainer = DynamicComponent({\n loader: () => import('./Containers/QuickOrder.container')\n });\n ReactDOM.render(\n \n \n ,\n document.getElementById('quickorder')\n );\n }\n\n var productSheetLink = document.getElementById('product-sheet__Wrapper')\n if(document.getElementById('product-sheet__Wrapper')){\n const values = {\n urlSheet: productSheetLink.dataset.url,\n brand: productSheetLink.dataset.brand,\n articleNumber: productSheetLink.dataset.articlenr,\n urlProductImage: productSheetLink.dataset.urlproductimage,\n name: productSheetLink.dataset.name,\n seoTitle: productSheetLink.dataset.seotitle,\n instructions: productSheetLink.dataset.instructions,\n description: productSheetLink.dataset.description,\n quantity: productSheetLink.dataset.quantity,\n netWeight: productSheetLink.dataset.netweight,\n EAN: productSheetLink.dataset.ean,\n STLength: productSheetLink.dataset.stlength,\n STWidth: productSheetLink.dataset.stwidth,\n STHeight: productSheetLink.dataset.stheight,\n shortInstructions: productSheetLink.dataset.sinstr,\n shortDescription: productSheetLink.dataset.sdesc\n }\n ReactDOM.render(\n \n \n ,\n document.getElementById('product-sheet__Wrapper')\n )\n }\n \n var companyLinkSelectors = document.querySelectorAll(\".company-link-selector\")\n if (companyLinkSelectors) {\n companyLinkSelectors.forEach(container => {\n var links = Array.from(container.querySelectorAll(\"a\"))\n ReactDOM.render(\n \n ({ name: anchor.innerText, url: anchor.getAttribute(\"href\") }))} />\n ,\n container\n );\n })\n }\n \n if (document.getElementById('my-pages-navigation')) {\n const MyPagesNavigation = DynamicComponent({\n loader: () => import('./Components/MyPages/MyPagesNavigation'),\n });\n ReactDOM.render(\n \n \n ,\n document.getElementById('my-pages-navigation')\n );\n }\n if (document.getElementById('my-pages-tab-content')) {\n const MyPagesTabContainer = DynamicComponent({\n loader: () => import('./Components/MyPages/MyPagesTabContainer'),\n });\n \n ReactDOM.render(\n \n \n ,\n document.getElementById('my-pages-tab-content')\n );\n }\n if (document.getElementById('orderHistoryPage')) {\n const OrderList = DynamicComponent({\n loader: () => import('./Components/OrderHistoryListContainer'),\n });\n ReactDOM.render(\n \n \n ,\n document.getElementById('orderHistoryPage')\n );\n }\n if (document.getElementById('my-pages-start-page')) {\n const MyPagesStartPage = DynamicComponent({\n loader: () => import('./Components/MyPages/MyPagesStartPage'),\n }); \n ReactDOM.render(\n \n \n ,\n document.getElementById('my-pages-start-page')\n );\n }\n}\n\nbootstrapComponents();\n//console.log(React.version);","import { FACETED_SEARCH_QUERY } from '../Actions/FacetedSearch.action';\n\nexport const historyMiddleware = store => next => action => {\n const {type, payload} = action;\n switch (type) {\n case FACETED_SEARCH_QUERY :\n let {query} = payload;\n const url = window.location.href.replace(window.location.search, '') + encodeURI(`${query?'?':''}${query}`);\n window.history.pushState('search', 'Search Page', url);\n break;\n }\n next(action);\n}","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","var aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = {};\n","module.exports = false;\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","exports.f = {}.propertyIsEnumerable;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","exports.f = require('./_wks');\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","require('./_set-species')('Array');\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('./_wks-define')('asyncIterator');\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".ReactTable{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid rgba(0,0,0,0.1);}.ReactTable *{box-sizing:border-box}.ReactTable .rt-table{-webkit-box-flex:1;-ms-flex:auto 1;flex:auto 1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%;border-collapse:collapse;overflow:auto}.ReactTable .rt-thead{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.ReactTable .rt-thead.-headerGroups{background:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.05)}.ReactTable .rt-thead.-filters{border-bottom:1px solid rgba(0,0,0,0.05);}.ReactTable .rt-thead.-filters input,.ReactTable .rt-thead.-filters select{border:1px solid rgba(0,0,0,0.1);background:#fff;padding:5px 7px;font-size:inherit;border-radius:3px;font-weight:normal;outline:none}.ReactTable .rt-thead.-filters .rt-th{border-right:1px solid rgba(0,0,0,0.02)}.ReactTable .rt-thead.-header{box-shadow:0 2px 15px 0 rgba(0,0,0,0.15)}.ReactTable .rt-thead .rt-tr{text-align:center}.ReactTable .rt-thead .rt-th,.ReactTable .rt-thead .rt-td{padding:5px 5px;line-height:normal;position:relative;border-right:1px solid rgba(0,0,0,0.05);transition:box-shadow .3s cubic-bezier(.175,.885,.32,1.275);box-shadow:inset 0 0 0 0 transparent;}.ReactTable .rt-thead .rt-th.-sort-asc,.ReactTable .rt-thead .rt-td.-sort-asc{box-shadow:inset 0 3px 0 0 rgba(0,0,0,0.6)}.ReactTable .rt-thead .rt-th.-sort-desc,.ReactTable .rt-thead .rt-td.-sort-desc{box-shadow:inset 0 -3px 0 0 rgba(0,0,0,0.6)}.ReactTable .rt-thead .rt-th.-cursor-pointer,.ReactTable .rt-thead .rt-td.-cursor-pointer{cursor:pointer}.ReactTable .rt-thead .rt-th:last-child,.ReactTable .rt-thead .rt-td:last-child{border-right:0}.ReactTable .rt-thead .rt-resizable-header{overflow:visible;}.ReactTable .rt-thead .rt-resizable-header:last-child{overflow:hidden}.ReactTable .rt-thead .rt-resizable-header-content{overflow:hidden;text-overflow:ellipsis}.ReactTable .rt-thead .rt-header-pivot{border-right-color:#f7f7f7}.ReactTable .rt-thead .rt-header-pivot:after,.ReactTable .rt-thead .rt-header-pivot:before{left:100%;top:50%;border:solid transparent;content:\\\" \\\";height:0;width:0;position:absolute;pointer-events:none}.ReactTable .rt-thead .rt-header-pivot:after{border-color:rgba(255,255,255,0);border-left-color:#fff;border-width:8px;margin-top:-8px}.ReactTable .rt-thead .rt-header-pivot:before{border-color:rgba(102,102,102,0);border-left-color:#f7f7f7;border-width:10px;margin-top:-10px}.ReactTable .rt-tbody{-webkit-box-flex:99999;-ms-flex:99999 1 auto;flex:99999 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:auto;}.ReactTable .rt-tbody .rt-tr-group{border-bottom:solid 1px rgba(0,0,0,0.05);}.ReactTable .rt-tbody .rt-tr-group:last-child{border-bottom:0}.ReactTable .rt-tbody .rt-td{border-right:1px solid rgba(0,0,0,0.02);}.ReactTable .rt-tbody .rt-td:last-child{border-right:0}.ReactTable .rt-tbody .rt-expandable{cursor:pointer;text-overflow:clip}.ReactTable .rt-tr-group{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.ReactTable .rt-tr{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.ReactTable .rt-th,.ReactTable .rt-td{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;white-space:nowrap;text-overflow:ellipsis;padding:7px 5px;overflow:hidden;transition:.3s ease;transition-property:width,min-width,padding,opacity;}.ReactTable .rt-th.-hidden,.ReactTable .rt-td.-hidden{width:0 !important;min-width:0 !important;padding:0 !important;border:0 !important;opacity:0 !important}.ReactTable .rt-expander{display:inline-block;position:relative;margin:0;color:transparent;margin:0 10px;}.ReactTable .rt-expander:after{content:'';position:absolute;width:0;height:0;top:50%;left:50%;-webkit-transform:translate(-50%,-50%) rotate(-90deg);transform:translate(-50%,-50%) rotate(-90deg);border-left:5.04px solid transparent;border-right:5.04px solid transparent;border-top:7px solid rgba(0,0,0,0.8);transition:all .3s cubic-bezier(.175,.885,.32,1.275);cursor:pointer}.ReactTable .rt-expander.-open:after{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}.ReactTable .rt-resizer{display:inline-block;position:absolute;width:36px;top:0;bottom:0;right:-18px;cursor:col-resize;z-index:10}.ReactTable .rt-tfoot{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;box-shadow:0 0 15px 0 rgba(0,0,0,0.15);}.ReactTable .rt-tfoot .rt-td{border-right:1px solid rgba(0,0,0,0.05);}.ReactTable .rt-tfoot .rt-td:last-child{border-right:0}.ReactTable.-striped .rt-tr.-odd{background:rgba(0,0,0,0.03)}.ReactTable.-highlight .rt-tbody .rt-tr:not(.-padRow):hover{background:rgba(0,0,0,0.05)}.ReactTable .-pagination{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:3px;box-shadow:0 0 15px 0 rgba(0,0,0,0.1);border-top:2px solid rgba(0,0,0,0.1);}.ReactTable .-pagination input,.ReactTable .-pagination select{border:1px solid rgba(0,0,0,0.1);background:#fff;padding:5px 7px;font-size:inherit;border-radius:3px;font-weight:normal;outline:none}.ReactTable .-pagination .-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:100%;border:0;border-radius:3px;padding:6px;font-size:1em;color:rgba(0,0,0,0.6);background:rgba(0,0,0,0.1);transition:all .1s ease;cursor:pointer;outline:none;}.ReactTable .-pagination .-btn[disabled]{opacity:.5;cursor:default}.ReactTable .-pagination .-btn:not([disabled]):hover{background:rgba(0,0,0,0.3);color:#fff}.ReactTable .-pagination .-previous,.ReactTable .-pagination .-next{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.ReactTable .-pagination .-center{-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5;text-align:center;margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ReactTable .-pagination .-pageInfo{display:inline-block;margin:3px 10px;white-space:nowrap}.ReactTable .-pagination .-pageJump{display:inline-block;}.ReactTable .-pagination .-pageJump input{width:70px;text-align:center}.ReactTable .-pagination .-pageSizeOptions{margin:3px 10px}.ReactTable .rt-noData{display:block;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background:rgba(255,255,255,0.8);transition:all .3s ease;z-index:1;pointer-events:none;padding:20px;color:rgba(0,0,0,0.5)}.ReactTable .-loading{display:block;position:absolute;left:0;right:0;top:0;bottom:0;background:rgba(255,255,255,0.8);transition:all .3s ease;z-index:-1;opacity:0;pointer-events:none;}.ReactTable .-loading > div{position:absolute;display:block;text-align:center;width:100%;top:50%;left:0;font-size:15px;color:rgba(0,0,0,0.6);-webkit-transform:translateY(-52%);transform:translateY(-52%);transition:all .3s cubic-bezier(.25,.46,.45,.94)}.ReactTable .-loading.-active{opacity:1;z-index:2;pointer-events:all;}.ReactTable .-loading.-active > div{-webkit-transform:translateY(50%);transform:translateY(50%)}.ReactTable .rt-resizing .rt-th,.ReactTable .rt-resizing .rt-td{transition:none !important;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../node_modules/react-table-v6/react-table.css\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".ReactTable{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;border:1px solid rgba(0,0,0,0.1);}.ReactTable *{box-sizing:border-box}.ReactTable .rt-table{-webkit-box-flex:1;-ms-flex:auto 1;flex:auto 1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%;border-collapse:collapse;overflow:auto}.ReactTable .rt-thead{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.ReactTable .rt-thead.-headerGroups{background:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.05)}.ReactTable .rt-thead.-filters{border-bottom:1px solid rgba(0,0,0,0.05);}.ReactTable .rt-thead.-filters input,.ReactTable .rt-thead.-filters select{border:1px solid rgba(0,0,0,0.1);background:#fff;padding:5px 7px;font-size:inherit;border-radius:3px;font-weight:normal;outline:none}.ReactTable .rt-thead.-filters .rt-th{border-right:1px solid rgba(0,0,0,0.02)}.ReactTable .rt-thead.-header{box-shadow:0 2px 15px 0 rgba(0,0,0,0.15)}.ReactTable .rt-thead .rt-tr{text-align:center}.ReactTable .rt-thead .rt-th,.ReactTable .rt-thead .rt-td{padding:5px 5px;line-height:normal;position:relative;border-right:1px solid rgba(0,0,0,0.05);transition:box-shadow .3s cubic-bezier(.175,.885,.32,1.275);box-shadow:inset 0 0 0 0 transparent;}.ReactTable .rt-thead .rt-th.-sort-asc,.ReactTable .rt-thead .rt-td.-sort-asc{box-shadow:inset 0 3px 0 0 rgba(0,0,0,0.6)}.ReactTable .rt-thead .rt-th.-sort-desc,.ReactTable .rt-thead .rt-td.-sort-desc{box-shadow:inset 0 -3px 0 0 rgba(0,0,0,0.6)}.ReactTable .rt-thead .rt-th.-cursor-pointer,.ReactTable .rt-thead .rt-td.-cursor-pointer{cursor:pointer}.ReactTable .rt-thead .rt-th:last-child,.ReactTable .rt-thead .rt-td:last-child{border-right:0}.ReactTable .rt-thead .rt-resizable-header{overflow:visible;}.ReactTable .rt-thead .rt-resizable-header:last-child{overflow:hidden}.ReactTable .rt-thead .rt-resizable-header-content{overflow:hidden;text-overflow:ellipsis}.ReactTable .rt-thead .rt-header-pivot{border-right-color:#f7f7f7}.ReactTable .rt-thead .rt-header-pivot:after,.ReactTable .rt-thead .rt-header-pivot:before{left:100%;top:50%;border:solid transparent;content:\\\" \\\";height:0;width:0;position:absolute;pointer-events:none}.ReactTable .rt-thead .rt-header-pivot:after{border-color:rgba(255,255,255,0);border-left-color:#fff;border-width:8px;margin-top:-8px}.ReactTable .rt-thead .rt-header-pivot:before{border-color:rgba(102,102,102,0);border-left-color:#f7f7f7;border-width:10px;margin-top:-10px}.ReactTable .rt-tbody{-webkit-box-flex:99999;-ms-flex:99999 1 auto;flex:99999 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:auto;}.ReactTable .rt-tbody .rt-tr-group{border-bottom:solid 1px rgba(0,0,0,0.05);}.ReactTable .rt-tbody .rt-tr-group:last-child{border-bottom:0}.ReactTable .rt-tbody .rt-td{border-right:1px solid rgba(0,0,0,0.02);}.ReactTable .rt-tbody .rt-td:last-child{border-right:0}.ReactTable .rt-tbody .rt-expandable{cursor:pointer;text-overflow:clip}.ReactTable .rt-tr-group{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.ReactTable .rt-tr{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.ReactTable .rt-th,.ReactTable .rt-td{-webkit-box-flex:1;-ms-flex:1 0 0px;flex:1 0 0;white-space:nowrap;text-overflow:ellipsis;padding:7px 5px;overflow:hidden;transition:.3s ease;transition-property:width,min-width,padding,opacity;}.ReactTable .rt-th.-hidden,.ReactTable .rt-td.-hidden{width:0 !important;min-width:0 !important;padding:0 !important;border:0 !important;opacity:0 !important}.ReactTable .rt-expander{display:inline-block;position:relative;margin:0;color:transparent;margin:0 10px;}.ReactTable .rt-expander:after{content:'';position:absolute;width:0;height:0;top:50%;left:50%;-webkit-transform:translate(-50%,-50%) rotate(-90deg);transform:translate(-50%,-50%) rotate(-90deg);border-left:5.04px solid transparent;border-right:5.04px solid transparent;border-top:7px solid rgba(0,0,0,0.8);transition:all .3s cubic-bezier(.175,.885,.32,1.275);cursor:pointer}.ReactTable .rt-expander.-open:after{-webkit-transform:translate(-50%,-50%) rotate(0);transform:translate(-50%,-50%) rotate(0)}.ReactTable .rt-resizer{display:inline-block;position:absolute;width:36px;top:0;bottom:0;right:-18px;cursor:col-resize;z-index:10}.ReactTable .rt-tfoot{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;box-shadow:0 0 15px 0 rgba(0,0,0,0.15);}.ReactTable .rt-tfoot .rt-td{border-right:1px solid rgba(0,0,0,0.05);}.ReactTable .rt-tfoot .rt-td:last-child{border-right:0}.ReactTable.-striped .rt-tr.-odd{background:rgba(0,0,0,0.03)}.ReactTable.-highlight .rt-tbody .rt-tr:not(.-padRow):hover{background:rgba(0,0,0,0.05)}.ReactTable .-pagination{z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:3px;box-shadow:0 0 15px 0 rgba(0,0,0,0.1);border-top:2px solid rgba(0,0,0,0.1);}.ReactTable .-pagination input,.ReactTable .-pagination select{border:1px solid rgba(0,0,0,0.1);background:#fff;padding:5px 7px;font-size:inherit;border-radius:3px;font-weight:normal;outline:none}.ReactTable .-pagination .-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:100%;height:100%;border:0;border-radius:3px;padding:6px;font-size:1em;color:rgba(0,0,0,0.6);background:rgba(0,0,0,0.1);transition:all .1s ease;cursor:pointer;outline:none;}.ReactTable .-pagination .-btn[disabled]{opacity:.5;cursor:default}.ReactTable .-pagination .-btn:not([disabled]):hover{background:rgba(0,0,0,0.3);color:#fff}.ReactTable .-pagination .-previous,.ReactTable .-pagination .-next{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.ReactTable .-pagination .-center{-webkit-box-flex:1.5;-ms-flex:1.5;flex:1.5;text-align:center;margin-bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.ReactTable .-pagination .-pageInfo{display:inline-block;margin:3px 10px;white-space:nowrap}.ReactTable .-pagination .-pageJump{display:inline-block;}.ReactTable .-pagination .-pageJump input{width:70px;text-align:center}.ReactTable .-pagination .-pageSizeOptions{margin:3px 10px}.ReactTable .rt-noData{display:block;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background:rgba(255,255,255,0.8);transition:all .3s ease;z-index:1;pointer-events:none;padding:20px;color:rgba(0,0,0,0.5)}.ReactTable .-loading{display:block;position:absolute;left:0;right:0;top:0;bottom:0;background:rgba(255,255,255,0.8);transition:all .3s ease;z-index:-1;opacity:0;pointer-events:none;}.ReactTable .-loading > div{position:absolute;display:block;text-align:center;width:100%;top:50%;left:0;font-size:15px;color:rgba(0,0,0,0.6);-webkit-transform:translateY(-52%);transform:translateY(-52%);transition:all .3s cubic-bezier(.25,.46,.45,.94)}.ReactTable .-loading.-active{opacity:1;z-index:2;pointer-events:all;}.ReactTable .-loading.-active > div{-webkit-transform:translateY(50%);transform:translateY(50%)}.ReactTable .rt-resizing .rt-th,.ReactTable .rt-resizing .rt-td{transition:none !important;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n if (!cssMapping) {\n return content;\n }\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n return [content].concat([sourceMapping]).join(\"\\n\");\n }\n return [content].join(\"\\n\");\n};","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

    ' + func(text) + '

    ';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

    fred, barney, & pebbles

    '\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '