-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js.map
1 lines (1 loc) · 241 KB
/
main.js.map
1
{"version":3,"file":"main.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AACuD;AACqB;AACH;AACK;AACA;AACsC;AACjC;AACF;AACY;AACZ;AACH;AACT;AAC6B;AACvB;;;AAE3E,MAAM,MAAM,GAAW;IAErB,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yFAAmB,EAAE;IACvD,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yFAAmB,EAAE;IACvD,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yFAAmB,EAAE;IACvD,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,+HAA+B,EAAE;IACvE,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,8GAAyB,EAAE;IACpE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,uFAAkB,EAAE;IAErD,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE;IAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,oFAAkB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IAC9F,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,uFAAmB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IAChG,EAAE,IAAI,EAAE,qCAAqC,EAAE,SAAS,EAAE,4FAAoB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IAC1H,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,4FAAoB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IACnG,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,yFAAmB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IACjG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,iFAAgB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IAC3F,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,wGAAwB,EAAE,WAAW,EAAE,CAAE,8FAAwB,CAAC,EAAE;IAE3G,2BAA2B;IAC3B,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE;CAEzC,CAAC;AAMK,MAAM,gBAAgB;;gFAAhB,gBAAgB;8GAAhB,gBAAgB;kHAHjB,kEAAoB,CAAC,MAAM,CAAC,EAC5B,0DAAY;oIAEX,gBAAgB,qFAFjB,0DAAY;;;;;;;;;;;;;;;;;;;;;;ACxC2C;;;;;;;;ICAjE,wEAA4C;;;IAI5C,wEAA4C;;ADIvC,MAAM,YAAY;IAMvB,YACU,MAAc;IACtB,sCAAsC;IAC9B,YAAsB;QAFtB,WAAM,GAAN,MAAM,CAAQ;QAEd,iBAAY,GAAZ,YAAY,CAAU;QARhC,UAAK,GAAG,cAAc,CAAC;QAEvB,eAAU,GAAW,KAAK,CAAC;QAC3B,eAAU,GAAW,IAAI,CAAC;IAMvB,CAAC;IAEJ,QAAQ;QAEN,kCAAkC;QAClC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACnD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;QAE5D,wCAAwC;QACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,WAAW,CAAC,KAAU;QACpB,IAAI,KAAK,YAAY,0DAAa,EAAE;YAClC,eAAe;YACf,IAAI,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE;gBACvE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;aACzB;iBAAM;gBACL,oBAAoB;gBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;aACxB;YAED,0CAA0C;YAC1C,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;SAChC;IACH,CAAC;;wEApCU,YAAY;0GAAZ,YAAY;QCTzB,sEAAK;QACH,sHAA4C;QAC5C,yEAAgC;QAC9B,2EAA+B;QACjC,4DAAM;QACN,sHAA4C;QAC9C,4DAAM;;QALS,0DAAgB;QAAhB,gFAAgB;QAIhB,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;;;ACLxB,MAAM,WAAW,GAAG,yGAAyG,CAAC;AAErI,6FAA6F;AAC7F,uGAAuG;AACvG,0EAA0E;AAC1E,0EAA0E;AAC1E,sDAAsD;AACtD,+FAA+F;AACxF,MAAM,uBAAuB,GAAG,kDAAkD,CAAC;AAE1F,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,wBAAa;IACb,wBAAa;AACf,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB;AAED,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,qCAAiB;IACjB,yCAAqB;AACvB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kCAAiB;IACjB,sCAAqB;AACvB,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC/B,4CAAmB;IACnB,4CAAmB;AACrB,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,6BAAiB;IACjB,6BAAiB;IACjB,6BAAiB;AACnB,CAAC,EAJW,QAAQ,KAAR,QAAQ,QAInB;AAED,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,4EAA8D;IAC9D,8EAAgE;IAChE,qFAAuE;IACvE,oDAAoD;AACtD,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCyD;AACM;AACS;AACjB;AACT;AAES;AACE;AACW;AAEhB;AACI;AACyB;AACb;AACA;AACS;AACH;AACK;AACA;AACsC;AAChB;AACnB;AAC5C;AACa;AACuB;AACpB;AACiC;AAC5C;AACJ;AAC2C;AACY;AACsB;AACT;AACzB;AACH;AACT;AACyB;AACI;AACvB;;;AA0DtE,MAAM,SAAS;IACpB,YAAY,OAAsB;QAChC,OAAO,CAAC,YAAY,CAAC,mEAAG,EAAE,qEAAG,CAAC,CAAC;IACjC,CAAC;;kEAHU,SAAS;uGAAT,SAAS,cAHR,wDAAY;4GAfb;QACT;YACE,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,uFAAsB;YAChC,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,CAAC,gEAAW,EAAE,oDAAM,CAAC;SAC5B;QACD,+FAAwB;QACxB;YACE,OAAO,EAAE,+DAAiB;YAC1B,QAAQ,EAAE;gBACR,iBAAiB,EAAE,GAAG,EAAE,CAAC,4JAAsB;aAChD;SACF;KACF,YA7BC,wDAAW;QACX,gEAAmB;QACnB,qEAAa;QACb,mEAAgB;QAChB,iEAAgB;QAGhB,kEAAS;QACT,uDAAc;QACd,sEAAoB;QACpB,gFAAiB;QACjB,kEAAkB;QAClB,qDAAY;QACZ,6DAAe;oIAoBN,SAAS,mBAtDlB,wDAAY;QACZ,gFAAe;QACf,gFAAe;QACf,uFAAmB;QACnB,oFAAkB;QAClB,yFAAmB;QACnB,yFAAmB;QACnB,+HAA+B;QAC/B,kGAAoB;QACpB,6FAAoB;QACpB,yGAAwB;QACxB,+HAA6B;QAC7B,sHAA0B;QAC1B,6FAAoB;QACpB,0FAAmB;QACnB,iFAAgB;QAChB,0GAAsB;QACtB,8GAAyB;QACzB,uFAAkB,aAGlB,wDAAW;QACX,gEAAmB;QACnB,qEAAa;QACb,mEAAgB;QAChB,iEAAgB;QAChB,+GAAiC;QAEjC,kEAAS;QACT,uDAAc;QACd,sEAAoB;QACpB,gFAAiB;QACjB,kEAAkB;QAClB,qDAAY;QACZ,6DAAe;;;;;;;;;;;;;;;;;;;;;AC5EuF;;;;AAIpG,MAAOG,wBAAwB;EACnCC,YAAoBC,WAAwB,EAAUC,MAAc;IAAhD,KAAAD,WAAW,GAAXA,WAAW;IAAuB,KAAAC,MAAM,GAANA,MAAM;EAE5D;EAEMC,WAAWA,CAACC,KAA6B,EAAEC,KAA0B;IAAA,IAAAC,KAAA;IAAA,OAAAC,oKAAA;MACzE,IAAIC,UAAU,SAASF,KAAI,CAACL,WAAW,CAACQ,aAAa,EAAE;MAEvD;MACA,IAAI,CAACD,UAAU,EAAE;QACf,aAAaF,KAAI,CAACJ,MAAM,CAACQ,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;OACpD,MAAM,IAAGF,UAAU,CAACG,MAAM,IAAI,EAAE,IAAIH,UAAU,CAACG,MAAM,IAAI,IAAI,EAAC;QAC7DC,OAAO,CAACC,GAAG,CAAC,wEAAwE,EAAEL,UAAU,CAAC;QACjG,aAAaF,KAAI,CAACJ,MAAM,CAACQ,QAAQ,CAAC,CAAC,kBAAkB,CAAC,CAAC;;MAIzD;MACA,OAAO,IAAI;IAAA;EACb;;;mBAnBWX,wBAAwB,EAAAe,sDAAA,CAAAE,+DAAA,GAAAF,sDAAA,CAAAI,mDAAA;AAAA;;SAAxBnB,wBAAwB;EAAAoB,OAAA,EAAxBpB,wBAAwB,CAAAqB;AAAA;;;;;;;;;;;;;;;;;ACJsB;;AAOpD,MAAM,eAAe;IAG1B;QACE,IAAI,CAAC,UAAU,GAAG,uEAAmB;IACvC,CAAC;IAED,QAAQ;IACR,CAAC;;8EARU,eAAe;6GAAf,eAAe;QCR5B,yEAAsD;QAG4B,uDAAqD;QAAA,4DAAO;QACxI,0EAAyE;QAA+C,0GAA+C;QAAA,4DAAI;;QAD/F,0DAAqD;QAArD,oIAAqD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACUhI,MAAM,eAAe;IAE1B,YACU,WAAwB,EACxB,cAA8B,EAC/B,mBAAwC,EACvC,MAAc;QAHd,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;QAC/B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACvC,WAAM,GAAN,MAAM,CAAQ;IACpB,CAAC;IAEL,QAAQ;QAEN,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAoB,EAAE,EAAE;YACxE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC;YAC7C,IAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC;gBACvE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,GAAiB,EAAE,EAAE;oBAC7E,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;oBACxB,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,EAAC,GAAG,EAAE,GAAG,EAAC;gBAC9C,CAAC,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IAEL,CAAC;IAED,gBAAgB,CAAC,KAAY;QAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC1E,CAAC;IACD,SAAS,CAAC,CAAQ;QACf,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,CAAC,KAAY;QAClB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAClC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC,CAAC;IACJ,CAAC;;8EArCU,eAAe;6GAAf,eAAe;QCb5B,yEAAgG;QACtF,4EAAiB;QAAA,4DAAS;QAClC,0EAAqC;QAAA,oIAAyE;QAAA,4DAAO;QAGvH,yEAAuB;QAIf,oEAA8F;QAChG,4DAAI;QACJ,wEAAqG;QAAzE,yIAAS,4BAAwB,IAAC;QAAuC,mEAAa;QAAA,4DAAI;QAExH,0EAA4B;QAGtB,sEAAsF;QACxF,4DAAI;QACJ,yEAA6D;QAAjD,yIAAS,4BAAwB,IAAC;QAAe,kEAAO;QAAA,4DAAI;QAE1E,0EAAgB;QAGwF,0EAAqD;QAAA,4EAAgB;QAAA,4DAAI;QAE/K,0EAAgF;QACwB,0EAA4C;QAAA,4EAAgB;QAAA,4DAAI;QAExK,0EAAoB;QACqD,qIAAS,uCAAmC,IAAC;QAA4C,mEAAa;QAAA,4DAAM;QAIzL,2EAA6B;QAGmC,oEAAiC;QAAA,4DAAI;QACjG,2EAAmF;QAEpD,yIAAS,qBAAiB,IAAC;QAAC,oEAAsC;QAAA,4DAAI;QAEnG,0EAAkC;QAAA,yEAAa;QAAA,4DAAK;QACpD,yEAAgC;QAAA,qFAAyB;QAAA,4DAAI;QAC7D,2EAA6B;QAAiC,wEAAY;QAAA,4DAAI;QAGlF,2EAAkD;QAE9C,sEAAmD;QACrD,4DAAI;QACJ,2EAA6E;QAE9C,yIAAS,qBAAiB,IAAC;QAAC,oEAAsC;QAAA,4DAAI;QAEnG,2EAAgF;QAE5E,sEAAgE;QAClE,4DAAM;QACN,sEAAI;QAAA,wDAA0C;QAAA,4DAAK;QAGrD,yEAAwE;QAAA,oEAA6D;QAAC,6EAAgB;QAAA,4DAAI;QAC1J,yEAAmE;QAAA,oEAA0D;QAAC,yEAAY;QAAA,4DAAI;QAC9I,yEAA0C;QAAA,oEAA2D;QAAC,wEAAW;QAAA,4DAAI;QACrH,yEAAmE;QAAhE,yIAAS,mBAAe,IAAC;QAAuC,oEAA2D;QAAC,qEAAQ;QAAA,4DAAI;;;;QAhEhJ,qHAAwD;QAsBpB,2DAA6C;QAA7C,6KAA6C;QACiC,0DAAiC;QAAjC,wIAAiC;QAE/G,0DAA8C;QAA9C,8KAA8C;QACkC,0DAAwB;QAAxB,wIAAwB;QAGlI,0DAAiE;QAAjE,8LAAiE;QAyBjE,2DAAiC;QAAjC,0FAAiC;QAE7B,0DAAmD;QAAnD,0OAAmD;QAEtD,0DAA0C;QAA1C,gKAA0C;;;;;;;;;;;;;;;;;;;;;;;;;AChDnD,MAAM,oBAAoB;IAQ/B,YACS,WAA2B,EAC1B,YAAsB,EACtB,SAAuB;QAFxB,gBAAW,GAAX,WAAW,CAAgB;QAC1B,iBAAY,GAAZ,YAAY,CAAU;QACtB,cAAS,GAAT,SAAS,CAAc;QATjC,eAAe;QACf,sBAAiB,GAAQ,EAAE,CAAC;QAC5B,iBAAY,GAAQ,EAAE,CAAC;QACvB,sBAAiB,GAA6B,IAAI,CAAC;QACnD,sBAAiB,GAAG,KAAK,CAAC;IAMtB,CAAC;IAEL,QAAQ;IACR,CAAC;IAED,eAAe,CAAC,KAAU;QACxB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,YAAY,CAAC,KAAwB;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,SAAU,CAAC,CAAC;QAC5E,qDAAqD;QACrD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,WAAW,CAAC,KAAkB;QAC5B,eAAe;IACjB,CAAC;IACD,YAAY;QACV,gBAAgB;IAClB,CAAC;IACD,eAAe;QACb,eAAe;IACjB,CAAC;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC;IAChD,CAAC;;wFAtCU,oBAAoB;kHAApB,oBAAoB;QCVjC,yEAA0B;QACA,4EAAiB;QAAA,4DAAK;QAC9C,4EAAoG;QAA7C,4IAAS,wBAAoB,aAAa,CAAC,IAAC;QACjG,0EAAyB;QAAA,iEAAC;QAAA,4DAAO;QAIrC,yEAAwB;QAGf,gIAAoE;QAAA,4DAAI;QAC3E,4EAAiF;QAA9D,oJAAU,2BAAuB,IAAC;QAArD,4DAAiF;QAEjF,oFASC;QAJC,wKAAgB,wBAAoB,IAAC,8GACtB,uBAAmB,IADG,0GAErB,kBAAc,IAFO,gHAGlB,qBAAiB,IAHC;QAItC,4DAAgB;QAMvB,0EAA0B;QACoD,6IAAS,cAAU,IAAC;QAC9F,uEACF;QAAA,4DAAS;QACT,8EAAgG;QAA7C,6IAAS,wBAAoB,aAAa,CAAC,IAAC;QAAC,iEAAK;QAAA,4DAAS;;QAlBxG,2DAAuC;QAAvC,oGAAuC;QAeA,0DAA8B;QAA9B,2FAA8B;;;;;;;;;;;;;;;;;;;;;;;AC5BlB;;;;;;;ICsDrD,sEAAmD;IACjD,sFACF;IAAA,4DAAM;;;IACN,sEAAkD;IAChD,oHACF;IAAA,4DAAM;;;IARR,0EAE6B;IAC3B,iIAEM;IACN,iIAEM;IACR,4DAAM;;;;IANE,0DAA2C;IAA3C,oHAA2C;IAG3C,0DAA0C;IAA1C,mHAA0C;;;IAKlD,0EAAiE;IAC/D,uDACF;IAAA,4DAAM;;;IADJ,0DACF;IADE,2GACF;;;IAWI,sEAKQ;;;IASR,sEAKQ;;;;IAzBZ,wEAA2C;IACzC,6EAIC;IADC,uTAAS,uFAAqB,KAAC;IAChC,kEACC;IAAA,4IAKQ;IACV,4DAAS;IAET,6EAKC;IADC,uTAAS,uFAAqB,KAAC;IAChC,kEACC;IAAA,4IAKQ;IACV,4DAAS;IACX,qEAAe;;;;;IApBR,0DAAgC;IAAhC,mGAAgC;IAUnC,0DAAuF;IAAvF,oIAAuF;IAIpF,0DAAgC;IAAhC,mGAAgC;;;IAenC,sEAKQ;;;;IAZZ,wEAA6C;IAC3C,6EAKC;IADC,uTAAS,uFAAqB,KAAC;IAChC,kEACC;IAAA,4IAKQ;IACV,4DAAS;IACX,qEAAe;;;IAVX,0DAAuC;IAAvC,uGAAuC;IAIpC,0DAAgC;IAAhC,mGAAgC;;AD/FpC,MAAM,6BAA6B;IAexC,YACU,cAA8B,EAC/B,WAA2B;QAD1B,mBAAc,GAAd,cAAc,CAAgB;QAC/B,gBAAW,GAAX,WAAW,CAAgB;QAhBpC,eAAU,GAAG,uDAAW;QAEf,eAAU,GAAsB,QAAQ;QACxC,QAAG,GAAwB,IAAI;QAC/B,YAAO,GAAY,wDAAY;QAC/B,kBAAa,GAAkC,IAAI,EAAC,uBAAuB;QAEpF,+BAA0B,GAAY,KAAK;QAC3C,+BAA0B,GAAY,KAAK;QAC3C,gBAAW,GAAW,EAAE;QACxB,SAAI,GAAW,EAAE;QACjB,6BAAwB,GAAW,EAAE;IAMjC,CAAC;IAEL,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;YACpD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY;YAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI;SACpC;IACH,CAAC;IAEM,mBAAmB;QACxB,IAAI,OAAO,CAAC,0DAA0D,CAAC,IAAI,IAAI,EAAE;YAC/E,IAAI,CAAC,0BAA0B,GAAG,IAAI;YAEtC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,0BAA0B,GAAG,KAAK;gBACvC,IAAI,CAAC,wBAAwB,GAAG,oCAAoC;gBACpE,OAAM;aACP;YAED,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBAChG,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC;gBAC7C,IAAI,CAAC,0BAA0B,GAAG,KAAK;gBACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;gBAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC;gBACnD,IAAI,CAAC,0BAA0B,GAAG,KAAK;gBACvC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAEvD,CAAC,EACC,GAAG,EAAE;gBACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;gBAChD,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACzC,CAAC,CAAC;SAEL;IACH,CAAC;IAEM,mBAAmB;QACxB,IAAI,CAAC,0BAA0B,GAAG,IAAI;QACtC,IAAI,CAAC,wBAAwB,GAAG,EAAE;QAElC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,EAAE;YAC3B,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,wBAAwB,GAAG,oCAAoC;YACpE,OAAM;SACP;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACvD,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,wBAAwB,GAAG,8BAA8B;SAC/D;QAGD,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7H,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC;YAC7C,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC;YACnD,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAEvD,CAAC,EACC,GAAG,EAAE;YACH,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;YAChD,IAAI,CAAC,0BAA0B,GAAG,KAAK;QACzC,CAAC,CAAC;IACN,CAAC;IAEM,mBAAmB;QACxB,IAAI,CAAC,0BAA0B,GAAG,IAAI;QACtC,IAAI,CAAC,wBAAwB,GAAG,EAAE;QAElC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE;YACjB,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,wBAAwB,GAAG,yBAAyB;YACzD,OAAM;SACP;QAGD,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YACpH,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC;YAC3C,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,KAAK,CAAC;YACjD,IAAI,CAAC,0BAA0B,GAAG,KAAK;YACvC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAEvD,CAAC,EACC,GAAG,EAAE;YACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;YAC9C,IAAI,CAAC,0BAA0B,GAAG,KAAK;QACzC,CAAC,CAAC;IACN,CAAC;;0GA/GU,6BAA6B;2HAA7B,6BAA6B;QCZ1C,yEAA0B;QAEtB,uDACF;QAAA,4DAAK;QACL,4EAKC;QADC,qJAAS,wBAAoB,aAAa,CAAC,IAAC;QAE5C,0EAAyB;QAAA,iEAAC;QAAA,4DAAO;QAGrC,yEAAwB;QAEpB,0IAEF;QAAA,4DAAI;QAEJ,uEAAM;QAEuB,wEAAY;QAAA,2EAAgD;QAAA,6DAAC;QAAA,4DAAO;QAC7F,0EAAyB;QASrB,uMAAyB;QAR3B,4DAUE;QAIN,0EAAkB;QACE,gEAAI;QAAA,4DAAQ;QAC9B,0EAAyB;QAOrB,gMAAkB;QANpB,4DAQE;QAIN,4HASM;QAEN,4HAEM;QACR,4DAAO;QAET,2EAA0B;QAEtB,8IA2Be;QAEf,8IAce;QACjB,4DAAM;;;QAhHJ,0DACF;QADE,uIACF;QA2BQ,2DAAsB;QAAtB,mFAAsB;QAgBtB,0DAAkB;QAAlB,6EAAkB;QAOrB,0DAAsF;QAAtF,2GAAsF;QAUnF,0DAA8B;QAA9B,8FAA8B;QAOrB,0DAA0B;QAA1B,0FAA0B;QA6B1B,0DAA4B;QAA5B,4FAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEnEzC,sEAAoD;IAClD,sFACF;IAAA,4DAAM;;;IALR,0EACgC;IAE9B,0HAEM;IACR,4DAAM;;;;IAHE,0DAA4C;IAA5C,oHAA4C;;;IAKpD,0EAA6D;IAC3D,uDACF;IAAA,4DAAM;;;IADJ,0DACF;IADE,uGACF;;;IAQE,sEAAsH;;ADpCrH,MAAM,sBAAsB;IAQjC,YACS,YAAiC,EAChC,cAA8B,EAC/B,WAA2B;QAF3B,iBAAY,GAAZ,YAAY,CAAqB;QAChC,mBAAc,GAAd,cAAc,CAAgB;QAC/B,gBAAW,GAAX,WAAW,CAAgB;QAV3B,QAAG,GAAwB,IAAI;QAExC,oBAAe,GAAW,EAAE;QAE5B,2BAAsB,GAAY,KAAK;QACvC,yBAAoB,GAAW,EAAE;IAM7B,CAAC;IAEL,QAAQ;IACR,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,sBAAsB,GAAG,IAAI;QAClC,IAAI,CAAC,oBAAoB,GAAG,EAAE;QAE9B,IAAG,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAC;YACpC,IAAI,CAAC,sBAAsB,GAAG,KAAK;YACnC,IAAI,CAAC,oBAAoB,GAAG,yBAAyB;YACrD,OAAM;SACP;QAGD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5G,IAAI,CAAC,sBAAsB,GAAG,KAAK;YACnC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC;QAC9B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC;YAC9C,IAAI,CAAC,sBAAsB,GAAG,KAAK;YACnC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAEnD,CAAC,CAAC;IACN,CAAC;;4FArCU,sBAAsB;oHAAtB,sBAAsB;QCXnC,yEAA0B;QACyB,6EAAkB;QAAA,4DAAK;QACxE,4EAAoG;QAA7C,8IAAS,wBAAoB,aAAa,CAAC,IAAC;QACjG,0EAAyB;QAAA,iEAAC;QAAA,4DAAO;QAGrC,yEAAwB;QAGZ,kEAAO;QAAA,4DAAS;QAAC,kLAC3B;QAAA,4DAAM;QAEN,wEAAM;QAEwB,wEAAY;QAAA,2EAAgD;QAAA,6DAAC;QAAA,4DAAO;QAC9F,0EAAyB;QAQrB,oMAA6B;QAP/B,4DASE;QAIN,qHAMM;QAEN,qHAEM;QAER,4DAAO;QAET,2EAA0B;QAEoE,+IAAS,uBAAmB,IAAC;QACrH,oEACA;QAAA,uHAAsH;QACxH,4DAAS;;;QAzBH,2DAA6B;QAA7B,wFAA6B;QAM7B,0DAAyF;QAAzF,2GAAyF;QAQzF,0DAA0B;QAA1B,0FAA0B;QAQsB,0DAAmC;QAAnC,gGAAmC;QAEhF,0DAA4B;QAA5B,4FAA4B;;;;;;;;;;;;;;;;;;;;;;;AC9CgB;;;;;;;ICavD,0EAAiF;IACvE,kEAAO;IAAA,4DAAS;IAAC,8HAAkE;IAAA,wEAA0D;IAAA,yEAAc;IAAA,4DAAI;IAAC,qEAC1K;IAAA,4DAAM;;;IAsBF,sEAAmD;IACjD,qFACF;IAAA,4DAAM;;;IACN,sEAAkD;IAChD,oHACF;IAAA,4DAAM;;;IARR,0EACgC;IAE9B,8HAEM;IACN,8HAEM;IACR,4DAAM;;;;IANE,0DAA2C;IAA3C,oHAA2C;IAG3C,0DAA0C;IAA1C,mHAA0C;;;IAmBlD,0EAA8D;IAC5D,uDACF;IAAA,4DAAM;;;IADJ,0DACF;IADE,wGACF;;;IASI,sEAAuH;;;IAKvH,sEAAuH;;;;IAR3H,wEAA2C;IACzC,6EAA6F;IAA7B,oTAAS,oFAAkB,KAAC;IAC1F,mEACA;IAAA,yIAAuH;IACzH,4DAAS;IAET,6EAA6L;IAA7B,oTAAS,oFAAkB,KAAC;IAC1L,mEACA;IAAA,yIAAuH;IACzH,4DAAS;IACX,qEAAe;;;;;IAPJ,0DAA6B;IAA7B,gGAA6B;IAG2B,0DAA8F;IAA9F,gIAA8F;IAEtJ,0DAA6B;IAA7B,gGAA6B;;;IAOpC,sEAAuH;;;;IAH3H,wEAA6C;IAC3C,6EAAwH;IAA7B,oTAAS,oFAAkB,KAAC;IACrH,mEACA;IAAA,yIAAuH;IACzH,4DAAS;IACX,qEAAe;;;IAJyC,0DAAoC;IAApC,oGAAoC;IAEjF,0DAA6B;IAA7B,gGAA6B;;;ADtErC,MAAM,0BAA0B;IAcrC,YACU,cAA8B,EAC/B,WAA2B;QAD1B,mBAAc,GAAd,cAAc,CAAgB;QAC/B,gBAAW,GAAX,WAAW,CAAgB;QAfpC,eAAU,GAAG,uDAAW;QAEf,eAAU,GAAsB,QAAQ;QACxC,QAAG,GAAwB,IAAI;QAC/B,YAAO,GAAY,wDAAY;QAC/B,eAAU,GAA+B,IAAI,EAAC,uBAAuB;QAE9E,4BAAuB,GAAY,KAAK;QACxC,4BAAuB,GAAY,KAAK;QACxC,gBAAW,GAAW,EAAE;QACxB,0BAAqB,GAAW,EAAE;QAClC,WAAM,GAAY,IAAI;IAKlB,CAAC;IAEL,QAAQ;QACN,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY;YAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ;SAClD;IACH,CAAC;IAEM,gBAAgB;QACrB,IAAI,OAAO,CAAC,iDAAiD,CAAC,IAAI,IAAI,EAAE;YACtE,IAAI,CAAC,uBAAuB,GAAG,IAAI;YAEnC,IAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAC;gBACtB,IAAI,CAAC,uBAAuB,GAAG,KAAK;gBACpC,IAAI,CAAC,qBAAqB,GAAG,iCAAiC;gBAC9D,OAAM;aACP;YAED,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;gBACxF,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC;gBAC1C,IAAI,CAAC,uBAAuB,GAAG,KAAK;gBACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YAChC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;gBAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC;gBAChD,IAAI,CAAC,uBAAuB,GAAG,KAAK;gBACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAEpD,CAAC,EACD,GAAG,EAAE;gBACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;gBAC7C,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACtC,CAAC,CAAC;SAEL;IACH,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACnC,IAAI,CAAC,qBAAqB,GAAG,EAAE;QAE/B,IAAG,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAC;YACtB,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,qBAAqB,GAAG,iCAAiC;YAC9D,OAAM;SACP;QACD,IAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,IAAK,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAC;YAC3G,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,qBAAqB,GAAG,mCAAmC;SACjE;QAED,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAI,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9I,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC;YAC1C,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC;YAChD,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAEpD,CAAC,EACD,GAAG,EAAE;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;YAC7C,IAAI,CAAC,uBAAuB,GAAG,KAAK;QACtC,CAAC,CAAC;IACN,CAAC;IAEM,gBAAgB;QACrB,IAAI,CAAC,uBAAuB,GAAG,IAAI;QACnC,IAAI,CAAC,qBAAqB,GAAG,EAAE;QAE/B,IAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAC;YACf,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,qBAAqB,GAAG,yBAAyB;YACtD,OAAM;SACP;QAGD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,OAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YACzI,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC;YAC9C,IAAI,CAAC,uBAAuB,GAAG,KAAK;YACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAEpD,CAAC,EACD,GAAG,EAAE;YACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;YAC3C,IAAI,CAAC,uBAAuB,GAAG,KAAK;QACtC,CAAC,CAAC;IACN,CAAC;;oGA5GU,0BAA0B;wHAA1B,0BAA0B;QCbvC,yEAA0B;QACyB,uDAAyD;QAAA,4DAAK;QAC/G,4EAAoG;QAA7C,kJAAS,wBAAoB,aAAa,CAAC,IAAC;QACjG,0EAAyB;QAAA,iEAAC;QAAA,4DAAO;QAGrC,yEAAwB;QAEpB,qLACF;QAAA,4DAAI;QACJ,+DAEI;QAEJ,wHAEM;QAEN,wEAAM;QAEuB,wEAAY;QAAA,2EAAgD;QAAA,6DAAC;QAAA,4DAAO;QAC7F,0EAAyB;QASrB,oMAAyB;QAR3B,4DAUE;QAGN,yHASM;QAEN,0EAAkB;QACV,0EAAc;QAAA,4DAAO;QAC3B,2EAAkD;QAA4B,mEAAa;QAAA,4DAAQ;QACnG,iFAQE;QAHA,+LAAoB;QALtB,4DAQE;QAGJ,yHAEM;QAER,4DAAO;QAET,2EAA0B;QAEtB,2IAUe;QAEf,2IAKe;QACjB,4DAAM;;;QArF2C,0DAAyD;QAAzD,kIAAyD;QAapG,0DAAwB;QAAxB,uFAAwB;QAetB,0DAAsB;QAAtB,mFAAsB;QAMtB,0DAAsF;QAAtF,2GAAsF;QAanE,0DAA0B;QAA1B,uJAA0B;QAM/C,0DAAoB;QAApB,+EAAoB;QAMlB,0DAA2B;QAA3B,2FAA2B;QAQlB,0DAA0B;QAA1B,0FAA0B;QAY1B,0DAA4B;QAA5B,4FAA4B;;;;;;;;;;;;;;;;;;;AC/E4C;;AAapF,MAAM,iCAAiC;IAE5C,QAAQ,CAAC,OAAwB;QAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAExD,OAAO,QAAQ,IAAI,eAAe,IAAI,QAAQ,CAAC,KAAK,KAAK,eAAe,CAAC,KAAK;YAC5E,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE;YAC5B,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;;kHATU,iCAAiC;+HAAjC,iCAAiC,mJATjC;YACT;gBACE,OAAO,EAAE,yDAAa;gBACtB,WAAW,EAAE,iCAAiC;gBAC9C,KAAK,EAAE,IAAI;aACZ;SACF;;;;;;;;;;;;;;;;ACVI,MAAM,YAAY;IAAzB;QACE,OAAE,GAAW,EAAE;QACf,SAAI,GAAW,EAAE;QACjB,aAAQ,GAAW,EAAE;QACrB,uBAAkB,GAAW,EAAE;QAC/B,gBAAW,GAAW,EAAE;QACxB,6BAAwB,GAAY,EAAE;QACtC,iBAAY,GAAY,EAAE;QAC1B,SAAI,GAAY,EAAE;IACpB,CAAC;CAAA;;;;;;;;;;;;;;;;ACVM,MAAM,IAAI;IAAjB;QAOE,wBAAwB;QACxB,qBAAgB,GAAY,EAAE;QAC9B,gBAAW,GAAa,KAAK;IAC/B,CAAC;CAAA;;;;;;;;;;;;;;;;;ACVD;;;GAGG;AACsC;AAUzC;;;GAGG;AACI,MAAM,oBAAoB,GAAiB;IAChD,OAAO,EAAE,wDAAY;CACtB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACjB0D;;;;;;;;;;ICsB5C,sEAA+C;IAC7C,+FACF;IAAA,4DAAM;;;IAHR,0EAA6G;IAC3G,4HAEM;IACR,4DAAM;;;;IAHE,0DAAuC;IAAvC,oHAAuC;;;IAU7C,sEAA+C;IAC7C,wFACF;IAAA,4DAAM;;;IACN,sEAAgD;IAC9C,iHACF;IAAA,4DAAM;;;IAGJ,sEAA8D;IAC5D,yHACF;IAAA,4DAAM;;;IACN,sEAA6D;IAC3D,yHACF;IAAA,4DAAM;;;IACN,sEAA6D;IAC3D,8GACF;IAAA,4DAAM;;;IACN,sEAAkE;IAChE,sHACF;IAAA,4DAAM;;;IAZR,wEAAuD;IACrD,2IAEM;IACN,2IAEM;IACN,2IAEM;IACN,2IAEM;IACR,qEAAe;;;IAZP,0DAAsD;IAAtD,6KAAsD;IAGtD,0DAAqD;IAArD,4KAAqD;IAGrD,0DAAqD;IAArD,4KAAqD;IAGrD,0DAA0D;IAA1D,iLAA0D;;;IAlBpE,0EAA6G;IAC3G,4HAEM;IACN,4HAEM;IAEN,8IAae;IACjB,4DAAM;;;;IArBE,0DAAuC;IAAvC,oHAAuC;IAGvC,0DAAwC;IAAxC,qHAAwC;IAI/B,0DAAsC;IAAtC,mHAAsC;;;IAqBrD,sEAA+D;IAC7D,4FACF;IAAA,4DAAM;;;IAHR,0EAAqI;IACnI,4HAEM;IACR,4DAAM;;;;IAHE,0DAAuD;IAAvD,4HAAuD;;;IAQ/D,sEAAiH;;;IAGnH,0EAA6E;IACnE,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,qGACzB;;;IA2BI,sEAAwC;IACtC,+EACF;IAAA,4DAAM;;;IACN,sEAAyC;IACvC,sGACF;IAAA,4DAAM;;;IACN,sEAAqC;IACnC,iGACF;IAAA,4DAAM;;;IATR,0EAAwF;IACtF,4HAEM;IACN,4HAEM;IACN,4HAEM;IACR,4DAAM;;;;IATE,0DAAgC;IAAhC,sHAAgC;IAGhC,0DAAiC;IAAjC,uHAAiC;IAGjC,0DAA6B;IAA7B,mHAA6B;;;IAUnC,sEAA2C;IACzC,+FACF;IAAA,4DAAM;;;IAHR,0EAAiG;IAC/F,4HAEM;IACR,4DAAM;;;;IAHE,0DAAmC;IAAnC,sHAAmC;;;IAQ3C,sEAAkH;;ADnHzH,MAAM,wBAAwB;IAmBnC,YACS,YAAiC,EAChC,WAAwB,EACxB,cAA8B,EAC9B,MAAc;QAHf,iBAAY,GAAZ,YAAY,CAAqB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAQ;QAtBxB,4BAAuB,GAAG,mEAAuB;QACjD,sBAAiB,GAAY,KAAK,CAAC;QACnC,uBAAkB,GAAY,KAAK,CAAC;QACpC,uBAAkB,GAAW,EAAE,CAAC;QAChC,wBAAmB,GAAW,EAAE,CAAC;QAEjC,qBAAgB,GAAG;YACjB,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,EAAE;SACnB,CAAC;QAEF,sBAAiB,GAAG;YAClB,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACrD,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;SACb,CAAC;IAOE,CAAC;IAEL,QAAQ;IACR,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC7B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,SAAS,CACrJ,CAAC,IAAI,EAAE,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,KAAK;YAC9B,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC;YAC3E,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC;YAC7C,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO;YAC3C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACjC,CAAC,CACF,CAAC;IACJ,CAAC;IACD,iBAAiB;QACf,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,SAAS,CAC7I,CAAC,IAAI,EAAE,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC;YAClC,IAAI,CAAC,kBAAkB,GAAG,KAAK;YAC/B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,GAAG,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC;YAC1C,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO;YAC5C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAClC,CAAC,CACF,CAAC;IAEJ,CAAC;;gGArEU,wBAAwB;sHAAxB,wBAAwB;QCZrC,yEAAgC;QAKtB,uDAAoC;QAAA,4DAAK;QAC7C,uEAA6B;QAAA,uDAAqC;QAAA,4DAAI;QAK1E,yEAAiB;QAIT,6EACF;QAAA,4DAAK;QACL,8EAAwF;QAAlF,qJAAY,sBAAkB,IAAC;QACnC,0EAAuB;QAClB,iIAAqE;QAAA,4DAAI;QAE5E,2EAAwB;QACsC,wEAAY;QAAA,4DAAQ;QAChF,iFAAwI;QAAvC,+MAAsC;QAAvI,4DAAwI;QACxI,uHAIM;QACR,4DAAM;QAEN,2EAAwB;QACsC,wEAAY;QAAA,4DAAQ;QAChF,iFAA0L;QAAvC,+MAAsC;QAAzL,4DAA0L;QAC1L,uHAsBM;QACR,4DAAM;QAEN,2EAAwB;QACsC,gFAAoB;QAAA,4DAAQ;QACxF,iFAA+J;QAA9C,sNAA6C;QAA9J,4DAA+J;QAC/J,uHAIM;QACR,4DAAM;QAEN,8EAA0G;QACxG,+EACA;QAAA,yHAAiH;QACnH,4DAAS;QAET,uHAEM;QAER,4DAAM;QAOZ,0EAAyC;QAInC,kFACF;QAAA,4DAAK;QACL,gFAAiE;QAA3D,qJAAY,uBAAmB,IAAC;QACpC,0EAAuB;QAClB,mIAAuE;QAAA,4DAAI;QAC9E,2EAAwB;QACsC,iFAAqB;QAAA,4DAAQ;QACzF,wEAA4G;QAC9G,4DAAM;QAEN,2EAAwB;QACsC,6EAAiB;QAAA,4DAAQ;QACrF,iFAAmK;QAAzC,iNAAwC;QAAlK,4DAAmK;QACnK,uHAUM;QACR,4DAAM;QAEN,2EAAwB;QACsC,2EAAe;QAAA,4DAAQ;QACnF,iFAAkI;QAAzC,iNAAwC;QAAjI,4DAAkI;QAClI,uHAIM;QACR,4DAAM;QAEN,8EAA4G;QAC1G,kFACA;QAAA,yHAAkH;QACpH,4DAAS;;;;;;;;;QA3HX,0DAAoC;QAApC,4LAAoC;QACX,0DAAqC;QAArC,6LAAqC;QAiBuC,2DAAsC;QAAtC,iGAAsC;QACjI,0DAA0E;QAA1E,2GAA0E;QASe,0DAAmC;QAAnC,gGAAmC;QAC5H,0DAA0E;QAA1E,2GAA0E;QA2BiC,0DAA6C;QAA7C,wGAA6C;QACxJ,0DAAkG;QAAlG,2GAAkG;QAOlG,0DAA4D;QAA5D,8GAA4D;QAE3D,0DAAuB;QAAvB,uFAAuB;QAG1B,0DAAwB;QAAxB,wFAAwB;QAsByC,2DAAsC;QAAtC,4GAAsC;QAKe,0DAAwC;QAAxC,mGAAwC;QAC5J,0DAAqD;QAArD,8GAAqD;QAe8B,0DAAwC;QAAxC,mGAAwC;QAC3H,0DAA8D;QAA9D,8GAA8D;QAO9D,0DAA8D;QAA9D,+GAA8D;QAE7D,0DAAwB;QAAxB,wFAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEjHjC,sEAA4C;IAC1C,+EACF;IAAA,4DAAM;;;IACN,sEAAyC;IACvC,iGACF;IAAA,4DAAM;;;IANR,0EAAoG;IAClG,6HAEM;IACN,6HAEM;IACR,4DAAM;;;;IANE,0DAAoC;IAApC,oHAAoC;IAGpC,0DAAiC;IAAjC,iHAAiC;;;IAO3C,0EAAmE;IACzD,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,2FACzB;;;IAEA,0EAAsE;IAC5D,oEAAS;IAAA,4DAAS;IAAC,uDAC7B;IAAA,4DAAM;;;IADuB,0DAC7B;IAD6B,6FAC7B;;ADtBD,MAAM,yBAAyB;IAMpC,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAL5C,UAAK,GAAW,EAAE;QAClB,YAAO,GAAY,KAAK;QACxB,aAAQ,GAAW,EAAE;QACrB,eAAU,GAAW,EAAE;IAEyB,CAAC;IAEjD,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,IAAI;QAEnB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAChD,CAAC,IAAI,EAAE,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,IAAI,CAAC;YACxD,IAAI,CAAC,QAAQ,GAAG,EAAE;YAClB,IAAI,CAAC,UAAU,GAAG,yEAAyE;YAC3F,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC;YAC7D,IAAI,CAAC,QAAQ,GAAG,uHAAuH;YACvI,IAAI,CAAC,UAAU,GAAG,EAAE;YACpB,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB,CAAC,CACF;IACH,CAAC;;kGA5BU,yBAAyB;uHAAzB,yBAAyB;QCRtC,yEAA+B;QAE3B,oEAAsF;QAEtF,yEAA8B;QACxB,yEAAc;QAAA,4DAAK;QACvB,qEAAI;QAAA,mHAAwD;QAAA,4DAAK;QAEjE,6EAAkD;QAA5C,qJAAY,cAAU,IAAC;QAC3B,0EAAwB;QACf,iEAAK;QAAA,4DAAQ;QACpB,+EAAkJ;QAArF,6LAAmB;QAAhF,4DAAkJ;QAElJ,uHAOM;QACR,4DAAM;QAEN,8EAAyG;QAAA,0EAAc;QAAA,4DAAS;QAChI,wHAEM;QAEN,wHAEM;QACR,4DAAO;QAGT,2EAA8B;QACzB,sFAA0B;QAAA,yEAA6B;QAAA,mEAAO;QAAA,4DAAI;;;;QAxBJ,2DAAmB;QAAnB,8EAAmB;QAE1E,0DAAiE;QAAjE,2GAAiE;QAUjE,0DAA6C;QAA7C,oGAA6C;QAC/C,0DAAc;QAAd,8EAAc;QAId,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEflB,sEAA+C;IAC7C,kFACF;IAAA,4DAAM;;;IACN,sEAAgD;IAC9C,yGACF;IAAA,4DAAM;;;IANR,0EAA+G;IAC7G,sHAEM;IACN,sHAEM;IACR,4DAAM;;;;IANE,0DAAuC;IAAvC,oHAAuC;IAGvC,0DAAwC;IAAxC,qHAAwC;;;IAW9C,sEAAsD;IACpD,0FACF;IAAA,4DAAM;;;IAHR,0EAAkI;IAChI,sHAEM;IACR,4DAAM;;;;IAHE,0DAA8C;IAA9C,oHAA8C;;;IAOxD,0EAAmE;IACzD,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,2FACzB;;AD3BD,MAAM,kBAAkB;IAO7B,YAAoB,WAAwB,EAAU,MAAc;QAAhD,gBAAW,GAAX,WAAW,CAAa;QAAU,WAAM,GAAN,MAAM,CAAQ;QANpE,aAAQ,GAAW,EAAE;QACrB,oBAAe,GAAW,EAAE;QAC5B,YAAO,GAAY,KAAK;QACxB,eAAU,GAAkB,EAAE;QAC9B,aAAQ,GAAW,EAAE;IAEmD,CAAC;IAEzE,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;QACN,IAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,wBAAwB;YACxC,OAAM;SACP;QAED,IAAG,CAAC,IAAI,CAAC,UAAU,EAAC;YAClB,IAAI,CAAC,QAAQ,GAAG,yBAAyB;YACzC,OAAM;SACP;QAED,IAAI,CAAC,OAAO,GAAG,IAAI;QAEnB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC;aACvD,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAC,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,QAAQ,GAAG,yCAAyC;YACzD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAClB,CAAC,CAAC;IACN,CAAC;;oFArCU,kBAAkB;gHAAlB,kBAAkB;QCT/B,yEAA+B;QAE3B,oEAAsF;QAEtF,yEAA8B;QACxB,yEAAc;QAAA,4DAAK;QACvB,qEAAI;QAAA,yFAA8B;QAAA,4DAAK;QAEvC,6EAAkD;QAA5C,8IAAY,cAAU,IAAC;QAC3B,0EAAwB;QACf,oEAAQ;QAAA,4DAAQ;QACvB,+EAAsL;QAA7E,yLAAsB;QAA/H,4DAAsL;QACtL,gHAOM;QACR,4DAAM;QACN,0EAAwB;QAEf,4EAAgB;QAAA,4DAAQ;QAC/B,iFAAsM;QAA7F,gMAA6B;QAAtI,4DAAsM;QAEtM,gHAIM;QACR,4DAAM;QAEN,8EAAyG;QAAA,0EAAc;QAAA,4DAAS;QAChI,iHAEM;QACR,4DAAO;QAET,sEAAoC;QACtC,4DAAM;;;;;QA7B2G,2DAAsB;QAAtB,iFAAsB;QACvH,0DAA0E;QAA1E,2GAA0E;QAYuB,0DAA6B;QAA7B,wFAA6B;QAEhI,0DAA+F;QAA/F,2GAA+F;QAO/F,0DAA6C;QAA7C,oGAA6C;QAC/C,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;ACjCkB;;;;;;;ICD9C,0EAAmD;IACjD,uDACF;IAAA,4DAAM;;;IADJ,0DACF;IADE,2FACF;;;IAQM,qEAAqB;IAAA,qFAA0B;IAAA,4DAAK;;;IAQ9C,sEAAwC;IACtC,+EACF;IAAA,4DAAM;;;IACN,sEAAyC;IACvC,sGACF;IAAA,4DAAM;;;IACN,sEAAqC;IACnC,iGACF;IAAA,4DAAM;;;IATR,0EAAwF;IACtF,sHAEM;IACN,sHAEM;IACN,sHAEM;IACR,4DAAM;;;;IATE,0DAAgC;IAAhC,oHAAgC;IAGhC,0DAAiC;IAAjC,qHAAiC;IAGjC,0DAA6B;IAA7B,iHAA6B;;;IAUnC,sEAA2C;IACzC,kFACF;IAAA,4DAAM;;;IACN,sEAA4C;IAC1C,yGACF;IAAA,4DAAM;;;IANR,0EAAiG;IAC/F,sHAEM;IACN,sHAEM;IACR,4DAAM;;;;IANE,0DAAmC;IAAnC,oHAAmC;IAGnC,0DAAoC;IAApC,qHAAoC;;;IAO5C,sEAAuG;;;IAGzG,0EAAmE;IACzD,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,2FACzB;;;ADvCD,MAAM,mBAAmB;IAS9B,YACU,WAAwB,EACxB,MAAc;QADd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QAVxB,YAAO,GAAY,KAAK;QACxB,gBAAW,GAAY,KAAK;QAE5B,cAAS,GAAY,KAAK;QAC1B,iBAAY,GAAS,IAAI,qDAAI,EAAE;QAC/B,aAAQ,GAAW,EAAE;QACrB,YAAO,GAAW,EAAE;IAKhB,CAAC;IAEL,QAAQ;QACN,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEhD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI;QAEnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAM,EAAE,IAAI,CAAC,YAAY,CAAC,QAAS,CAAC;aAC3E,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAC,EAAE;YACZ,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,IAAG,GAAG,EAAE,IAAI,EAAC;gBACX,IAAI,CAAC,QAAQ,GAAG,gCAAgC;aACjD;iBAAK;gBACJ,IAAI,CAAC,QAAQ,GAAG,0CAA0C;aAC3D;YACD,oDAAoD;YACpD,2CAA2C;YAC3C,4CAA4C;YAC5C,4CAA4C;QAC9C,CAAC,CAAC;IACN,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,IAAI,MAAM,KAAK,eAAe,EAAC;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,iEAAiE,CAAC;SAClF;aAAM,IAAI,MAAM,KAAK,kBAAkB,EAAC;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,uEAAuE,CAAC;SACxF;IACH,CAAC;;sFAnDU,mBAAmB;iHAAnB,mBAAmB;QCVhC,+GAEM;QAEN,yEAA+B;QAE3B,oEAAsF;QAEtF,yEAA8B;QACxB,wEAAa;QAAA,4DAAK;QACtB,6GAAoD;QAEpD,6EAAqD;QAA/C,+IAAY,kBAAc,IAAC;QAC/B,0EAAwB;QACf,iEAAK;QAAA,4DAAQ;QACpB,gFAAsK;QAA/J,oMAAgC;QAAvC,4DAAsK;QAEtK,kHAUM;QACR,4DAAM;QACN,0EAAwB;QACf,oEAAQ;QAAA,4DAAQ;QACvB,iFAA6K;QAAtK,uMAAmC;QAA1C,4DAA6K;QAE7K,kHAOM;QACR,4DAAM;QACN,8EAAwG;QACtG,qEACA;QAAA,oHAAuG;QACzG,4DAAS;QAET,kHAEM;QACR,4DAAO;QAGT,2EAA8B;QACW,4EAAgB;QAAA,4DAAI;QAC3D,qEAAG;QAAA,mFAAuB;QAAA,yEAA6B;QAAA,6EAAiB;QAAA,4DAAI;;;;;QAvD5E,iFAAiB;QAKO,0DAAiC;QAAjC,2IAAiC;QAKpD,0DAAc;QAAd,8EAAc;QAKR,0DAAgC;QAAhC,2FAAgC;QAEjC,0DAAqD;QAArD,2GAAqD;QAcpD,0DAAmC;QAAnC,8FAAmC;QAEpC,0DAA8D;QAA9D,2GAA8D;QAS9D,0DAA4C;QAA5C,oGAA4C;QAE3C,0DAAa;QAAb,6EAAa;QAGhB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CkC;AAEG;AAEyB;AAE1C;;;;;;;;;ICR9C,0EAA4D;IAItD,qEAAmG;IACrG,4DAAM;;;IADC,0DAAwD;IAAxD,oMAAwD;;;IA0BrD,sEAAuC;IACrC,2FACF;IAAA,4DAAM;;;IACN,sEAAwC;IACtC,kHACF;IAAA,4DAAM;;;IANR,0EAAqF;IACnF,mIAEM;IACN,mIAEM;IACR,4DAAM;;;;IANE,0DAA+B;IAA/B,oHAA+B;IAG/B,0DAAgC;IAAhC,qHAAgC;;;IAQtC,sEAA8C;IAC5C,iFACF;IAAA,4DAAM;;;IACN,sEAA6C;IAC3C,+GACF;IAAA,4DAAM;;;IANR,0EAA0G;IACxG,mIAEM;IACN,mIAEM;IACR,4DAAM;;;;IANE,0DAAsC;IAAtC,oHAAsC;IAGtC,0DAAqC;IAArC,mHAAqC;;;IAQ3C,sEAAqD;IACnD,4FACF;IAAA,4DAAM;;;IACN,sEAAoD;IAClD,sHACF;IAAA,4DAAM;;;IANR,0EAA+H;IAC7H,mIAEM;IACN,mIAEM;IACR,4DAAM;;;;IANE,0DAA6C;IAA7C,oHAA6C;IAG7C,0DAA4C;IAA5C,mHAA4C;;;IAQlD,sEAA0D;IACxD,0HACF;IAAA,4DAAM;;;IAHR,0EAAiJ;IAC/I,mIAEM;IACR,4DAAM;;;;IAHE,0DAAkD;IAAlD,mHAAkD;;;IAiBxD,sEAA+C;IAC7C,sFACF;IAAA,4DAAM;;;IAHR,0EAA6G;IAC3G,mIAEM;IACR,4DAAM;;;;IAHE,0DAAuC;IAAvC,sHAAuC;;;IAS/C,sEAAuG;;;IAGzG,0EAAmE;IACzD,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,4FACzB;;AD/EL,MAAM,+BAA+B;IAoG1C,YACU,cAA8B,EAC9B,MAAc,EACd,YAAsB,EACtB,SAAuB;QAHvB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,WAAM,GAAN,MAAM,CAAQ;QACd,iBAAY,GAAZ,YAAY,CAAU;QACtB,cAAS,GAAT,SAAS,CAAc;QAtGjC,eAAU,GAAa;YACrB,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;SAC3C;QAED,YAAO,GAAY,KAAK;QAExB,eAAU,GAAG,uDAAW;QAExB,cAAS,GAAY,KAAK;QAC1B,WAAM,GAAiB,IAAI,qEAAY,EAAE;QACzC,aAAQ,GAAW,EAAE;QAErB,iBAAY,GAAQ,EAAE,CAAC;QACvB,sBAAiB,GAA6B,IAAI,CAAC;IAO/C,CAAC;IAEL,QAAQ;IACR,CAAC;IAED,eAAe;QACb,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,qBAAqB,EAAC,6BAA6B;QAC1E,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAC,IAAI,CAAC,MAAM,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAK,CAAC,CAAC,SAAS,CACjF,CAAC,IAAI,EAAE,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,IAAI,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC;QACtC,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO;YACjC,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB,CAAC,CACF;IAEH,CAAC;IACD,eAAe;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iGAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CACtD,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,CAAC,iBAAiB,GAAG,MAAM;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAU,CAAC,CAAC;QAChG,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC;;8GA3IU,+BAA+B;6HAA/B,+BAA+B;QChB5C,yEAAuD;QACrD,2HAOM;QACR,4DAAM;QAEN,yEAAuC;QAI/B,oEAA8F;QAE9F,yEAA8B;QACxB,6EAAkB;QAAA,4DAAK;QAC3B,qEAAG;QAAA,2FAA+B;QAAA,4DAAI;QAItC,0EAAwK;QAAvF,qJAAS,qBAAiB,IAAC;QAA5G,4DAAwK;QAGxK,+EAAuD;QAAjD,4JAAY,qBAAiB,IAAC;QAClC,2EAAwB;QACf,yMAAyB;QAAhC,4DAAqJ;QAErJ,8HAOM;QACR,4DAAM;QACN,2EAAwB;QACf,gNAAgC;QAAvC,4DAAmL;QACnL,8HAOM;QACR,4DAAM;QACN,2EAAwB;QACf,uNAAuC;QAA9C,4DAA6L;QAC7L,8HAOM;QACR,4DAAM;QACN,2EAAwB;QACf,6NAA6C;QAApD,4DAA0M;QAC1M,8HAIM;QACR,4DAAM;QAEN,2EAAwB;QACd,kNAAiC;QACvC,8EAAmC;QAAA,wEAAY;QAAA,4DAAS;QACxD,8EAAqB;QAAA,gEAAI;QAAA,4DAAS;QAClC,8EAAuB;QAAA,kEAAM;QAAA,4DAAS;QACtC,8EAAwB;QAAA,mEAAO;QAAA,4DAAS;QACxC,8EAAyB;QAAA,oEAAQ;QAAA,4DAAS;QAC1C,8EAA0B;QAAA,qEAAS;QAAA,4DAAS;QAC5C,8EAA0B;QAAA,iEAAK;QAAA,4DAAS;QAE1C,8HAIM;QACR,4DAAM;QAEN,8EAC6F;QAC3F,+EACA;QAAA,gIAAuG;QACzG,4DAAS;QAET,8HAEM;QACR,4DAAO;;;;;;;;QA/FM,0DAAa;QAAb,mFAAa;QAsBmF,2DAAwD;QAAxD,kLAAwD;QAK1J,0DAAyB;QAAzB,oFAAyB;QAE1B,0DAAkD;QAAlD,2GAAkD;QAUjD,0DAAgC;QAAhC,2FAAgC;QACjC,0DAAuE;QAAvE,2GAAuE;QAUtE,0DAAuC;QAAvC,kGAAuC;QACxC,0DAA4F;QAA5F,2GAA4F;QAU3F,0DAA6C;QAA7C,wGAA6C;QAC9C,0DAA8G;QAA9G,2GAA8G;QAQ5G,0DAAiC;QAAjC,4FAAiC;QASnC,2DAA0E;QAA1E,8GAA0E;QAO1E,0DAAiE;QAAjE,8HAAiE;QAGhE,0DAAa;QAAb,6EAAa;QAGhB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;AC5Fc;AAGc;;;;;;;;ICH1D,0EAA4D;IAItD,qEAAmG;IACrG,4DAAM;;;IADC,0DAAwD;IAAxD,oMAAwD;;;IAqBrD,sEAAuC;IACrC,8EACF;IAAA,4DAAM;;;IACN,sEAAwC;IACtC,qGACF;IAAA,4DAAM;;;IANR,0EAAqF;IACnF,uHAEM;IACN,uHAEM;IACR,4DAAM;;;;IANE,0DAA+B;IAA/B,oHAA+B;IAG/B,0DAAgC;IAAhC,qHAAgC;;;IAQtC,sEAAwC;IACtC,+EACF;IAAA,4DAAM;;;IACN,sEAAyC;IACvC,sGACF;IAAA,4DAAM;;;IACN,sEAAqC;IACnC,iGACF;IAAA,4DAAM;;;IATR,0EAAwF;IACtF,uHAEM;IACN,uHAEM;IACN,uHAEM;IACR,4DAAM;;;;IATE,0DAAgC;IAAhC,oHAAgC;IAGhC,0DAAiC;IAAjC,qHAAiC;IAGjC,0DAA6B;IAA7B,iHAA6B;;;IAQnC,sEAA2C;IACzC,kFACF;IAAA,4DAAM;;;IACN,sEAA4C;IAC1C,yGACF;IAAA,4DAAM;;;IAGJ,sEAAsD;IACpD,iHACF;IAAA,4DAAM;;;IACN,sEAAqD;IACnD,iHACF;IAAA,4DAAM;;;IACN,sEAAqD;IACnD,sGACF;IAAA,4DAAM;;;IACN,sEAA0D;IACxD,8GACF;IAAA,4DAAM;;;IAZR,wEAAmD;IACjD,sIAEM;IACN,sIAEM;IACN,sIAEM;IACN,sIAEM;IACR,qEAAe;;;IAZP,0DAA8C;IAA9C,6JAA8C;IAG9C,0DAA6C;IAA7C,4JAA6C;IAG7C,0DAA6C;IAA7C,4JAA6C;IAG7C,0DAAkD;IAAlD,iKAAkD;;;IAlB5D,0EAAiG;IAC/F,uHAEM;IACN,uHAEM;IAEN,yIAae;IACjB,4DAAM;;;;IArBE,0DAAmC;IAAnC,oHAAmC;IAGnC,0DAAoC;IAApC,qHAAoC;IAI3B,0DAAkC;IAAlC,mHAAkC;;;IAmBjD,sEAAmD;IACjD,kGACF;IAAA,4DAAM;;;IAHR,0EAAsI;IACpI,uHAEM;IACR,4DAAM;;;;IAHE,0DAA2C;IAA3C,4HAA2C;;;IAajD,sEAA8C;IAC5C,iGACF;IAAA,4DAAM;;;IAHR,0EAA0G;IACxG,uHAEM;IACR,4DAAM;;;;IAHE,0DAAsC;IAAtC,sHAAsC;;;IAQ9C,sEAAuG;;;IAGzG,0EAAmE;IACzD,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,4FACzB;;AD5FL,MAAM,mBAAmB;IAmG9B,YACU,WAAwB,EACxB,MAAc;QADd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QAnGxB,4BAAuB,GAAG,mEAAuB;QAEjD,eAAU,GAAa;YACrB,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;YAC1C,0CAA0C;SAC3C;QAED,YAAO,GAAY,KAAK;QAExB,cAAS,GAAY,KAAK;QAC1B,YAAO,GAAS,IAAI,qDAAI,EAAE;QAC1B,aAAQ,GAAW,EAAE;QAErB,gBAAW,GAAkB,EAAE;IAK3B,CAAC;IAEL,QAAQ;QAEN,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY;QACV,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,QAAQ,GAAG,IAAI;QACnB,IAAI,IAAI,CAAC,WAAW,EAAC;YACnB,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC;SAC7E;aAAM;YACL,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACjD;QAGD,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAc,EAAE,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAEvB,IAAG,IAAI,CAAC,WAAW,EAAC;gBAClB,0EAA0E;gBAC1E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;aACzC;iBAAM;gBACL,0DAA0D;gBAC1D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;aAC/C;QACH,CAAC,EACD,CAAC,GAAG,EAAC,EAAE;YACL,IAAI,CAAC,OAAO,GAAG,KAAK;YACpB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAC,GAAG,CAAC;YAClD,IAAG,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC1B,mDAAmD;gBACnD,IAAI,CAAC,QAAQ,GAAG,yBAAyB;aAC1C;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE;gBACnC,mBAAmB;gBACnB,IAAI,CAAC,QAAQ,GAAG,kBAAkB;aACnC;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,0CAA0C;aAC3D;YAED,QAAQ;YACR,oDAAoD;YACpD,2CAA2C;YAC3C,4CAA4C;YAC5C,4CAA4C;QAC9C,CAAC,CAAC;IACN,CAAC;;sFAzJU,mBAAmB;iHAAnB,mBAAmB;QCXhC,yEAAuD;QACrD,+GAOM;QACR,4DAAM;QAEN,yEAAuC;QAI/B,oEAAsF;QAEtF,yEAA8B;QACxB,6EAAkB;QAAA,4DAAK;QAC3B,qEAAG;QAAA,8FAAkC;QAAA,4DAAI;QAEzC,8EAA8E;QAAxE,gJAAY,kBAAc,IAAC;QAC/B,2EAAwB;QACf,8LAA0B;QAAjC,4DAA2J;QAE3J,kHAOM;QACR,4DAAM;QACN,2EAAwB;QACf,+LAA2B;QAAlC,4DAAkL;QAClL,kHAUM;QACR,4DAAM;QACN,2EAAwB;QACf,kMAA8B;QAArC,4DAAiM;QACjM,kHAsBM;QACR,4DAAM;QACN,2EAAwB;QACf,0MAAsC;QAA7C,4DAA+K;QAC/K,kHAIM;QACR,4DAAM;QAEN,2EAAmC;QAC1B,qMAAiC;QAAxC,4DAA0J;QAC1J,6EAAsD;QACpD,yGAA4C;QAAA,iEAAK;QAAC,yEAAsE;QAAA,0EAAc;QAAA,4DAAI;QAG5I,kHAIM;QACR,4DAAM;QAEN,8EAAwG;QACtG,4EACA;QAAA,oHAAuG;QACzG,4DAAS;QAET,kHAEM;QACR,4DAAO;;;;;;;;QAvGM,0DAAa;QAAb,mFAAa;QAsBf,2DAA0B;QAA1B,qFAA0B;QAE3B,0DAAkD;QAAlD,2GAAkD;QAUjD,0DAA2B;QAA3B,sFAA2B;QAC5B,0DAAqD;QAArD,2GAAqD;QAapD,0DAA8B;QAA9B,yFAA8B;QAC/B,0DAA8D;QAA9D,2GAA8D;QAyB7D,0DAAsC;QAAtC,iGAAsC;QACvC,0DAAmG;QAAnG,4JAAmG;QAQlG,0DAAiC;QAAjC,4FAAiC;QAKlC,0DAAuE;QAAvE,8GAAuE;QAOvE,0DAA4C;QAA5C,oGAA4C;QAE3C,0DAAa;QAAb,6EAAa;QAGhB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;AC7FzB,MAAM,kBAAkB;IAG7B;QAMA,wBAAmB,GAAG,CAAC;gBACrB,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE;gBAC1R,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QAEH,0BAAqB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAElU,2BAAsB,GAAG;YAEvB,UAAU,EAAC,IAAI;YACf,mBAAmB,EAAC,KAAK;YACzB,MAAM,EAAE;gBACN,CAAC,EAAE;oBACD,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE;wBACT,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,IAAI;wBACb,SAAS,EAAE,KAAK;qBACjB;oBACD,KAAK,EAAE;wBACL,OAAO,EAAE,KAAK;wBACd,WAAW,EAAE,IAAI;wBACjB,GAAG,EAAE,CAAC;wBACN,GAAG,EAAE,EAAE;wBACP,QAAQ,EAAE,EAAE;qBACb;iBACF;gBACD,CAAC,EAAE;oBACD,OAAO,EAAE,KAAK;oBACd,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE;wBACT,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,KAAK;wBACd,SAAS,EAAE,KAAK;qBACjB;oBACD,KAAK,EAAE;wBACL,WAAW,EAAE,IAAI;wBACjB,QAAQ,EAAE,EAAE;wBACZ,SAAS,EAAE,SAAS;wBACpB,OAAO,EAAE,EAAE;qBACZ;iBACF;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,OAAO,EAAE,KAAK;iBACf;aACF;YAED,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;iBACV;gBACD,IAAI,EAAE;oBACJ,OAAO,EAAE,CAAC;iBACX;aACF;YACD,QAAQ,EAAE;gBACR,eAAe,EAAE,sBAAsB;aACxC;YACD,eAAe,EAAE,uBAAuB;YACxC,WAAW,EAAE,kBAAkB;SACU;QAE3C,qBAAqB;QACrB,sBAAiB,GAAG,CAAC;gBACnB,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC/H,WAAW,EAAE,CAAC;gBACd,IAAI,EAAE,KAAK;aACZ,CAAC,CAAC;QAEH,wBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE1H,yBAAoB,GAAG;YAErB,UAAU,EAAC,IAAI;YACf,mBAAmB,EAAC,KAAK;YACzB,MAAM,EAAE;gBACN,CAAC,EAAE;oBACD,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,OAAO,EAAE,KAAK;qBACf;oBACD,SAAS,EAAE;wBACT,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,KAAK;qBACf;iBACF;gBACD,CAAC,EAAE;oBACD,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,GAAG;oBACjB,KAAK,EAAE;wBACL,OAAO,EAAE,KAAK;qBACf;oBACD,SAAS,EAAE;wBACT,UAAU,EAAE,KAAK;wBACjB,OAAO,EAAE,KAAK;qBACf;iBACF;aACF;YACD,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,OAAO,EAAE,KAAK;iBACf;aACF;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,MAAM,EAAE,CAAC;iBACV;aACF;YACD,eAAe,EAAE,SAAS;YAC1B,WAAW,EAAE,SAAS;SACiB;IAzHzB,CAAC;IAEjB,QAAQ;IAER,CAAC;;oFAPU,kBAAkB;gHAAlB,kBAAkB;QCR/B,yEAA6C;QAKJ,wEAAa;QAAA,4DAAK;QAEnD,yEAAqC;QAGxB,wEAAY;QAAA,4DAAQ;QAC3B,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QAGzB,0EAAmB;QAER,mEAAO;QAAA,4DAAQ;QACtB,sEAAI;QAAA,gEAAI;QAAA,4DAAK;QAOrB,0EAA8C;QAEjB,kEAAC;QAAA,4DAAO;QAEnC,0EAAQ;QAAA,+EAAmB;QAAA,4DAAS;QAAC,uJACvC;QAAA,4DAAM;QAEN,2EAA0C;QAStB,mEAAO;QAAA,oEAAkD;QAAC,yEAAO;QAAA,kEAAM;QAAA,4DAAQ;QACnF,qEAAG;QAAA,wEAAY;QAAA,4DAAI;QAErB,2EAAuB;QAEnB,yEAAgJ;QAClJ,4DAAM;QAIZ,2EAAwC;QAG9B,+DAAG;QAAA,oEAAmD;QAAC,yEAAO;QAAA,iEAAK;QAAA,4DAAQ;QAC/E,qEAAG;QAAA,oEAAQ;QAAA,4DAAI;QAEjB,2EAAuB;QAEnB,yEAAyI;QAC3I,4DAAM;QAOhB,2EAAgC;QAIH,uEAAW;QAAA,4DAAK;QACvC,4EAAwB;QAAA,mIAAuE;QAAA,4DAAO;QAExG,2EAAkC;QAGuH,qEAAS;QAAA,4DAAO;QAAA,8DAA0C;QAA1C,2EAA0C;QAAA,uEAA+G;QAAsb,4DAAM;QAE1vB,+DAAK;QAAL,uEAAK;QACI,kEAAM;QAAA,4DAAQ;QACrB,sEAAI;QAAA,8DAAE;QAAA,4DAAK;QAGf,2EAAgD;QAEuG,qEAAS;QAAA,4DAAO;QAAA,8DAA0C;QAA1C,2EAA0C;QAAA,uEAA6G;QAAwe,4DAAM;QAE1yB,+DAAK;QAAL,uEAAK;QACI,mEAAO;QAAA,4DAAQ;QACtB,sEAAI;QAAA,6DAAC;QAAA,4DAAK;QAQxB,2EAAiD;QAEtB,kFAAsB;QAAA,4DAAK;QAClD,0EAAmC;QAAA,uGAA0C;QAAA,4DAAI;QACjF,4EAA8B;QAIN,mEAAM;QAAA,4DAAK;QAC7B,2EAAmB;QAAA,wEAAW;QAAA,4DAAK;QACnC,uEAAI;QAAA,2EAAc;QAAA,4DAAK;QACvB,uEAAI;QAAA,4EAAe;QAAA,4DAAK;QACxB,uEAAI;QAAA,mEAAM;QAAA,4DAAK;QAGjB,0EAAO;QAED,uEAAmH;QAAA,4DAAK;QAC5H,uEAAI;QAAQ,iEAAI;QAAA,4DAAS;QACzB,uEAAI;QAAQ,gEAAG;QAAA,4DAAS;QAAC,qEAAO;QAAA,4DAAK;QACrC,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAC1B,uEAAI;QAAA,qEAAQ;QAAA,4DAAK;QAEnB,uEAAI;QACE,uEAAmH;QAAA,4DAAK;QAC5H,uEAAI;QAAQ,0EAAa;QAAA,4DAAS;QAClC,uEAAI;QAAQ,gEAAG;QAAA,4DAAS;QAAC,qEAAO;QAAA,4DAAK;QACrC,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAC1B,uEAAI;QAAA,qEAAQ;QAAA,4DAAK;QAEnB,uEAAI;QACE,uEAAmH;QAAA,4DAAK;QAC5H,uEAAI;QAAQ,qEAAQ;QAAA,4DAAS;QAC7B,uEAAI;QAAQ,gEAAG;QAAA,4DAAS;QAAC,qEAAO;QAAA,4DAAK;QACrC,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAC1B,uEAAI;QAAA,qEAAQ;QAAA,4DAAK;QAEnB,uEAAI;QACE,uEAAmH;QAAA,4DAAK;QAC5H,uEAAI;QAAQ,iEAAI;QAAA,4DAAS;QACzB,uEAAI;QAAQ,gEAAG;QAAA,4DAAS;QAAC,qEAAO;QAAA,4DAAK;QACrC,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAC1B,uEAAI;QAAA,qEAAQ;QAAA,4DAAK;QAEnB,uEAAI;QACE,uEAAmH;QAAA,4DAAK;QAC5H,uEAAI;QAAQ,iEAAI;QAAA,4DAAS;QACzB,uEAAI;QAAQ,gEAAG;QAAA,4DAAS;QAAC,qEAAO;QAAA,4DAAK;QACrC,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAC1B,uEAAI;QAAA,kEAAK;QAAA,4DAAK;QAEhB,uEAAI;QACE,uEAAmH;QAAA,4DAAK;QAC5H,uEAAI;QAAQ,8EAAiB;QAAA,4DAAS;QACtC,uEAAI;QAAQ,gEAAG;QAAA,4DAAS;QAAC,qEAAO;QAAA,4DAAK;QACrC,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAC1B,uEAAI;QAAA,qEAAQ;QAAA,4DAAK;;QA5GO,2DAAe;QAAf,wEAAe;QAaf,2DAAc;QAAd,uEAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvDW;AAKoD;AACT;;;;;;;;;;ICwBxG,8EAKC;IAEG,8RAAS,uEAAqB,IAAI,KAAC;IAMnC,2EAAyB;IAAA,iEAAC;IAAA,4DAAO;IAEnC,yEAAQ;IAAA,8EAAmB;IAAA,4DAAS;IAAC,4IAErC;IAAA,gEAAM;IACN,6EAAwB;IAAA,sEAAU;IAAA,4DAAS;IAC3C,wEAAM;IAAA,wDAAqC;IAAA,4DAC1C;IAAA,iEAAM;IACP,8EAAwB;IAAA,wEAAY;IAAA,4DAAS;IAC7C,wEAAM;IAAA,wDAA+B;IAAA,4DAAO;;;IAHtC,2DAAqC;IAArC,uGAAqC;IAGrC,0DAA+B;IAA/B,iGAA+B;;;IAyB/B,mEAEuD;;;IADrD,oFAAwB;;;;;IAZ9B,qEAAuE;IAInD,uDAAiB;IAAA,4DAAO;IAE1C,qEAAI;IACF,uDACA;IAAA,wEAEiD;IAF9C,gWAAa,sFAAkB,KAAC;IAEc,4DAAI;IACrD,kHAEuD;IACzD,4DAAK;IACL,qEAAI;IACI,wDAAoC;IAAA,4DAAO;IAEnD,sEAAI;IAAA,wDAA2C;;IAAA,4DAAK;IACpD,sEAAI;IACC,0VAAS,+FAA6B,MAAM,UAAO,KAAC;IAGU,4DAAI;;;IApBnE,0DAAqG;IAArG,sMAAqG;IACvF,0DAAiB;IAAjB,+EAAiB;IAGjC,0DACA;IADA,sFACA;IAGI,0DAAgB;IAAhB,uGAAgB;IAKd,0DAAoC;IAApC,kGAAoC;IAExC,0DAA2C;IAA3C,2JAA2C;;;;IAuCjD,qEAAuE;IAE6D,uDAAoB;IAAA,4DAAO;IAE7J,qEAAI;IAAA,uDAA0B;IAAA,4DAAK;IACnC,qEAAI;IAEA,uDACF;IAAA,4DAAO;IAET,qEAAI;IAEA,oEAAwE;IAC1E,4DAAI;IAEN,sEAAI;IACC,8VAAS,4FAA0B,MAAM,cAAU,KAAC;IACU,4DAAI;;;IAf/D,0DAA2G;IAA3G,8MAA2G;IAAe,0DAAoB;IAApB,mFAAoB;IAElJ,0DAA0B;IAA1B,yFAA0B;IAEtB,0DAA+C;IAA/C,gLAA+C;IACnD,0DACF;IADE,yLACF;IAGG,0DAA6D;IAA7D,0HAA6D;;ADzHvE,MAAM,mBAAmB;IAgB9B,YACU,cAA8B,EAC9B,YAAsB,EACvB,YAAiC;QAFhC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,iBAAY,GAAZ,YAAY,CAAU;QACvB,iBAAY,GAAZ,YAAY,CAAqB;QAhB1C,mBAAc,GAA+C;YAC3D,CAAC,wDAAY,CAAC,EAAE,EAAE;YAClB,CAAC,wDAAY,CAAC,EAAE,EAAE;SACnB;QAED,kBAAa,GAAyE,IAAI;QAE1F,gBAAW,GAA4C;YACrD,CAAC,wDAAY,CAAC,EAAE,EAAE;YAClB,CAAC,wDAAY,CAAC,EAAE,EAAE;SACnB;IAOG,CAAC;IAEL,QAAQ;QAEN,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAChG,KAAI,IAAI,IAAI,IAAI,IAAI,EAAC;gBACnB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aAC9C;QACH,CAAC,CAAC;QACF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7F,KAAI,IAAI,IAAI,IAAI,IAAI,EAAC;gBACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aAC3C;QACH,CAAC,CAAC;IACJ,CAAC;IAGM,4BAA4B,CAAC,UAA6B,EAAE,aAAsC;QACvG,IAAI,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,8HAA6B,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;QAC7H,wBAAwB,CAAC,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG;QAC9E,wBAAwB,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAQ;QACvF,wBAAwB,CAAC,iBAAiB,CAAC,UAAU,GAAG,UAAU;QAElE,IAAG,UAAU,KAAK,MAAM,EAAC;YACvB,wBAAwB,CAAC,iBAAiB,CAAC,aAAa,GAAG,aAAa;SACzE;QAED,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAClC,CAAC,MAAuF,EAAE,EAAE;YAC1F,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC;YAEnC,IAAG,UAAU,IAAI,QAAQ,EAAC;gBACxB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;gBAC/E,IAAI,CAAC,aAAa,GAAG,MAAM;aAC5B;iBAAM;gBACL,gDAAgD;gBAChD,IAAI,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ;gBAC5C,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;oBAC1D,IAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,EAAC;wBAChE,IAAG,MAAM,CAAC,MAAM,IAAI,2DAAe,EAAC;4BAClC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;4BACzC,MAAK;yBACN;6BAAM;4BACL,uBAAuB;4BACvB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc;4BACvD,MAAK;yBACN;qBACF;iBACF;aACF;QACH,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC;QACpC,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,YAAY,CAAC,UAAkC;QACpD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAGM,yBAAyB,CAAC,UAA6B,EAAE,UAAgC;QAC9F,IAAI,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qHAA0B,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;QACvH,qBAAqB,CAAC,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG;QAC3E,qBAAqB,CAAC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAQ;QACpF,qBAAqB,CAAC,iBAAiB,CAAC,UAAU,GAAG,UAAU;QAE/D,IAAG,UAAU,KAAK,MAAM,EAAC;YACvB,qBAAqB,CAAC,iBAAiB,CAAC,UAAU,GAAG,UAAU;SAChE;QACD,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAC/B,CAAC,MAA4D,EAAE,EAAE;YAC/D,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC;YAEnC,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ;YACzC,IAAG,UAAU,IAAI,QAAQ,EAAC;gBACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;aACnD;iBAAM;gBACL,OAAO,GAAG,UAAU,EAAE,QAAS;gBAC/B,gCAAgC;gBAChC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAC;oBACvD,IAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,EAAC;wBAC1D,IAAG,MAAM,CAAC,MAAM,IAAI,2DAAe,EAAC;4BAClC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;4BACtC,MAAK;yBACN;6BAAM;4BACL,oBAAoB;4BACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW;4BACjD,MAAK;yBACN;qBACF;iBACF;aACF;QACH,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC;QACpC,CAAC,CACF,CAAC;IACJ,CAAC;;sFAvHU,mBAAmB;iHAAnB,mBAAmB;QChBhC,yEAA+B;QAE8B,sEAAW;QAAA,4DAAI;QAI1E,yEAA0B;QAEtB,4EACA;QAAA,uEAGoC;QAAA,8FAAmC;QAAA,4DAAI;QAI/E,yEAA0B;QAEtB,yEACA;QAAA,6EAIC;QAHC,4IAAS,iCAA6B,QAAQ,CAAC,IAAC;QAGjD,+EACD;QAAA,4DAAS;QAGX,0EAAuB;QAEnB,0JAEF;QAAA,4DAAI;QAEJ,kHAuBM;QAEN,4EAA6B;QAGP,kEAAM;QAAA,4DAAK;QAC3B,0EAAgB;QAAA,qEAAS;QAAA,4DAAK;QAC9B,0EAAgB;QAAA,uEAAW;QAAA,4DAAK;QAChC,0EAAgB;QAAA,mEAAO;QAAA,4DAAK;QAC5B,iEAAS;QACX,4DAAK;QAEP,yEAAO;QACL,kHAyBK;QACP,4DAAQ;QAKd,0EAA0B;QAEtB,sEACA;QAAA,6EAG6C;QAF3C,4IAAS,8BAA0B,QAAQ,CAAC,IAAC;QAEF,0EAAc;QAAA,4DAAS;QAGtE,0EAAuB;QAEnB,8JAEF;QAAA,4DAAI;QAEJ,4EAA6B;QAGP,kEAAM;QAAA,4DAAK;QAC3B,0EAAgB;QAAA,+DAAG;QAAA,4DAAK;QACxB,0EAAgB;QAAA,kEAAM;QAAA,4DAAK;QAC3B,0EAAgB;QAAA,yEAAa;QAAA,4DAAK;QAClC,iEAAS;QACX,4DAAK;QAEP,yEAAO;QACL,iHAmBK;QACP,4DAAQ;;QAhHP,2DAAqB;QAArB,qFAAqB;QAmCC,2DAAgD;QAAhD,yHAAgD;QAyD7C,2DAA6C;QAA7C,sHAA6C;;;;;;;;;;;;;;;;;;;;;;;ACzHjB;;;;;;;ICG1D,yEAAkB;IAIV,uFACA;IAAA,wEAAoE;IAAA,mFAAwB;IAAA,4DAAI;IAElG,0EAAuB;IAClB,mJAAwF;IAAA,4DAAI;;;IAH5F,0DAA+B;IAA/B,4JAA+B;;;IA+BxC,0EAA2E;IACjE,wEAAa;IAAA,4DAAS;IAAC,yKACjC;IAAA,4DAAM;;;IAxBV,yEAAmF;IAK3E,6EACF;IAAA,4DAAK;IAEL,0EAAuB;IAGb,2EAAgB;IAAA,4DAAK;IACzB,qEAAG;IACD,4EAAe;IAAA,yEAA0C;IAAA,oFAAwB;IAAA,4DAAI;IAAC,uFAA0B;IAAA,iEAAK;IACrH,4GACF;IAAA,4DAAI;IAOZ,yHAEM;IAER,4DAAM;;;IAJE,2DAAqB;IAArB,wFAAqB;;ADhC1B,MAAM,mBAAmB;IAO9B,YACS,YAAiC,EACjC,cAA8B;QAD9B,iBAAY,GAAZ,YAAY,CAAqB;QACjC,mBAAc,GAAd,cAAc,CAAgB;QANvC,2BAAsB,GAAG,yFAAkC,CAAC;QAC5D,YAAO,GAAG,KAAK;QACf,oBAAe,GAAG,KAAK;IAKnB,CAAC;IAEL,QAAQ;QACN,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAG,SAAS,EAAC;YACX,IAAI,CAAC,eAAe,GAAG,IAAI;SAC5B;IACH,CAAC;;sFAnBU,mBAAmB;iHAAnB,mBAAmB;QCZhC,yEAAgC;QAEwC,kEAAO;QAAA,4DAAI;QAC/E,uEAAgE;QAAA,+DAAI;QAAA,4DAAI;QACxE,uEAA2E;QAAA,kEAAO;QAAA,4DAAI;QAGxF,4MAcc;QACd,kHA2BM;QAGR,4DAAM;;;QA9BE,2DAAgD;QAAhD,6JAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBR;AACc;AAE4B;;;;;;;;;;IC8BtE,sEAAuC;IACrC,2FACF;IAAA,4DAAM;;;IACN,sEAAwC;IACtC,kHACF;IAAA,4DAAM;;;IANR,0EAAqF;IACnF,wHAEM;IACN,wHAEM;IACR,4DAAM;;;;IANE,0DAA+B;IAA/B,oHAA+B;IAG/B,0DAAgC;IAAhC,qHAAgC;;;IAoBtC,sEAA8C;IAC5C,iFACF;IAAA,4DAAM;;;IACN,sEAA6C;IAC3C,+GACF;IAAA,4DAAM;;;IANR,0EAA0G;IACxG,wHAEM;IACN,wHAEM;IACR,4DAAM;;;;IANE,0DAAsC;IAAtC,oHAAsC;IAGtC,0DAAqC;IAArC,mHAAqC;;;IAU3C,sEAAqD;IACnD,4FACF;IAAA,4DAAM;;;IACN,sEAAoD;IAClD,sHACF;IAAA,4DAAM;;;IANR,0EAA+H;IAC7H,wHAEM;IACN,wHAEM;IACR,4DAAM;;;;IANE,0DAA6C;IAA7C,oHAA6C;IAG7C,0DAA4C;IAA5C,mHAA4C;;;IAUlD,sEAA0D;IACxD,0HACF;IAAA,4DAAM;;;IAHR,0EAAiJ;IAC/I,wHAEM;IACR,4DAAM;;;;IAHE,0DAAkD;IAAlD,mHAAkD;;;IAY9D,sEAAuG;;;IAGzG,0EAAmE;IACzD,gEAAK;IAAA,4DAAS;IAAC,uDACzB;IAAA,4DAAM;;;IADmB,0DACzB;IADyB,4FACzB;;ADvFL,MAAM,oBAAoB;IAY/B,YACS,YAAiC,EACjC,cAA8B,EAC7B,YAAsB,EACtB,SAAuB;QAHxB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,mBAAc,GAAd,cAAc,CAAgB;QAC7B,iBAAY,GAAZ,YAAY,CAAU;QACtB,cAAS,GAAT,SAAS,CAAc;QAfjC,YAAO,GAAY,KAAK;QAExB,eAAU,GAAG,uDAAW;QAExB,cAAS,GAAY,KAAK;QAC1B,cAAS,GAAiB,IAAI,qEAAY,EAAE;QAC5C,aAAQ,GAAW,EAAE;QAErB,iBAAY,GAAQ,EAAE,CAAC;QACvB,sBAAiB,GAA6B,IAAI,CAAC;IAO/C,CAAC;IAEL,QAAQ;QAEN,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE;YACnD,IAAI,CAAC,SAAS,GAAG,EAAC,GAAG,MAAM,CAAC,GAAI,EAAC;QACnC,CAAC,CAAC;IAEJ,CAAC;IAED,eAAe;QACb,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAC,IAAI,CAAC,SAAS,CAAC;QACxD,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAG,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,SAAS,CACvH,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC;YACxC,IAAI,CAAC,OAAO,GAAG,KAAK;YAEpB,qCAAqC;YACrC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,EAAC,GAAG,EAAE,GAAG,EAAC;QAEvC,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,GAAG,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO;YACjC,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB,CAAC,CACF;IAEH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iGAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CACtD,CAAC,MAAM,EAAE,EAAE;YACT,IAAI,CAAC,iBAAiB,GAAG,MAAM;YAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAU,CAAC,CAAC;QAChG,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC;;wFA5DU,oBAAoB;kHAApB,oBAAoB;QChBjC,yEAAgC;QAE+C,kEAAO;QAAA,4DAAI;QACtF,uEAAgE;QAAA,+DAAI;QAAA,4DAAI;QACxE,uEAAoE;QAAA,kEAAO;QAAA,4DAAI;QAIjF,yEAAiB;QAIT,qEACF;QAAA,4DAAK;QAEL,0EAAuB;QACf,iJAAY,qBAAiB,IAAC;QAElC,qEAAG;QAAA,uHAA2D;QAAA,4DAAI;QAGlE,0EAAiB;QAOiD,2EAAe;QAAA,4DAAQ;QACnF,uEAAK;QAAM,wDAAgB;QAAA,4DAAO;QAGpC,2EAAwB;QACsC,6EAAiB;QAAA,4DAAQ;QACrF,iFAAwH;QAAjH,iMAA4B;QAAnC,4DAAwH;QAExH,mHAOM;QACR,4DAAM;QAEN,2EAAwB;QACsC,6EAAiB;QAAA,4DAAQ;QACrF,iEAAK;QACL,2EAAc;QACqE,0IAAS,qBAAiB,IAAC;QAA5G,4DAAmM;QAIzM,2EAAmB;QAG6C,gFAAoB;QAAA,4DAAQ;QACxF,iFAAgK;QAAzJ,wMAAmC;QAA1C,4DAAgK;QAChK,mHAOM;QACR,4DAAM;QAEN,2EAAwB;QACsC,8EAAkB;QAAA,4DAAQ;QACtF,iFAA+J;QAAxJ,+MAA0C;QAAjD,4DAA+J;QAC/J,mHAOM;QACR,4DAAM;QAEN,2EAAwB;QACsC,kFAAsB;QAAA,4DAAQ;QAC1F,iFAAwK;QAAjK,qNAAgD;QAAvD,4DAAwK;QACxK,mHAIM;QACR,4DAAM;QAMV,8EAA4H;QAC1H,0EACA;QAAA,qHAAuG;QACzG,4DAAS;QAET,mHAEM;QAER,4DAAO;;;;;;;QA5EY,2DAAgB;QAAhB,iFAAgB;QAKpB,0DAA4B;QAA5B,uFAA4B;QAE7B,0DAAkD;QAAlD,2GAAkD;QAcuD,0DAA8E;QAA9E,4MAA8E;QAQtL,0DAAmC;QAAnC,8FAAmC;QACpC,0DAAuE;QAAvE,2GAAuE;QAYtE,0DAA0C;QAA1C,qGAA0C;QAC3C,0DAA4F;QAA5F,2GAA4F;QAY3F,0DAAgD;QAAhD,2GAAgD;QACjD,0DAA8G;QAA9G,2GAA8G;QAWlH,0DAA8D;QAA9D,mHAA8D;QAE7D,0DAAa;QAAb,6EAAa;QAGhB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;ACjGkE;;;;;;;;;ICwBtF,qEAAuC;IAE0F,uDAAiB;IAAA,4DAAO;IAEvJ,qEAAI;IAAA,uDAAe;IAAA,4DAAK;IACxB,qEAAI;IAAA,uDAAgB;IAAA,4DAAK;;;IAHjB,0DAAwG;IAAxG,yMAAwG;IAAe,0DAAiB;IAAjB,iFAAiB;IAE5I,0DAAe;IAAf,+EAAe;IACf,0DAAgB;IAAhB,gFAAgB;;ADpB3B,MAAM,gBAAgB;IAI3B,YACU,cAA8B,EAC9B,YAAsB,EACvB,YAAiC;QAFhC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,iBAAY,GAAZ,YAAY,CAAU;QACvB,iBAAY,GAAZ,YAAY,CAAqB;QAL1C,gBAAW,GAA6B,EAAE;IAMtC,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAO,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YACzF,IAAI,CAAC,WAAW,GAAG,IAAI;QACzB,CAAC,CAAC;IACJ,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,yGAAsB,CAAC,CAAC,MAAM,CAAC,IAAI,CACxD,CAAC,MAAM,EAAE,EAAE;YACV,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,EAAE,CAAC;QACtC,CAAC,EACD,CAAC,MAAM,EAAE,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,CACF,CAAC;IACJ,CAAC;;gFAzBU,gBAAgB;8GAAhB,gBAAgB;QCb7B,yEAAgC;QAEwC,kEAAO;QAAA,4DAAI;QAC/E,uEAAuE;QAAA,+DAAI;QAAA,4DAAI;QAC/E,uEAAoE;QAAA,kEAAO;QAAA,4DAAI;QAGjF,yEAAiB;QAKT,0EACA;QAAA,6EAAkG;QAA1F,yIAAS,4BAAwB,IAAC;QAAwD,6EAAiB;QAAA,4DAAS;QAG9H,2EAAuB;QAClB,qGAAyC;QAAA,4DAAI;QAChD,6EAA6B;QAGT,kEAAM;QAAA,4DAAK;QAC3B,0EAAgB;QAAA,gEAAI;QAAA,4DAAK;QACzB,0EAAgB;QAAA,iEAAK;QAAA,4DAAK;QAC1B,iEAAS;QACX,4DAAK;QAEL,yEAAO;QACP,6GAMK;QACL,4DAAQ;;QAPe,2DAAc;QAAd,oFAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IE+BnC,wEAAkU;IAAzH,ycAA4C;IACnP,2EAA2I;IACzI,mEAAyH;IAC3H,4DAAO;IAEP,uDAAgC;IAAA,2EAAiG;;IAAA,uDAAoC;;IAAA,4DAAO;;;;IALzE,iTAAmG;IAChM,0DAA8G;IAA9G,6QAA8G;IAC/G,0DAAqG;IAArG,6QAAqG;IAG1G,0DAAgC;IAAhC,0GAAgC;IAAM,0DAAqE;IAArE,gNAAqE;IAAsB,0DAAoC;IAApC,qLAAoC;;;IAEvK,sEAA2C;IAEvC,uFACF;IAAA,4DAAM;;;;IAGV,6EAAgJ;IAAjD,6ZAAgD;IAAC,uDAAmD;IAAA,4DAAS;;;IAA5D,0DAAmD;IAAnD,qHAAmD;;;;IAMjM,sEAA6D;IAAA,sEAAkG;IAAA,4DAAM;;;IAAlG,0DAAuB;IAAvB,4IAAuB;;;;IAM1F,sEAA6D;IAAA,sEAAgG;;IAAA,4DAAM;;;IAAhG,0DAAsB;IAAtB,4IAAsB;;;IAGzF,0EAAmD;IACjD,oFACF;IAAA,4DAAM;;AD3Eb,MAAM,oBAAoB;IAO/B,YACU,cAA8B,EAC/B,YAAiC,EAChC,KAAqB;QAFrB,mBAAc,GAAd,cAAc,CAAgB;QAC/B,iBAAY,GAAZ,YAAY,CAAqB;QAChC,UAAK,GAAL,KAAK,CAAgB;QAR/B,sBAAiB,GAAG,KAAK;QACzB,sBAAiB,GAAkC,EAAE;QACrD,YAAO,GAA+B,IAAI;QAC1C,4BAAuB,GAAuC,IAAI;IAM9D,CAAC;IAEL,QAAQ;QACN,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;QAC7D,IAAI,CAAC,SAAS,EAAE;YACd,OAAM;SACP;QAED,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAO,EAAE,SAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;YAClH,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC;YACvC,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;YAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;YAE3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;aACzD;QAEH,CAAC,CAAC;IACJ,CAAC;IAEM,eAAe,CAAC,WAA+B;QACpD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAM;SACP;QACD,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;;wFApCU,oBAAoB;kHAApB,oBAAoB;;QCdjC,yEAAuC;QAEoC,sEAAW;QAAA,4DAAI;QACtF,uEAAyD;QAAA,+DAAI;QAAA,4DAAI;QAGnE,yEAA0B;QAEtB,uDACN;QACI,4DAAK;QAEL,yEAAuB;QAMX,kEAAM;QAAA,4DAAK;QACf,sEAAI;QAAA,oEAAQ;QAAA,4DAAK;QACjB,sEAAI;QAAA,yEAAa;QAAA,4DAAK;QACtB,sEAAI;QAAA,0EAAc;QAAA,4DAAK;QACvB,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QAGvB,yEAAO;QAG8H,wDAAmB;QAAA,4DAAO;QAE7J,yEAAgB;QACd,wDACF;QAAA,4DAAK;QACL,sEAAI;QACoD,wDAAyC;QAAA,4DAAO;QAExG,sEAAI;QACY,uWAA4B,IAAI,SAAE,uEAAc,KAAK,KAAC;QAAwB,mEAAO;QAAA,oEAA2B;QAAA,4DAAI;QAClI,gFAAqB;QAAA,wDAA0B;QAAA,yEAAsI;QAAnI,gJAAa,0EAAsC,IAAC;QAA+E,4DAAI;QAE3L,sEAAI;QAAA,wDAA2C;;QAAA,4DAAK;QAU9D,0EAA0B;QAEtB,2EACF;QAAA,4DAAK;QACL,0EAAuB;QAKb,gHAMI;;QACJ,mHAIM;QACR,4DAAM;QACN,yHAA4M;QAC9M,4DAAM;QACN,2EAAmB;QAGP,oEAAQ;QAAA,4DAAS;QACzB,mHAAqK;QAEvK,4DAAM;QACN,iEAAK;QACL,uEAAK;QACK,mEAAO;QAAA,4DAAS;QACxB,mHAAmK;QACrK,4DAAM;QACN,+MAIc;QAChB,4DAAM;;;QAzF6B,0DAA4B;QAA5B,qFAA4B;QAMnE,0DACN;QADM,kIACN;QAmBoB,2DAA4G;QAA5G,6QAA4G;QAAe,0DAAmB;QAAnB,gHAAmB;QAGpJ,0DACF;QADE,6HACF;QAEQ,0DAA+C;QAA/C,gLAA+C;QAAC,0DAAyC;QAAzC,uLAAyC;QAI1E,0DAA0B;QAA1B,gIAA0B;QAE7C,0DAA2C;QAA3C,6LAA2C;QAmBrB,2DAA2E;QAA3E,oNAA2E;QAO7F,0DAAmC;QAAnC,mGAAmC;QAMO,0DAA2C;QAA3C,mJAA2C;QAMrF,0DAAiC;QAAjC,+FAAiC;QAMjC,0DAAiC;QAAjC,+FAAiC;;;;;;;;;;;;;;;;;;;;;;;;ACnFwD;AAE7D;AACN;AAEiB;;;;AAM3D,sIAAsI;AAC/H,MAAM,sBAAsB;IAEjC,YAAoB,WAAwB,EAAU,MAAc;QAAhD,gBAAW,GAAX,WAAW,CAAa;QAAU,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAEjE,eAAe,CAAC,GAAsB;QAC5C,mCAAmC;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YAC5C,sCAAsC;YACtC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YAC1C,6IAA6I;YAC7I,OAAO,wCAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mCAAmC;SAC5D;QACD,OAAO,gDAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,CAAC,GAAqB,EAAE,IAAiB;QAEhD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,CAAC;QAExC,iGAAiG;QACjG,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7B,IAAI,aAAa,GAAG,IAAI,GAAG,CAAC,+FAAwC,CAAC;QACrE,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,4FAAqC,CAAC;QAE3D,IACE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EACjG;YACC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;SACxB;QAED,qDAAqD;QACrD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAC,eAAe,EAAE,IAAI,EAAC,CAAC,CAAC;QACnD,iIAAiI;QACjI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,0DAAU,CAAC,CAAC,GAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2IAA2I;IACxN,CAAC;;4FApCU,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB,mBAJrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;ACRuB;AACgB;AAGtB;AACT;;;;AAGrB,MAAMK,uBAAuB,GAAG,qBAAqB;AAKtD,MAAOR,WAAW;EAItBjB,YAAoB0B,WAAuB,EAAUC,mBAAwC;IAAzE,KAAAD,WAAW,GAAXA,WAAW;IAAsB,KAAAC,mBAAmB,GAAnBA,mBAAmB;IAFjE,KAAAC,sBAAsB,GAAG,IAAIL,iDAAe,CAAU,KAAK,CAAC;EAE6B;EAEhG;;;;;EAKaM,gBAAgBA,CAACC,OAAa,EAAEC,WAAmB;IAAA,IAAAzB,KAAA;IAAA,OAAAC,oKAAA;MAC9D,IAAIyB,WAAW,GAAG;QAChB,OAAO,EAAED;OACV;MAED,IAAIE,IAAI,SAAS3B,KAAI,CAACoB,WAAW,CAACQ,IAAI,CAAkB,GAAGZ,4FAAqC,cAAc,EAAEQ,OAAO,EAAE;QAAEM,eAAe,EAAE,IAAI;QAAEC,MAAM,EAACL;MAAW,CAAE,CAAC,CAACM,SAAS,EAAE;MACnL1B,OAAO,CAACC,GAAG,CAACoB,IAAI,CAAC;MACjB,OAAOA,IAAI;IAAA;EACb;EACA;;;;;EAKaM,MAAMA,CAACT,OAAc;IAAA,IAAAU,MAAA;IAAA,OAAAjC,oKAAA;MAChC,IAAI0B,IAAI,SAASO,MAAI,CAACd,WAAW,CAACQ,IAAI,CAAkB,GAAGZ,4FAAqC,cAAc,EAAEQ,OAAO,EAAE;QAAEM,eAAe,EAAE;MAAI,CAAE,CAAC,CAACE,SAAS,EAAE;MAC/J1B,OAAO,CAACC,GAAG,CAACoB,IAAI,CAAC;MACjB,OAAOA,IAAI;IAAA;EACb;EAEaQ,MAAMA,CAACC,KAAa,EAAEC,IAAY;IAAA,IAAAC,MAAA;IAAA,OAAArC,oKAAA;MAC7C,IAAIsC,WAAW,GAAG,IAAIxB,qDAAI,EAAE;MAC5BwB,WAAW,CAACH,KAAK,GAAGA,KAAK;MACzBG,WAAW,CAACC,QAAQ,GAAGH,IAAI;MAC3B,IAAIV,IAAI,SAASW,MAAI,CAAClB,WAAW,CAACQ,IAAI,CAAkB,GAAGZ,4FAAqC,aAAa,EAAEuB,WAAW,EAAE;QAAET,eAAe,EAAE;MAAI,CAAE,CAAC,CAACE,SAAS,EAAE;MAClK,OAAOL,IAAI;IAAA;EACb;EAEac,OAAOA,CAAA;IAAA,IAAAC,MAAA;IAAA,OAAAzC,oKAAA;MAClByC,MAAI,CAACC,0BAA0B,CAAC,KAAK,CAAC;MACtC,OAAOD,MAAI,CAACE,YAAY,CAACzB,uBAAuB,CAAC;MACjD;MACA;MACA;MACA;MACA;IAAA;EACF;EAGA;EACa0B,gBAAgBA,CAACC,SAAiB;IAAA,IAAAC,MAAA;IAAA,OAAA9C,oKAAA;MAC7C,IAAI+C,OAAO,GAAG;QACZ,OAAO,EAAEF;OACV;MAED,IAAInB,IAAI,SAASoB,MAAI,CAAC3B,WAAW,CAACQ,IAAI,CAAkB,GAAGZ,4FAAqC,qBAAqB,EAAEgC,OAAO,EAAE,EAAI,CAAC,CAAChB,SAAS,EAAE;MACjJ1B,OAAO,CAACC,GAAG,CAACoB,IAAI,CAAC;MACjB,OAAOA,IAAI;IAAA;EACb;EAEA;EACasB,SAASA,CAACC,WAAmB,EAAEzB,WAAmB;IAAA,IAAA0B,MAAA;IAAA,OAAAlD,oKAAA;MAC7D,IAAIyB,WAAW,GAAG;QAChB,OAAO,EAAED;OACV;MAED,IAAIuB,OAAO,GAAG;QACZ,UAAU,EAAEE;OACb;MAED,IAAIvB,IAAI,SAASwB,MAAI,CAAC/B,WAAW,CAACQ,IAAI,CAAkB,GAAGZ,4FAAqC,aAAa,EAAEgC,OAAO,EAAE;QAAElB,eAAe,EAAE,IAAI;QAAEC,MAAM,EAACL;MAAW,CAAE,CAAC,CAACM,SAAS,EAAE;MAClL1B,OAAO,CAACC,GAAG,CAACoB,IAAI,CAAC;MACjB,OAAOA,IAAI;IAAA;EACb;EAEaxB,aAAaA,CAAA;IAAA,IAAAiD,MAAA;IAAA,OAAAnD,oKAAA;MACxB,IAAIoD,SAAS,GAAGD,MAAI,CAACE,SAAS,CAACnC,uBAAuB,CAAC;MACvD,IAAI,CAACkC,SAAS,EAAE;QACd,OAAO,IAAI;;MAEb,IAAIE,IAAI,GAAGrC,oDAAuB,CAAC,IAAIuC,GAAG,CAACzC,2EAAoB,CAAC,CAAC;MACjE,IAAI2C,UAAU,GAAG3C,8FAAuC;MAExD,IAAI;QACF;QACA,MAAM;UAACgC,OAAO;UAAEa;QAAe,CAAC,SAAS3C,2CAAc,CAACmC,SAAS,EAAEE,IAAI,EAAE;UACvEQ,MAAM,EAAEJ,UAAU;UAClBK,QAAQ,EAAEL;SACX,CAAC;QACF;QACAP,MAAI,CAAC/B,mBAAmB,CAAC4C,MAAM,GAAG;UAACC,IAAI,EAAElB;QAAO,CAAC;QACjD,OAAOA,OAAO;OACf,CAAC,OAAOmB,CAAC,EAAE;QACV7D,OAAO,CAAC8D,KAAK,CAAC,uBAAuB,EAAED,CAAC,EAAER,UAAU,CAAC;QACrD,OAAO,IAAI;;IACZ;EACH;EAEaU,eAAeA,CAAA;IAAA,IAAAC,MAAA;IAAA,OAAArE,oKAAA;MAC1B,IAAI+C,OAAO,SAASsB,MAAI,CAACnE,aAAa,EAAE;MACxC,IAAIoE,eAAe,GAAGvB,OAAO,IAAI,IAAI;MACrCsB,MAAI,CAAC3B,0BAA0B,CAAC4B,eAAe,CAAC;MAChD,OAAOA,eAAe;IAAA;EACxB;EAEA;EACQjB,SAASA,CAACkB,IAAY;IAC5B,MAAMC,EAAE,GAAkBC,kBAAkB,CAACC,QAAQ,CAACC,MAAM,CAAC,CAACC,KAAK,CAAC,GAAG,CAAC;IACxE,MAAMC,KAAK,GAAWL,EAAE,CAACM,MAAM;IAC/B,MAAMC,UAAU,GAAG,GAAGR,IAAI,GAAG;IAC7B,IAAIS,CAAS;IAEb,KAAK,IAAIC,CAAC,GAAI,CAAC,EAAEA,CAAC,GAAGJ,KAAK,EAAEI,CAAC,IAAI,CAAC,EAAE;MAClCD,CAAC,GAAGR,EAAE,CAACS,CAAC,CAAC,CAACC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;MAC9B,IAAIF,CAAC,CAACG,OAAO,CAACJ,UAAU,CAAC,KAAK,CAAC,EAAE;QAC/B,OAAOC,CAAC,CAACI,SAAS,CAACL,UAAU,CAACD,MAAM,EAAEE,CAAC,CAACF,MAAM,CAAC;;;IAGnD,OAAO,EAAE;EACX;EAEQnC,YAAYA,CAAC4B,IAAY;IAC/B,IAAI,CAACc,SAAS,CAACd,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;EACpC;EACQc,SAASA,CAACd,IAAY,EAAEe,KAAa,EAAEC,UAAkB,EAAEC,IAAA,GAAe,EAAE;IAClF,MAAMC,CAAC,GAAS,IAAIC,IAAI,EAAE;IAC1BD,CAAC,CAACE,OAAO,CAACF,CAAC,CAACG,OAAO,EAAE,GAAGL,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACzD,MAAMM,OAAO,GAAG,WAAWJ,CAAC,CAACK,WAAW,EAAE,EAAE;IAC5C,MAAMC,KAAK,GAAGP,IAAI,GAAG,UAAUA,IAAI,EAAE,GAAG,EAAE;IAC1Cd,QAAQ,CAACC,MAAM,GAAG,GAAGJ,IAAI,IAAIe,KAAK,KAAKO,OAAO,GAAGE,KAAK,gBAAgB;EACxE;EAEQrD,0BAA0BA,CAACsD,aAAsB;IACvD,IAAG,IAAI,CAAC3E,sBAAsB,CAACiE,KAAK,IAAIU,aAAa,EAAC;MACpD,IAAI,CAAC3E,sBAAsB,CAAC4E,IAAI,CAACD,aAAa,CAAC;;EAEnD;;;mBAzIWtF,WAAW,EAAAH,sDAAA,CAAAE,4DAAA,GAAAF,sDAAA,CAAAI,uEAAA;AAAA;;SAAXD,WAAW;EAAAE,OAAA,EAAXF,WAAW,CAAAG,IAAA;EAAAuF,UAAA,EAFV;AAAM;;;;;;;;;;;;;;;;;;;;ACTyC;AAEtB;AACc;;;AAU9C,MAAM,cAAc;IAEzB,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;IAAI,CAAC;IAIzC,UAAU,CAAC,OAAe,EAAE,QAAgB,EAAE,QAAgB,EAAE,UAAkB,EAAE;QACzF,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;YACpC,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,QAAQ;YAClB,WAAW,EAAE,OAAO;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,OAAO,EAAE,cAAc,CAAC;aAC1G,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;YAErC,OAAO,QAAQ,CAAC,IAAY,CAAC;QAC/B,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACI,SAAS,CAAC,MAAoB,EAAE,QAAc;QACnD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAElC,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAkB,GAAG,4FAAqC,MAAM,EAAE,QAAQ,CAAC;QAC3G,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACjB,OAAO,IAAI;IACb,CAAC;IAGM,SAAS,CAAC,KAAa,EAAE,SAAuB,EAAE,QAAsB;QAC7E,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACpC,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACnC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,EAAE,EAAE,QAAQ,CAAC;aAC5G,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC;YAC7C,OAAO,QAAQ,CAAC,IAAoB,CAAC;QACvC,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,EAAE,CAAC;aAClG,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC;YACrC,OAAO,QAAQ,CAAC,IAAoB,CAAC;QACvC,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,aAAa,CAAC,KAAa,EAAE,cAAsB;QACxD,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,SAAS,EAAE;YAC5G,uBAAuB,EAAE,cAAc;YACvC,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAEM,UAAU,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,OAAO,CAAC;aACvG,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC;YAC1C,OAAO,QAAQ,CAAC,IAAgC,CAAC;QACnD,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,oBAAoB,CAAC,KAAa,EAAE,OAAgB,EAAE,WAAmB,EAAE,IAAY;QAC5F,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,cAAc,EAAE;YACjH,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,IAAI;SACX,CAAC;aACC,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,2DAAe;YACtC,OAAO,QAAQ,CAAC,IAAyF,CAAC;QAC5G,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IACM,mBAAmB,CAAC,KAAa,EAAE,eAAuB,EAAE,WAAmB,EAAE,IAAY;QAClG,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,gBAAgB,eAAe,EAAE,EAAE;YACnI,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,IAAI;SACX,CAAC;aACC,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC;YAChD,OAAO,EAAE,MAAM,EAAE,2DAAe,EAAE,cAAc,EAAE,QAAQ,CAAC,IAAI,EAAkE,CAAC;QACpI,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,mBAAmB,CAAC,KAAa,EAAE,eAAuB;QAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,gBAAgB,eAAe,EAAE,CAAC;aACpI,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,QAAQ,CAAC;YACxD,OAAO,EAAE,MAAM,EAAE,2DAAe,EAAE,cAAc,EAAE,QAAQ,CAAC,IAAI,EAAkE,CAAC;QACpI,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,iBAAiB,CAAC,KAAa;QACpC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,cAAc,CAAC;aAC9G,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC;YACjD,OAAO,QAAQ,CAAC,IAAgC,CAAC;QACnD,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAGM,iBAAiB,CAAC,KAAa,EAAE,OAAgB,EAAE,WAAmB,EAAE,MAAc;QAC3F,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,WAAW,EAAE;YAC9G,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,MAAM;SACf,CAAC;aACC,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC;YAChD,OAAO,EAAE,MAAM,EAAE,2DAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,gBAAgB,CAAC,KAAa,EAAE,YAAoB;QACzD,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,aAAa,YAAY,EAAE,CAAC;aAC9H,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC;YACrD,OAAO,EAAE,MAAM,EAAE,2DAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,gBAAgB,CAAC,KAAa,EAAE,YAAoB,EAAE,WAAmB,EAAE,MAAc;QAC9F,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,aAAa,YAAY,EAAE,EAAE;YAC7H,YAAY,EAAE,WAAW;YACzB,MAAM,EAAE,MAAM;SACf,CAAC;aACC,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,2DAAe,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACjE,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,cAAc,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,WAAW,CAAC;aAC3G,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC;YAC9C,OAAO,QAAQ,CAAC,IAA6B,CAAC;QAChD,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,uBAAuB,CAAC,KAAa,EAAE,YAAoB;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAkB,GAAG,4FAAqC,QAAQ,KAAK,aAAa,YAAY,aAAa,CAAC;aACtI,IAAI,CACH,yCAAG,CAAC,CAAC,QAAyB,EAAE,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC;YAC5C,OAAO,QAAQ,CAAC,IAAmF,CAAC;QACtG,CAAC,CAAC,CACH,CAAC;IACN,CAAC;;4EArMU,cAAc;+GAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;;;;ACbiB;AACsC;AAC9C;AACY;;AAKlC,MAAM,mBAAmB;IAI9B;QACE,IAAI,CAAC,cAAc,GAAG,uEAAoB;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,iDAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAChE,CAAC;IAGD,wGAAwG;IACxG,cAAc;IACd,wGAAwG;IAExG;;OAEG;IACH,IAAI,MAAM,CAAC,KAAmB;QAC5B,iEAAiE;QACjE,MAAM,cAAc,GAAG,6CAAK,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QAEvE,kBAAkB;QAClB,IAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,EAAC;YAClF,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,cAAc,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACzC;IACH,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE;IACtC,CAAC;IAED,wGAAwG;IACxG,mBAAmB;IACnB,wGAAwG;IAExG;;OAEG;IACH,KAAK;QACH,iBAAiB;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc;IACnC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,wDAAY,CAAC,CAAC,CAAC,wDAAY;SACvE;IACH,CAAC;;sFAjDU,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBAFlB,MAAM;;;;;;;;;;;;;;;;ACPb,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,aAAa;IAEnB,oIAAoI;IACpI,4BAA4B,EAAE,qCAAqC;IAEnE,oHAAoH;IACpH,4EAA4E;IAC5E,iCAAiC;IACjC,yBAAyB,EAAE,6CAA6C;IACxE,2BAA2B,EAAE,6CAA6C;IAE1E,QAAQ,EAAE,2DAA2D;IAErE,yCAAyC;IACzC,sBAAsB,EAAE,4DAA4D;IACpF,kFAAkF;CACnF,CAAC;;;;;;;;;;;;;;;;ACjBF,gEAAgE;AACzD,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,KAAK;CACf,CAAC;;;;;;;;;;;;;;;;;;ACH6C;AAGF;AACY;AAEzD,IAAI,uEAAgB,IAAI,OAAO,EAAE;IAC/B,6DAAc,EAAE,CAAC;CAClB;AAED,wEAAwB,CAAC,eAAe,CAAC,sDAAS,CAAC;KAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;ACXpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.constants.ts","./src/app/app.module.ts","./src/app/auth-guards/is-authenticated-auth-guard.ts","./src/app/components/footer/footer.component.ts","./src/app/components/footer/footer.component.html","./src/app/components/header/header.component.ts","./src/app/components/header/header.component.html","./src/app/components/logo-cropper/logo-cropper.component.ts","./src/app/components/logo-cropper/logo-cropper.component.html","./src/app/components/org-credentials-editor/org-credentials-editor.component.ts","./src/app/components/org-credentials-editor/org-credentials-editor.component.html","./src/app/components/org-team-invite/org-team-invite.component.ts","./src/app/components/org-team-invite/org-team-invite.component.html","./src/app/components/org-webhooks-editor/org-webhooks-editor.component.ts","./src/app/components/org-webhooks-editor/org-webhooks-editor.component.html","./src/app/directives/password-confirm-validator.directive.ts","./src/app/models/fasten/organization.ts","./src/app/models/fasten/user.ts","./src/app/models/portal-config.ts","./src/app/pages/account-settings/account-settings.component.ts","./src/app/pages/account-settings/account-settings.component.html","./src/app/pages/auth-reset-request/auth-reset-request.component.ts","./src/app/pages/auth-reset-request/auth-reset-request.component.html","./src/app/pages/auth-reset/auth-reset.component.ts","./src/app/pages/auth-reset/auth-reset.component.html","./src/app/pages/auth-signin/auth-signin.component.ts","./src/app/pages/auth-signin/auth-signin.component.html","./src/app/pages/auth-signup-organization/auth-signup-organization.component.ts","./src/app/pages/auth-signup-organization/auth-signup-organization.component.html","./src/app/pages/auth-signup/auth-signup.component.ts","./src/app/pages/auth-signup/auth-signup.component.html","./src/app/pages/dashboard/dashboard.component.ts","./src/app/pages/dashboard/dashboard.component.html","./src/app/pages/developers/developers.component.ts","./src/app/pages/developers/developers.component.html","./src/app/pages/org-billing/org-billing.component.ts","./src/app/pages/org-billing/org-billing.component.html","./src/app/pages/org-settings/org-settings.component.ts","./src/app/pages/org-settings/org-settings.component.html","./src/app/pages/org-team/org-team.component.ts","./src/app/pages/org-team/org-team.component.html","./src/app/pages/webhook-logs/webhook-logs.component.ts","./src/app/pages/webhook-logs/webhook-logs.component.html","./src/app/services/auth-interceptor.service.ts","./src/app/services/auth.service.ts","./src/app/services/connect.service.ts","./src/app/services/portal-config.service.ts","./src/environments/environment.dev.ts","./src/environments/versions.ts","./src/main.ts","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport {DevelopersComponent} from './pages/developers/developers.component';\nimport {DashboardComponent} from './pages/dashboard/dashboard.component';\nimport {AuthSigninComponent} from './pages/auth-signin/auth-signin.component';\nimport {AuthSignupComponent} from './pages/auth-signup/auth-signup.component';\nimport {AuthSignupOrganizationComponent} from './pages/auth-signup-organization/auth-signup-organization.component';\nimport {IsAuthenticatedAuthGuard} from './auth-guards/is-authenticated-auth-guard';\nimport {OrgSettingsComponent} from './pages/org-settings/org-settings.component';\nimport {AccountSettingsComponent} from './pages/account-settings/account-settings.component';\nimport {WebhookLogsComponent} from './pages/webhook-logs/webhook-logs.component';\nimport {OrgBillingComponent} from './pages/org-billing/org-billing.component';\nimport {OrgTeamComponent} from './pages/org-team/org-team.component';\nimport {AuthResetRequestComponent} from './pages/auth-reset-request/auth-reset-request.component';\nimport {AuthResetComponent} from './pages/auth-reset/auth-reset.component';\n\nconst routes: Routes = [\n\n { path: 'auth/signin', component: AuthSigninComponent },\n { path: 'auth/signup', component: AuthSignupComponent },\n { path: 'auth/invite', component: AuthSignupComponent },\n { path: 'auth/signup/org', component: AuthSignupOrganizationComponent },\n { path: 'auth/reset/request', component: AuthResetRequestComponent },\n { path: 'auth/reset', component: AuthResetComponent },\n\n { path: '', redirectTo: '/developers', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'developers', component: DevelopersComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'developers/webhooks/:webhookId/logs', component: WebhookLogsComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'org/settings', component: OrgSettingsComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'org/billing', component: OrgBillingComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'org/team', component: OrgTeamComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n { path: 'account/settings', component: AccountSettingsComponent, canActivate: [ IsAuthenticatedAuthGuard] },\n\n //must be at bottom of list\n { path: '**', redirectTo: 'developers' },\n\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component } from '@angular/core';\nimport {NavigationEnd, Router, RouterEvent} from '@angular/router';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'fastenhealth';\n\n showHeader:boolean = false;\n showFooter:boolean = true;\n\n constructor(\n private router: Router,\n // private toastService: ToastService,\n private modalService: NgbModal\n ) {}\n\n ngOnInit() {\n\n // navbar backdrop for mobile only\n const navbarBackdrop = document.createElement('div');\n navbarBackdrop.classList.add('az-navbar-backdrop');\n document.querySelector('body')?.appendChild(navbarBackdrop);\n\n //determine if we should show the header\n this.router.events.subscribe(event => this.routerEvent(event));\n }\n\n routerEvent(event: any) {\n if (event instanceof NavigationEnd) {\n //modify header\n if (event.url?.startsWith('/auth') || event.url?.startsWith('/desktop')) {\n this.showHeader = false;\n } else {\n // console.log(\"NU\")\n this.showHeader = true;\n }\n\n // close all open modals when route change\n this.modalService.dismissAll();\n }\n }\n}\n","<div>\n <app-header *ngIf=\"showHeader\"></app-header>\n <div class=\"az-content-wrapper\">\n <router-outlet></router-outlet>\n </div>\n <app-footer *ngIf=\"showFooter\"></app-footer>\n</div>\n","export const URL_PATTERN = /^https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)$/;\n\n// https://medium.com/@ojiofor/angular-reactive-forms-strong-password-validation-8dbcce92eb6c\n// Minimum Length: A strong password should have a minimum length, typically at least 8 characters.\n// Uppercase Letters: It should contain at least one uppercase letter.\n// Lowercase Letters: It should contain at least one lowercase letter.\n// Numbers: It should contain at least one number.\n// Special Characters: It should contain at least one special character (e.g., !, @, #, $).\nexport const STRONG_PASSWORD_PATTERN = /^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=\\D*\\d).{8,}$/;\n\nexport enum ApiMode {\n Live = 'live',\n Test = 'test',\n}\n\nexport enum CredentialStatus {\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport enum WebhookStatus {\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport enum WebhookDeliveryStatus {\n Success = 'success',\n Failure = 'failure',\n}\n\nexport enum CRUDMode {\n Create = 'create',\n Update = 'update',\n Delete = 'delete',\n}\n\nexport enum EventTypes{\n EventTypesPatientEHIExportFailed = \"patient.ehi_export_failed\",\n EventTypesPatientEHIExportSuccess = \"patient.ehi_export_success\",\n EventTypesPatientAuthorizationRevoked = \"patient.authorization_revoked\",\n EventTypesWebhookTest = \"webhook.test\",\n}\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\n\nimport { fas } from '@fortawesome/free-solid-svg-icons';\nimport { far } from '@fortawesome/free-regular-svg-icons';\nimport { HighlightModule, HIGHLIGHT_OPTIONS } from 'ngx-highlightjs';\n\nimport {NgbModule} from '@ng-bootstrap/ng-bootstrap';\nimport {InfiniteScrollModule} from 'ngx-infinite-scroll';\nimport {FontAwesomeModule, FaIconLibrary} from '@fortawesome/angular-fontawesome';\nimport {HeaderComponent} from './components/header/header.component';\nimport {FooterComponent} from './components/footer/footer.component';\nimport { DevelopersComponent } from './pages/developers/developers.component';\nimport { DashboardComponent } from './pages/dashboard/dashboard.component';\nimport { AuthSigninComponent } from './pages/auth-signin/auth-signin.component';\nimport { AuthSignupComponent } from './pages/auth-signup/auth-signup.component';\nimport { AuthSignupOrganizationComponent } from './pages/auth-signup-organization/auth-signup-organization.component';\nimport { PasswordConfirmValidatorDirective } from './directives/password-confirm-validator.directive';\nimport {IsAuthenticatedAuthGuard} from './auth-guards/is-authenticated-auth-guard';\nimport {Router} from '@angular/router';\nimport {AuthService} from './services/auth.service';\nimport {AuthInterceptorService} from './services/auth-interceptor.service';\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { LogoCropperComponent } from './components/logo-cropper/logo-cropper.component';\nimport { NgChartsModule } from 'ng2-charts';\nimport {MomentModule} from 'ngx-moment';\nimport { OrgSettingsComponent } from './pages/org-settings/org-settings.component';\nimport { AccountSettingsComponent } from './pages/account-settings/account-settings.component';\nimport { OrgCredentialsEditorComponent } from './components/org-credentials-editor/org-credentials-editor.component';\nimport { OrgWebhooksEditorComponent } from './components/org-webhooks-editor/org-webhooks-editor.component';\nimport { WebhookLogsComponent } from './pages/webhook-logs/webhook-logs.component';\nimport { OrgBillingComponent } from './pages/org-billing/org-billing.component';\nimport { OrgTeamComponent } from './pages/org-team/org-team.component';\nimport { OrgTeamInviteComponent } from './components/org-team-invite/org-team-invite.component';\nimport { AuthResetRequestComponent } from './pages/auth-reset-request/auth-reset-request.component';\nimport { AuthResetComponent } from './pages/auth-reset/auth-reset.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n HeaderComponent,\n FooterComponent,\n DevelopersComponent,\n DashboardComponent,\n AuthSigninComponent,\n AuthSignupComponent,\n AuthSignupOrganizationComponent,\n LogoCropperComponent,\n OrgSettingsComponent,\n AccountSettingsComponent,\n OrgCredentialsEditorComponent,\n OrgWebhooksEditorComponent,\n WebhookLogsComponent,\n OrgBillingComponent,\n OrgTeamComponent,\n OrgTeamInviteComponent,\n AuthResetRequestComponent,\n AuthResetComponent,\n ],\n imports: [\n FormsModule,\n ReactiveFormsModule,\n BrowserModule,\n HttpClientModule,\n AppRoutingModule,\n PasswordConfirmValidatorDirective,\n\n NgbModule,\n NgChartsModule,\n InfiniteScrollModule,\n FontAwesomeModule,\n ImageCropperModule,\n MomentModule,\n HighlightModule\n ],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptorService,\n multi: true,\n deps: [AuthService, Router]\n },\n IsAuthenticatedAuthGuard,\n {\n provide: HIGHLIGHT_OPTIONS,\n useValue: {\n fullLibraryLoader: () => import('highlight.js'),\n }\n }\n ],\n bootstrap: [AppComponent],\n schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\n})\nexport class AppModule {\n constructor(library: FaIconLibrary) {\n library.addIconPacks(fas, far);\n }\n}\n","import { Injectable } from '@angular/core';\nimport {CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree, Router} from '@angular/router';\nimport {AuthService} from '../services/auth.service';\n\n@Injectable()\nexport class IsAuthenticatedAuthGuard implements CanActivate {\n constructor(private authService: AuthService, private router: Router) {\n\n }\n\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise <boolean> {\n let jwtPayload = await this.authService.GetJWTPayload()\n\n //check if the user is authenticated, if not, redirect to login\n if (!jwtPayload) {\n return await this.router.navigate(['/auth/signin']);\n } else if(jwtPayload.org_id == '' || jwtPayload.org_id == null){\n console.log(\"User is not associated with an organization, redirecting to org signup\", jwtPayload)\n return await this.router.navigate(['/auth/signup/org']);\n }\n\n\n // continue as normal\n return true\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport {versionInfo} from '../../../environments/versions';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n appVersion: string;\n\n constructor() {\n this.appVersion = versionInfo.version\n }\n\n ngOnInit() {\n }\n\n}\n","<div class=\"az-footer ht-40 page-footer fixed-bottom\">\n <div class=\"container ht-100p pd-t-0-f\">\n <div class=\"d-sm-flex justify-content-center justify-content-sm-between py-2 w-100\">\n <span class=\"text-muted text-center text-sm-left d-block d-sm-inline-block\">Copyright © Fasten Health, Inc. 2022 | {{appVersion}}</span>\n <span class=\"float-none float-sm-right d-block mt-1 mt-sm-0 text-center\"><a href=\"https://www.fastenhealth.com/connect\">Fasten Connect: Unified API For Medical Records</a></span>\n </div>\n </div><!-- container -->\n</div><!-- az-footer -->\n","import {Component, OnDestroy, OnInit} from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {Router} from '@angular/router';\nimport {ConnectService} from '../../services/connect.service';\nimport {PortalConfig} from '../../models/portal-config';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {Organization} from '../../models/fasten/organization';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n constructor(\n private authService: AuthService,\n private connectService: ConnectService,\n public portalConfigService: PortalConfigService,\n private router: Router,\n ) { }\n\n ngOnInit() {\n\n this.portalConfigService.ConfigSubject.subscribe((config: PortalConfig) => {\n console.log(\"Configuration changed:\", config)\n if(config.user && config.user.org_id && !config.org){\n console.log(\"attempt to download org information, and store in config\")\n this.connectService.getOrg(config.user.org_id).subscribe((org: Organization )=>{\n console.log(\"org:\", org)\n this.portalConfigService.config = {org: org}\n })\n }\n });\n\n }\n\n toggleHeaderMenu(event: Event) {\n event.preventDefault();\n document.querySelector('body')?.classList.toggle('az-header-menu-show');\n }\n closeMenu(e: Event) {\n (e.target as HTMLElement).closest('.dropdown')?.classList.remove('show');\n (e.target as HTMLElement).closest('.dropdown .dropdown-menu')?.classList.remove('show');\n }\n\n signOut(event: Event) {\n this.authService.Signout().then(r => {\n return this.router.navigate(['/auth/signin'])\n })\n }\n}\n","<div [hidden]=\"portalConfigService.config$.apiMode == 'live'\" class=\"bg-danger text-white pd-5\">\n <strong>Test Mode Enabled</strong>\n <span class=\"text-white float-right\">You're using test data. You will only be able to access sandbox accounts.</span>\n</div>\n\n<div class=\"az-header\">\n <div class=\"container\">\n <div class=\"az-header-left\">\n <a routerLink=\"/\" >\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-logo az-img-logo\">\n </a>\n <a href=\"#\" id=\"azMenuShow\" (click)=\"toggleHeaderMenu($event)\" class=\"az-header-menu-icon d-lg-none\"><span></span></a>\n </div><!-- az-header-left -->\n <div class=\"az-header-menu\">\n <div class=\"az-header-menu-header\">\n <a routerLink=\"/\">\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-img-logo\">\n </a>\n <a href=\"#\" (click)=\"toggleHeaderMenu($event)\" class=\"close\">×</a>\n </div><!-- az-header-menu-header -->\n <ul class=\"nav\">\n\n <li class=\"nav-item\" ngbDropdown [ngClass]=\"{ 'active': dashboard?.isActive }\">\n <a routerLink=\"/dashboard\" routerLinkActive=\"active\" #dashboard=\"routerLinkActive\" class=\"nav-link\"><fa-icon [icon]=\"['fas', 'table-columns']\"></fa-icon> Dashboard</a>\n </li>\n <li class=\"nav-item\" ngbDropdown [ngClass]=\"{ 'active': developers?.isActive }\">\n <a routerLink=\"/developers\" routerLinkActive=\"active\" #developers=\"routerLinkActive\" class=\"nav-link\"><fa-icon [icon]=\"['fas', 'code']\"></fa-icon> Developer</a>\n </li>\n <li class=\"pd-l-20\">\n <div [ngClass]=\"{'on': portalConfigService.config$.apiMode == 'test'}\" (click)=\"portalConfigService.toggleApiMode()\" class=\"mg-l-10 az-toggle az-toggle-danger\"><span></span></div>\n </li>\n </ul>\n </div><!-- az-header-menu -->\n <div class=\"az-header-right\">\n\n <div class=\"dropdown az-header-notification\" ngbDropdown>\n <a class=\"new\" id=\"notificationsDropdown\" ngbDropdownToggle><i class=\"far fa-sm fa-bell\"></i></a>\n <div class=\"dropdown-menu\" ngbDropdownMenu aria-labelledby=\"notificationsDropdown\">\n <div class=\"az-dropdown-header mg-b-20 d-sm-none\">\n <a class=\"az-header-arrow\" (click)=\"closeMenu($event)\"><i class=\"icon ion-md-arrow-back\"></i></a>\n </div>\n <h6 class=\"az-notification-title\">Notifications</h6>\n <p class=\"az-notification-text\">Background Jobs & Updates</p>\n <div class=\"dropdown-footer\"><a routerLink=\"/background-jobs\">View History</a></div>\n </div><!-- dropdown-menu -->\n </div><!-- az-header-notification -->\n <div class=\"dropdown az-profile-menu\" ngbDropdown>\n <a class=\"az-img-user cursor-pointer\" id=\"profileDropdown\" ngbDropdownToggle>\n <img src=\"/assets/images/profile-image.svg\" alt=\"\">\n </a>\n <div class=\"dropdown-menu\" ngbDropdownMenu aria-labelledby=\"profileDropdown\">\n <div class=\"az-dropdown-header d-sm-none\">\n <a class=\"az-header-arrow\" (click)=\"closeMenu($event)\"><i class=\"icon ion-md-arrow-back\"></i></a>\n </div>\n <div [routerLink]=\"'/patient-profile'\" class=\"az-header-profile cursor-pointer\">\n <div class=\"az-img-user\">\n <img src=\"{{portalConfigService.config$.org?.logo_uri}}\" alt=\"\">\n </div><!-- az-img-user -->\n <h6>{{portalConfigService.config$.user?.name}}</h6>\n </div><!-- az-header-profile -->\n\n <a routerLink=\"account/settings\" class=\"dropdown-item cursor-pointer\"><i style=\"font-size: medium;\" class=\"fas fa-user-circle\"></i> Profile Settings</a>\n <a routerLink=\"org/settings\" class=\"dropdown-item cursor-pointer\"><i style=\"font-size: medium;\" class=\"fas fa-hospital\"></i> Org Settings</a>\n <a class=\"dropdown-item cursor-pointer\"><i style=\"font-size: medium;\" class=\"fas fa-life-ring\"></i> Get Support</a>\n <a (click)=\"signOut($event)\" class=\"dropdown-item cursor-pointer\"><i style=\"font-size: medium;\" class=\"fas fa-power-off\"></i> Sign Out</a>\n </div><!-- dropdown-menu -->\n </div>\n </div><!-- az-header-right -->\n </div><!-- container -->\n</div><!-- az-header -->\n\n","import { Component, OnInit } from '@angular/core';\nimport {ImageCroppedEvent, LoadedImage} from 'ngx-image-cropper';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {NgbActiveModal, NgbModal} from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-logo-cropper',\n templateUrl: './logo-cropper.component.html',\n styleUrls: ['./logo-cropper.component.scss']\n})\nexport class LogoCropperComponent implements OnInit {\n\n //image cropper\n imageChangedEvent: any = '';\n croppedImage: any = '';\n croppedImageEvent: ImageCroppedEvent | null = null;\n submitLogoLoading = false;\n\n constructor(\n public activeModal: NgbActiveModal,\n private modalService: NgbModal,\n private sanitizer: DomSanitizer\n ) { }\n\n ngOnInit(): void {\n }\n\n fileChangeEvent(event: any): void {\n this.imageChangedEvent = event;\n }\n imageCropped(event: ImageCroppedEvent) {\n this.croppedImage = this.sanitizer.bypassSecurityTrustUrl(event.objectUrl!);\n // event.blob can be used to upload the cropped image\n this.croppedImageEvent = event;\n }\n imageLoaded(image: LoadedImage) {\n // show cropper\n }\n cropperReady() {\n // cropper ready\n }\n loadImageFailed() {\n // show message\n }\n\n onSubmit() {\n console.log(this.croppedImage)\n this.activeModal.close(this.croppedImageEvent)\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title\">Organization Logo</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n\n<div class=\"modal-body\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p>Fasten Connect requires a logo for display when connecting providers</p>\n <input type=\"file\" (change)=\"fileChangeEvent($event)\" accept=\".png,.jpeg,.jpg\" />\n\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"1 / 1\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded($event)\"\n (cropperReady)=\"cropperReady()\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n\n </div>\n </div>\n</div>\n\n<div class=\"modal-footer\">\n <button type=\"button\" class=\"btn btn-indigo\" [disabled]=\"submitLogoLoading\" (click)=\"onSubmit()\">\n Save Logo\n </button>\n <button type=\"button\" class=\"btn btn-outline-dark\" (click)=\"activeModal.dismiss('Close click')\">Close</button>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ApiMode, URL_PATTERN } from '../../app.constants';\nimport { OrganizationCredential } from '../../models/fasten/organization-credential';\nimport { ConnectService } from '../../services/connect.service';\nimport { Organization } from '../../models/fasten/organization';\nimport { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-org-credentials-editor',\n templateUrl: './org-credentials-editor.component.html',\n styleUrls: ['./org-credentials-editor.component.scss']\n})\nexport class OrgCredentialsEditorComponent implements OnInit {\n urlPattern = URL_PATTERN\n\n @Input() editorMode: 'create' | 'edit' = 'create'\n @Input() org: Organization | null = null\n @Input() apiMode: ApiMode = ApiMode.Test\n @Input() orgCredential: OrganizationCredential | null = null //only set when editing\n\n submitOrgCredentialLoading: boolean = false\n deleteOrgCredentialLoading: boolean = false\n redirectUri: string = \"\"\n note: string = \"\"\n submitOrgCredentialError: string = ''\n\n\n constructor(\n private connectService: ConnectService,\n public activeModal: NgbActiveModal\n ) { }\n\n ngOnInit(): void {\n if (this.editorMode === 'edit' && this.orgCredential) {\n this.redirectUri = this.orgCredential.redirect_uri\n this.note = this.orgCredential.note\n }\n }\n\n public deleteOrgCredential() {\n if (confirm(\"Are you sure you'd like to delete these API Credentials?\") == true) {\n this.deleteOrgCredentialLoading = true\n\n if (!this.orgCredential?.id) {\n this.deleteOrgCredentialLoading = false\n this.submitOrgCredentialError = \"Unknown Organization Credential ID\"\n return\n }\n\n this.connectService.deleteOrgCredential(this.org!.id, this.orgCredential.id).subscribe((result) => {\n console.log(\"Deleted Org Credential\", result)\n this.deleteOrgCredentialLoading = false\n this.activeModal.close(result)\n }, (error: any) => {\n console.log(\"Error Updating Org Credential\", error)\n this.deleteOrgCredentialLoading = false\n this.submitOrgCredentialError = JSON.stringify(error)\n\n },\n () => {\n console.log(\"Completed Deleting Org Credential\")\n this.deleteOrgCredentialLoading = false\n })\n\n }\n }\n\n public updateOrgCredential() {\n this.submitOrgCredentialLoading = true\n this.submitOrgCredentialError = ''\n\n if (!this.orgCredential?.id) {\n this.submitOrgCredentialLoading = false\n this.submitOrgCredentialError = \"Unknown Organization Credential ID\"\n return\n }\n if (this.redirectUri == this.orgCredential.redirect_uri) {\n this.submitOrgCredentialLoading = false\n this.submitOrgCredentialError = \"Redirect URI has not changed\"\n }\n\n\n this.connectService.updateOrgCredential(this.org!.id, this.orgCredential.id, this.redirectUri, this.note).subscribe((result) => {\n console.log(\"Updated Org Credential\", result)\n this.submitOrgCredentialLoading = false\n this.activeModal.close(result)\n }, (error: any) => {\n console.log(\"Error Updating Org Credential\", error)\n this.submitOrgCredentialLoading = false\n this.submitOrgCredentialError = JSON.stringify(error)\n\n },\n () => {\n console.log(\"Completed Updating Org Credential\")\n this.submitOrgCredentialLoading = false\n })\n }\n\n public createOrgCredential() {\n this.submitOrgCredentialLoading = true\n this.submitOrgCredentialError = ''\n\n if (!this.org?.id) {\n this.submitOrgCredentialLoading = false\n this.submitOrgCredentialError = \"Unknown Organization ID\"\n return\n }\n\n\n this.connectService.createOrgCredentials(this.org.id, this.apiMode, this.redirectUri, this.note).subscribe((result) => {\n console.log(\"Added Org Credential\", result)\n this.submitOrgCredentialLoading = false\n this.activeModal.close(result)\n }, (error: any) => {\n console.log(\"Error Adding Org Credential\", error)\n this.submitOrgCredentialLoading = false\n this.submitOrgCredentialError = JSON.stringify(error)\n\n },\n () => {\n console.log(\"Completed Adding Org Credential\")\n this.submitOrgCredentialLoading = false\n })\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"modal-credential-title\">\n {{ editorMode == \"create\" ? \"Create\" : \"Update\" }} Credential\n </h4>\n <button\n type=\"button\"\n class=\"close\"\n aria-label=\"Close\"\n (click)=\"activeModal.dismiss('Cross click')\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <p>\n API Credentials are used by your application to access the Fasten Connect\n API\n </p>\n\n <form>\n <div class=\"mb-3\">\n <label for=\"redirectUri\">Redirect Url<span ngbTooltip=\"required\" class=\"text-danger\">*</span></label>\n <div class=\"input-group\">\n <input\n required\n id=\"redirectUri\"\n class=\"form-control\"\n placeholder=\"https://example.com/...\"\n name=\"redirectUri\"\n type=\"url\"\n [pattern]=\"urlPattern\"\n [(ngModel)]=\"redirectUri\"\n #redirectUriField=\"ngModel\"\n />\n </div>\n </div>\n\n <div class=\"mb-3\">\n <label for=\"note\">Note</label>\n <div class=\"input-group\">\n <input\n id=\"note\"\n class=\"form-control\"\n placeholder=\"Additional Note\"\n name=\"note\"\n type=\"text\"\n [(ngModel)]=\"note\"\n #noteField=\"ngModel\"\n />\n </div>\n </div>\n\n <div\n *ngIf=\"redirectUriField.invalid && (redirectUriField.dirty || redirectUriField.touched)\"\n class=\"alert alert-danger\">\n <div *ngIf=\"redirectUriField.errors?.['required']\">\n Redirect Url is required.\n </div>\n <div *ngIf=\"redirectUriField.errors?.['pattern']\">\n Redirect Url must be a valid url starting with https://\n </div>\n </div>\n\n <div *ngIf=\"submitOrgCredentialError\" class=\"alert alert-danger\">\n {{ submitOrgCredentialError }}\n </div>\n </form>\n</div>\n<div class=\"modal-footer\">\n <div style=\"display: block; width: 100%\">\n <ng-container *ngIf=\"editorMode == 'edit'\">\n <button\n type=\"button\"\n class=\"float-left btn btn-outline-danger\"\n (click)=\"deleteOrgCredential()\"\n >Delete\n <span\n *ngIf=\"deleteOrgCredentialLoading\"\n class=\"spinner-border spinner-border-sm\"\n role=\"status\"\n aria-hidden=\"true\"\n ></span>\n </button>\n\n <button\n type=\"button\"\n class=\"float-right btn btn-outline-indigo\"\n [disabled]=\"!(redirectUriField.dirty || noteField.dirty) || submitOrgCredentialLoading\"\n (click)=\"updateOrgCredential()\"\n >Update\n <span\n *ngIf=\"submitOrgCredentialLoading\"\n class=\"spinner-border spinner-border-sm\"\n role=\"status\"\n aria-hidden=\"true\"\n ></span>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"editorMode == 'create'\">\n <button\n type=\"button\"\n class=\"btn btn-outline-indigo\"\n [disabled]=\"submitOrgCredentialLoading\"\n (click)=\"createOrgCredential()\"\n >Create\n <span\n *ngIf=\"submitOrgCredentialLoading\"\n class=\"spinner-border spinner-border-sm\"\n role=\"status\"\n aria-hidden=\"true\"\n ></span>\n </button>\n </ng-container>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {Organization} from '../../models/fasten/organization';\nimport {ConnectService} from '../../services/connect.service';\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\nimport {PortalConfigService} from '../../services/portal-config.service';\n\n@Component({\n selector: 'app-org-team-invite',\n templateUrl: './org-team-invite.component.html',\n styleUrls: ['./org-team-invite.component.scss']\n})\nexport class OrgTeamInviteComponent implements OnInit {\n @Input() org: Organization | null = null\n\n teamMemberEmail: string = ''\n\n submitOrgInviteLoading: boolean = false\n submitOrgInviteError: string = ''\n\n constructor(\n public portalConfig: PortalConfigService,\n private connectService: ConnectService,\n public activeModal: NgbActiveModal\n ) { }\n\n ngOnInit(): void {\n }\n\n public sendOrgTeamInvite() {\n this.submitOrgInviteLoading = true\n this.submitOrgInviteError = ''\n\n if(!this.portalConfig.config$.org?.id){\n this.submitOrgInviteLoading = false\n this.submitOrgInviteError = \"Unknown Organization ID\"\n return\n }\n\n\n this.connectService.sendOrgInvite(this.portalConfig.config$.org?.id, this.teamMemberEmail).subscribe((result) => {\n this.submitOrgInviteLoading = false\n this.activeModal.close(true)\n }, (error: any) => {\n console.log(\"Error Adding Org Webhook\", error)\n this.submitOrgInviteLoading = false\n this.submitOrgInviteError = JSON.stringify(error)\n\n })\n }\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"modal-webhook-title\">Invite Team Member</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n\n <div class=\"alert alert-warning mg-t-10\" role=\"alert\">\n <strong>Warning</strong> Fasten Health high discourages email address from free domains such as Gmail due to access to sensitive information.\n </div>\n\n <form>\n <div class=\"mb-3\">\n <label for=\"emailAddress\">Member Email<span ngbTooltip=\"required\" class=\"text-danger\">*</span></label>\n <div class=\"input-group\">\n <input\n required\n id=\"emailAddress\"\n class=\"form-control\"\n placeholder=\"[email protected]\"\n name=\"emailAddress\"\n type=\"email\"\n [(ngModel)]=\"teamMemberEmail\"\n #emailAddressField=\"ngModel\"\n />\n </div>\n </div>\n\n <div *ngIf=\"emailAddressField.invalid && (emailAddressField.dirty || emailAddressField.touched)\"\n class=\"alert alert-danger\">\n\n <div *ngIf=\"emailAddressField.errors?.['required']\">\n Email Address is required\n </div>\n </div>\n\n <div *ngIf=\"submitOrgInviteError\" class=\"alert alert-danger\">\n {{submitOrgInviteError}}\n </div>\n\n </form>\n</div>\n<div class=\"modal-footer\">\n <div style=\"display:block; width:100%\">\n <button type=\"button\" class=\"btn btn-outline-indigo\" [disabled]=\"submitOrgInviteLoading\" (click)=\"sendOrgTeamInvite()\">\n Create\n <span *ngIf=\"submitOrgInviteLoading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n </div>\n</div>\n","import {Component, Input, OnInit} from '@angular/core';\nimport {ApiMode, URL_PATTERN} from '../../app.constants';\nimport {Organization} from '../../models/fasten/organization';\nimport {OrganizationCredential} from '../../models/fasten/organization-credential';\nimport {OrganizationWebhook} from '../../models/fasten/organization-webhook';\nimport {ConnectService} from '../../services/connect.service';\nimport {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap';\n\n@Component({\n selector: 'app-org-webhooks-editor',\n templateUrl: './org-webhooks-editor.component.html',\n styleUrls: ['./org-webhooks-editor.component.scss']\n})\nexport class OrgWebhooksEditorComponent implements OnInit {\n urlPattern = URL_PATTERN\n\n @Input() editorMode: 'create' | 'edit' = 'create'\n @Input() org: Organization | null = null\n @Input() apiMode: ApiMode = ApiMode.Test\n @Input() orgWebhook: OrganizationWebhook | null = null //only set when editing\n\n submitOrgWebhookLoading: boolean = false\n deleteOrgWebhookLoading: boolean = false\n endpointUri: string = \"\"\n submitOrgWebhookError: string = ''\n active: boolean = true\n\n constructor(\n private connectService: ConnectService,\n public activeModal: NgbActiveModal\n ) { }\n\n ngOnInit(): void {\n if (this.editorMode === 'edit' && this.orgWebhook) {\n this.endpointUri = this.orgWebhook.endpoint_uri\n this.active = this.orgWebhook.status === 'active'\n }\n }\n\n public deleteOrgWebhook() {\n if (confirm(\"Are you sure you'd like to delete this Webhook?\") == true) {\n this.deleteOrgWebhookLoading = true\n\n if(!this.orgWebhook?.id){\n this.deleteOrgWebhookLoading = false\n this.submitOrgWebhookError = \"Unknown Organization Webhook ID\"\n return\n }\n\n this.connectService.deleteOrgWebhook(this.org!.id, this.orgWebhook.id).subscribe((result) => {\n console.log(\"Deleted Org Webhook\", result)\n this.deleteOrgWebhookLoading = false\n this.activeModal.close(result)\n }, (error: any) => {\n console.log(\"Error Updating Org Webhook\", error)\n this.deleteOrgWebhookLoading = false\n this.submitOrgWebhookError = JSON.stringify(error)\n\n },\n () => {\n console.log(\"Completed Deleting Org Webhook\")\n this.deleteOrgWebhookLoading = false\n })\n\n }\n }\n\n public updateOrgWebhook() {\n this.submitOrgWebhookLoading = true\n this.submitOrgWebhookError = ''\n\n if(!this.orgWebhook?.id){\n this.submitOrgWebhookLoading = false\n this.submitOrgWebhookError = \"Unknown Organization Webhook ID\"\n return\n }\n if(this.endpointUri == this.orgWebhook.endpoint_uri && this.active == (this.orgWebhook.status === 'active')){\n this.submitOrgWebhookLoading = false\n this.submitOrgWebhookError = \"Webhook settings have not changed\"\n }\n\n this.connectService.updateOrgWebhook(this.org!.id, this.orgWebhook.id, this.endpointUri, this.active? 'active' : 'inactive').subscribe((result) => {\n console.log(\"Updated Org Webhook\", result)\n this.submitOrgWebhookLoading = false\n this.activeModal.close(result)\n }, (error: any) => {\n console.log(\"Error Updating Org Webhook\", error)\n this.submitOrgWebhookLoading = false\n this.submitOrgWebhookError = JSON.stringify(error)\n\n },\n () => {\n console.log(\"Completed Updating Org Webhook\")\n this.submitOrgWebhookLoading = false\n })\n }\n\n public createOrgWebhook() {\n this.submitOrgWebhookLoading = true\n this.submitOrgWebhookError = ''\n\n if(!this.org?.id){\n this.submitOrgWebhookLoading = false\n this.submitOrgWebhookError = \"Unknown Organization ID\"\n return\n }\n\n\n this.connectService.createOrgWebhooks(this.org.id, this.apiMode!, this.endpointUri, this.active? 'active' : 'inactive').subscribe((result) => {\n this.submitOrgWebhookLoading = false\n this.activeModal.close(result)\n }, (error: any) => {\n console.log(\"Error Adding Org Webhook\", error)\n this.submitOrgWebhookLoading = false\n this.submitOrgWebhookError = JSON.stringify(error)\n\n },\n () => {\n console.log(\"Completed Adding Org Webhook\")\n this.submitOrgWebhookLoading = false\n })\n }\n\n}\n","<div class=\"modal-header\">\n <h4 class=\"modal-title\" id=\"modal-webhook-title\">{{editorMode == 'create' ? 'Create' : 'Update' }} Webhook</h4>\n <button type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"activeModal.dismiss('Cross click')\">\n <span aria-hidden=\"true\">×</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <p>\n Webhooks allow Fasten Connect to notify you once patient medical records have been retrieved and are ready for download.\n </p>\n <p>\n\n </p>\n\n <div *ngIf=\"apiMode! == 'test'\" class=\"alert alert-warning mg-t-10\" role=\"alert\">\n <strong>Testing</strong> If you don't have an environment to receive webhooks, you can use <a target=\"_blank\" href=\"https://public.requestbin.com/r\">requestbin.com</a> to test.\n </div>\n\n <form>\n <div class=\"mb-3\">\n <label for=\"endpointUri\">Endpoint Url<span ngbTooltip=\"required\" class=\"text-danger\">*</span></label>\n <div class=\"input-group\">\n <input\n required\n id=\"endpointUri\"\n class=\"form-control\"\n placeholder=\"https://example.com/...\"\n name=\"endpointUri\"\n type=\"url\"\n [pattern]=\"urlPattern\"\n [(ngModel)]=\"endpointUri\"\n #endpointUriField=\"ngModel\"\n />\n </div>\n </div>\n <div *ngIf=\"endpointUriField.invalid && (endpointUriField.dirty || endpointUriField.touched)\"\n class=\"alert alert-danger\">\n\n <div *ngIf=\"endpointUriField.errors?.['required']\">\n Endpoint Url is required\n </div>\n <div *ngIf=\"endpointUriField.errors?.['pattern']\">\n Endpoint Url must be a valid url starting with https://\n </div>\n </div>\n\n <div class=\"mb-3\">\n <span>Webhook Status</span>\n <div class=\"az-toggle\" [ngClass]=\"{'on': active}\"><label for=\"webhook-active\"><span></span></label></div>\n <input\n id=\"webhook-active\"\n class=\"\"\n name=\"webhook-active\"\n type=\"checkbox\"\n [(ngModel)]=\"active\"\n style=\"display: none\"\n #webhookActiveField=\"ngModel\"\n />\n </div>\n\n <div *ngIf=\"submitOrgWebhookError\" class=\"alert alert-danger\">\n {{submitOrgWebhookError}}\n </div>\n\n </form>\n</div>\n<div class=\"modal-footer\">\n <div style=\"display:block; width:100%\">\n <ng-container *ngIf=\"editorMode == 'edit'\">\n <button type=\"button\" class=\"float-left btn btn-outline-danger\" (click)=\"deleteOrgWebhook()\">\n Delete\n <span *ngIf=\"deleteOrgWebhookLoading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n\n <button type=\"button\" class=\"float-right btn btn-outline-indigo\" [disabled]=\"(!endpointUriField.dirty && !webhookActiveField.dirty) || submitOrgWebhookLoading\" (click)=\"updateOrgWebhook()\">\n Update\n <span *ngIf=\"submitOrgWebhookLoading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"editorMode == 'create'\">\n <button type=\"button\" class=\"btn btn-outline-indigo\" [disabled]=\"submitOrgWebhookLoading\" (click)=\"createOrgWebhook()\">\n Create\n <span *ngIf=\"submitOrgWebhookLoading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n </ng-container>\n </div>\n</div>\n","import { Directive } from '@angular/core';\nimport {AbstractControl, NG_VALIDATORS, ValidationErrors, Validator} from '@angular/forms';\n\n@Directive({\n selector: '[passwordConfirmValidator]',\n providers: [\n {\n provide: NG_VALIDATORS,\n useExisting: PasswordConfirmValidatorDirective,\n multi: true,\n },\n ],\n standalone: true,\n})\nexport class PasswordConfirmValidatorDirective implements Validator {\n\n validate(control: AbstractControl): ValidationErrors | null {\n const password = control.get('password');\n const passwordConfirm = control.get('password_confirm');\n\n return password && passwordConfirm && password.value !== passwordConfirm.value\n ? { password_confirm: true }\n : null;\n }\n}\n","\nexport class Organization {\n id: string = \"\"\n name: string = \"\"\n logo_uri: string = \"\"\n privacy_policy_uri: string = \"\"\n website_uri: string = \"\"\n terms_and_conditions_uri?: string = \"\"\n company_size?: string = \"\"\n plan?: string = \"\"\n}\n","export class User {\n id?: string\n name?: string\n email?: string\n password?: string\n org_id?: string\n\n //not sent to the server\n password_confirm?: string = \"\"\n agree_terms?: boolean = false\n}\n","/**\n * AppConfig interface. Update this interface to strictly type your config\n * object.\n */\nimport {ApiMode} from '../app.constants';\nimport {Organization} from './fasten/organization';\nimport {User} from './fasten/user';\n\nexport interface PortalConfig {\n apiMode?: ApiMode;\n org?: Organization;\n user?: User\n}\n\n/**\n * Default configuration for the entire application. This object is used by\n * \"PortalConfigService\" to set the default configuration.\n */\nexport const portalConfigDefaults: PortalConfig = {\n apiMode: ApiMode.Test\n};\n","import { Component, OnInit } from '@angular/core';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {ConnectService} from \"../../services/connect.service\";\nimport {STRONG_PASSWORD_PATTERN} from \"../../app.constants\";\nimport {Router} from \"@angular/router\";\nimport {AuthService} from \"../../services/auth.service\";\n\n@Component({\n selector: 'app-account-settings',\n templateUrl: './account-settings.component.html',\n styleUrls: ['./account-settings.component.scss']\n})\nexport class AccountSettingsComponent implements OnInit {\n strong_password_pattern = STRONG_PASSWORD_PATTERN\n passChangeLoading: boolean = false;\n emailChangeLoading: boolean = false;\n passChangeErrorMsg: string = \"\";\n emailChangeErrorMsg: string = \"\";\n\n passChangeUpdate = {\n oldPass: \"\",\n newPass: \"\",\n newPassConfirm: \"\"\n };\n\n emailChangeUpdate = {\n oldEmail: this.portalConfig.config$.user?.email || \"\",\n newEmail: \"\",\n password: \"\"\n };\n\n constructor(\n public portalConfig: PortalConfigService,\n private authService: AuthService,\n private connectService: ConnectService,\n private router: Router\n ) { }\n\n ngOnInit(): void {\n }\n\n passChangeSubmit(): void {\n this.passChangeLoading = true\n this.connectService.updateUser(this.passChangeUpdate.oldPass, this.portalConfig.config$.user?.email || \"\", \"\", this.passChangeUpdate.newPass).subscribe(\n (user) => {\n console.log(\"Password Updated\", user)\n this.passChangeLoading = false\n this.passChangeErrorMsg = \"\";\n this.authService.Signout().then(() => {\n return this.router.navigateByUrl('/auth/signin?action=password-changed');\n }).catch((err) => {\n console.error(\"Error signing out after password change\", err)\n });\n },\n (err) => {\n console.error(\"Error updating Password\", err)\n this.passChangeErrorMsg = err.error.message\n this.passChangeLoading = false;\n }\n );\n }\n emailChangeSubmit(): void {\n this.emailChangeLoading = true;\n this.connectService.updateUser(this.emailChangeUpdate.password, this.emailChangeUpdate.oldEmail, this.emailChangeUpdate.newEmail, \"\").subscribe(\n (user) => {\n console.log(\"Email Updated\", user)\n this.emailChangeLoading = false\n this.emailChangeErrorMsg = \"\";\n this.authService.Signout().then(() => {\n return this.router.navigateByUrl('/auth/signin?action=email-changed');\n }).catch((err) => {\n console.error(\"Error signing out after email change\", err)\n });\n },\n (err) => {\n console.error(\"Error updating Email\", err)\n this.emailChangeErrorMsg = err.error.message\n this.emailChangeLoading = false;\n }\n );\n\n }\n}\n","<div class=\"mg-t-20 container \">\n\n\n <div class=\"mg-b-20\">\n <div>\n <h2>{{portalConfig.config$?.user?.name}}</h2>\n <p class=\"az-dashboard-text\">{{portalConfig.config$?.user?.email}}</p>\n </div>\n </div>\n\n\n <div class=\"row\">\n <div class=\"col-md-10 col-lg-8 col-xl-6\">\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Update Password\n </h5>\n <form (ngSubmit)=\"passChangeSubmit()\" #passChangeForm=\"ngForm\" passwordConfirmValidator>\n <div class=\"card-body\">\n <p>Use this form to change the password you use to login to your account</p>\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Old Password</label>\n <input type=\"password\" name=\"old_password\" #old_password=\"ngModel\" class=\"form-control\" required [(ngModel)]=\"passChangeUpdate.oldPass\">\n <div *ngIf=\"old_password.invalid && (old_password.dirty || old_password.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"old_password.errors?.['required']\">\n Your current password is required.\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">New Password</label>\n <input class=\"form-control\" name=\"new_password\" #new_password=\"ngModel\" required minlength=\"8\" [pattern]=\"strong_password_pattern\" type=\"password\" [(ngModel)]=\"passChangeUpdate.newPass\">\n <div *ngIf=\"new_password.invalid && (new_password.dirty || new_password.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"new_password.errors?.['required']\">\n A new password is required.\n </div>\n <div *ngIf=\"new_password.errors?.['minlength']\">\n The new password must be at least 8 characters long.\n </div>\n\n <ng-container *ngIf=\"new_password.errors?.['pattern']\">\n <div *ngIf=\"!passChangeUpdate.newPass?.match('^(?=.*[A-Z])')\">\n The new password must contain at least one uppercase letter.\n </div>\n <div *ngIf=\"!passChangeUpdate.newPass?.match('(?=.*[a-z])')\">\n The new password must contain at least one lowercase letter.\n </div>\n <div *ngIf=\"!passChangeUpdate.newPass?.match('(.*[0-9].*)')\">\n The new password must contain at least one digit.\n </div>\n <div *ngIf=\"!passChangeUpdate.newPass?.match('(?=.*[!@#$%^&*])')\">\n The new password must contain at least special character.\n </div>\n </ng-container>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Confirm new Password</label>\n <input class=\"form-control\" name=\"new_password_confirm\" #new_password_confirm=\"ngModel\" required type=\"password\" [(ngModel)]=\"passChangeUpdate.newPassConfirm\">\n <div *ngIf=\"new_password_confirm.invalid && (new_password_confirm.dirty || new_password_confirm.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"new_password_confirm.errors?.['password_confirm']\">\n The new passwords do not match.\n </div>\n </div>\n </div><!-- form-group -->\n\n <button [disabled]=\"!passChangeForm.form.valid || passChangeLoading\" class=\"btn btn-az-primary btn-block\">\n Save New Password\n <span *ngIf=\"passChangeLoading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n\n <div *ngIf=\"passChangeErrorMsg\" class=\"alert alert-danger mt-3\" role=\"alert\">\n <strong>Error</strong> {{passChangeErrorMsg}}\n </div>\n\n </div>\n </form>\n\n </div>\n </div><!-- col -->\n\n\n <div class=\"col-md-10 col-lg-8 col-xl-6\">\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Update Email Address\n </h5>\n <form (ngSubmit)=\"emailChangeSubmit()\" #emailChangeForm=\"ngForm\">\n <div class=\"card-body\">\n <p>Use this form to change the email address associated with your account.</p>\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Current Email Address</label>\n <input type=\"text\" class=\"form-control\" required=\"required\" readonly value=\"{{emailChangeUpdate.oldEmail}}\">\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">New Email Address</label>\n <input class=\"form-control\" required email minlength=\"4\" type=\"email\" name=\"email\" #email=\"ngModel\" autocapitalize=\"none\" [(ngModel)]=\"emailChangeUpdate.newEmail\">\n <div *ngIf=\"email.invalid && (email.dirty || email.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"email.errors?.['required']\">\n Email is required.\n </div>\n <div *ngIf=\"email.errors?.['minlength']\">\n Email must be at least 4 characters long.\n </div>\n <div *ngIf=\"email.errors?.['email']\">\n Email must be a valid email address.\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Verify Password</label>\n <input type=\"password\" class=\"form-control\" required name=\"password\" #password=\"ngModel\" [(ngModel)]=\"emailChangeUpdate.password\">\n <div *ngIf=\"password.invalid && (password.dirty || password.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"password.errors?.['required']\">\n Your current password is required.\n </div>\n </div>\n </div><!-- form-group -->\n\n <button [disabled]=\"!emailChangeForm.form.valid || emailChangeLoading\" class=\"btn btn-az-primary btn-block\">\n Update Email Address\n <span *ngIf=\"emailChangeLoading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n </div>\n </form>\n </div>\n </div><!-- col -->\n </div>\n\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\n\n@Component({\n selector: 'app-auth-reset-request',\n templateUrl: './auth-reset-request.component.html',\n styleUrls: ['./auth-reset-request.component.scss']\n})\nexport class AuthResetRequestComponent implements OnInit {\n email: string = ''\n loading: boolean = false\n errorMsg: string = \"\"\n successMsg: string = \"\"\n\n constructor(private authService: AuthService) { }\n\n ngOnInit(): void {\n }\n\n onSubmit() {\n this.loading = true\n\n this.authService.UserResetRequest(this.email).then(\n (resp) => {\n console.log(\"User Password Reset Request Created\", resp)\n this.errorMsg = \"\"\n this.successMsg = \"Password reset request sent. Check your email for further instructions.\"\n this.loading = false;\n },\n (err) => {\n console.error(\"Error submitting password reset request\", err)\n this.errorMsg = \"An error occurred while submitting password reset request.\\nPlease try again later or contact support for assistance.\"\n this.successMsg = \"\"\n this.loading = false\n }\n )\n }\n}\n","<div class=\"az-signin-wrapper\">\n <div class=\"az-card-signin\">\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-img-logo\">\n\n <div class=\"az-signin-header\">\n <h2>Reset Password</h2>\n <h4>Please enter your email to receive a password reset link</h4>\n\n <form (ngSubmit)=\"onSubmit()\" #resetForm=\"ngForm\">\n <div class=\"form-group\">\n <label>Email</label>\n <input type=\"email\" class=\"form-control\" id=\"email\" required [(ngModel)]=\"email\" #emailCtrl=\"ngModel\" name=\"email\" placeholder=\"Enter your email\">\n\n <div *ngIf=\"emailCtrl.invalid && (emailCtrl.dirty || emailCtrl.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"emailCtrl.errors?.['required']\">\n Email is required.\n </div>\n <div *ngIf=\"emailCtrl.errors?.['email']\">\n Email must be a valid email address.\n </div>\n </div>\n </div><!-- form-group -->\n\n <button [disabled]=\"!resetForm.form.valid || loading\" type=\"submit\" class=\"btn btn-az-primary btn-block\">Reset Password</button>\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger mt-3\" role=\"alert\">\n <strong>Error</strong> {{errorMsg}}\n </div>\n\n <div *ngIf=\"successMsg\" class=\"alert alert-success mt-3\" role=\"alert\">\n <strong>Submitted</strong> {{successMsg}}\n </div>\n </form>\n </div><!-- az-signin-header -->\n\n <div class=\"az-signin-footer\">\n <p>Remembered your password? <a routerLink=\"/auth/signin\">Sign In</a></p>\n </div><!-- az-signin-footer -->\n </div><!-- az-card-signin -->\n</div><!-- az-signin-wrapper -->\n","import { Component, OnInit } from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {Router} from '@angular/router';\n\n@Component({\n selector: 'app-auth-reset',\n templateUrl: './auth-reset.component.html',\n styleUrls: ['./auth-reset.component.scss']\n})\nexport class AuthResetComponent implements OnInit {\n password: string = \"\"\n confirmPassword: string = \"\"\n loading: boolean = false\n resetToken: string | null = \"\"\n errorMsg: string = \"\"\n\n constructor(private authService: AuthService, private router: Router) { }\n\n ngOnInit(): void {\n const urlParams = new URLSearchParams(window.location.search);\n this.resetToken = urlParams.get('token');\n }\n\n onSubmit() {\n if(this.password != this.confirmPassword){\n this.errorMsg = \"passwords do not match\"\n return\n }\n\n if(!this.resetToken){\n this.errorMsg = \"no reset token provided\"\n return\n }\n\n this.loading = true\n\n this.authService.UserReset(this.password, this.resetToken)\n .then(() => {\n this.loading = false\n this.router.navigateByUrl('/dashboard')\n })\n .catch((err)=>{\n this.loading = false\n this.errorMsg = \"an error occurred during password reset\"\n console.log(err)\n })\n }\n\n}\n","<div class=\"az-signin-wrapper\">\n <div class=\"az-card-signin\">\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-img-logo\">\n\n <div class=\"az-signin-header\">\n <h2>Reset Password</h2>\n <h4>Please enter your new password</h4>\n\n <form (ngSubmit)=\"onSubmit()\" #resetForm=\"ngForm\">\n <div class=\"form-group\">\n <label>Password</label>\n <input #passwordCtrl=\"ngModel\" required minlength=\"8\" type=\"password\" class=\"form-control\" id=\"password\" [(ngModel)]=\"password\" name=\"password\" placeholder=\"Enter your new password\">\n <div *ngIf=\"passwordCtrl.invalid && (passwordCtrl.dirty || passwordCtrl.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"passwordCtrl.errors?.['required']\">\n Password is required.\n </div>\n <div *ngIf=\"passwordCtrl.errors?.['minlength']\">\n Password must be at least 8 characters long.\n </div>\n </div>\n </div>\n <div class=\"form-group\">\n\n <label>Confirm Password</label>\n <input #passwordConfirmCtrl=\"ngModel\" type=\"password\" class=\"form-control\" id=\"confirmPassword\" required [(ngModel)]=\"confirmPassword\" name=\"confirmPassword\" placeholder=\"Confirm your new password\">\n\n <div *ngIf=\"passwordConfirmCtrl.invalid && (passwordConfirmCtrl.dirty || passwordConfirmCtrl.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"passwordConfirmCtrl.errors?.['required']\">\n Confirm password is required.\n </div>\n </div>\n </div><!-- form-group -->\n\n <button [disabled]=\"!resetForm.form.valid || loading\" type=\"submit\" class=\"btn btn-az-primary btn-block\">Reset Password</button>\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger mt-3\" role=\"alert\">\n <strong>Error</strong> {{errorMsg}}\n </div>\n </form>\n </div><!-- az-signin-header -->\n <div class=\"az-signin-footer\"></div>\n </div><!-- az-card-signin -->\n</div><!-- az-signin-wrapper -->\n","import {Component, OnInit} from '@angular/core';\nimport {User} from '../../models/fasten/user';\nimport {Router} from '@angular/router';\nimport {AuthService} from '../../services/auth.service';\n\n@Component({\n selector: 'app-auth-signin',\n templateUrl: './auth-signin.component.html',\n styleUrls: ['./auth-signin.component.scss']\n})\nexport class AuthSigninComponent implements OnInit {\n loading: boolean = false\n showMessage: boolean = false\n\n submitted: boolean = false\n existingUser: User = new User()\n errorMsg: string = \"\"\n message: string = \"\"\n\n constructor(\n private authService: AuthService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n const urlParams = new URLSearchParams(window.location.search);\n this.setMessage(urlParams.get('action') || \"\")\n\n }\n\n signinSubmit(){\n this.submitted = true;\n this.loading = true\n\n this.authService.Signin(this.existingUser.email!, this.existingUser.password!)\n .then(() => {\n this.loading = false\n this.router.navigateByUrl('/dashboard')\n })\n .catch((err)=>{\n this.loading = false\n if(err?.name){\n this.errorMsg = \"email or password is incorrect\"\n } else{\n this.errorMsg = \"an unknown error occurred during sign-in\"\n }\n // const toastNotification = new ToastNotification()\n // toastNotification.type = ToastType.Error\n // toastNotification.message = this.errorMsg\n // this.toastService.show(toastNotification)\n })\n }\n\n setMessage(action: string) {\n if (action === \"email-changed\"){\n this.showMessage = true;\n this.message = \"Email successfully changed! Please sign in with your new email.\";\n } else if (action === \"password-changed\"){\n this.showMessage = true;\n this.message = \"Password successfully changed! Please sign in with your new password.\";\n }\n }\n}\n","<div *ngIf=\"showMessage\" class=\"az-signin-message\">\n {{message}}\n</div>\n\n<div class=\"az-signin-wrapper\">\n <div class=\"az-card-signin\" [ngStyle]=\"{'height' : '560px' }\">\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-img-logo\">\n\n <div class=\"az-signin-header\">\n <h2>Welcome back!</h2>\n <h4 *ngIf=\"!loading\">Please sign in to continue</h4>\n\n <form (ngSubmit)=\"signinSubmit()\" #userForm=\"ngForm\">\n <div class=\"form-group\">\n <label>Email</label>\n <input [(ngModel)]=\"existingUser.email\" name=\"email\" #email=\"ngModel\" required email minlength=\"4\" type=\"text\" class=\"form-control\" placeholder=\"Enter your username\">\n\n <div *ngIf=\"email.invalid && (email.dirty || email.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"email.errors?.['required']\">\n Email is required.\n </div>\n <div *ngIf=\"email.errors?.['minlength']\">\n Email must be at least 4 characters long.\n </div>\n <div *ngIf=\"email.errors?.['email']\">\n Email must be a valid email address.\n </div>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <label>Password</label>\n <input [(ngModel)]=\"existingUser.password\" name=\"password\" #password=\"ngModel\" required minlength=\"8\" type=\"password\" class=\"form-control\" placeholder=\"Enter your password\">\n\n <div *ngIf=\"password.invalid && (password.dirty || password.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"password.errors?.['required']\">\n Password is required.\n </div>\n <div *ngIf=\"password.errors?.['minlength']\">\n Password must be at least 8 characters long.\n </div>\n </div>\n </div><!-- form-group -->\n <button [disabled]=\"!userForm.form.valid || loading\" type=\"submit\" class=\"btn btn-az-primary btn-block\">\n Sign In\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger mt-3\" role=\"alert\">\n <strong>Error</strong> {{errorMsg}}\n </div>\n </form>\n\n </div><!-- az-signin-header -->\n <div class=\"az-signin-footer\">\n <p><a routerLink=\"/auth/reset/request\">Forgot password?</a></p>\n <p>Don't have an account? <a routerLink=\"/auth/signup\">Create an Account</a></p>\n </div><!-- az-signin-footer -->\n </div><!-- az-card-signin -->\n</div><!-- az-signin-wrapper -->\n","import { Component, OnInit } from '@angular/core';\nimport {AuthService} from '../../services/auth.service';\nimport {Router} from '@angular/router';\nimport {Organization} from '../../models/fasten/organization';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {ImageCroppedEvent, LoadedImage} from 'ngx-image-cropper';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {LogoCropperComponent} from '../../components/logo-cropper/logo-cropper.component';\nimport {ConnectService} from '../../services/connect.service';\nimport {URL_PATTERN} from '../../app.constants';\n\n@Component({\n selector: 'app-auth-signup-organization',\n templateUrl: './auth-signup-organization.component.html',\n styleUrls: ['./auth-signup-organization.component.scss']\n})\nexport class AuthSignupOrganizationComponent implements OnInit {\n\n gridImages: string[] = [\n \"f8f9ce28-d79b-4b54-9f7d-3f0aaba88c2c.png\",\n \"89bb6993-b806-49a2-84e2-6e70705c504a.png\",\n \"9fcc4529-7dc9-4c66-9198-574f978c8bb7.png\",\n \"68952002-f17e-4086-aae5-841241b194dd.png\",\n \"767b97b9-4538-433f-ab7a-14ccb0053323.png\",\n \"74078880-4084-430e-bc6c-223e5990cef8.png\",\n \"10668246-1077-4c1d-a6ce-0557c9476e77.png\",\n \"f7e4fc08-c6f6-426b-be98-d60aa36d3b8b.png\",\n \"65308856-beaa-46a0-9775-20c6c9322add.png\",\n \"6e901e85-8f45-4c60-8d1f-12621aad07f1.png\",\n \"e675376d-03de-4e66-8196-eaccda536ad5.png\",\n \"a36fd256-2751-464f-b6d7-418279595b1e.png\",\n \"c623f37e-6399-4a13-909f-3d9886130673.png\",\n \"467592a3-7f5f-4258-909e-a99ca971ce15.png\",\n \"5ad8a5ab-6570-4f1e-8002-30a051ec52c2.png\",\n \"ddbef50d-3940-4411-9dea-6bf759704c6e.png\",\n \"fc2dcde0-0848-4b09-aeaf-bfef58120de9.png\",\n \"347c0df7-5817-470e-8b28-2802f90461f6.png\",\n \"ec5bc181-5466-4ebd-9e42-471593b8d104.png\",\n \"d3b1eba5-ec53-4e6d-9600-9510afbc4dda.png\",\n \"16483fad-5c24-4766-ad53-bd78551f0768.png\",\n \"ae8026ed-e74b-4bf3-9f53-458c250420ba.png\",\n \"907d39f4-6b30-46cd-b0c8-f525c636c933.png\",\n \"6b076b97-18f7-452d-9f09-20dffb01729f.png\",\n \"c7feccc5-ad10-4aeb-91b0-12b6b93feeba.png\",\n \"c66a7c1e-21f2-44aa-9486-cdfb5ad699ba.png\",\n \"82af2366-1d27-4665-ba99-e5a60a75205a.png\",\n \"2289e832-64da-47d9-82ef-1f4e15ccf627.png\",\n \"26768525-2b04-4715-9159-3679598289a3.png\",\n \"80af4067-77e9-4c13-b617-4f370dc14d3f.png\",\n \"ec6c5f06-d7f8-4eac-8e2f-6cda4536d8ab.png\",\n \"93ee1d70-6eaa-487b-84d1-cc18bcda253f.png\",\n \"6d5ba4db-4b63-4277-bb80-dc278dbe28bd.png\",\n \"b22e4e71-1121-4fca-b158-efbb906918e9.png\",\n \"49fd46d0-05ce-4c7d-923c-3891935f6947.png\",\n \"19652f82-98b9-44e6-9964-e426192a723d.png\",\n \"314a06fc-4efc-4e34-8048-565455e4f3e1.png\",\n \"8123cfc7-53b6-45d6-ace3-b64d4bd3234b.png\",\n \"35159b16-a1b5-45ba-9d4f-83f471d5f44b.png\",\n \"d6c0016f-aaec-4764-ac28-7a6eda64b693.png\",\n \"d09c7811-213b-4c19-9154-48e57174f239.png\",\n \"2bcdcc4c-0f13-4edb-85f4-2c9f4f948df0.png\",\n \"4a4720a0-0efc-4b63-a83d-a8cc5b1c15ad.png\",\n \"98f680b2-15c4-4854-902b-ed6b69425164.png\",\n \"32283b0a-3c36-4f92-b9c2-dd2edf3a3db1.png\",\n \"d56e9e82-3f62-4ce8-8a55-27da90fbe183.png\",\n \"4fc37973-195c-4e25-8751-331a3b88e685.png\",\n \"fb0bb8fa-8336-4b26-bdc5-7f8a432c1d94.png\",\n \"7ca2d9d1-d300-479d-ab85-f956b6ef60de.png\",\n \"4fd8bb55-bb2d-4748-a134-bbab7a22e4db.png\",\n \"63cde119-f9d8-468d-900a-1976211739f8.png\",\n \"e8290a84-88a1-4eac-a5b4-b2c63146b2c9.png\",\n \"13b592f9-5c8b-4f90-aa54-5ab57a29ea89.png\",\n \"0398ce8e-9200-430c-a654-f2057bc9a2d4.png\",\n \"92b1d310-99a1-4de2-99b6-975eaf5a3744.png\",\n \"418d563f-bd82-473f-a738-cd9775db4e56.png\",\n \"8fb52893-1e93-4fea-adba-838e9b42e4d2.png\",\n \"acec8466-8b0a-4adc-9929-561b7136fccb.png\",\n \"3d01addb-1103-49ca-9c74-3027112e4aa8.png\",\n \"5f5973bf-d11c-4f99-9b86-b1303cea3503.png\",\n \"1317665c-e5c4-48b8-b3a5-2a90aa0283d7.png\",\n \"48f2153e-6f4a-4da5-99a5-775a888c218a.png\",\n \"34451b52-0f65-4e1a-91aa-5f2b1420f4b7.png\",\n \"d3a10e7c-63c1-4309-b801-e42ce6e575d5.png\",\n \"4c74937f-c30d-49c8-993e-c5a133f92414.png\",\n \"5c4c748f-acd5-4fc8-b6cd-a37f629709fb.png\",\n \"0293e1f1-291e-48ad-a5d0-cc7fcb062603.png\",\n \"407f63d2-8fc7-42dd-9a46-23c76693789b.png\",\n \"6d5de058-cc60-4f07-89db-bcc6817bb115.png\",\n \"a1c9be32-3539-4390-bf01-828d5fb9f57d.png\",\n \"562c8d0a-e524-49d7-81c2-70b34b4b9a15.png\",\n \"8023b832-eaca-414a-9a53-c2fe423087d2.png\",\n \"e8e73128-7722-4514-9684-1c17d43d880e.png\",\n \"24cb81a7-dd2b-4b07-808b-f6611fea0393.png\",\n \"5266bc57-58db-4171-8d73-a2a40ff380d2.png\",\n \"9752c0a1-49f5-4842-8554-bfa3a6a3c3b4.png\",\n \"df4a6dd3-672f-4547-8ade-609df28dcda9.png\",\n \"921bb517-fdc9-4ca2-b9fc-a9e17e6cb8fc.png\",\n \"e3f229a1-8637-49b1-abaa-84d228aff34a.png\",\n \"53f22687-4635-4bff-99e2-2eacdc402359.png\",\n \"c7fe32b2-97c6-45f7-90f8-47213c9b85f1.png\",\n \"a7a87c72-1d8a-42d6-b0a4-c72b7dd8933a.png\",\n \"2630415e-1871-437a-84de-52ad7ce88f3e.png\",\n \"b53ff282-4725-45f7-a436-89f77320f062.png\",\n ]\n\n loading: boolean = false\n\n urlPattern = URL_PATTERN\n\n submitted: boolean = false\n newOrg: Organization = new Organization()\n errorMsg: string = \"\"\n\n croppedImage: any = '';\n croppedImageEvent: ImageCroppedEvent | null = null;\n\n constructor(\n private connectService: ConnectService,\n private router: Router,\n private modalService: NgbModal,\n private sanitizer: DomSanitizer\n ) { }\n\n ngOnInit(): void {\n }\n\n signupOrgSubmit(){\n this.loading = true\n this.submitted = true;\n\n this.newOrg.logo_uri = \"https://example.com\" //TODO: placeholder logo url.\n console.log(\"starting signup process...\",this.newOrg)\n this.connectService.createOrg(this.newOrg, this.croppedImageEvent?.blob!).subscribe(\n (resp) => {\n console.log(\"Organization Created\", resp)\n this.router.navigate(['/dashboard'])\n },\n (err) => {\n console.error(\"Error creating Organization\", err)\n this.errorMsg = err.error.message\n this.loading = false\n }\n )\n\n }\n openLogoCropper(){\n this.modalService.open(LogoCropperComponent).result.then(\n (result) => {\n this.croppedImageEvent = result\n this.croppedImage = this.sanitizer.bypassSecurityTrustUrl(this.croppedImageEvent?.objectUrl!);\n },\n (reason) => {\n console.log(`Dismissed`, reason);\n },\n );\n }\n\n}\n","<div style=\"overflow:hidden;height: 95vh;\" class=\"row\">\n <div *ngFor=\"let img of gridImages\" class=\"col-1 nopadding\">\n\n <div class=\"d-flex h-100\">\n <div class=\"mx-auto my-auto\">\n <img src=\"https://cdn.fastenhealth.com/logos/sources/{{img}}\" class=\"rounded img-fluid opacity-20\">\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"floating-signup outer-div\">\n <div class=\"inner-div\">\n <div class=\"az-signin-wrapper\">\n <div class=\"az-card-signin\">\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-img-logo mg-b-20\">\n\n <div class=\"az-signin-header\">\n <h2>Let's Get Started!</h2>\n <p>Tell us about your Organization</p>\n\n\n\n <img class=\"cursor-pointer mx-auto d-block rounded-circle border\" height=\"150px\" (click)=\"openLogoCropper()\" [src]=\"croppedImage || 'assets/images/missing_logo.jpg'\" />\n\n\n <form (ngSubmit)=\"signupOrgSubmit()\" #orgForm=\"ngForm\">\n <div class=\"form-group\">\n <input [(ngModel)]=\"newOrg.name\" name=\"name\" #name=\"ngModel\" required minlength=\"2\" type=\"text\" class=\"form-control\" placeholder=\"Organization Name\">\n\n <div *ngIf=\"name.invalid && (name.dirty || name.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"name.errors?.['required']\">\n Organization Name is required.\n </div>\n <div *ngIf=\"name.errors?.['minlength']\">\n Organization Name must be at least 2 characters long.\n </div>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <input [(ngModel)]=\"newOrg.website_uri\" name=\"website_uri\" #website_uri=\"ngModel\" required [pattern]=\"urlPattern\" class=\"form-control\" autocapitalize=\"none\" placeholder=\"Website\">\n <div *ngIf=\"website_uri.invalid && (website_uri.dirty || website_uri.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"website_uri.errors?.['required']\">\n Website is required.\n </div>\n <div *ngIf=\"website_uri.errors?.['pattern']\">\n Website must be a valid url starting with https://\n </div>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <input [(ngModel)]=\"newOrg.privacy_policy_uri\" name=\"privacy_policy_uri\" #privacy_policy_uri=\"ngModel\" required [pattern]=\"urlPattern\" class=\"form-control\" placeholder=\"Privacy Policy Url\">\n <div *ngIf=\"privacy_policy_uri.invalid && (privacy_policy_uri.dirty || privacy_policy_uri.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"privacy_policy_uri.errors?.['required']\">\n Privacy Policy Url is required.\n </div>\n <div *ngIf=\"privacy_policy_uri.errors?.['pattern']\">\n Privacy Policy must be a valid url starting with https://\n </div>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <input [(ngModel)]=\"newOrg.terms_and_conditions_uri\" name=\"terms_and_conditions_uri\" #terms_and_conditions_uri=\"ngModel\" [pattern]=\"urlPattern\" class=\"form-control\" placeholder=\"Terms & Conditions Url\">\n <div *ngIf=\"terms_and_conditions_uri.invalid && (terms_and_conditions_uri.dirty || terms_and_conditions_uri.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"terms_and_conditions_uri.errors?.['pattern']\">\n Terms & Conditions must be a valid url starting with https://\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <select [(ngModel)]=\"newOrg.company_size\" name=\"company_size\" #company_size=\"ngModel\" required class=\"form-control\">\n <option value=\"\" disabled selected>Company Size</option>\n <option value=\"1_10\">1-10</option>\n <option value=\"10_100\">11-100</option>\n <option value=\"100_500\">101-500</option>\n <option value=\"500_2000\">501-2000</option>\n <option value=\"2000_5000\">2001-5000</option>\n <option value=\"5000_plus\">5000+</option>\n </select>\n <div *ngIf=\"company_size.invalid && (company_size.dirty || company_size.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"company_size.errors?.['required']\">\n Company Size is required.\n </div>\n </div>\n </div><!-- form-group -->\n\n <button [disabled]=\"!orgForm.form.valid || !croppedImageEvent || loading\" type=\"submit\" class=\"btn btn-az-primary btn-block\"\n ngbTooltip=\"Logo is required\" [disableTooltip]=\"!!croppedImageEvent\" placement=\"top\">\n Save Organization\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger mt-3\" role=\"alert\">\n <strong>Error</strong> {{errorMsg}}\n </div>\n </form>\n\n </div><!-- az-signin-header -->\n </div><!-- az-card-signin -->\n </div><!-- az-signin-wrapper -->\n\n </div>\n</div>\n\n\n\n","import { Component, OnInit } from '@angular/core';\nimport {User} from '../../models/fasten/user';\nimport {AuthService} from '../../services/auth.service';\nimport {Router} from '@angular/router';\nimport {STRONG_PASSWORD_PATTERN} from '../../app.constants';\n\n@Component({\n selector: 'app-auth-signup',\n templateUrl: './auth-signup.component.html',\n styleUrls: ['./auth-signup.component.scss']\n})\nexport class AuthSignupComponent implements OnInit {\n\n strong_password_pattern = STRONG_PASSWORD_PATTERN\n\n gridImages: string[] = [\n \"f8f9ce28-d79b-4b54-9f7d-3f0aaba88c2c.png\",\n \"89bb6993-b806-49a2-84e2-6e70705c504a.png\",\n \"9fcc4529-7dc9-4c66-9198-574f978c8bb7.png\",\n \"68952002-f17e-4086-aae5-841241b194dd.png\",\n \"767b97b9-4538-433f-ab7a-14ccb0053323.png\",\n \"74078880-4084-430e-bc6c-223e5990cef8.png\",\n \"10668246-1077-4c1d-a6ce-0557c9476e77.png\",\n \"f7e4fc08-c6f6-426b-be98-d60aa36d3b8b.png\",\n \"65308856-beaa-46a0-9775-20c6c9322add.png\",\n \"6e901e85-8f45-4c60-8d1f-12621aad07f1.png\",\n \"e675376d-03de-4e66-8196-eaccda536ad5.png\",\n \"a36fd256-2751-464f-b6d7-418279595b1e.png\",\n \"c623f37e-6399-4a13-909f-3d9886130673.png\",\n \"467592a3-7f5f-4258-909e-a99ca971ce15.png\",\n \"5ad8a5ab-6570-4f1e-8002-30a051ec52c2.png\",\n \"ddbef50d-3940-4411-9dea-6bf759704c6e.png\",\n \"fc2dcde0-0848-4b09-aeaf-bfef58120de9.png\",\n \"347c0df7-5817-470e-8b28-2802f90461f6.png\",\n \"ec5bc181-5466-4ebd-9e42-471593b8d104.png\",\n \"d3b1eba5-ec53-4e6d-9600-9510afbc4dda.png\",\n \"16483fad-5c24-4766-ad53-bd78551f0768.png\",\n \"ae8026ed-e74b-4bf3-9f53-458c250420ba.png\",\n \"907d39f4-6b30-46cd-b0c8-f525c636c933.png\",\n \"6b076b97-18f7-452d-9f09-20dffb01729f.png\",\n \"c7feccc5-ad10-4aeb-91b0-12b6b93feeba.png\",\n \"c66a7c1e-21f2-44aa-9486-cdfb5ad699ba.png\",\n \"82af2366-1d27-4665-ba99-e5a60a75205a.png\",\n \"2289e832-64da-47d9-82ef-1f4e15ccf627.png\",\n \"26768525-2b04-4715-9159-3679598289a3.png\",\n \"80af4067-77e9-4c13-b617-4f370dc14d3f.png\",\n \"ec6c5f06-d7f8-4eac-8e2f-6cda4536d8ab.png\",\n \"93ee1d70-6eaa-487b-84d1-cc18bcda253f.png\",\n \"6d5ba4db-4b63-4277-bb80-dc278dbe28bd.png\",\n \"b22e4e71-1121-4fca-b158-efbb906918e9.png\",\n \"49fd46d0-05ce-4c7d-923c-3891935f6947.png\",\n \"19652f82-98b9-44e6-9964-e426192a723d.png\",\n \"314a06fc-4efc-4e34-8048-565455e4f3e1.png\",\n \"8123cfc7-53b6-45d6-ace3-b64d4bd3234b.png\",\n \"35159b16-a1b5-45ba-9d4f-83f471d5f44b.png\",\n \"d6c0016f-aaec-4764-ac28-7a6eda64b693.png\",\n \"d09c7811-213b-4c19-9154-48e57174f239.png\",\n \"2bcdcc4c-0f13-4edb-85f4-2c9f4f948df0.png\",\n \"4a4720a0-0efc-4b63-a83d-a8cc5b1c15ad.png\",\n \"98f680b2-15c4-4854-902b-ed6b69425164.png\",\n \"32283b0a-3c36-4f92-b9c2-dd2edf3a3db1.png\",\n \"d56e9e82-3f62-4ce8-8a55-27da90fbe183.png\",\n \"4fc37973-195c-4e25-8751-331a3b88e685.png\",\n \"fb0bb8fa-8336-4b26-bdc5-7f8a432c1d94.png\",\n \"7ca2d9d1-d300-479d-ab85-f956b6ef60de.png\",\n \"4fd8bb55-bb2d-4748-a134-bbab7a22e4db.png\",\n \"63cde119-f9d8-468d-900a-1976211739f8.png\",\n \"e8290a84-88a1-4eac-a5b4-b2c63146b2c9.png\",\n \"13b592f9-5c8b-4f90-aa54-5ab57a29ea89.png\",\n \"0398ce8e-9200-430c-a654-f2057bc9a2d4.png\",\n \"92b1d310-99a1-4de2-99b6-975eaf5a3744.png\",\n \"418d563f-bd82-473f-a738-cd9775db4e56.png\",\n \"8fb52893-1e93-4fea-adba-838e9b42e4d2.png\",\n \"acec8466-8b0a-4adc-9929-561b7136fccb.png\",\n \"3d01addb-1103-49ca-9c74-3027112e4aa8.png\",\n \"5f5973bf-d11c-4f99-9b86-b1303cea3503.png\",\n \"1317665c-e5c4-48b8-b3a5-2a90aa0283d7.png\",\n \"48f2153e-6f4a-4da5-99a5-775a888c218a.png\",\n \"34451b52-0f65-4e1a-91aa-5f2b1420f4b7.png\",\n \"d3a10e7c-63c1-4309-b801-e42ce6e575d5.png\",\n \"4c74937f-c30d-49c8-993e-c5a133f92414.png\",\n \"5c4c748f-acd5-4fc8-b6cd-a37f629709fb.png\",\n \"0293e1f1-291e-48ad-a5d0-cc7fcb062603.png\",\n \"407f63d2-8fc7-42dd-9a46-23c76693789b.png\",\n \"6d5de058-cc60-4f07-89db-bcc6817bb115.png\",\n \"a1c9be32-3539-4390-bf01-828d5fb9f57d.png\",\n \"562c8d0a-e524-49d7-81c2-70b34b4b9a15.png\",\n \"8023b832-eaca-414a-9a53-c2fe423087d2.png\",\n \"e8e73128-7722-4514-9684-1c17d43d880e.png\",\n \"24cb81a7-dd2b-4b07-808b-f6611fea0393.png\",\n \"5266bc57-58db-4171-8d73-a2a40ff380d2.png\",\n \"9752c0a1-49f5-4842-8554-bfa3a6a3c3b4.png\",\n \"df4a6dd3-672f-4547-8ade-609df28dcda9.png\",\n \"921bb517-fdc9-4ca2-b9fc-a9e17e6cb8fc.png\",\n \"e3f229a1-8637-49b1-abaa-84d228aff34a.png\",\n \"53f22687-4635-4bff-99e2-2eacdc402359.png\",\n \"c7fe32b2-97c6-45f7-90f8-47213c9b85f1.png\",\n \"a7a87c72-1d8a-42d6-b0a4-c72b7dd8933a.png\",\n \"2630415e-1871-437a-84de-52ad7ce88f3e.png\",\n \"b53ff282-4725-45f7-a436-89f77320f062.png\",\n ]\n\n loading: boolean = false\n\n submitted: boolean = false\n newUser: User = new User()\n errorMsg: string = \"\"\n\n inviteToken: string | null = \"\"\n\n constructor(\n private authService: AuthService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n\n const urlParams = new URLSearchParams(window.location.search);\n this.inviteToken = urlParams.get('token');\n }\n\n signupSubmit(){\n this.loading = true\n this.submitted = true;\n\n let signupFn = null\n if (this.inviteToken){\n signupFn = this.authService.SignupWithInvite(this.newUser, this.inviteToken)\n } else {\n signupFn = this.authService.Signup(this.newUser)\n }\n\n\n signupFn.then((tokenResp: any) => {\n this.loading = false\n console.log(tokenResp);\n\n if(this.inviteToken){\n //if we are signing up with an invite, we should redirect to the dashboard\n this.router.navigateByUrl('/dashboard');\n } else {\n //after creating a user, proceed to create an organization\n this.router.navigateByUrl('/auth/signup/org');\n }\n },\n (err)=>{\n this.loading = false\n console.error(\"an error occured while signup\",err)\n if(err.name === 'conflict') {\n // \"batman\" already exists, choose another username\n this.errorMsg = \"username already exists\"\n } else if (err.name === 'forbidden') {\n // invalid username\n this.errorMsg = \"invalid username\"\n } else {\n this.errorMsg = \"an unknown error occurred during sign-up\"\n }\n\n // TODO:\n // const toastNotificaiton = new ToastNotification()\n // toastNotificaiton.type = ToastType.Error\n // toastNotificaiton.message = this.errorMsg\n // this.toastService.show(toastNotificaiton)\n })\n }\n\n}\n","<div style=\"overflow:hidden;height: 95vh;\" class=\"row\">\n <div *ngFor=\"let img of gridImages\" class=\"col-1 nopadding\">\n\n <div class=\"d-flex h-100\">\n <div class=\"mx-auto my-auto\">\n <img src=\"https://cdn.fastenhealth.com/logos/sources/{{img}}\" class=\"rounded img-fluid opacity-20\">\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"floating-signup outer-div\">\n <div class=\"inner-div\">\n <div class=\"az-signin-wrapper\">\n <div class=\"az-card-signin\">\n <img src=\"assets/images/banner-transparent-trim.png\" alt=\"fasten\" class=\"az-img-logo\">\n\n <div class=\"az-signin-header\">\n <h2>Let's Get Started!</h2>\n <p>Create your Fasten Connect account</p>\n\n <form (ngSubmit)=\"signupSubmit()\" #userForm=\"ngForm\" passwordConfirmValidator>\n <div class=\"form-group\">\n <input [(ngModel)]=\"newUser.name\" name=\"name\" #name=\"ngModel\" required minlength=\"2\" type=\"text\" class=\"form-control\" placeholder=\"First Name & Last Name\">\n\n <div *ngIf=\"name.invalid && (name.dirty || name.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"name.errors?.['required']\">\n Name is required.\n </div>\n <div *ngIf=\"name.errors?.['minlength']\">\n Name must be at least 2 characters long.\n </div>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <input [(ngModel)]=\"newUser.email\" name=\"email\" #email=\"ngModel\" required email minlength=\"4\" type=\"email\" class=\"form-control\" autocapitalize=\"none\" placeholder=\"Email Address\">\n <div *ngIf=\"email.invalid && (email.dirty || email.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"email.errors?.['required']\">\n Email is required.\n </div>\n <div *ngIf=\"email.errors?.['minlength']\">\n Email must be at least 4 characters long.\n </div>\n <div *ngIf=\"email.errors?.['email']\">\n Email must be a valid email address.\n </div>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <input [(ngModel)]=\"newUser.password\" name=\"password\" #password=\"ngModel\" required minlength=\"8\" [pattern]=\"strong_password_pattern\" type=\"password\" class=\"form-control\" placeholder=\"Password\">\n <div *ngIf=\"password.invalid && (password.dirty || password.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"password.errors?.['required']\">\n Password is required.\n </div>\n <div *ngIf=\"password.errors?.['minlength']\">\n Password must be at least 8 characters long.\n </div>\n\n <ng-container *ngIf=\"password.errors?.['pattern']\">\n <div *ngIf=\"!newUser.password?.match('^(?=.*[A-Z])')\">\n Password must contain at least one uppercase letter.\n </div>\n <div *ngIf=\"!newUser.password?.match('(?=.*[a-z])')\">\n Password must contain at least one lowercase letter.\n </div>\n <div *ngIf=\"!newUser.password?.match('(.*[0-9].*)')\">\n Password must contain at least one digit.\n </div>\n <div *ngIf=\"!newUser.password?.match('(?=.*[!@#$%^&*])')\">\n Password must contain at least special character.\n </div>\n </ng-container>\n </div>\n </div><!-- form-group -->\n <div class=\"form-group\">\n <input [(ngModel)]=\"newUser.password_confirm\" name=\"password_confirm\" #password_confirm=\"ngModel\" required type=\"password\" class=\"form-control\" placeholder=\"Confirm Password\">\n <div *ngIf=\"userForm.errors?.['password_confirm'] && (password_confirm.dirty || password_confirm.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"userForm.errors?.['password_confirm']\">\n Password confirmation does not match.\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group form-check\">\n <input [(ngModel)]=\"newUser.agree_terms\" name=\"agree_terms\" #agree_terms=\"ngModel\" type=\"checkbox\" class=\"form-check-input\" id=\"agreeTermsCheck\" required>\n <label class=\"form-check-label\" for=\"agreeTermsCheck\">\n I have read and agree to the Fasten Connect <br/> <a href=\"https://policy.fastenhealth.com/connect/privacy_policy.html\">Privacy Policy</a>\n </label>\n\n <div *ngIf=\"agree_terms.invalid && (agree_terms.dirty || agree_terms.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"agree_terms.errors?.['required']\">\n You must agree to the Privacy Policy\n </div>\n </div>\n </div>\n\n <button [disabled]=\"!userForm.form.valid || loading\" type=\"submit\" class=\"btn btn-az-primary btn-block\">\n Create Account\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger mt-3\" role=\"alert\">\n <strong>Error</strong> {{errorMsg}}\n </div>\n </form>\n\n </div><!-- az-signin-header -->\n </div><!-- az-card-signin -->\n </div><!-- az-signin-wrapper -->\n\n </div>\n</div>\n\n\n\n","import {Component, OnInit} from '@angular/core';\nimport {ChartConfiguration} from 'chart.js';\n\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.scss']\n})\nexport class DashboardComponent implements OnInit {\n\n\n constructor() { }\n\n ngOnInit(): void {\n\n }\n\n bounceRateChartData = [{\n label: 'This week',\n data: [27.2, 29.9, 29.6, 25.7, 25.9, 29.3, 31.1, 27.9, 28.4, 25.4, 23.2, 18.2, 14, 12.7, 11, 13.7, 9.7, 12.6, 10.9, 12.7, 13.8, 12.9, 13.8, 10.2, 5.8, 7.6, 8.8, 5.6, 5.6, 6.3, 4.2, 3.6, 5.4, 6.5, 8.1, 10.9, 7.6, 9.7, 10.9, 9.5, 5.4, 4.9, .7, 2.3, 5.5, 10, 10.6, 8.3, 8.4, 8.5, 5.8 ],\n borderWidth: 2,\n fill: true\n }];\n\n bounceRateChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51'];\n\n bounceRateChartOptions = {\n\n responsive:true,\n maintainAspectRatio:false,\n scales: {\n y: {\n display: false,\n gridLines: {\n drawBorder: false,\n display: true,\n drawTicks: false,\n },\n ticks: {\n display: false,\n beginAtZero: true,\n min: 0,\n max: 40,\n stepSize: 10,\n }\n },\n x: {\n display: false,\n position: 'bottom',\n gridLines: {\n drawBorder: false,\n display: false,\n drawTicks: false,\n },\n ticks: {\n beginAtZero: true,\n stepSize: 10,\n fontColor: \"#a7afb7\",\n padding: 10,\n }\n },\n },\n plugins: {\n legend: {\n display: false,\n },\n },\n\n elements: {\n point: {\n radius: 0\n },\n line: {\n tension: 0\n }\n },\n tooltips: {\n backgroundColor: 'rgba(2, 171, 254, 1)',\n },\n backgroundColor: 'rgba(0, 204, 212, .2)',\n borderColor: 'rgb(0, 204, 212)',\n } as ChartConfiguration<'line'>['options']\n\n // Total users chart\n usersBarChartData = [{\n label: '# of Votes',\n data: [27.2, 29.9, 29.6, 25.7, 25.9, 29.3, 31.1, 27.9, 28.4, 25.4, 23.2, 18.2, 14, 12.7, 11, 13.7, 9.7, 12.6, 10.9, 12.7, 13.8],\n borderWidth: 1,\n fill: false\n }];\n\n usersBarChartLabels = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18'];\n\n usersBarChartOptions = {\n\n responsive:true,\n maintainAspectRatio:false,\n scales: {\n y: {\n display: false,\n ticks: {\n display: false,\n },\n gridLines: {\n drawBorder: false,\n display: false\n }\n },\n x: {\n display: false,\n barThickness: 5.5,\n ticks: {\n display: false,\n },\n gridLines: {\n drawBorder: false,\n display: false\n }\n }\n },\n plugins: {\n legend: {\n display: false\n },\n },\n elements: {\n point: {\n radius: 0\n }\n },\n backgroundColor: '#007bff',\n borderColor: '#007bff'\n } as ChartConfiguration<'bar'>['options']\n\n}\n","<div class=\"az-content az-content-dashboard\">\n <div class=\"container\">\n <div class=\"az-content-body\">\n <div class=\"az-dashboard-one-title\">\n <div>\n <h2 class=\"az-dashboard-title\">Welcome back!</h2>\n </div>\n <div class=\"az-content-header-right\">\n <div class=\"media\">\n <div class=\"media-body\">\n <label>Last Updated</label>\n <h6>Mar 24, 2024</h6>\n </div><!-- media-body -->\n </div><!-- media -->\n <div class=\"media\">\n <div class=\"media-body\">\n <label>Filters</label>\n <h6>None</h6>\n </div><!-- media-body -->\n </div><!-- media -->\n\n </div>\n </div><!-- az-dashboard-one-title -->\n\n <div class=\"alert alert-warning\" role=\"alert\">\n <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <strong>Under Construction!</strong> The Dashboard is still under development. We will notify you once you can start using it.\n </div>\n\n <div class=\"row row-sm mg-b-20 mg-lg-b-0\">\n <div class=\"col-lg-5 col-xl-4\">\n <div class=\"row row-sm\">\n <div class=\"col-md-6 col-lg-12 mg-b-20 mg-md-b-0 mg-lg-b-20\">\n\n <div class=\"row row-sm\">\n <div class=\"col-sm-6\">\n <div class=\"blurred card card-dashboard-two\">\n <div class=\"card-header\">\n <h6>33.50% <i class=\"icon ion-md-trending-up tx-success\"></i> <small>18.02%</small></h6>\n <p>API Requests</p>\n </div><!-- card-header -->\n <div class=\"card-body\">\n <div class=\"bounce-rate-chart-wrapper\">\n <canvas baseChart [type]=\"'line'\" [datasets]=\"bounceRateChartData\" [labels]=\"bounceRateChartLabels\" [options]=\"bounceRateChartOptions\"></canvas>\n </div>\n </div><!-- card-body -->\n </div><!-- card -->\n </div><!-- col -->\n <div class=\"col-sm-6 mg-t-20 mg-sm-t-0\">\n <div class=\"blurred card card-dashboard-two\">\n <div class=\"card-header\">\n <h6>86 <i class=\"icon ion-md-trending-down tx-danger\"></i> <small>0.86%</small></h6>\n <p>Webhooks</p>\n </div><!-- card-header -->\n <div class=\"card-body\">\n <div class=\"users-bar-chart-wrapper\">\n <canvas baseChart [type]=\"'bar'\" [datasets]=\"usersBarChartData\" [labels]=\"usersBarChartLabels\" [options]=\"usersBarChartOptions\"></canvas>\n </div><!-- chart-wrapper -->\n </div><!-- card-body -->\n </div><!-- card -->\n </div><!-- col -->\n </div>\n\n </div><!-- col -->\n <div class=\"col-md-6 col-lg-12\">\n\n <div class=\"blurred card card-dashboard-five\">\n <div class=\"card-header\">\n <h6 class=\"card-title\">Connections</h6>\n <span class=\"card-text\">Total number of authorized patient connections for this billing period.</span>\n </div><!-- card-header -->\n <div class=\"card-body row row-sm\">\n <div class=\"col-6 d-sm-flex align-items-center\">\n <div class=\"card-chart bg-primary\">\n <span class=\"peity-bar\" data-peity=\"{"fill": ["#fff"], "width": 20, "height": 20 }\" style=\"display: none;\">6,4,7,5,7</span><svg class=\"peity\" height=\"20\" width=\"20\"><rect data-value=\"6\" fill=\"#fff\" x=\"0.4\" y=\"2.8571428571428577\" width=\"3.2\" height=\"17.142857142857142\"></rect><rect data-value=\"4\" fill=\"#fff\" x=\"4.4\" y=\"8.571428571428573\" width=\"3.1999999999999993\" height=\"11.428571428571427\"></rect><rect data-value=\"7\" fill=\"#fff\" x=\"8.4\" y=\"0\" width=\"3.1999999999999993\" height=\"20\"></rect><rect data-value=\"5\" fill=\"#fff\" x=\"12.4\" y=\"5.7142857142857135\" width=\"3.1999999999999993\" height=\"14.285714285714286\"></rect><rect data-value=\"7\" fill=\"#fff\" x=\"16.4\" y=\"0\" width=\"3.200000000000003\" height=\"20\"></rect></svg>\n </div>\n <div>\n <label>Unique</label>\n <h4>33</h4>\n </div>\n </div><!-- col -->\n <div class=\"col-6 d-sm-flex align-items-center\">\n <div class=\"card-chart bg-purple\">\n <span class=\"peity-bar\" data-peity=\"{"fill": ["#fff"], "width": 21, "height": 20 }\" style=\"display: none;\">7,4,5,7,2</span><svg class=\"peity\" height=\"20\" width=\"21\"><rect data-value=\"7\" fill=\"#fff\" x=\"0.42000000000000004\" y=\"0\" width=\"3.3600000000000003\" height=\"20\"></rect><rect data-value=\"4\" fill=\"#fff\" x=\"4.62\" y=\"8.571428571428573\" width=\"3.3599999999999994\" height=\"11.428571428571427\"></rect><rect data-value=\"5\" fill=\"#fff\" x=\"8.82\" y=\"5.7142857142857135\" width=\"3.3599999999999994\" height=\"14.285714285714286\"></rect><rect data-value=\"7\" fill=\"#fff\" x=\"13.020000000000001\" y=\"0\" width=\"3.3599999999999977\" height=\"20\"></rect><rect data-value=\"2\" fill=\"#fff\" x=\"17.22\" y=\"14.285714285714286\" width=\"3.360000000000003\" height=\"5.7142857142857135\"></rect></svg>\n </div>\n <div>\n <label>Refresh</label>\n <h4>9</h4>\n </div>\n </div><!-- col -->\n </div><!-- card-body -->\n </div><!-- card-dashboard-five -->\n </div><!-- col -->\n </div><!-- row -->\n </div><!-- col-lg-3 -->\n <div class=\"col-lg-7 col-xl-8 mg-t-20 mg-lg-t-0\">\n <div class=\"blurred card card-table-one\">\n <h6 class=\"card-title\">Authorized Connections</h6>\n <p class=\"az-content-text mg-b-20\">Recently connected healthcare insitutions.</p>\n <div class=\"table-responsive\">\n <table class=\"table\">\n <thead>\n <tr>\n <th class=\"wd-5p\"> </th>\n <th class=\"wd-45p\">Portal Name</th>\n <th>Synced Records</th>\n <th>Patient Auth ID</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td><img style=\"width:2em;\" src=\"https://cdn.fastenhealth.com/logos/sources/e16b9952-8885-4905-b2e3-b0f04746ed5c.png\"/></td>\n <td><strong>Epic</strong></td>\n <td><strong>134</strong> (1.51%)</td>\n <td>6f3f3770-ad00-...</td>\n <td>complete</td>\n </tr>\n <tr>\n <td><img style=\"width:2em;\" src=\"https://cdn.fastenhealth.com/logos/sources/41b42645-350f-475e-b21b-e7a1276fca4f.png\"/></td>\n <td><strong>eClincalWorks</strong></td>\n <td><strong>290</strong> (3.30%)</td>\n <td>ae5e7f40-4e7c-...</td>\n <td>complete</td>\n </tr>\n <tr>\n <td><img style=\"width:2em;\" src=\"https://cdn.fastenhealth.com/logos/sources/a0c9ecff-a470-47b9-aa32-debfa2441005.png\"/></td>\n <td><strong>Medicare</strong></td>\n <td><strong>250</strong> (3.00%)</td>\n <td>b3af4ab6-9275-...</td>\n <td>complete</td>\n </tr>\n <tr>\n <td><img style=\"width:2em;\" src=\"https://cdn.fastenhealth.com/logos/sources/e16b9952-8885-4905-b2e3-b0f04746ed5c.png\"/></td>\n <td><strong>Epic</strong></td>\n <td><strong>216</strong> (2.79%)</td>\n <td>baccf6e8-f020-...</td>\n <td>complete</td>\n </tr>\n <tr>\n <td><img style=\"width:2em;\" src=\"https://cdn.fastenhealth.com/logos/sources/e16b9952-8885-4905-b2e3-b0f04746ed5c.png\"/></td>\n <td><strong>Epic</strong></td>\n <td><strong>216</strong> (2.79%)</td>\n <td>61a193cc-33ed-...</td>\n <td>error</td>\n </tr>\n <tr>\n <td><img style=\"width:2em;\" src=\"https://cdn.fastenhealth.com/logos/sources/5863477c-a178-41fc-b9f4-c881f9e8dbca.png\"/></td>\n <td><strong>United Healthcare</strong></td>\n <td><strong>197</strong> (2.12%)</td>\n <td>6a79f333-9408-...</td>\n <td>complete</td>\n </tr>\n </tbody>\n </table>\n </div><!-- table-responsive -->\n </div><!-- card -->\n </div><!-- col-lg -->\n\n </div>\n\n </div><!-- az-content-body -->\n </div>\n</div><!-- az-content -->\n\n","import { Component, OnInit } from '@angular/core';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {ConnectService} from '../../services/connect.service';\nimport {ApiMode, CRUDMode, URL_PATTERN} from '../../app.constants';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {OrganizationCredential} from '../../models/fasten/organization-credential';\nimport {PortalConfig} from '../../models/portal-config';\nimport {OrganizationWebhook} from '../../models/fasten/organization-webhook';\nimport {OrgCredentialsEditorComponent} from '../../components/org-credentials-editor/org-credentials-editor.component';\nimport {OrgWebhooksEditorComponent} from '../../components/org-webhooks-editor/org-webhooks-editor.component';\n\n@Component({\n selector: 'app-developers',\n templateUrl: './developers.component.html',\n styleUrls: ['./developers.component.scss']\n})\nexport class DevelopersComponent implements OnInit {\n\n\n orgCredentials: {[name: string]: OrganizationCredential[]} = {\n [ApiMode.Live]: [],\n [ApiMode.Test]: [],\n }\n\n newCredential: {org_credential: OrganizationCredential, private_key: string} | null = null\n\n orgWebhooks: {[name: string]: OrganizationWebhook[]} = {\n [ApiMode.Live]: [],\n [ApiMode.Test]: [],\n }\n\n\n constructor(\n private connectService: ConnectService,\n private modalService: NgbModal,\n public portalConfig: PortalConfigService,\n ) { }\n\n ngOnInit(): void {\n\n this.connectService.getOrgCredentials(this.portalConfig.config$.user?.org_id!).subscribe((data) => {\n for(let cred of data){\n this.orgCredentials[cred.api_mode].push(cred)\n }\n })\n this.connectService.getOrgWebhooks(this.portalConfig.config$.user?.org_id!).subscribe((data) => {\n for(let hook of data){\n this.orgWebhooks[hook.api_mode].push(hook)\n }\n })\n }\n\n\n public showOrgCredentialEditorModal(editorMode: 'create' | 'edit', orgCredential?: OrganizationCredential) {\n let orgCredentialEditorModal = this.modalService.open(OrgCredentialsEditorComponent, { ariaLabelledBy: 'modal-basic-title' })\n orgCredentialEditorModal.componentInstance.org = this.portalConfig.config$.org\n orgCredentialEditorModal.componentInstance.apiMode = this.portalConfig.config$.apiMode!\n orgCredentialEditorModal.componentInstance.editorMode = editorMode\n\n if(editorMode === 'edit'){\n orgCredentialEditorModal.componentInstance.orgCredential = orgCredential\n }\n\n orgCredentialEditorModal.result.then(\n (result: {action: CRUDMode, org_credential: OrganizationCredential, private_key: string}) => {\n console.log(`Closed with:`, result)\n\n if(editorMode == 'create'){\n this.orgCredentials[result.org_credential.api_mode].push(result.org_credential)\n this.newCredential = result\n } else {\n //find the credential and update it or delete it\n let apiMode = result.org_credential.api_mode\n for(let i = 0; i < this.orgCredentials[apiMode].length; i++){\n if(this.orgCredentials[apiMode][i].id == result.org_credential.id){\n if(result.action == CRUDMode.Delete){\n this.orgCredentials[apiMode].splice(i, 1)\n break\n } else {\n //update the credential\n this.orgCredentials[apiMode][i] = result.org_credential\n break\n }\n }\n }\n }\n },\n (reason) => {\n console.log(`Dismissed ${reason}`)\n },\n );\n }\n\n public copyPublicId(credential: OrganizationCredential) {\n navigator.clipboard.writeText(credential.id);\n }\n\n\n public showOrgWebhookEditorModal(editorMode: 'create' | 'edit', orgWebhook?: OrganizationWebhook) {\n let orgWebhookEditorModal = this.modalService.open(OrgWebhooksEditorComponent, { ariaLabelledBy: 'modal-basic-title' })\n orgWebhookEditorModal.componentInstance.org = this.portalConfig.config$.org\n orgWebhookEditorModal.componentInstance.apiMode = this.portalConfig.config$.apiMode!\n orgWebhookEditorModal.componentInstance.editorMode = editorMode\n\n if(editorMode === 'edit'){\n orgWebhookEditorModal.componentInstance.orgWebhook = orgWebhook\n }\n orgWebhookEditorModal.result.then(\n (result: {action: CRUDMode, org_webhook: OrganizationWebhook}) => {\n console.log(`Closed with:`, result)\n\n let apiMode = result.org_webhook.api_mode\n if(editorMode == 'create'){\n this.orgWebhooks[apiMode].push(result.org_webhook)\n } else {\n apiMode = orgWebhook?.api_mode!\n //find the webhook and update it\n for(let i = 0; i < this.orgWebhooks[apiMode].length; i++){\n if(this.orgWebhooks[apiMode][i].id == result.org_webhook.id){\n if(result.action == CRUDMode.Delete){\n this.orgWebhooks[apiMode].splice(i, 1)\n break\n } else {\n //update the webhook\n this.orgWebhooks[apiMode][i] = result.org_webhook\n break\n }\n }\n }\n }\n },\n (reason) => {\n console.log(`Dismissed ${reason}`)\n },\n );\n }\n\n}\n","<div class=\"mg-t-10 container\">\n <nav class=\"mg-l-auto nav nav-pills flex-column flex-md-row\">\n <a class=\"nav-link active\" data-bs-toggle=\"tab\" href=\"#\">API Clients</a>\n <!-- <a class=\"nav-link\" data-bs-toggle=\"tab\" href=\"#\">Logs</a>-->\n </nav>\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n API Credentials\n <a\n href=\"https://docs.connect.fastenhealth.com\"\n target=\"_blank\"\n class=\"btn card-link float-right\">Learn more about API authentication</a>\n </h5>\n </div>\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Credentials\n <button\n (click)=\"showOrgCredentialEditorModal('create')\"\n type=\"button\"\n class=\"btn btn-outline-indigo float-right\"\n >Create Credentials\n </button>\n </h5>\n\n <div class=\"card-body\">\n <p>\n Create a key that unlocks full API access, enabling extensive\n interaction with your account.\n </p>\n\n <div\n *ngIf=\"!!newCredential\"\n #credWarning\n class=\"alert alert-success mg-t-10\"\n role=\"alert\"\n >\n <button\n (click)=\"credWarning.hidden = true\"\n type=\"button\"\n class=\"close\"\n data-dismiss=\"alert\"\n aria-label=\"Close\"\n >\n <span aria-hidden=\"true\">×</span>\n </button>\n <strong>Credential Created!</strong> Make sure to copy your Private Key\n now. You won’t be able to see it again!\n <br />\n <strong class=\"mg-r-10\">Public Id:</strong>\n <code>{{ newCredential.org_credential.id }}</code\n ><br />\n <strong class=\"mg-r-10\">Private Key:</strong>\n <code>{{ newCredential.private_key }}</code>\n </div>\n\n <table class=\"table mg-t-10\">\n <thead>\n <tr>\n <th scope=\"col\">Status</th>\n <th scope=\"col\">Public Id</th>\n <th scope=\"col\">Private Key</th>\n <th scope=\"col\">Created</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let cred of orgCredentials[portalConfig.config$.apiMode!]\">\n <th scope=\"row\">\n <span\n [ngClass]=\"{ 'badge-success': cred.status === 'active', 'badge-danger': cred.status === 'inactive' }\"\n class=\"badge\">{{ cred.status }}</span>\n </th>\n <td>\n {{ cred.id }}\n <i (mousedown)=\"copyPublicId(cred)\"\n ngbTooltip=\"Copy to Clipboard\"\n class=\"mg-l-2 cursor-pointer fas fa-clipboard\"></i>\n <i *ngIf=\"cred?.note\"\n [ngbTooltip]=\"cred.note\"\n class=\"mg-l-2 cursor-pointer fas fa-info-circle\"></i>\n </td>\n <td>\n <code>{{ cred.private_key || \"REDACTED\" }}</code>\n </td>\n <td>{{ cred.created_at | amDateFormat : \"LL\" }}</td>\n <td>\n <i (click)=\"showOrgCredentialEditorModal('edit', cred)\"\n placement=\"top\"\n ngbTooltip=\"Edit / Delete\"\n class=\"fas fa-ellipsis-v pl-2 pr-2 float-right cursor-pointer\"></i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Webhooks\n <button\n (click)=\"showOrgWebhookEditorModal('create')\"\n type=\"button\"\n class=\"btn btn-outline-indigo float-right\">Create Webhook</button>\n </h5>\n\n <div class=\"card-body\">\n <p>\n Set up your webhook endpoint to receive events from Fasten Connect or\n learn more about Webhooks.\n </p>\n\n <table class=\"table mg-t-10\">\n <thead>\n <tr>\n <th scope=\"col\">Status</th>\n <th scope=\"col\">Url</th>\n <th scope=\"col\">Events</th>\n <th scope=\"col\">Delivery Logs</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let webhook of orgWebhooks[portalConfig.config$.apiMode!]\">\n <th scope=\"row\">\n <span [ngClass]=\"{ 'badge-success': webhook.status === 'active', 'badge-danger': webhook.status === 'inactive' }\" class=\"badge\">{{ webhook.status }}</span>\n </th>\n <td>{{ webhook.endpoint_uri }}</td>\n <td>\n <span [ngbTooltip]=\"webhook?.event_types?.join(', ')\">\n {{ webhook?.event_types?.length }} event(s)\n </span>\n </td>\n <td>\n <a [routerLink]=\"'/developers/webhooks/' + webhook.id + '/logs'\">\n <i ngbTooltip=\"View Logs\" class=\"mg-l-2 cursor-pointer fas fa-list\"></i>\n </a>\n </td>\n <td>\n <i (click)=\"showOrgWebhookEditorModal('edit', webhook)\" placement=\"top\" ngbTooltip=\"Edit / Delete\"\n class=\"fas fa-ellipsis-v pl-2 pr-2 float-right cursor-pointer\"></i>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {ConnectService} from '../../services/connect.service';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {environment} from '../../../environments/environment';\n\n@Component({\n selector: 'app-org-billing',\n templateUrl: './org-billing.component.html',\n styleUrls: ['./org-billing.component.scss']\n})\nexport class OrgBillingComponent implements OnInit {\n\n\n stripe_customer_portal = environment.stripe_customer_portal;\n loading = false\n recentlyChanged = false\n\n constructor(\n public portalConfig: PortalConfigService,\n public connectService: ConnectService,\n ) { }\n\n ngOnInit(): void {\n //read query string parameters\n const urlParams = new URLSearchParams(window.location.search);\n const sessionId = urlParams.get('session_id');\n if(sessionId){\n this.recentlyChanged = true\n }\n }\n\n}\n","<div class=\"mg-t-10 container \">\n <nav class=\"mg-l-auto nav nav-pills flex-column flex-md-row\">\n <a class=\"nav-link\" data-bs-toggle=\"tab\" routerLink=\"/org/settings\">Details</a>\n <a class=\"nav-link\" data-bs-toggle=\"tab\" routerLink=\"/org/team\">Team</a>\n <a class=\"nav-link active\" data-bs-toggle=\"tab\" routerLink=\"/org/billing\">Billing</a>\n </nav>\n\n <ng-template #activePlan>\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Invoices & Payment Methods\n <a [href]=\"stripe_customer_portal\" class=\"btn btn-link float-right\">Visit the Billing Portal</a>\n </h5>\n <div class=\"card-body\">\n <p>Your account is active. You can view invoices and payment methods in the billing portal.</p>\n </div>\n </div>\n </div><!-- col -->\n </div>\n </ng-template>\n <div *ngIf=\"portalConfig.config$.org?.plan != 'paid'; else activePlan\" class=\"row\">\n <div class=\"col-12\">\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Inactive Account\n </h5>\n\n <div class=\"card-body\">\n <div class=\"row\">\n <div class=\"col-12 tx-gray-700\">\n <h5>No plan selected</h5>\n <p>\n Please contact <a href=\"mailto:[email protected]\">[email protected]</a> to activate your account. <br/>\n Inactive accounts may be purged after 30 days.\n </p>\n </div>\n </div>\n\n </div>\n\n </div>\n <div *ngIf=\"recentlyChanged\" class=\"alert alert-info mg-b-30\" role=\"alert\">\n <strong>Plan Changed!</strong> Your plan changed recently. It may take up to 24 hours to reflect plan changes in your organization profile.\n </div>\n\n </div>\n </div>\n\n\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {environment} from '../../../environments/environment';\nimport {ConnectService} from '../../services/connect.service';\nimport {URL_PATTERN} from '../../app.constants';\nimport {Organization} from '../../models/fasten/organization';\nimport {ImageCroppedEvent} from 'ngx-image-cropper';\nimport {LogoCropperComponent} from '../../components/logo-cropper/logo-cropper.component';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Component({\n selector: 'app-org-settings',\n templateUrl: './org-settings.component.html',\n styleUrls: ['./org-settings.component.scss']\n})\nexport class OrgSettingsComponent implements OnInit {\n loading: boolean = false\n\n urlPattern = URL_PATTERN\n\n submitted: boolean = false\n updateOrg: Organization = new Organization()\n errorMsg: string = \"\"\n\n croppedImage: any = '';\n croppedImageEvent: ImageCroppedEvent | null = null;\n\n constructor(\n public portalConfig: PortalConfigService,\n public connectService: ConnectService,\n private modalService: NgbModal,\n private sanitizer: DomSanitizer\n ) { }\n\n ngOnInit(): void {\n\n this.portalConfig.ConfigSubject.subscribe((config) => {\n this.updateOrg = {...config.org!}\n })\n\n }\n\n updateOrgSubmit(){\n this.loading = true\n this.submitted = true;\n\n console.log(\"starting update process...\",this.updateOrg)\n this.connectService.updateOrg(this.portalConfig.config$.org?.id!, this.updateOrg, this.croppedImageEvent?.blob).subscribe(\n (org) => {\n console.log(\"Organization Updated\", org)\n this.loading = false\n\n //update the org in the portal config\n this.portalConfig.config = {org: org}\n\n },\n (err) => {\n console.error(\"Error updating Organization\", err)\n this.errorMsg = err.error.message\n this.loading = false\n }\n )\n\n }\n\n openLogoCropper(){\n this.modalService.open(LogoCropperComponent).result.then(\n (result) => {\n this.croppedImageEvent = result\n this.croppedImage = this.sanitizer.bypassSecurityTrustUrl(this.croppedImageEvent?.objectUrl!);\n },\n (reason) => {\n console.log(`Dismissed`, reason);\n },\n );\n }\n}\n","<div class=\"mg-t-10 container \">\n <nav class=\"mg-l-auto nav nav-pills flex-column flex-md-row\">\n <a class=\"nav-link active\" data-bs-toggle=\"tab\" routerLink=\"/org/settings\">Details</a>\n <a class=\"nav-link\" data-bs-toggle=\"tab\" routerLink=\"/org/team\">Team</a>\n <a class=\"nav-link\" data-bs-toggle=\"tab\" routerLink=\"/org/billing\">Billing</a>\n </nav>\n\n\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Details\n </h5>\n\n <div class=\"card-body\">\n <form (ngSubmit)=\"updateOrgSubmit()\" #orgForm=\"ngForm\">\n\n <p>Use this form to update information about your Organization</p>\n\n\n <div class=\"row\">\n\n\n\n <div class=\"col-6\">\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Organization ID</label>\n <pre><code>{{updateOrg.id}}</code></pre>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Organization Name</label>\n <input [(ngModel)]=\"updateOrg.name\" name=\"name\" #name=\"ngModel\" required minlength=\"2\" type=\"text\" class=\"form-control\">\n\n <div *ngIf=\"name.invalid && (name.dirty || name.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"name.errors?.['required']\">\n Organization Name is required.\n </div>\n <div *ngIf=\"name.errors?.['minlength']\">\n Organization Name must be at least 2 characters long.\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Organization Logo</label>\n <br/>\n <div class=\"\">\n <img class=\"cursor-pointer mx-auto d-block rounded-circle border\" height=\"150px\" (click)=\"openLogoCropper()\" [src]=\"croppedImage || updateOrg.logo_uri || 'assets/images/missing_logo.jpg'\" alt=\"\">\n </div><!-- az-img-user -->\n </div><!-- form-group -->\n </div>\n <div class=\"col-6\">\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Organization Website</label>\n <input [(ngModel)]=\"updateOrg.website_uri\" name=\"website_uri\" #website_uri=\"ngModel\" required [pattern]=\"urlPattern\" class=\"form-control\" autocapitalize=\"none\">\n <div *ngIf=\"website_uri.invalid && (website_uri.dirty || website_uri.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"website_uri.errors?.['required']\">\n Website is required.\n </div>\n <div *ngIf=\"website_uri.errors?.['pattern']\">\n Website must be a valid url starting with https://\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Privacy Policy Url</label>\n <input [(ngModel)]=\"updateOrg.privacy_policy_uri\" name=\"privacy_policy_uri\" #privacy_policy_uri=\"ngModel\" required [pattern]=\"urlPattern\" class=\"form-control\">\n <div *ngIf=\"privacy_policy_uri.invalid && (privacy_policy_uri.dirty || privacy_policy_uri.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"privacy_policy_uri.errors?.['required']\">\n Privacy Policy Url is required.\n </div>\n <div *ngIf=\"privacy_policy_uri.errors?.['pattern']\">\n Privacy Policy must be a valid url starting with https://\n </div>\n </div>\n </div><!-- form-group -->\n\n <div class=\"form-group\">\n <label class=\"az-content-label tx-11 tx-medium tx-gray-600\">Terms & Conditions Url</label>\n <input [(ngModel)]=\"updateOrg.terms_and_conditions_uri\" name=\"terms_and_conditions_uri\" #terms_and_conditions_uri=\"ngModel\" [pattern]=\"urlPattern\" class=\"form-control\">\n <div *ngIf=\"terms_and_conditions_uri.invalid && (terms_and_conditions_uri.dirty || terms_and_conditions_uri.touched)\" class=\"alert alert-danger\">\n <div *ngIf=\"terms_and_conditions_uri.errors?.['pattern']\">\n Terms & Conditions must be a valid url starting with https://\n </div>\n </div>\n </div><!-- form-group -->\n </div>\n\n\n </div>\n\n <button [disabled]=\"!(orgForm.dirty && orgForm.form.valid) || loading\" type=\"submit\" class=\"btn btn-az-primary float-right\">\n Save Changes\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\n </button>\n\n <div *ngIf=\"errorMsg\" class=\"alert alert-danger mt-5\" role=\"alert\">\n <strong>Error</strong> {{errorMsg}}\n </div>\n\n </form>\n </div>\n\n </div>\n </div><!-- col -->\n\n\n </div>\n\n</div>\n\n <!--<div class=\"az-content az-content-profile\">-->\n<!-- <div class=\"container mn-ht-100p\">-->\n<!-- <div class=\"az-content-left az-content-left-profile\">-->\n\n<!-- <div class=\"az-profile-overview\">-->\n<!-- <div class=\"az-img-user\">-->\n<!-- <img src=\"{{portalConfig.config$.org?.logo_uri}}\" alt=\"\">-->\n<!-- </div><!– az-img-user –>-->\n<!-- <div class=\"d-flex justify-content-between mg-b-20\">-->\n<!-- <div>-->\n<!-- <h5 class=\"az-profile-name\">{{portalConfig.config$.org?.name}}</h5>-->\n<!-- <p class=\"az-profile-name-text\">{{portalConfig.config$.org?.plan}}</p>-->\n<!-- </div>-->\n<!-- </div>-->\n\n<!-- <div class=\"\">-->\n<!-- <ul>-->\n<!-- <li>-->\n<!-- <a [href]=\"portalConfig.config$.org?.privacy_policy_uri\" target=\"_blank\" class=\"az-link\">Privacy Policy</a>-->\n<!-- </li>-->\n<!-- <li>-->\n<!-- <a [href]=\"portalConfig.config$.org?.terms_and_conditions_uri\" target=\"_blank\" class=\"az-link\">Terms of Use</a>-->\n<!-- </li>-->\n<!-- </ul>-->\n<!-- </div>-->\n\n<!-- <hr class=\"mg-y-30\">-->\n\n<!-- </div><!– az-profile-overview –>-->\n\n<!-- </div><!– az-content-left –>-->\n<!-- <div class=\"az-content-body az-content-body-profile\">-->\n<!-- <div class=\"az-profile-body\">-->\n\n<!-- <div class=\"row mg-b-20\">-->\n\n<!-- <div class=\"col-12\">-->\n<!-- <div class=\"card mg-t-20\">-->\n<!-- <h5 class=\"card-header d-flex justify-content-between align-items-center\">-->\n<!-- Invoices & Payment Methods-->\n<!-- <a [href]=\"stripe_customer_portal\" class=\"btn btn-link float-right\">Please visit the Billing Portal</a>-->\n<!-- </h5>-->\n<!-- </div>-->\n\n<!-- </div>-->\n<!-- </div>-->\n\n<!-- <div class=\"row mg-b-20\">-->\n\n<!-- <div class=\"col-12\">-->\n<!-- <div class=\"mg-t-10\">-->\n<!-- <div *ngIf=\"recentlyChanged\" class=\"alert alert-info mg-b-30\" role=\"alert\">-->\n<!-- <button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">-->\n<!-- <span aria-hidden=\"true\">×</span>-->\n<!-- </button>-->\n<!-- <strong>Plan Changed!</strong> Your plan changed recently. It may take up to 24 hours to reflect plan changes in your organization profile.-->\n<!-- </div>-->\n\n\n<!-- <div class=\"card-deck\">-->\n<!-- <div class=\"card\">-->\n<!-- <img src=\"...\" class=\"card-img-top\" alt=\"...\">-->\n<!-- <div class=\"card-body\">-->\n<!-- <h5 class=\"card-title\">Card title</h5>-->\n<!-- <p class=\"card-text\">This is a longer card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>-->\n<!-- <p class=\"card-text\"><small class=\"text-muted\">Last updated 3 mins ago</small></p>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- <div class=\"card\">-->\n<!-- <img src=\"...\" class=\"card-img-top\" alt=\"...\">-->\n<!-- <div class=\"card-body\">-->\n<!-- <h5 class=\"card-title\">Card title</h5>-->\n<!-- <p class=\"card-text\">This card has supporting text below as a natural lead-in to additional content.</p>-->\n<!-- <p class=\"card-text\"><small class=\"text-muted\">Last updated 3 mins ago</small></p>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- <div class=\"card\">-->\n<!-- <img src=\"...\" class=\"card-img-top\" alt=\"...\">-->\n<!-- <div class=\"card-body\">-->\n<!-- <h5 class=\"card-title\">Card title</h5>-->\n<!-- <p class=\"card-text\">This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.</p>-->\n<!-- <p class=\"card-text\"><small class=\"text-muted\">Last updated 3 mins ago</small></p>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- </div>-->\n\n\n<!-- <div class=\"tab-pane active\" id=\"pricing-two-mnthly\" role=\"tabpanel\" aria-labelledby=\"pricing-two-mnthly-tab\">-->\n<!-- <div class=\"row\">-->\n<!-- <div class=\"offset-1 col-lg-5 mb-4\">-->\n<!-- <div class=\"card border-0 card-shadow h-100\">-->\n<!-- <div class=\"card-body p-4 p-xl-5\">-->\n<!-- <h4 class=\"mb-3\">Development</h4>-->\n<!-- <div class=\"d-flex align-items-center\">-->\n<!-- <h3 class=\"mb-0 mr-auto font-weight-bold\">Free</h3>-->\n<!-- </div>-->\n<!-- <h6 class=\"mb-4\">Monthly</h6>-->\n<!-- <button class=\"btn btn-indigo btn-block mb-4\" [disabled]=\"loading || portalConfig.config$.org?.plan != 'paid'\" >-->\n<!-- {{portalConfig.config$.org?.plan != 'paid' ? 'Current' : 'Change Plan'}}-->\n<!-- </button>-->\n<!-- <ul class=\"list-arrow mb-40px\">-->\n<!-- <li>Test mode only</li>-->\n<!-- <li>Sandbox EHR Integrations</li>-->\n<!-- <li>No live Patient Data</li>-->\n<!-- <li>Email Support</li>-->\n<!-- </ul>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- <div class=\"col-lg-5 mb-4\">-->\n<!-- <div class=\"card border-0 card-shadow h-100\">-->\n<!-- <div class=\"card-body p-4 p-xl-5\">-->\n<!-- <h4 class=\"mb-3\">Live</h4>-->\n<!-- <div class=\"d-flex align-items-center\">-->\n<!-- <h3 class=\"mb-0 mr-auto font-weight-bold\">$100.00</h3>-->\n<!-- </div>-->\n<!-- <h6 class=\"mb-4\">Minimum Monthly</h6>-->\n<!-- <button [disabled]=\"loading || portalConfig.config$.org?.plan == 'paid'\" (click)=\"onUpgradePlan()\" class=\"btn btn-indigo btn-block mb-4\">-->\n<!-- {{portalConfig.config$.org?.plan == 'paid' ? 'Current' : 'Upgrade Plan'}}-->\n\n<!-- <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>-->\n<!-- </button>-->\n<!-- <ul class=\"list-arrow mb-40px\">-->\n<!-- <li>Test & Live mode</li>-->\n<!-- <li>27,000+ EHR Integrations</li>-->\n<!-- <li>Live Patient Data</li>-->\n<!-- <li>Email & Live Chat Support</li>-->\n<!-- </ul>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- </div>-->\n<!-- </div>-->\n\n<!-- </div>-->\n<!-- </div>-->\n\n<!-- </div><!– row –>-->\n\n<!-- <hr class=\"mg-y-40\">-->\n\n<!-- <div class=\"mg-b-20\"></div>-->\n\n<!-- </div><!– az-profile-body –>-->\n<!-- </div><!– az-content-body –>-->\n<!-- </div><!– container –>-->\n<!--</div>-->\n\n","import { Component, OnInit } from '@angular/core';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {LogoCropperComponent} from '../../components/logo-cropper/logo-cropper.component';\nimport {OrgTeamInviteComponent} from '../../components/org-team-invite/org-team-invite.component';\nimport {ConnectService} from '../../services/connect.service';\nimport {OrganizationTeamMember} from '../../models/fasten/organization-team-member';\n\n@Component({\n selector: 'app-org-team',\n templateUrl: './org-team.component.html',\n styleUrls: ['./org-team.component.scss']\n})\nexport class OrgTeamComponent implements OnInit {\n\n teamMembers: OrganizationTeamMember[] = []\n\n constructor(\n private connectService: ConnectService,\n private modalService: NgbModal,\n public portalConfig: PortalConfigService,\n ) { }\n\n ngOnInit(): void {\n this.connectService.getOrgTeam(this.portalConfig.config$.user?.org_id!).subscribe((data) => {\n this.teamMembers = data\n })\n }\n\n openOrgTeamInviteModal(){\n this.modalService.open(OrgTeamInviteComponent).result.then(\n (result) => {\n console.log(`Closed with: ${result}`)\n },\n (reason) => {\n console.log(`Dismissed`, reason);\n },\n );\n }\n}\n","<div class=\"mg-t-10 container \">\n <nav class=\"mg-l-auto nav nav-pills flex-column flex-md-row\">\n <a class=\"nav-link\" data-bs-toggle=\"tab\" routerLink=\"/org/settings\">Details</a>\n <a class=\"nav-link active\" data-bs-toggle=\"tab\" routerLink=\"/org/team\">Team</a>\n <a class=\"nav-link\" data-bs-toggle=\"tab\" routerLink=\"/org/billing\">Billing</a>\n </nav>\n\n <div class=\"row\">\n <div class=\"col-12\">\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Team Members\n <button (click)=\"openOrgTeamInviteModal()\" class=\"btn btn-outline-indigo float-right text-indigo\">Invite new Member</button>\n </h5>\n\n <div class=\"card-body\">\n <p>Invite your colleagues to join your team.</p>\n <table class=\"table mg-t-10\">\n <thead>\n <tr>\n <th scope=\"col\">Status</th>\n <th scope=\"col\">Name</th>\n <th scope=\"col\">Email</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let member of teamMembers\">\n <th scope=\"row\">\n <span [ngClass]=\"{ 'badge-success': member.status === 'active', 'badge-warning': member.status === 'pending'}\" class=\"badge\">{{member.status}}</span>\n </th>\n <td>{{member.name}}</td>\n <td>{{member.email}}</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport {ConnectService} from '../../services/connect.service';\nimport {NgbModal} from '@ng-bootstrap/ng-bootstrap';\nimport {PortalConfigService} from '../../services/portal-config.service';\nimport {ActivatedRoute} from '@angular/router';\nimport {OrganizationWebhookDelivery} from '../../models/fasten/organization-webhook-delivery';\nimport {OrganizationWebhook} from '../../models/fasten/organization-webhook';\nimport {OrganizationCredential} from '../../models/fasten/organization-credential';\n\n@Component({\n selector: 'app-webhook-logs',\n templateUrl: './webhook-logs.component.html',\n styleUrls: ['./webhook-logs.component.scss']\n})\nexport class WebhookLogsComponent implements OnInit {\n\n showAllDeliveries = false\n webhookDeliveries: OrganizationWebhookDelivery[] = []\n webhook: OrganizationWebhook | null = null\n selectedWebhookDelivery: OrganizationWebhookDelivery | null = null\n\n constructor(\n private connectService: ConnectService,\n public portalConfig: PortalConfigService,\n private route: ActivatedRoute,\n ) { }\n\n ngOnInit(): void {\n let webhookId = this.route.snapshot.paramMap.get('webhookId')\n if (!webhookId) {\n return\n }\n\n this.connectService.getOrgWebhookDeliveries(this.portalConfig.config$.user?.org_id!, webhookId!).subscribe((data) => {\n console.log(\"Webhook Deliveries\", data)\n this.webhookDeliveries = (data.deliveries || []).reverse()\n this.webhook = data.webhook\n\n if (this.webhookDeliveries.length > 0) {\n this.selectedWebhookDelivery = this.webhookDeliveries[0]\n }\n\n })\n }\n\n public copySecretToken(secretToken: string | undefined) {\n if (!secretToken) {\n return\n }\n navigator.clipboard.writeText(secretToken);\n }\n}\n","<div class=\"mg-t-10 container mg-b-35\">\n <nav class=\"mg-l-auto nav nav-pills flex-column flex-md-row\">\n <a class=\"nav-link\" data-bs-toggle=\"tab\" [routerLink]=\"'developers/'\" >API Clients</a>\n <a class=\"nav-link active\" data-bs-toggle=\"tab\" href=\"#\">Logs</a>\n </nav>\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n {{webhook?.endpoint_uri}}\n<!-- <i placement=\"top\" ngbTooltip=\"Edit / Delete\" class=\"fas fa-ellipsis-v pl-2 pr-2 float-right cursor-pointer\"></i>-->\n </h5>\n\n <div class=\"card-body\">\n\n <div class=\"table-responsive\">\n <table class=\"table mg-b-0\">\n <thead>\n <tr>\n <th>Status</th>\n <th>API Mode</th>\n <th>Listening For</th>\n <th>Signing Secret</th>\n <th>Last Updated</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th scope=\"row\">\n <span [ngClass]=\"{ 'badge-success': webhook?.status === 'active', 'badge-danger': webhook?.status === 'inactive'}\" class=\"badge\">{{webhook?.status}}</span>\n </th>\n <th scope=\"row\">\n {{webhook?.api_mode}}\n </th>\n <td>\n <code [ngbTooltip]=\"webhook?.event_types?.join(', ')\">{{webhook?.event_types?.length}} event(s)</code>\n </td>\n <td>\n <a #revealBtn (click)=\"revealBtn.hidden = true; secret.hidden=false\" class=\"cursor-pointer\">reveal <i class=\"fas fa-lock\"></i></a>\n <span hidden #secret>{{webhook?.secret_token}} <i (mousedown)=\"copySecretToken(webhook?.secret_token)\" ngbTooltip=\"Copy to Clipboard\" class=\"mg-l-2 cursor-pointer fas fa-clipboard\"></i></span>\n </td>\n <td>{{webhook?.updated_at | amDateFormat:'LL'}}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n </div>\n\n </div>\n\n <div class=\"card mg-t-20\">\n <h5 class=\"card-header d-flex justify-content-between align-items-center\">\n Delivery Logs\n </h5>\n <div class=\"card-body\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-6 bd-r\">\n <div class=\"list-group\">\n <a *ngFor=\"let delivery of (showAllDeliveries ? webhookDeliveries : (webhookDeliveries|slice:0:15))\" [ngClass]=\"{'active': selectedWebhookDelivery?.timestamp_event_id == delivery?.timestamp_event_id}\" (click)=\"selectedWebhookDelivery = delivery\" class=\"cursor-pointer list-group-item list-group-item-action bd-x-0 bd-y-0\">\n <span [ngClass]=\"{ 'badge-success': delivery?.status === 'success', 'badge-danger': delivery?.status === 'failure'}\" class=\"badge mg-r-2 \">\n <i [ngClass]=\"{ 'fa-check': delivery?.status === 'success', 'fa-times': delivery?.status === 'failure'}\" class=\"fas\"></i>\n </span>\n\n {{delivery.event_payload.type}} <span [ngbTooltip]=\"delivery?.created_at | amDateFormat:'YYYY-MM-DD HH:mm'\" class=\"float-right\">{{delivery?.created_at | amTimeAgo}}</span>\n </a>\n <div *ngIf=\"webhookDeliveries.length == 0\">\n <div class=\"alert alert-info mg-t-10\" role=\"alert\">\n No webhook deliveries yet.\n </div>\n </div>\n </div>\n <button class=\"btn btn-outline-indigo btn-block\" *ngIf=\"(webhookDeliveries?.length || 0) > 15\" (click)=\"showAllDeliveries = !showAllDeliveries\">{{ showAllDeliveries ? 'Show Less' : 'Show More' }}</button>\n </div>\n <div class=\"col-6\">\n\n <div>\n <strong>Response</strong>\n <pre *ngIf=\"!!selectedWebhookDelivery; else waitingResponse\"><code [languages]=\"['https']\" [highlight]=\"(selectedWebhookDelivery?.http_response || '')\"></code></pre>\n\n </div>\n <hr/>\n <div>\n <strong>Request</strong>\n <pre *ngIf=\"!!selectedWebhookDelivery; else waitingResponse\"><code [languages]=\"['json']\" [highlight]=\"selectedWebhookDelivery?.event_payload | json\"></code></pre>\n </div>\n <ng-template #waitingResponse>\n <div class=\"alert alert-info mg-t-10\" role=\"alert\">\n Waiting for delivery...\n </div>\n </ng-template>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n</div>\n","import { Injectable, Injector } from '@angular/core';\nimport {HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Router} from '@angular/router';\nimport {Observable, of, throwError} from 'rxjs';\nimport {catchError} from 'rxjs/operators';\nimport {AuthService} from './auth.service';\nimport {environment} from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\n\n// based on https://stackoverflow.com/questions/46017245/how-to-handle-unauthorized-requestsstatus-with-401-or-403-with-new-httpclient\nexport class AuthInterceptorService implements HttpInterceptor {\n\n constructor(private authService: AuthService, private router: Router) { }\n\n private handleAuthError(err: HttpErrorResponse): Observable<any> {\n //handle your auth error or rethrow\n if (err.status === 401 || err.status === 403) {\n //navigate /delete cookies or whatever\n this.authService.Signout()\n this.router.navigateByUrl(`/auth/signin`);\n // if you've caught / handled the error, you don't want to rethrow it unless you also want downstream consumers to have to handle it as well.\n return of(err.message); // or EMPTY may be appropriate here\n }\n return throwError(err);\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n console.log(\"Intercepting Request\", req)\n\n //only intercept requests to the fasten API & lighthouse, all other requests should be sent as-is\n let reqUrl = new URL(req.url)\n let lighthouseUrl = new URL(environment.lighthouse_api_endpoint_base)\n let apiUrl = new URL(environment.connect_api_endpoint_base)\n\n if(\n !((reqUrl.origin == apiUrl.origin && reqUrl.pathname.startsWith(apiUrl.pathname)) ||\n (reqUrl.origin == lighthouseUrl.origin && reqUrl.pathname.startsWith(lighthouseUrl.pathname)))\n ){\n return next.handle(req)\n }\n\n // Clone the request and ensure that cookies are sent\n const authReq = req.clone({withCredentials: true});\n // catch the error, make specific functions for catching specific errors and you can chain through them with more catch operators\n return next.handle(authReq).pipe(catchError(x=> this.handleAuthError(x))); //here use an arrow function, otherwise you may get \"Cannot read property 'navigate' of undefined\" on angular 4.4.2/net core 2/webpack 2.70\n }\n}\n","import {Inject, Injectable} from '@angular/core';\nimport {User} from '../models/fasten/user';\nimport {environment} from '../../environments/environment';\nimport {HttpClient} from '@angular/common/http';\nimport {ResponseWrapper} from '../models/response-wrapper';\nimport {BehaviorSubject} from 'rxjs';\nimport * as jose from 'jose'\nimport {PortalConfigService} from './portal-config.service';\n\nexport const FASTEN_AUTH_COOKIE_NAME = 'fasten_connect_auth'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n\n public IsAuthenticatedSubject = new BehaviorSubject<boolean>(false)\n\n constructor(private _httpClient: HttpClient, private portalConfigService: PortalConfigService) {}\n\n /**\n * Signup (and Signin) both require an \"online\" user.\n * @param newUser\n * @constructor\n */\n public async SignupWithInvite(newUser: User, inviteToken: string): Promise<any> {\n let queryParams = {\n \"token\": inviteToken\n }\n\n let resp = await this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/auth/invite`, newUser, { withCredentials: true, params:queryParams }).toPromise()\n console.log(resp)\n return resp\n }\n /**\n * Signup (and Signin) both require an \"online\" user.\n * @param newUser\n * @constructor\n */\n public async Signup(newUser?: User): Promise<any> {\n let resp = await this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/auth/signup`, newUser, { withCredentials: true }).toPromise()\n console.log(resp)\n return resp\n }\n\n public async Signin(email: string, pass: string): Promise<any> {\n let currentUser = new User()\n currentUser.email = email\n currentUser.password = pass\n let resp = await this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/auth/login`, currentUser, { withCredentials: true }).toPromise()\n return resp\n }\n\n public async Signout(): Promise<any> {\n this.publishAuthenticationState(false)\n return this.deleteCookie(FASTEN_AUTH_COOKIE_NAME)\n // // let remotePouchDb = new PouchDB(this.getRemoteUserDb(localStorage.getItem(\"current_user\")), {skip_setup: true});\n // if(this.pouchDb){\n // await this.pouchDb.logOut()\n // }\n // await this.Close()\n }\n\n\n // User has requested a password reset. This is the first step in the process.\n public async UserResetRequest(userEmail: string): Promise<any> {\n let payload = {\n \"email\": userEmail\n }\n\n let resp = await this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/auth/reset/request`, payload, { }).toPromise()\n console.log(resp)\n return resp\n }\n\n // Complete the password reset process. This is the second step in the process.\n public async UserReset(newPassword: string, inviteToken: string): Promise<any> {\n let queryParams = {\n \"token\": inviteToken\n }\n\n let payload = {\n \"password\": newPassword\n }\n\n let resp = await this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/auth/reset`, payload, { withCredentials: true, params:queryParams }).toPromise()\n console.log(resp)\n return resp\n }\n\n public async GetJWTPayload(): Promise<any> {\n let authToken = this.getCookie(FASTEN_AUTH_COOKIE_NAME)\n if (!authToken) {\n return null\n }\n let jwks = jose.createRemoteJWKSet(new URL(environment.jwks_uri))\n let issuerHost = environment.connect_api_jwt_issuer_host\n\n try {\n //audience and issuer must be the same. This token is only valid on the fasten connect api\n const {payload, protectedHeader} = await jose.jwtVerify(authToken, jwks, {\n issuer: issuerHost,\n audience: issuerHost,\n })\n // @ts-ignore\n this.portalConfigService.config = {user: payload}\n return payload\n } catch (e) {\n console.error(\"failed to verify jwt:\", e, issuerHost)\n return null\n }\n }\n\n public async IsAuthenticated(): Promise<boolean> {\n let payload = await this.GetJWTPayload()\n let isAuthenticated = payload != null\n this.publishAuthenticationState(isAuthenticated)\n return isAuthenticated\n }\n\n //https://stackoverflow.com/questions/34298133/angular-cookies\n private getCookie(name: string): string {\n const ca: Array<string> = decodeURIComponent(document.cookie).split(';');\n const caLen: number = ca.length;\n const cookieName = `${name}=`;\n let c: string;\n\n for (let i = 0; i < caLen; i += 1) {\n c = ca[i].replace(/^\\s+/g, '');\n if (c.indexOf(cookieName) === 0) {\n return c.substring(cookieName.length, c.length);\n }\n }\n return '';\n }\n\n private deleteCookie(name: string) {\n this.setCookie(name, '', -99999); // - 1 was not far back enough to actually remove the cookie, this sets the time before the epoch and will cause the cookie to be deleted.\n }\n private setCookie(name: string, value: string, expireDays: number, path: string = '') {\n const d: Date = new Date();\n d.setTime(d.getTime() + expireDays * 24 * 60 * 60 * 1000);\n const expires = `expires=${d.toUTCString()}`;\n const cpath = path ? `; path=${path}` : '';\n document.cookie = `${name}=${value}; ${expires}${cpath}; SameSite=Lax`;\n }\n\n private publishAuthenticationState(authenticated: boolean){\n if(this.IsAuthenticatedSubject.value != authenticated){\n this.IsAuthenticatedSubject.next(authenticated)\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { ResponseWrapper } from '../models/response-wrapper';\nimport { environment } from '../../environments/environment';\nimport { Organization } from '../models/fasten/organization';\nimport { map, Observable } from 'rxjs';\nimport { ApiMode, CRUDMode } from '../app.constants';\nimport { OrganizationCredential } from '../models/fasten/organization-credential';\nimport { OrganizationWebhook } from '../models/fasten/organization-webhook';\nimport { OrganizationWebhookDelivery } from '../models/fasten/organization-webhook-delivery';\nimport { OrganizationTeamMember } from '../models/fasten/organization-team-member';\nimport { User } from \"../models/fasten/user\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConnectService {\n\n constructor(private _httpClient: HttpClient) { }\n\n\n\n public updateUser(oldPass: string, oldEmail: string, newEmail: string, newPass: string = \"\"): Observable<User> {\n const userUpdateJson = JSON.stringify({\n email: oldEmail,\n password: oldPass,\n newEmail: newEmail,\n newPassword: newPass\n });\n return this._httpClient.put<ResponseWrapper>(`${environment.connect_api_endpoint_base}/user`, userUpdateJson)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Updated User\", response)\n\n return response.data as User;\n })\n );\n }\n\n /**\n * Create a new organization and associate it with the current User\n * @param newOrg\n * @param logoBlob\n * @constructor\n */\n public createOrg(newOrg: Organization, logoBlob: Blob): Observable<ResponseWrapper> {\n const formData = new FormData();\n\n //add the org data to the form data\n const orgJson = JSON.stringify(newOrg);\n const orgJsonBlob = new Blob([orgJson], {\n type: 'application/json'\n });\n formData.append(\"org\", orgJsonBlob);\n formData.append(\"logo\", logoBlob);\n\n let resp = this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org`, formData)\n console.log(resp)\n return resp\n }\n\n\n public updateOrg(orgId: string, updateOrg: Organization, logoBlob?: Blob | null): Observable<Organization> {\n const formData = new FormData();\n\n //add the org data to the form data\n const orgJson = JSON.stringify(updateOrg);\n const orgJsonBlob = new Blob([orgJson], {\n type: 'application/json'\n });\n formData.append(\"org\", orgJsonBlob);\n if (logoBlob) {\n formData.append(\"logo\", logoBlob);\n }\n return this._httpClient.put<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}`, formData)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Updated Organization\", response)\n return response.data as Organization;\n })\n );\n }\n\n public getOrg(orgId: String): Observable<Organization> {\n return this._httpClient.get<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization\", response)\n return response.data as Organization;\n })\n );\n }\n\n public sendOrgInvite(orgId: string, recipientEmail: string): Observable<ResponseWrapper> {\n return this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/invite`, {\n recipient_email_address: recipientEmail,\n org_id: orgId\n })\n }\n\n public getOrgTeam(orgId: string): Observable<OrganizationTeamMember[]> {\n return this._httpClient.get<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/team`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Team\", response)\n return response.data as OrganizationTeamMember[];\n })\n );\n }\n\n public createOrgCredentials(orgId: string, apiMode: ApiMode, redirectUrl: string, note: string): Observable<{ action: CRUDMode, org_credential: OrganizationCredential, private_key: string }> {\n return this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials`, {\n api_mode: apiMode,\n redirect_uri: redirectUrl,\n note: note\n })\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Credential\", response)\n response.data.action = CRUDMode.Create\n return response.data as { action: CRUDMode, org_credential: OrganizationCredential, private_key: string };\n })\n );\n }\n public updateOrgCredential(orgId: string, orgCredentialId: string, redirectUrl: string, note: string): Observable<{ action: CRUDMode, org_credential: OrganizationCredential }> {\n return this._httpClient.put<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials/${orgCredentialId}`, {\n redirect_uri: redirectUrl,\n note: note\n })\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Credential\", response)\n return { action: CRUDMode.Update, org_credential: response.data } as { action: CRUDMode, org_credential: OrganizationCredential };\n })\n );\n }\n\n public deleteOrgCredential(orgId: string, orgCredentialId: string): Observable<{ action: CRUDMode, org_credential: OrganizationCredential }> {\n return this._httpClient.delete<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials/${orgCredentialId}`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Deleted Organization Credential\", response)\n return { action: CRUDMode.Delete, org_credential: response.data } as { action: CRUDMode, org_credential: OrganizationCredential };\n })\n );\n }\n\n public getOrgCredentials(orgId: string): Observable<OrganizationCredential[]> {\n return this._httpClient.get<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/credentials`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Credentials\", response)\n return response.data as OrganizationCredential[];\n })\n );\n }\n\n\n public createOrgWebhooks(orgId: string, apiMode: ApiMode, endpointUri: string, status: string): Observable<{ action: CRUDMode, org_webhook: OrganizationWebhook }> {\n return this._httpClient.post<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/webhooks`, {\n api_mode: apiMode,\n endpoint_uri: endpointUri,\n status: status\n })\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Credential\", response)\n return { action: CRUDMode.Create, org_webhook: response.data };\n })\n );\n }\n\n public deleteOrgWebhook(orgId: string, orgWebhookId: string): Observable<{ action: CRUDMode, org_webhook: OrganizationWebhook }> {\n return this._httpClient.delete<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/webhooks/${orgWebhookId}`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Deleted Organization Webhook\", response)\n return { action: CRUDMode.Delete, org_webhook: response.data };\n })\n );\n }\n\n public updateOrgWebhook(orgId: string, orgWebhookId: string, endpointUri: string, status: string): Observable<{ action: CRUDMode, org_webhook: OrganizationWebhook }> {\n return this._httpClient.put<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/webhooks/${orgWebhookId}`, {\n endpoint_uri: endpointUri,\n status: status\n })\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Webhook\", response)\n return { action: CRUDMode.Update, org_webhook: response.data };\n })\n );\n }\n\n public getOrgWebhooks(orgId: string): Observable<OrganizationWebhook[]> {\n return this._httpClient.get<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/webhooks`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Organization Webhooks\", response)\n return response.data as OrganizationWebhook[];\n })\n );\n }\n\n public getOrgWebhookDeliveries(orgId: string, orgWebhookId: string): Observable<{ webhook: OrganizationWebhook, deliveries: OrganizationWebhookDelivery[] }> {\n return this._httpClient.get<ResponseWrapper>(`${environment.connect_api_endpoint_base}/org/${orgId}/webhooks/${orgWebhookId}/deliveries`)\n .pipe(\n map((response: ResponseWrapper) => {\n console.log(\"Webhooks Deliveries\", response)\n return response.data as { webhook: OrganizationWebhook, deliveries: OrganizationWebhookDelivery[] };\n })\n );\n }\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {PortalConfig, portalConfigDefaults} from '../models/portal-config';\nimport {merge} from 'lodash';\nimport {ApiMode} from '../app.constants';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PortalConfigService {\n // Private\n public ConfigSubject: BehaviorSubject<PortalConfig>;\n private _defaultConfig: PortalConfig;\n constructor() {\n this._defaultConfig = portalConfigDefaults\n this.ConfigSubject = new BehaviorSubject(this._defaultConfig);\n }\n\n\n // -----------------------------------------------------------------------------------------------------\n // @ Accessors\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Setter & getter for config\n */\n set config(value: PortalConfig) {\n // get the current config, merge the new values, and then submit.\n const mergedSettings = merge({}, this.ConfigSubject.getValue(), value);\n\n // Store the value\n if(JSON.stringify(mergedSettings) !== JSON.stringify(this.ConfigSubject.getValue())){\n console.log('updating settings:', mergedSettings)\n this.ConfigSubject.next(mergedSettings);\n }\n }\n\n get config$(): PortalConfig {\n console.log('using cached settings:', this.ConfigSubject.getValue())\n return this.ConfigSubject.getValue()\n }\n\n // -----------------------------------------------------------------------------------------------------\n // @ Public methods\n // -----------------------------------------------------------------------------------------------------\n\n /**\n * Resets the config to the default\n */\n reset(): void {\n // Set the config\n this.config = this._defaultConfig\n }\n\n toggleApiMode(): void {\n this.config = {\n apiMode: this.config$.apiMode === 'live' ? ApiMode.Test : ApiMode.Live\n }\n }\n}\n","export const environment = {\n name: \"development\",\n\n //specify the lighthouse base that we're going to use to authenticate against all our source/providers. Must not have trailing slash\n lighthouse_api_endpoint_base: 'https://lighthouse.fastenhealth.com',\n\n //used to specify the api server that we're going to use (can be relative or absolute). Must not have trailing slash\n // connect_api_endpoint_base: 'https://api.connect-dev.fastenhealth.com/v1',\n // if relative, must start with /\n connect_api_endpoint_base: 'https://api.connect-dev.fastenhealth.com/v1',\n connect_api_jwt_issuer_host: 'https://api.connect-dev.fastenhealth.com/v1',\n\n jwks_uri: 'https://cdn.fastenhealth.com/jwks/fasten-connect/dev.json',\n\n //Stripe pricing table (Test mode in Dev)\n stripe_customer_portal: 'https://billing.stripe.com/p/login/test_bIY7thbZL5g6gXC000'\n // stripe_customer_portal: 'https://billing.stripe.com/p/login/dR6aEYe5h4AYe2I144'\n};\n","// this file is automatically generated by git.version.ts script\nexport const versionInfo = {\n version: 'dev',\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.name != \"local\") {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n","var map = {\n\t\"./af\": 58685,\n\t\"./af.js\": 58685,\n\t\"./ar\": 254,\n\t\"./ar-dz\": 4312,\n\t\"./ar-dz.js\": 4312,\n\t\"./ar-kw\": 32614,\n\t\"./ar-kw.js\": 32614,\n\t\"./ar-ly\": 18630,\n\t\"./ar-ly.js\": 18630,\n\t\"./ar-ma\": 28674,\n\t\"./ar-ma.js\": 28674,\n\t\"./ar-ps\": 46235,\n\t\"./ar-ps.js\": 46235,\n\t\"./ar-sa\": 49032,\n\t\"./ar-sa.js\": 49032,\n\t\"./ar-tn\": 24730,\n\t\"./ar-tn.js\": 24730,\n\t\"./ar.js\": 254,\n\t\"./az\": 53052,\n\t\"./az.js\": 53052,\n\t\"./be\": 60150,\n\t\"./be.js\": 60150,\n\t\"./bg\": 63069,\n\t\"./bg.js\": 63069,\n\t\"./bm\": 13466,\n\t\"./bm.js\": 13466,\n\t\"./bn\": 18516,\n\t\"./bn-bd\": 90557,\n\t\"./bn-bd.js\": 90557,\n\t\"./bn.js\": 18516,\n\t\"./bo\": 26273,\n\t\"./bo.js\": 26273,\n\t\"./br\": 9588,\n\t\"./br.js\": 9588,\n\t\"./bs\": 19815,\n\t\"./bs.js\": 19815,\n\t\"./ca\": 83331,\n\t\"./ca.js\": 83331,\n\t\"./cs\": 21320,\n\t\"./cs.js\": 21320,\n\t\"./cv\": 72219,\n\t\"./cv.js\": 72219,\n\t\"./cy\": 68266,\n\t\"./cy.js\": 68266,\n\t\"./da\": 66427,\n\t\"./da.js\": 66427,\n\t\"./de\": 67435,\n\t\"./de-at\": 52871,\n\t\"./de-at.js\": 52871,\n\t\"./de-ch\": 12994,\n\t\"./de-ch.js\": 12994,\n\t\"./de.js\": 67435,\n\t\"./dv\": 82357,\n\t\"./dv.js\": 82357,\n\t\"./el\": 95649,\n\t\"./el.js\": 95649,\n\t\"./en-au\": 59961,\n\t\"./en-au.js\": 59961,\n\t\"./en-ca\": 19878,\n\t\"./en-ca.js\": 19878,\n\t\"./en-gb\": 3924,\n\t\"./en-gb.js\": 3924,\n\t\"./en-ie\": 70864,\n\t\"./en-ie.js\": 70864,\n\t\"./en-il\": 91579,\n\t\"./en-il.js\": 91579,\n\t\"./en-in\": 30940,\n\t\"./en-in.js\": 30940,\n\t\"./en-nz\": 16181,\n\t\"./en-nz.js\": 16181,\n\t\"./en-sg\": 44301,\n\t\"./en-sg.js\": 44301,\n\t\"./eo\": 85291,\n\t\"./eo.js\": 85291,\n\t\"./es\": 54529,\n\t\"./es-do\": 53764,\n\t\"./es-do.js\": 53764,\n\t\"./es-mx\": 12584,\n\t\"./es-mx.js\": 12584,\n\t\"./es-us\": 63425,\n\t\"./es-us.js\": 63425,\n\t\"./es.js\": 54529,\n\t\"./et\": 35203,\n\t\"./et.js\": 35203,\n\t\"./eu\": 70678,\n\t\"./eu.js\": 70678,\n\t\"./fa\": 83483,\n\t\"./fa.js\": 83483,\n\t\"./fi\": 96262,\n\t\"./fi.js\": 96262,\n\t\"./fil\": 52521,\n\t\"./fil.js\": 52521,\n\t\"./fo\": 34555,\n\t\"./fo.js\": 34555,\n\t\"./fr\": 63131,\n\t\"./fr-ca\": 88239,\n\t\"./fr-ca.js\": 88239,\n\t\"./fr-ch\": 21702,\n\t\"./fr-ch.js\": 21702,\n\t\"./fr.js\": 63131,\n\t\"./fy\": 267,\n\t\"./fy.js\": 267,\n\t\"./ga\": 23821,\n\t\"./ga.js\": 23821,\n\t\"./gd\": 71753,\n\t\"./gd.js\": 71753,\n\t\"./gl\": 4074,\n\t\"./gl.js\": 4074,\n\t\"./gom-deva\": 92762,\n\t\"./gom-deva.js\": 92762,\n\t\"./gom-latn\": 5969,\n\t\"./gom-latn.js\": 5969,\n\t\"./gu\": 82809,\n\t\"./gu.js\": 82809,\n\t\"./he\": 45402,\n\t\"./he.js\": 45402,\n\t\"./hi\": 315,\n\t\"./hi.js\": 315,\n\t\"./hr\": 10410,\n\t\"./hr.js\": 10410,\n\t\"./hu\": 38288,\n\t\"./hu.js\": 38288,\n\t\"./hy-am\": 67928,\n\t\"./hy-am.js\": 67928,\n\t\"./id\": 71334,\n\t\"./id.js\": 71334,\n\t\"./is\": 86959,\n\t\"./is.js\": 86959,\n\t\"./it\": 34864,\n\t\"./it-ch\": 51124,\n\t\"./it-ch.js\": 51124,\n\t\"./it.js\": 34864,\n\t\"./ja\": 36141,\n\t\"./ja.js\": 36141,\n\t\"./jv\": 29187,\n\t\"./jv.js\": 29187,\n\t\"./ka\": 42136,\n\t\"./ka.js\": 42136,\n\t\"./kk\": 94332,\n\t\"./kk.js\": 94332,\n\t\"./km\": 18607,\n\t\"./km.js\": 18607,\n\t\"./kn\": 84305,\n\t\"./kn.js\": 84305,\n\t\"./ko\": 70234,\n\t\"./ko.js\": 70234,\n\t\"./ku\": 16003,\n\t\"./ku-kmr\": 19619,\n\t\"./ku-kmr.js\": 19619,\n\t\"./ku.js\": 16003,\n\t\"./ky\": 75061,\n\t\"./ky.js\": 75061,\n\t\"./lb\": 32786,\n\t\"./lb.js\": 32786,\n\t\"./lo\": 66183,\n\t\"./lo.js\": 66183,\n\t\"./lt\": 50029,\n\t\"./lt.js\": 50029,\n\t\"./lv\": 24169,\n\t\"./lv.js\": 24169,\n\t\"./me\": 68577,\n\t\"./me.js\": 68577,\n\t\"./mi\": 68177,\n\t\"./mi.js\": 68177,\n\t\"./mk\": 50337,\n\t\"./mk.js\": 50337,\n\t\"./ml\": 65260,\n\t\"./ml.js\": 65260,\n\t\"./mn\": 52325,\n\t\"./mn.js\": 52325,\n\t\"./mr\": 14695,\n\t\"./mr.js\": 14695,\n\t\"./ms\": 75334,\n\t\"./ms-my\": 37151,\n\t\"./ms-my.js\": 37151,\n\t\"./ms.js\": 75334,\n\t\"./mt\": 63570,\n\t\"./mt.js\": 63570,\n\t\"./my\": 97963,\n\t\"./my.js\": 97963,\n\t\"./nb\": 88028,\n\t\"./nb.js\": 88028,\n\t\"./ne\": 86638,\n\t\"./ne.js\": 86638,\n\t\"./nl\": 50302,\n\t\"./nl-be\": 66782,\n\t\"./nl-be.js\": 66782,\n\t\"./nl.js\": 50302,\n\t\"./nn\": 33501,\n\t\"./nn.js\": 33501,\n\t\"./oc-lnc\": 50563,\n\t\"./oc-lnc.js\": 50563,\n\t\"./pa-in\": 50869,\n\t\"./pa-in.js\": 50869,\n\t\"./pl\": 65302,\n\t\"./pl.js\": 65302,\n\t\"./pt\": 49687,\n\t\"./pt-br\": 74884,\n\t\"./pt-br.js\": 74884,\n\t\"./pt.js\": 49687,\n\t\"./ro\": 79107,\n\t\"./ro.js\": 79107,\n\t\"./ru\": 33627,\n\t\"./ru.js\": 33627,\n\t\"./sd\": 30355,\n\t\"./sd.js\": 30355,\n\t\"./se\": 83427,\n\t\"./se.js\": 83427,\n\t\"./si\": 11848,\n\t\"./si.js\": 11848,\n\t\"./sk\": 54590,\n\t\"./sk.js\": 54590,\n\t\"./sl\": 20184,\n\t\"./sl.js\": 20184,\n\t\"./sq\": 56361,\n\t\"./sq.js\": 56361,\n\t\"./sr\": 78965,\n\t\"./sr-cyrl\": 81287,\n\t\"./sr-cyrl.js\": 81287,\n\t\"./sr.js\": 78965,\n\t\"./ss\": 25456,\n\t\"./ss.js\": 25456,\n\t\"./sv\": 70451,\n\t\"./sv.js\": 70451,\n\t\"./sw\": 77558,\n\t\"./sw.js\": 77558,\n\t\"./ta\": 51356,\n\t\"./ta.js\": 51356,\n\t\"./te\": 73693,\n\t\"./te.js\": 73693,\n\t\"./tet\": 21243,\n\t\"./tet.js\": 21243,\n\t\"./tg\": 42500,\n\t\"./tg.js\": 42500,\n\t\"./th\": 55768,\n\t\"./th.js\": 55768,\n\t\"./tk\": 77761,\n\t\"./tk.js\": 77761,\n\t\"./tl-ph\": 35780,\n\t\"./tl-ph.js\": 35780,\n\t\"./tlh\": 29590,\n\t\"./tlh.js\": 29590,\n\t\"./tr\": 33807,\n\t\"./tr.js\": 33807,\n\t\"./tzl\": 93857,\n\t\"./tzl.js\": 93857,\n\t\"./tzm\": 60654,\n\t\"./tzm-latn\": 8806,\n\t\"./tzm-latn.js\": 8806,\n\t\"./tzm.js\": 60654,\n\t\"./ug-cn\": 30845,\n\t\"./ug-cn.js\": 30845,\n\t\"./uk\": 19232,\n\t\"./uk.js\": 19232,\n\t\"./ur\": 47052,\n\t\"./ur.js\": 47052,\n\t\"./uz\": 77967,\n\t\"./uz-latn\": 32233,\n\t\"./uz-latn.js\": 32233,\n\t\"./uz.js\": 77967,\n\t\"./vi\": 98615,\n\t\"./vi.js\": 98615,\n\t\"./x-pseudo\": 12320,\n\t\"./x-pseudo.js\": 12320,\n\t\"./yo\": 31313,\n\t\"./yo.js\": 31313,\n\t\"./zh-cn\": 64490,\n\t\"./zh-cn.js\": 64490,\n\t\"./zh-hk\": 55910,\n\t\"./zh-hk.js\": 55910,\n\t\"./zh-mo\": 98262,\n\t\"./zh-mo.js\": 98262,\n\t\"./zh-tw\": 44223,\n\t\"./zh-tw.js\": 44223\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["ActivatedRouteSnapshot","RouterStateSnapshot","Router","IsAuthenticatedAuthGuard","constructor","authService","router","canActivate","route","state","_this","_asyncToGenerator","jwtPayload","GetJWTPayload","navigate","org_id","console","log","i0","ɵɵinject","i1","AuthService","i2","factory","ɵfac","User","environment","BehaviorSubject","jose","FASTEN_AUTH_COOKIE_NAME","_httpClient","portalConfigService","IsAuthenticatedSubject","SignupWithInvite","newUser","inviteToken","queryParams","resp","post","connect_api_endpoint_base","withCredentials","params","toPromise","Signup","_this2","Signin","email","pass","_this3","currentUser","password","Signout","_this4","publishAuthenticationState","deleteCookie","UserResetRequest","userEmail","_this5","payload","UserReset","newPassword","_this6","_this7","authToken","getCookie","jwks","createRemoteJWKSet","URL","jwks_uri","issuerHost","connect_api_jwt_issuer_host","protectedHeader","jwtVerify","issuer","audience","config","user","e","error","IsAuthenticated","_this8","isAuthenticated","name","ca","decodeURIComponent","document","cookie","split","caLen","length","cookieName","c","i","replace","indexOf","substring","setCookie","value","expireDays","path","d","Date","setTime","getTime","expires","toUTCString","cpath","authenticated","next","HttpClient","PortalConfigService","providedIn"],"sourceRoot":"webpack:///","x_google_ignoreList":[53]}