{"version":3,"file":"js/app_assets_third-party_mapsvg_js_mapsvg_js.68629aaeacbcac55651c.js","mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAIA,MAAM,GAAG,EAAb;AACAC,MAAM,CAACD,MAAP,GAAgBA,MAAhB;AACAA,MAAM,CAACE,eAAP,GAAyB,EAAzB,EAGA;;AACA,IAAI,EAAE,YAAYC,OAAO,CAACC,SAAtB,CAAJ,EAAsC;EAClCD,OAAO,CAACC,SAAR,CAAkBC,MAAlB,GAA2B,YAAW;IAClC,IAAI,KAAKC,UAAT,EAAqB;MACjB,KAAKA,UAAL,CAAgBC,WAAhB,CAA4B,IAA5B;IACH;EACJ,CAJD;AAKH;;AAEDC,IAAI,CAACC,KAAL,GAAaD,IAAI,CAACC,KAAL,IAAc,YAAW;EAC9B,IAAIC,CAAC,GAAG,CAAR;EACA,IAAIC,MAAM,GAAGC,SAAS,CAACD,MAAvB;;EAEA,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,MAApB,EAA4BE,CAAC,EAA7B,EAAiC;IAC7B,IAAID,SAAS,CAACC,CAAD,CAAT,KAAiBC,QAAjB,IAA6BF,SAAS,CAACC,CAAD,CAAT,KAAiB,CAACC,QAAnD,EAA6D;MACzD,OAAOA,QAAP;IACH;;IACDJ,CAAC,IAAIE,SAAS,CAACC,CAAD,CAAT,GAAeD,SAAS,CAACC,CAAD,CAA7B;EACH;;EACD,OAAOL,IAAI,CAACO,IAAL,CAAUL,CAAV,CAAP;AACH,CAXL;;AAYAM,UAAU,CAACZ,SAAX,CAAqBa,qBAArB,GAA6CD,UAAU,CAACZ,SAAX,CAAqBa,qBAArB,IAA8C,UAASC,SAAT,EAAoB;EACvG,OAAOA,SAAS,CAACC,YAAV,GAAyBC,OAAzB,GAAmCC,QAAnC,CAA4C,KAAKF,YAAL,EAA5C,CAAP;AACH,CAFL;;AAKA,CAAC,UAASG,CAAT,EAAYrB,MAAZ,EAAoBD,MAApB,EAA4BQ,IAA5B,EAAiC;EAG9BR,MAAM,CAACuB,YAAP,GAAsB,UAASC,OAAT,EAAkBC,QAAlB,EAA4B;IAE9C,IAAIC,KAAK,GAAG,IAAZ;;IAEAA,KAAK,CAACF,OAAN,GAAsBA,OAAtB;IACAE,KAAK,CAACD,QAAN,GAAsBA,QAAtB;IAEA,IAAKE,MAAM,GAAGC,QAAQ,CAACC,gBAAgB,CAACL,OAAD,CAAjB,CAAtB;;IACA,IAAGM,KAAK,CAACH,MAAD,CAAR,EAAkB;MAAEA,MAAM,GAAG,CAAT;IAAa;;IAAA;IACjCA,MAAM;IAEND,KAAK,CAACK,MAAN,GAAeC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAf;IACAP,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBC,QAAnB,GAA8B,UAA9B;IACAT,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBE,IAAnB,GAA0B,KAA1B;IACAV,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBG,GAAnB,GAAyB,KAAzB;IACAX,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBI,KAAnB,GAA2B,KAA3B;IACAZ,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBK,MAAnB,GAA4B,KAA5B;IACAb,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBM,QAAnB,GAA8B,QAA9B;IACAd,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBP,MAAnB,GAA4BA,MAA5B;IACAD,KAAK,CAACK,MAAN,CAAaG,KAAb,CAAmBO,UAAnB,GAAgC,QAAhC;IAEA,IAAKC,WAAW,GAAGV,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAnB;IACAS,WAAW,CAACR,KAAZ,CAAkBC,QAAlB,GAA6B,UAA7B;IACAO,WAAW,CAACR,KAAZ,CAAkBE,IAAlB,GAAyB,KAAzB;IACAM,WAAW,CAACR,KAAZ,CAAkBG,GAAlB,GAAwB,KAAxB;IACAK,WAAW,CAACR,KAAZ,CAAkBS,KAAlB,GAA0B,YAA1B;IACAD,WAAW,CAACR,KAAZ,CAAkBU,MAAlB,GAA2B,YAA3B;;IACAlB,KAAK,CAACK,MAAN,CAAac,WAAb,CAAyBH,WAAzB;;IAEAhB,KAAK,CAACoB,MAAN,GAAed,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAf;IACAP,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBC,QAAnB,GAA8B,UAA9B;IACAT,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBE,IAAnB,GAA0B,KAA1B;IACAV,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBG,GAAnB,GAAyB,KAAzB;IACAX,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBI,KAAnB,GAA2B,KAA3B;IACAZ,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBK,MAAnB,GAA4B,KAA5B;IACAb,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBM,QAAnB,GAA8B,QAA9B;IACAd,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBP,MAAnB,GAA4BA,MAA5B;IACAD,KAAK,CAACoB,MAAN,CAAaZ,KAAb,CAAmBO,UAAnB,GAAgC,QAAhC;IAEA,IAAKM,WAAW,GAAaf,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAA7B;IACAc,WAAW,CAACb,KAAZ,CAAkBC,QAAlB,GAA6B,UAA7B;IACAY,WAAW,CAACb,KAAZ,CAAkBE,IAAlB,GAA6B,KAA7B;IACAW,WAAW,CAACb,KAAZ,CAAkBG,GAAlB,GAA6B,KAA7B;IACAU,WAAW,CAACb,KAAZ,CAAkBS,KAAlB,GAA6B,MAA7B;IACAI,WAAW,CAACb,KAAZ,CAAkBU,MAAlB,GAA6B,MAA7B;;IACAlB,KAAK,CAACoB,MAAN,CAAaD,WAAb,CAAyBE,WAAzB;;IAEArB,KAAK,CAACF,OAAN,CAAcqB,WAAd,CAA0BnB,KAAK,CAACK,MAAhC;;IACAL,KAAK,CAACF,OAAN,CAAcqB,WAAd,CAA0BnB,KAAK,CAACoB,MAAhC;;IAEA,IAAKE,IAAI,GAAGxB,OAAO,CAACyB,qBAAR,EAAZ;IAEAvB,KAAK,CAACwB,YAAN,GAAsBF,IAAI,CAACL,KAA3B;IACAjB,KAAK,CAACyB,aAAN,GAAsBH,IAAI,CAACJ,MAA3B;;IAEAlB,KAAK,CAAC0B,SAAN;;IAEA1B,KAAK,CAACK,MAAN,CAAasB,gBAAb,CAA8B,QAA9B,EAAwC,YAAU;MAAC3B,KAAK,CAAC4B,QAAN;IAAiB,CAApE;;IACA5B,KAAK,CAACoB,MAAN,CAAaO,gBAAb,CAA8B,QAA9B,EAAwC,YAAU;MAAC3B,KAAK,CAAC4B,QAAN;IAAiB,CAApE;EACH,CA3DD;;EA4DAtD,MAAM,CAACuB,YAAP,CAAoBnB,SAApB,CAA8BkD,QAA9B,GAAyC,YAAU;IAC/C,IAAI5B,KAAK,GAAG,IAAZ;;IACA,IAAKsB,IAAI,GAAGtB,KAAK,CAACF,OAAN,CAAcyB,qBAAd,EAAZ;;IAEA,IAAKM,QAAQ,GAAGP,IAAI,CAACL,KAArB;IACA,IAAKa,SAAS,GAAGR,IAAI,CAACJ,MAAtB;;IAEA,IAAGW,QAAQ,IAAI7B,KAAK,CAACwB,YAAlB,IAAkCM,SAAS,IAAI9B,KAAK,CAACyB,aAAxD,EAAuE;MACnEzB,KAAK,CAACwB,YAAN,GAAqBK,QAArB;MACA7B,KAAK,CAACyB,aAAN,GAAsBK,SAAtB;;MACA9B,KAAK,CAACD,QAAN;IACH;;IAED,KAAK2B,SAAL;EACH,CAdD;;EAeApD,MAAM,CAACuB,YAAP,CAAoBnB,SAApB,CAA8BgD,SAA9B,GAA0C,YAAU;IAChD,KAAKrB,MAAL,CAAY0B,UAAZ,GAAyB,QAAzB;IACA,KAAK1B,MAAL,CAAY2B,SAAZ,GAAyB,QAAzB;IACA,KAAKZ,MAAL,CAAYW,UAAZ,GAAyB,QAAzB;IACA,KAAKX,MAAL,CAAYY,SAAZ,GAAyB,QAAzB;EACH,CALD;;EAMA1D,MAAM,CAACuB,YAAP,CAAoBnB,SAApB,CAA8BuD,OAA9B,GAAwC,YAAU;IAC9C,KAAK5B,MAAL,CAAY1B,MAAZ;IACA,KAAKyC,MAAL,CAAYzC,MAAZ;EACH,CAHD;;EAKAL,MAAM,CAAC4D,SAAP,GAAmBC,SAAS,CAACD,SAAV,CAAoBE,WAApB,EAAnB,CAzF8B,CA2F9B;;EACA9D,MAAM,CAAC+D,WAAP,GACK/D,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,MAAzB,IAAmC,CAAC,CAArC,IACChE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,QAAzB,IAAqC,CAAC,CADvC,IAEChE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,MAAzB,IAAmC,CAAC,CAFrC,IAGChE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,SAAzB,IAAsC,CAAC,CAJ5C;EAMAhE,MAAM,CAACiE,GAAP,GACKjE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,MAAzB,IAAmC,CAAC,CAArC,IACChE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,QAAzB,IAAqC,CAAC,CADvC,IAEChE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,MAAzB,IAAmC,CAAC,CAHzC;EAKAhE,MAAM,CAACkE,OAAP,GAAiBlE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,SAAzB,CAAjB,CAvG8B,CAyG9B;;EACAhE,MAAM,CAACmE,OAAP,GAAiBlE,MAAM,CAACmE,UAAP,CAAkB,oCAAlB,EAAwDC,OAAzE;EAEArE,MAAM,CAACsE,OAAP,GAAiB,EAAjB;EACAtE,MAAM,CAACsE,OAAP,CAAeC,EAAf,GAAoBvE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,MAAzB,IAAmC,CAAC,CAApC,IAAyChE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,SAAzB,IAAsC,CAAC,CAAhF,IAAqFhE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,MAAzB,IAAmC,CAAC,CAAzH,GAA6H,EAA7H,GAAkI,KAAtJ;EACAhE,MAAM,CAACsE,OAAP,CAAeE,OAAf,GAAyBxE,MAAM,CAAC4D,SAAP,CAAiBI,OAAjB,CAAyB,SAAzB,IAAsC,CAAC,CAAhE;;EAEA,IAAI,CAACS,MAAM,CAACrE,SAAP,CAAiBsE,IAAtB,EAA4B;IACxBD,MAAM,CAACrE,SAAP,CAAiBsE,IAAjB,GAAsB,YAAU;MAAC,OAAO,KAAKC,OAAL,CAAa,YAAb,EAA2B,EAA3B,CAAP;IAAuC,CAAxE;EACH,CAlH6B,CAoH9B;;;EACA3E,MAAM,CAAC4E,WAAP,GAAqB,UAASC,CAAT,EAAW;IAC5B,IAAGA,CAAC,CAACC,OAAL,EAAa;MACT,OAAO;QAAC,KAAID,CAAC,CAACC,OAAF,GAAYxD,CAAC,CAACU,QAAD,CAAD,CAAYyB,UAAZ,EAAjB;QAA2C,KAAIoB,CAAC,CAACE,OAAF,GAAYzD,CAAC,CAACU,QAAD,CAAD,CAAY0B,SAAZ;MAA3D,CAAP;IACH;;IAAA,IAAGmB,CAAC,CAACG,KAAL,EAAW;MACR,OAAO;QAAC,KAAIH,CAAC,CAACG,KAAP;QAAc,KAAIH,CAAC,CAACI;MAApB,CAAP;IACH,CAFA,MAEK,IAAGjF,MAAM,CAAC+D,WAAV,EAAsB;MACxBc,CAAC,GAAGA,CAAC,CAACK,aAAF,IAAmBL,CAAvB;MACA,OAAOA,CAAC,CAACM,OAAF,IAAaN,CAAC,CAACM,OAAF,CAAU,CAAV,CAAb,GACP;QAAC,KAAIN,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAlB;QAAyB,KAAIH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF;MAA1C,CADO,GAEP;QAAC,KAAIJ,CAAC,CAACO,cAAF,CAAiB,CAAjB,EAAoBJ,KAAzB;QAAgC,KAAIH,CAAC,CAACO,cAAF,CAAiB,CAAjB,EAAoBH;MAAxD,CAFA;IAGH;EACJ,CAXD;;EAcAjF,MAAM,CAACqF,GAAP,GAAa,UAASC,KAAT,EAAe;IACxB,OAAOC,MAAM,CAAC,SAAD,CAAN,CAAkBC,EAAlB,CAAqBF,KAArB,EAA4BG,MAA5B,EAAP;EACH,CAFD;;EAKAzF,MAAM,CAAC0F,MAAP,GAAgB,UAASC,GAAT,EAAcC,IAAd,EAAoB;IAChCD,GAAG,CAACvF,SAAJ,GAAgByF,MAAM,CAACC,MAAP,CAAcF,IAAI,CAACxF,SAAnB,CAAhB;IACAuF,GAAG,CAACvF,SAAJ,CAAc2F,WAAd,GAA4BJ,GAA5B;EACH,CAHD;;EAKA3F,MAAM,CAACgG,OAAP,GAAiB,UAASC,MAAT,EAAgB;IAC7B,OAAOA,MAAM,CAACC,MAAP,CAAc,CAAd,EAAiBC,WAAjB,KAA+BF,MAAM,CAACG,KAAP,CAAa,CAAb,CAAtC;EACH,CAFD;;EAGApG,MAAM,CAACqG,YAAP,GAAsB,UAAUJ,MAAV,EAAkB;IACpC,QAAQxB,MAAM,CAACwB,MAAD,CAAN,CAAenC,WAAf,EAAR;MACI,KAAK,IAAL;MACA,KAAK,MAAL;MACA,KAAK,GAAL;MACA,KAAK,KAAL;MACA,KAAK,GAAL;QACI,OAAO,IAAP;;MACJ,KAAK,KAAL;MACA,KAAK,OAAL;MACA,KAAK,GAAL;MACA,KAAK,IAAL;MACA,KAAK,GAAL;QACI,OAAO,KAAP;;MACJ;QACI,OAAOwC,SAAP;IAdR;EAgBH,CAjBD;;EAkBAtG,MAAM,CAACuG,QAAP,GAAkB,UAASC,CAAT,EAAY;IAC1B,OAAO,CAAC1E,KAAK,CAAC2E,UAAU,CAACD,CAAD,CAAX,CAAN,IAAyBE,QAAQ,CAACF,CAAD,CAAxC;EACH,CAFD;;EAIAxG,MAAM,CAAC2G,OAAP,GAAiB,UAASC,GAAT,EAAa;IAC1B,IAAGA,GAAG,CAAC5C,OAAJ,CAAY,SAAZ,KAA0B,CAA1B,IAA+B4C,GAAG,CAAC5C,OAAJ,CAAY,UAAZ,KAA2B,CAA7D,EACI4C,GAAG,GAAG,OAAKA,GAAG,CAACC,KAAJ,CAAU,KAAV,EAAiBC,GAAjB,EAAX;IACJ,OAAOF,GAAG,CAACjC,OAAJ,CAAY,eAAZ,EAA6B,EAA7B,CAAP;EACH,CAJD;;EAMA3E,MAAM,CAAC+G,aAAP,GAAuB,UAASC,GAAT,EAAc;IACjC;IACA,IAAIf,MAAM,GAAG,EAAb,CAFiC,CAIjC;IACA;IACA;IACA;IACA;IACA;;IACA,IAAIe,GAAG,IAAIV,SAAX,EAAsB;MAClB,OAAO7B,MAAM,CAACuC,GAAD,CAAb;IACH,CAFD,MAEO,IAAI,QAAOA,GAAP,KAAe,QAAf,IAA4BA,GAAG,CAACC,IAAJ,IAAYX,SAA5C,EAAwD;MAC3D,IAAIY,IAAJ;;MACA,KAAKA,IAAL,IAAaF,GAAb,EAAkB;QACd,IAAIA,GAAG,CAACG,cAAJ,CAAmBD,IAAnB,CAAJ,EAA6B;UACzB,IAAIE,GAAG,GAAGF,IAAI,CAACG,MAAL,CAAY,YAAZ,MAA8B,CAAC,CAA/B,GAAoCH,IAApC,GAA2C,MAAIA,IAAI,CAACvC,OAAL,CAAa,GAAb,EAAiB,KAAjB,CAAJ,GAA4B,GAAjF;UACAsB,MAAM,CAACqB,IAAP,CAAYF,GAAG,GAAG,IAAN,GAAapH,MAAM,CAAC+G,aAAP,CAAqBC,GAAG,CAACE,IAAD,CAAxB,CAAzB;QACH;MACJ;;MACD,OAAO,MAAMjB,MAAM,CAACgB,IAAP,CAAY,GAAZ,CAAN,GAAyB,GAAhC,CAR2D,CAU3D;IACH,CAXM,MAWA,IAAI,QAAOD,GAAP,KAAe,QAAf,IAA2B,EAAEA,GAAG,CAACC,IAAJ,IAAYX,SAAd,CAA/B,EAAyD;MAC5D,IAAIY,IAAJ;;MACA,KAAIA,IAAJ,IAAYF,GAAZ,EAAiB;QACbf,MAAM,CAACqB,IAAP,CAAYtH,MAAM,CAAC+G,aAAP,CAAqBC,GAAG,CAACE,IAAD,CAAxB,CAAZ;MACH;;MACD,OAAO,MAAMjB,MAAM,CAACgB,IAAP,CAAY,GAAZ,CAAN,GAAyB,GAAhC,CAL4D,CAO5D;IACH,CARM,MAQA,IAAI,OAAOD,GAAP,IAAe,UAAnB,EAA+B;MAClCf,MAAM,CAACqB,IAAP,CAAYN,GAAG,CAACO,QAAJ,GAAe5C,OAAf,CAAuB,oBAAvB,EAA4C,UAA5C,CAAZ,EADkC,CAGlC;IACH,CAJM,MAIA;MACH,IAAI6C,CAAC,GAAGC,IAAI,CAACC,SAAL,CAAeV,GAAf,CAAR;MACAf,MAAM,CAACqB,IAAP,CAAYE,CAAZ;IACH;;IAED,OAAOvB,MAAM,CAACgB,IAAP,CAAY,GAAZ,CAAP;EACH,CAzCD;EA4CA;AACJ;AACA;;;EACIjH,MAAM,CAAC2H,UAAP,GAAoB,UAASC,OAAT,EAAiB;IACjC,KAAKC,SAAL,GAA4BD,OAAO,CAACC,SAApC;IACA,KAAKC,MAAL,GAA4BF,OAAO,CAACE,MAApC;IACA,KAAKC,QAAL,GAA4BH,OAAO,CAACG,QAApC;IACA,KAAKC,UAAL,GAA4BJ,OAAO,CAACI,UAAR,KAAuB1B,SAAvB,GAAmC,IAAnC,GAA0CsB,OAAO,CAACI,UAA9E;IACA,KAAKC,WAAL,GAA4BL,OAAO,CAACK,WAAR,KAAwB3B,SAAxB,GAAoC,IAApC,GAA2CsB,OAAO,CAACK,WAA/E;IACA,KAAKC,UAAL,GAA4BlI,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACM,UAA5B,CAA5B;IACA,KAAKC,SAAL,GAA4B;MACxBC,OAAO,EAAE,KAAKC,kBAAL,EADe;MAExBC,IAAI,EAAE,KAAKC,eAAL;IAFkB,CAA5B;IAIA,KAAKC,IAAL,GAA4BZ,OAAO,CAACY,IAApC;IACA,KAAK7F,KAAL,GAAaiF,OAAO,CAACjF,KAArB;IACA,KAAK8F,KAAL,GAAab,OAAO,CAACa,KAArB;IACA,KAAKC,MAAL,GAAc,EAAd;;IACA,IAAGd,OAAO,CAACc,MAAX,EAAkB;MACf,KAAI,IAAI7H,CAAR,IAAa+G,OAAO,CAACc,MAArB,EAA6B;QACzB,IAAG,OAAOd,OAAO,CAACc,MAAR,CAAe7H,CAAf,CAAP,IAA4B,UAA/B,EAA0C;UACtC,KAAK6H,MAAL,CAAY7H,CAAZ,IAAiB+G,OAAO,CAACc,MAAR,CAAe7H,CAAf,CAAjB;QACH;MACJ;IACH;;IACD,KAAK8H,KAAL;EACH,CAvBD;;EAwBA3I,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BwI,WAA5B,GAA0C,YAAU;IAChD,IAAIlH,KAAK,GAAG,IAAZ;;IACAA,KAAK,CAACmH,YAAN;;IACA,IAAG,KAAKX,UAAR,EAAmB;MACfxG,KAAK,CAACoH,YAAN;;MACA,KAAKC,YAAL,CAAkB3F,SAAlB;IACH;EACJ,CAPD;;EAQApD,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4B4I,aAA5B,GAA+C,YAAU,CAAE,CAA3D;;EACAhJ,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4B6I,gBAA5B,GAA+C,YAAU,CAAE,CAA3D;;EACAjJ,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4B8I,YAA5B,GAA+C,YAAU;IACrD,IAAG,KAAKlB,UAAR,EACI,KAAKa,YAAL;EACP,CAHD;;EAIA7I,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4ByI,YAA5B,GAA2C,YAAU;IACjD,IAAInH,KAAK,GAAG,IAAZ;;IACA,KAAKyH,WAAL,CAAiBC,YAAjB,CAA8B;MAACC,oBAAoB,EAAE,IAAvB;MAA6BC,kBAAkB,EAAE;IAAjD,CAA9B;IACAC,UAAU,CAAC,YAAU;MACjB7H,KAAK,CAACyH,WAAN,CAAkBC,YAAlB,CAA+B;QAACC,oBAAoB,EAAE,IAAvB;QAA6BC,kBAAkB,EAAE;MAAjD,CAA/B;IACH,CAFS,EAER,GAFQ,CAAV;EAGH,CAND;;EAQAtJ,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4B0I,YAA5B,GAA2C,YAAW;IAClD,IAAIpH,KAAK,GAAG,IAAZ;;IACAA,KAAK,CAACmG,SAAN,CAAgBjF,MAAhB,CAAuBlB,KAAK,CAACmG,SAAN,CAAgB2B,IAAhB,CAAqB,qBAArB,EAA4CC,WAA5C,KAA0D/H,KAAK,CAACgI,WAAN,CAAkBD,WAAlB,EAAjF;EACH,CAHD;;EAKAzJ,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BuJ,IAA5B,GAAmC,YAAU,CAAE,CAA/C;;EAEA3J,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BuI,KAA5B,GAAoC,YAAU;IAC1C,IAAIjH,KAAK,GAAG,IAAZ;;IACAA,KAAK,CAACkI,MAAN;;IACAlI,KAAK,CAACiI,IAAN;EACH,CAJD;;EAKA3J,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BiI,kBAA5B,GAAiD,YAAU;IACvD,OAAO,EAAP;EACH,CAFD;;EAGArI,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BmI,eAA5B,GAA8C,YAAU;IACpD,OAAO,KAAKR,QAAZ;EACH,CAFD;;EAIA/H,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BwJ,MAA5B,GAAqC,YAAU;IAE3C,IAAIlI,KAAK,GAAG,IAAZ;;IACA,KAAKmI,IAAL,GAAevI,CAAC,CAAC,SAAD,CAAD,CAAawI,IAAb,CAAkB,IAAlB,EAAuB,uBAAqB,KAAKC,IAAjD,EAAuDC,QAAvD,CAAgE,wBAAhE,CAAf,CAH2C,CAK3C;;IACA,KAAKb,WAAL,GAAsB7H,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,6BAAtB,CAAtB;IACA,KAAKC,YAAL,GAAuB3I,CAAC,CAAC,SAAD,CAAxB,CAP2C,CAS3C;;IACA,KAAK4I,YAAL,GAAuB5I,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,oBAAtB,CAAvB;IACA,KAAKG,WAAL,GAAsB7I,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,gCAAtB,CAAtB;IACA,KAAKE,YAAL,CAAkBE,MAAlB,CAAyB,KAAKD,WAA9B;;IAEA,IAAG,KAAKnC,UAAR,EAAmB;MACf,KAAKmB,WAAL,CAAiBa,QAAjB,CAA0B,MAA1B;MACA,KAAKC,YAAL,CAAkBD,QAAlB,CAA2B,cAA3B;IACH;;IACD,KAAKb,WAAL,CAAiBiB,MAAjB,CAAwB,KAAKH,YAA7B;IACA,KAAKA,YAAL,CAAkBG,MAAlB,CAAyB,KAAKF,YAA9B,EAnB2C,CAqB3C;;IACA,IAAG,KAAK/B,SAAL,CAAeC,OAAlB,EAA0B;MACtB,KAAKsB,WAAL,GAAmBpI,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,gCAAtB,CAAnB;MACA,KAAKH,IAAL,CAAUO,MAAV,CAAiB,KAAKV,WAAtB;IACH;;IAED,KAAKG,IAAL,CAAUO,MAAV,CAAiB,KAAKjB,WAAtB,EA3B2C,CA6B3C;;IACA,KAAKtB,SAAL,CAAeuC,MAAf,CAAsB,KAAKP,IAA3B;IACA,KAAKhC,SAAL,CAAeW,IAAf,CAAoB,YAApB,EAAkC,IAAlC;IAEA,IAAG,KAAK7F,KAAR,EACI,KAAKkH,IAAL,CAAUQ,GAAV,CAAc;MAAC1H,KAAK,EAAE,KAAKA;IAAb,CAAd;IACJ,IAAG,KAAK8F,KAAR,EACI,KAAKoB,IAAL,CAAUQ,GAAV,CAAc;MAAC,oBAAoB,KAAK5B;IAA1B,CAAd;;IAEJ/G,KAAK,CAAC4I,eAAN;;IACA,KAAKC,MAAL;IAEAhB,UAAU,CAAC,YAAU;MACjB7H,KAAK,CAACwH,YAAN;;MACAxH,KAAK,CAACkH,WAAN;;MACAlH,KAAK,CAAC8I,sBAAN;;MACA9I,KAAK,CAAC+I,gBAAN;IACH,CALS,EAKR,CALQ,CAAV;EAMH,CA/CD;;EAiDAzK,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BkK,eAA5B,GAA8C,YAAU;IACpD,IAAI5I,KAAK,GAAG,IAAZ;;IACA,IAAGA,KAAK,CAACwG,UAAT,EAAoB;MAChBxG,KAAK,CAACqH,YAAN,GAAqB,IAAI/I,MAAM,CAACuB,YAAX,CAAwB,KAAK2I,YAAL,CAAkB,CAAlB,CAAxB,EAA8C,YAAU;QACzExI,KAAK,CAACoH,YAAN;;QACApH,KAAK,CAACmH,YAAN;;QACAnH,KAAK,CAACgH,MAAN,CAAa,QAAb,KAA0BhH,KAAK,CAACgH,MAAN,CAAa,QAAb,EAAuBgC,IAAvB,CAA4BhJ,KAA5B,EAAmCA,KAAK,CAACoG,MAAzC,CAA1B;MACH,CAJoB,CAArB;IAKH;EACJ,CATD;;EAWA9H,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BmK,MAA5B,GAAqC,YAAU;IAE3C,KAAKJ,WAAL,CAAiBQ,IAAjB,CAAuB,KAAKxC,SAAL,CAAeG,IAAtC;IAEA,IAAG,KAAKH,SAAL,CAAeC,OAAlB,EACI,KAAKsB,WAAL,CAAiBiB,IAAjB,CAAuB,KAAKxC,SAAL,CAAeC,OAAtC;IAEJ,KAAKwC,cAAL;IAEA,IAAG,KAAKC,SAAR,EACI,KAAKV,WAAL,CAAiBE,GAAjB,CAAqB;MAACS,OAAO,EAAE;IAAV,CAArB;IAEJ,IAAG,KAAK9C,UAAR,EACI,KAAKa,YAAL;EACP,CAdD;;EAeA7I,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BwK,cAA5B,GAA6C,YAAU;IACnD,IAAIlJ,KAAK,GAAG,IAAZ;;IACAA,KAAK,CAACyH,WAAN,CAAkBkB,GAAlB,CAAsB;MAAC,OAAO3I,KAAK,CAACgI,WAAN,CAAkBD,WAAlB,CAA8B,IAA9B,IAAoC;IAA5C,CAAtB;;IAEAF,UAAU,CAAC,YAAU;MACjB7H,KAAK,CAACyH,WAAN,CAAkBkB,GAAlB,CAAsB;QAAC,OAAO3I,KAAK,CAACgI,WAAN,CAAkBD,WAAlB,CAA8B,IAA9B,IAAoC;MAA5C,CAAtB;IACH,CAFS,EAER,GAFQ,CAAV;EAGH,CAPD;;EASAzJ,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BoK,sBAA5B,GAAqD,YAAU,CAE9D,CAFD;;EAGAxK,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BqK,gBAA5B,GAA+C,YAAU,CACxD,CADD;;EAEAzK,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BuD,OAA5B,GAAsC,YAAU;IAC5C,KAAKkG,IAAL,CAAUkB,KAAV,GAAkB1K,MAAlB;;IACA,IAAG,KAAK0I,YAAR,EAAqB;MACjB,KAAKA,YAAL,CAAkBpF,OAAlB;IACH;EACJ,CALD;EAQA;AACJ;AACA;;;EACI3D,MAAM,CAACgL,mBAAP,GAA6B,UAASpD,OAAT,EAAiB;IAC1C,KAAKqD,QAAL,GAAgBrD,OAAO,CAACqD,QAAxB;IACA,KAAKJ,SAAL,GAAiB,IAAjB;IACA,KAAK1I,QAAL,GAAgByF,OAAO,CAACzF,QAAxB;IACA,KAAKkF,MAAL,GAAcO,OAAO,CAACP,MAAtB;IACA,KAAK6D,OAAL,GAAetD,OAAO,CAACsD,OAAvB;IACAlL,MAAM,CAAC2H,UAAP,CAAkB+C,IAAlB,CAAuB,IAAvB,EAA6B9C,OAA7B;EACH,CAPD;;EAQA5H,MAAM,CAAC0F,MAAP,CAAc1F,MAAM,CAACgL,mBAArB,EAA0ChL,MAAM,CAAC2H,UAAjD;;EAEA3H,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCiI,kBAArC,GAA0D,YAAU;IAChE,IAAI3G,KAAK,GAAG,IAAZ;;IAEA,IAAIyJ,CAAC,GAAG,4CAAR,CAHgE,CAIhE;;IAEA,IAAG,KAAK9D,MAAR,EAAe;MACX8D,CAAC,IAAO,oDAAR;MACAA,CAAC,IAAO,4FAAR;MACAA,CAAC,IAAO,QAAR;IACH;;IAEDA,CAAC,IAAO,kDAAR;IACAA,CAAC,IAAO,QAAR;IACAA,CAAC,IAAO,QAAR;IAEA,OAAOA,CAAP;EACH,CAjBD;;EAmBAnL,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCwI,WAArC,GAAmD,YAAW;IAE1D,IAAIlH,KAAK,GAAG,IAAZ;;IACA,KAAK0J,OAAL,GAAe9J,CAAC,CAAC,sEAAsE,KAAKwG,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8B0D,UAA9B,CAAyCC,SAA/G,GAA2H,QAA5H,CAAhB;IACA,KAAKC,MAAL,GAAelK,CAAC,CAAC,oEAAsE,KAAKwG,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8B0D,UAA9B,CAAyCG,QAA/G,GAA2H,QAA5H,CAAhB,CAJ0D,CAM1D;;IACA,KAAKD,MAAL,CAAYxB,QAAZ,CAAqB,QAArB;IACA,KAAKnC,SAAL,CAAemC,QAAf,CAAwB,QAAxB;IAEA,KAAK0B,aAAL,GAAqBpK,CAAC,CAAC,2CAAD,CAAtB;IACA,KAAKoK,aAAL,CAAmBtB,MAAnB,CAA0B,KAAKgB,OAA/B,EAAwC,KAAKI,MAA7C;IAEA,IAAG,KAAK1D,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8B+D,IAA9B,CAAmCC,EAAnC,KAA0C,KAA7C,EACI,KAAKF,aAAL,CAAmBG,WAAnB,CAA+B,KAAK/D,MAAL,CAAYuD,OAAZ,GAAsBS,KAArD;IAEJ,KAAKpD,MAAL,IAAe,KAAKA,MAAL,CAAY,OAAZ,CAAf,IAAuC,KAAKA,MAAL,CAAY,OAAZ,EAAqBgC,IAArB,CAA0B,KAAKb,IAA/B,CAAvC;;IAEA,IAAG,KAAK/B,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8BsD,OAA9B,IAAyC,KAAKpD,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8BsD,OAA9B,CAAsCU,EAAlF,EAAqF;MACjFlK,KAAK,CAACqK,UAAN;IACH;;IAED,IAAG,KAAKjE,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8BoE,MAA9B,CAAqCC,eAAxC,EAAwD;MACpD,KAAKvC,WAAL,CAAiBW,GAAjB,CAAqB;QAAC,oBAAmB,KAAKvC,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8BoE,MAA9B,CAAqCC;MAAzD,CAArB;IACH;EACJ,CAzBD;;EA2BAjM,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCqK,gBAArC,GAAwD,YAAU;IAE9D,IAAI/I,KAAK,GAAG,IAAZ;;IACA,IAAIwK,KAAK,GAAGxK,KAAK,CAACoG,MAAN,CAAauD,OAAb,EAAZ;;IAEA/J,CAAC,CAACrB,MAAD,CAAD,CAAU2L,EAAV,CAAa,QAAb,EAAsB,YAAU;MAC5BlK,KAAK,CAACkJ,cAAN;IACH,CAFD;IAIA,KAAKf,IAAL,CAAU+B,EAAV,CAAa,mBAAb,EAAkC,0BAAlC,EAA6D,YAAY;MACrE,IAAIpD,IAAI,GAAG;QAACnB,MAAM,EAAE/F,CAAC,CAAC,IAAD,CAAD,CAAQ6K,GAAR;MAAT,CAAX;MACA,IAAGzK,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B+D,IAA/B,CAAoCS,cAAvC,EACI5D,IAAI,CAAC4D,cAAL,GAAsB,IAAtB;;MACJ1K,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsB7D,IAAtB;IACH,CALD;IAOA,KAAK4C,OAAL,CAAaQ,EAAb,CAAgB,OAAhB,EAAyB,YAAU;MAC/BlK,KAAK,CAAC4K,MAAN,CAAa,IAAb,EAD+B,CAE/B;MACA;MACA;MACA;MACA;;IACH,CAPD;IAQA,KAAKd,MAAL,CAAYI,EAAZ,CAAe,OAAf,EAAwB,YAAU;MAC9BlK,KAAK,CAAC4K,MAAN,CAAa,KAAb,EAD8B,CAE9B;MACA;MACA;MACA;MACA;;IACH,CAPD;IASA,KAAKzC,IAAL,CAAU+B,EAAV,CAAa,mBAAb,EAAkC,wBAAlC,EAA4D,UAAU/G,CAAV,EAAa;MAErEA,CAAC,CAAC0H,cAAF;MACA,IAAIC,KAAK,GAAIlL,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,WAAb,CAAb;MAEA,IAAIiE,OAAJ;MACA,IAAIC,MAAJ;MACA,IAAIC,iBAAJ;MACA,IAAIC,WAAJ;;MAEAlL,KAAK,CAACmL,aAAN;;MACAnL,KAAK,CAACoL,WAAN,CAAkBN,KAAlB;;MAGA,IAAG9K,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B+D,IAA/B,CAAoCoB,MAApC,IAA8C,SAAjD,EAA2D;QACvDN,OAAO,GAAG,CAAC/K,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBR,KAAvB,CAAD,CAAV;QACAI,WAAW,GAAGH,OAAO,CAAC,CAAD,CAArB;QACAE,iBAAiB,GAAGF,OAAO,CAAC,CAAD,CAA3B;MACH,CAJD,MAIO;QACHE,iBAAiB,GAAGjL,KAAK,CAACuJ,QAAN,CAAegC,eAAf,CAA+BT,KAA/B,CAApB;QACAI,WAAW,GAAGD,iBAAd;;QACA,IAAGA,iBAAiB,CAACF,OAArB,EAA6B;UACzBA,OAAO,GAAGE,iBAAiB,CAACF,OAAlB,CAA0BS,GAA1B,CAA8B,UAASC,MAAT,EAAgB;YACpD,OAAOzL,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBG,MAAM,CAACC,EAA9B,CAAP;UACH,CAFS,CAAV;QAGH;MACJ;;MAED,IAAGT,iBAAiB,CAACD,MAAlB,IAA4BC,iBAAiB,CAACD,MAAlB,CAAyBU,EAAxD,EACIV,MAAM,GAAGhL,KAAK,CAACoG,MAAN,CAAauF,SAAb,CAAuBV,iBAAiB,CAACD,MAAlB,CAAyBU,EAAhD,CAAT;;MAEJ,IAAG1L,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2DC,WAA9D,EAA0E;QACtE/L,KAAK,CAACoG,MAAN,CAAa4F,eAAb,CAA6Bf,iBAA7B;;QACAjL,KAAK,CAAC4K,MAAN,CAAa,KAAb;MACH;;MACD,IAAIqB,WAAJ;;MAEA,IAAGlB,OAAO,IAAIA,OAAO,CAAC9L,MAAR,GAAiB,CAA/B,EAAkC;QAE9B,IAAGe,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2DI,IAA9D,EAAmE;UAC/DlM,KAAK,CAACoG,MAAN,CAAa+F,MAAb,CAAoBpB,OAApB,EAA6B/K,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2DM,WAAxF;QACH;;QAED,IAAGrB,OAAO,CAAC9L,MAAR,GAAiB,CAApB,EAAsB;UAClBe,KAAK,CAACoG,MAAN,CAAaiG,cAAb,CAA4B,IAA5B;QACH;;QACDtB,OAAO,CAACuB,OAAR,CAAgB,UAASb,MAAT,EAAgB;UAE5B,IAAIc,MAAM,GAAGd,MAAM,CAACe,SAAP,EAAb;UACArJ,CAAC,CAACC,OAAF,GAAYmJ,MAAM,CAAC,CAAD,CAAlB;UACApJ,CAAC,CAACE,OAAF,GAAYkJ,MAAM,CAAC,CAAD,CAAlB;;UAEA,IAAGvM,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2DW,YAA9D,EAA2E;YACvE;YACAzM,KAAK,CAACoG,MAAN,CAAaqG,YAAb,CAA0BhB,MAA1B,EAAkC,IAAlC;UACH;;UACD,IAAGzL,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2DY,iBAA9D,EAAgF;YAC5E1M,KAAK,CAAC4K,MAAN,CAAa,KAAb;;YACA5K,KAAK,CAACoG,MAAN,CAAauG,WAAb,CAAyBlB,MAAzB;UACH;;UACD,IAAGzL,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2Dc,iBAA9D,EAAgF;YAC5E,IAAI5F,MAAM,GAAGhH,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuB3C,MAApC;;YACA,IAAGA,MAAM,IAAIA,MAAM,CAAC,cAAD,CAAnB,EACIA,MAAM,IAAIA,MAAM,CAAC,cAAD,CAAN,CAAuBgC,IAAvB,CAA4ByC,MAA5B,EAAoCtI,CAApC,EAAuCnD,KAAK,CAACoG,MAA7C,CAAV;UACP;QACJ,CAnBD;;QAoBA,IAAG2E,OAAO,CAAC9L,MAAR,GAAiB,CAApB,EAAsB;UAClBe,KAAK,CAACoG,MAAN,CAAaiG,cAAb,CAA4B,KAA5B,EAAmC,KAAnC;QACH;MAEJ;;MACD,IAAGrB,MAAH,EAAU;QACN,IAAGhL,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2De,iBAA9D,EAAgF;UAC5E7M,KAAK,CAACoG,MAAN,CAAauG,WAAb,CAAyB1B,iBAAzB;;UACAjL,KAAK,CAAC4K,MAAN,CAAa,KAAb;QACH;;QACD,IAAG5K,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA/B,CAAuCC,aAAvC,CAAqDC,KAArD,CAA2DgB,iBAA9D,EAAgF;UAC5E,IAAI9F,MAAM,GAAGhH,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuB3C,MAApC;;UACA,IAAGA,MAAM,IAAIA,MAAM,CAAC,cAAD,CAAnB,EACIA,MAAM,IAAIA,MAAM,CAAC,cAAD,CAAN,CAAuBgC,IAAvB,CAA4BgC,MAA5B,EAAoC7H,CAApC,EAAuCnD,KAAK,CAACoG,MAA7C,CAAV;QACP;MACJ;;MAEDpG,KAAK,CAACgH,MAAN,CAAa,OAAb,KAAyBhH,KAAK,CAACgH,MAAN,CAAa,OAAb,EAAsBgC,IAAtB,CAA2BpJ,CAAC,CAAC,IAAD,CAA5B,EAAoCuD,CAApC,EAAuC+H,WAAvC,EAAoDlL,KAAK,CAACoG,MAA1D,CAAzB;;MAEA,IAAIwF,OAAO,GAAG5L,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0F,OAA7C;;MAGA,IAAGA,OAAO,CAACC,aAAR,CAAsBC,KAAtB,CAA4BiB,QAA/B,EAAwC;QACpC,IAAIC,SAAS,GAAGpB,OAAO,CAACC,aAAR,CAAsBC,KAAtB,CAA4BmB,SAA5B,CAAsC9H,KAAtC,CAA4C,GAA5C,CAAhB;QACA,IAAID,GAAJ;;QACA,IAAG8H,SAAS,CAAC/N,MAAV,GAAmB,CAAtB,EAAwB;UACpB,IAAIqG,GAAG,GAAG0H,SAAS,CAACE,KAAV,EAAV;UACA,IAAI9E,IAAI,GAAG,MAAI4E,SAAS,CAACzH,IAAV,CAAe,GAAf,CAAf;;UACA,IAAGD,GAAG,IAAI,QAAV,EAAmB;YACf,IAAGyF,OAAO,CAAC,CAAD,CAAP,IAAcA,OAAO,CAAC,CAAD,CAAP,CAAWjE,IAA5B,EACI5B,GAAG,GAAGiI,IAAI,CAAC,oBAAkB/E,IAAnB,CAAV;UACP,CAHD,MAGK;YACD,IAAG6C,iBAAH,EACI/F,GAAG,GAAGiI,IAAI,CAAC,sBAAoB/E,IAArB,CAAV;UACP;;UAED,IAAGlD,GAAH,EAAO;YACH,IAAG0G,OAAO,CAACC,aAAR,CAAsBC,KAAtB,CAA4BsB,MAA/B,EAAsC;cAClC,IAAIC,GAAG,GAAG9O,MAAM,CAAC+O,IAAP,CAAYpI,GAAZ,EAAiB,QAAjB,CAAV;cACAmI,GAAG,CAACE,KAAJ;YACH,CAHD,MAGK;cACDhP,MAAM,CAACiP,QAAP,CAAgBC,IAAhB,GAAuBvI,GAAvB;YACH;UACJ;QACJ;MACJ;IACJ,CAhHD,EAgHGgF,EAhHH,CAgHM,uBAhHN,EAgHgC,wBAhHhC,EAgH0D,UAAU/G,CAAV,EAAa;MAEnE,IAAI2H,KAAK,GAAGlL,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,WAAb,CAAZ;MACA,IAAIiE,OAAJ;;MAEA,IAAG/K,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B+D,IAA/B,CAAoCoB,MAApC,IAA8C,SAAjD,EAA2D;QACvDN,OAAO,GAAG,CAAC/K,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBR,KAAvB,CAAD,CAAV;MACH,CAFD,MAEO;QACH,IAAIG,iBAAiB,GAAGjL,KAAK,CAACuJ,QAAN,CAAegC,eAAf,CAA+BT,KAA/B,CAAxB;;QACA,IAAGG,iBAAiB,CAACF,OAArB,EAA6B;UACzBA,OAAO,GAAGE,iBAAiB,CAACF,OAAlB,CAA0BS,GAA1B,CAA8B,UAASC,MAAT,EAAgB;YACpD,OAAOzL,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBG,MAAM,CAACC,EAA9B,CAAP;UACH,CAFS,CAAV;QAGH;MACJ;;MAED,IAAGX,OAAO,IAAIA,OAAO,CAAC9L,MAAtB,EAA6B;QACzBe,KAAK,CAACoG,MAAN,CAAasH,gBAAb,CAA8B3C,OAA9B;;QAEAA,OAAO,CAACuB,OAAR,CAAgB,UAASb,MAAT,EAAgB;UAC5B,IAAGA,MAAM,IAAI,CAACA,MAAM,CAACkC,QAArB,EAA8B;YAC1B3N,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0H,SAA/B,IAA4C5N,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B0H,SAA/B,CAAyC5E,IAAzC,CAA8CyC,MAA9C,EAAsDtI,CAAtD,EAAyDnD,KAAzD,CAA5C;UACH;QACJ,CAJD;MAKH;;MACDA,KAAK,CAACgH,MAAN,CAAa,WAAb,KAA6BhH,KAAK,CAACgH,MAAN,CAAa,WAAb,EAA0BgC,IAA1B,CAA+BpJ,CAAC,CAAC,IAAD,CAAhC,EAAwCuD,CAAxC,EAA2C+H,WAA3C,EAAwDlL,KAAK,CAACoG,MAA9D,CAA7B;IACH,CA1ID,EA0IG8D,EA1IH,CA0IM,sBA1IN,EA0I+B,wBA1I/B,EA0IyD,UAAU/G,CAAV,EAAa;MAElE,IAAI2H,KAAK,GAAGlL,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,WAAb,CAAZ;MACA,IAAIiE,OAAJ;;MAEA,IAAG/K,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B+D,IAA/B,CAAoCoB,MAApC,IAA8C,SAAjD,EAA2D;QACvDN,OAAO,GAAG,CAAC/K,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBR,KAAvB,CAAD,CAAV;MACH,CAFD,MAEO;QACH,IAAIG,iBAAiB,GAAGjL,KAAK,CAACuJ,QAAN,CAAegC,eAAf,CAA+BT,KAA/B,CAAxB;;QACA,IAAGG,iBAAiB,CAACF,OAArB,EAA6B;UACzBA,OAAO,GAAGE,iBAAiB,CAACF,OAAlB,CAA0BS,GAA1B,CAA8B,UAASC,MAAT,EAAgB;YACpD,OAAOzL,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBG,MAAM,CAACC,EAA9B,CAAP;UACH,CAFS,CAAV;QAGH;MACJ;;MAED,IAAGX,OAAO,IAAIA,OAAO,CAAC9L,MAAtB,EAA6B;QACzBe,KAAK,CAACoG,MAAN,CAAayH,kBAAb,CAAgC9C,OAAhC;;QACAA,OAAO,CAACuB,OAAR,CAAgB,UAASb,MAAT,EAAgB;UAC5B,IAAGA,MAAM,IAAI,CAACA,MAAM,CAACkC,QAArB,EAA8B;YAC1B3N,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B4H,QAA/B,IAA2C9N,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B4H,QAA/B,CAAwC9E,IAAxC,CAA6CyC,MAA7C,EAAqDtI,CAArD,EAAwDnD,KAAxD,CAA3C;UACH;QACJ,CAJD;MAKH;;MAEDA,KAAK,CAACgH,MAAN,CAAa,UAAb,KAA4BhH,KAAK,CAACgH,MAAN,CAAa,UAAb,EAAyBgC,IAAzB,CAA8BpJ,CAAC,CAAC,IAAD,CAA/B,EAAuCuD,CAAvC,EAA0C+H,WAA1C,EAAuDlL,KAAK,CAACoG,MAA7D,CAA5B;IAEH,CArKD,EAqKG8D,EArKH,CAqKM,mBArKN,EAqK0B,uBArK1B,EAqKkD,UAAS/G,CAAT,EAAW;MACzD,IAAI4K,WAAW,GAAGnO,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,QAAb,CAAlB;MACA9G,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqBxE,OAArB,CAA6BuE,WAA7B,IAA4C,IAA5C;MACA,OAAO/N,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqBxE,OAArB,CAA6BuE,WAA7B,CAAP;;MACA/N,KAAK,CAACoG,MAAN,CAAa6H,kBAAb;;MACAjO,KAAK,CAACoG,MAAN,CAAa8H,eAAb;IACH,CA3KD;EA6KH,CA9MD;;EAiNA5P,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCyP,cAArC,GAAsD,UAASC,GAAT,EAAa;IAC/D,IAAIpO,KAAK,GAAG,IAAZ;;IACA,IAAG,QAAOoO,GAAP,KAAc,QAAjB,EACIA,GAAG,GAAG,CAACA,GAAD,CAAN;IACJA,GAAG,CAAC9B,OAAJ,CAAY,UAASZ,EAAT,EAAY;MACpB1L,KAAK,CAACmI,IAAN,CAAWL,IAAX,CAAgB,4BAA0B4D,EAA1C,EAA8CpD,QAA9C,CAAuD,OAAvD;IACH,CAFD;EAGH,CAPD;;EAQAhK,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqC2P,gBAArC,GAAwD,YAAU;IAC9D,KAAKlG,IAAL,CAAUL,IAAV,CAAe,wBAAf,EAAyCwG,WAAzC,CAAqD,OAArD;EACH,CAFD;;EAGAhQ,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqC0M,WAArC,GAAmD,UAASgD,GAAT,EAAa;IAC5D,IAAIpO,KAAK,GAAG,IAAZ;;IACA,IAAG,QAAOoO,GAAP,KAAc,QAAjB,EACIA,GAAG,GAAG,CAACA,GAAD,CAAN;IACJA,GAAG,CAAC9B,OAAJ,CAAY,UAASZ,EAAT,EAAY;MACpB1L,KAAK,CAACmI,IAAN,CAAWL,IAAX,CAAgB,4BAA0B4D,EAA1C,EAA8CpD,QAA9C,CAAuD,UAAvD;IACH,CAFD;EAGH,CAPD;;EAQAhK,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCyM,aAArC,GAAqD,YAAU;IAC3D,KAAKhD,IAAL,CAAUL,IAAV,CAAe,wBAAf,EAAyCwG,WAAzC,CAAqD,UAArD;EACH,CAFD;;EAIAhQ,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqC6P,SAArC,GAAiD,UAASC,KAAT,EAAe;IAC9D,IAAIC,MAAM,GAAG,KAAKlF,QAAL,CAAcmF,SAAd,EAAb;EACD,CAFD;;EAGApQ,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCiQ,oBAArC,GAA4D,YAAU;IAClE,IAAIC,KAAJ;;IACA,IAAI5O,KAAK,GAAG,IAAZ,CAFkE,CAIlE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;IACI4O,KAAK,GAAG,KAAKrF,QAAL,CAAcsF,SAAd,EAAR;;IAEA,IAAG,KAAKtF,QAAL,CAAcuF,KAAd,IAAuB,SAA1B,EAAoC;MAChCF,KAAK,GAAGA,KAAK,CAACG,MAAN,CAAa,UAASC,IAAT,EAAc;QAC/B,IAAIC,MAAM,GAAGjP,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+BgJ,cAA5C;;QACD,IAAGD,MAAM,CAACD,IAAI,CAACC,MAAN,CAAT,EAAuB;UACnB,OAAO,CAACA,MAAM,CAACD,IAAI,CAACC,MAAN,CAAN,CAAoBtB,QAA5B;QACH,CAFD,MAEK;UACD,OAAO,IAAP;QACH;MACH,CAPO,CAAR;IAQH,CAxB6D,CAyBlE;;;IACA,KAAKlF,WAAL,CAAiBQ,IAAjB,CAAuB,KAAKxC,SAAL,CAAeG,IAAf,CAAoB;MAAC,SAASgI;IAAV,CAApB,CAAvB;;IACA,IAAGA,KAAK,CAAC3P,MAAN,IAAgB,CAAnB,EAAqB;MACjB,KAAKwJ,WAAL,CAAiBQ,IAAjB,CAAsB,oCAAkC,KAAK7C,MAAL,CAAYuD,OAAZ,GAAsBzD,OAAtB,CAA8B+D,IAA9B,CAAmCkF,aAArE,GAAmF,QAAzG;IACH;;IACD,KAAK9E,UAAL;IACA,IAAG,KAAK/D,UAAR,EACI,KAAKa,YAAL;EACP,CAjCD;;EAkCA7I,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqC4M,SAArC,GAAiD,UAASI,EAAT,EAAY;IACzD,IAAI1L,KAAK,GAAG,IAAZ;;IACA,IAAIyL,MAAJ;;IACA,IAAGzL,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+B+D,IAA/B,CAAoCoB,MAApC,IAA8C,SAAjD,EAA2D;MACvDI,MAAM,GAAGzL,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBI,EAAvB,CAAT;IACH,CAFD,MAEK;MACD,IAAIpG,GAAG,GAAGtF,KAAK,CAACuJ,QAAN,CAAegC,eAAf,CAA+BG,EAA/B,CAAV;;MACA,IAAGpG,GAAG,CAAC8J,SAAP,EACI3D,MAAM,GAAGzL,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBhG,GAAG,CAAC8J,SAA3B,CAAT;IACP;;IACD,OAAO3D,MAAP;EACH,CAXD;;EAYAnN,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqC2L,UAArC,GAAkD,YAAU;IACxD,IAAIrK,KAAK,GAAG,IAAZ;;IACA,IAAIwJ,OAAO,GAAG,KAAKxB,WAAL,CAAiBF,IAAjB,CAAsB,+BAAtB,CAAd;IACA,KAAKE,WAAL,CAAiBF,IAAjB,CAAsB,oBAAtB,EAA4CnJ,MAA5C;;IAEA,IAAG,CAACqB,KAAK,CAACqP,WAAP,IAAsBrP,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+BsD,OAArD,IAAgExJ,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+BsD,OAA/B,CAAuCU,EAA1G,EAA6G;MACzGlK,KAAK,CAACqP,WAAN,GAAoB,IAAI/Q,MAAM,CAACgR,WAAX,CAAuB;QACvCnJ,SAAS,EAAEnG,KAAK,CAACmI,IAAN,CAAWL,IAAX,CAAgB,+BAAhB,CAD4B;QAEvCyH,WAAW,EAAE,IAF0B;QAGvCd,MAAM,EAAEzO,KAAK,CAACoG,MAAN,CAAaoJ,aAAb,CAA2Bd,SAA3B,EAH+B;QAIvCe,QAAQ,EAAE,KAJ6B;QAKvCrJ,MAAM,EAAEpG,KAAK,CAACoG,MALyB;QAMvC;QACA;QACAsJ,KAAK,EAAE1P,KAAK,CAAC0P,KAR0B;QASvC1I,MAAM,EAAE,CACJ;UACA;UACA;UACA;QAJI;MAT+B,CAAvB,CAApB;;MAgBAhH,KAAK,CAACqP,WAAN,CAAkBlH,IAAlB,CAAuB+B,EAAvB,CAA0B,QAA1B,EAAmC,4BAAnC,EAAgE,YAAU;QACtE,IAAI6E,MAAM,GAAG,EAAb;QACA,IAAIP,KAAK,GAAG5O,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,gBAAb,CAAZ,CAFsE,CAItE;QACA;QACA;;QACAiI,MAAM,CAACP,KAAD,CAAN,GAAgB5O,CAAC,CAAC,IAAD,CAAD,CAAQ6K,GAAR,EAAhB,CAPsE,CAQtE;;QAGAzK,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqB3D,UAArB,CAAgC0E,MAAhC,EAXsE,CAatE;QACA;QACA;QACA;QACA;;;QACA/O,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsBoE,MAAtB;MACH,CAnBD;;MAoBAlH,UAAU,CACN,YAAU;QACN7H,KAAK,CAACkJ,cAAN;;QACA,IAAG,KAAK5C,UAAR,EACItG,KAAK,CAACmH,YAAN;MAEP,CANK,EAMH,GANG,CAAV;IAOH;;IAED,IAAGnH,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+BsD,OAA/B,IAA0CxJ,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+BsD,OAA/B,CAAuCU,EAAjF,IAAyFlK,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqBxE,OAArB,IAAgCrF,MAAM,CAACwL,IAAP,CAAY3P,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqBxE,OAAjC,EAA0CvK,MAA1C,GAAmD,CAA/K,EAAkL;MAE9K,KAAI,IAAI2Q,UAAR,IAAsB5P,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqBxE,OAA3C,EAAmD;QAC/C,IAAIqG,WAAW,GAAG7P,KAAK,CAACuJ,QAAN,CAAeyE,KAAf,CAAqBxE,OAArB,CAA6BoG,UAA7B,CAAlB;QACA,IAAIE,WAAW,GAAGF,UAAlB;;QACA,IAAI7B,WAAW,GAAG/N,KAAK,CAACoG,MAAN,CAAaoJ,aAAb,CAA2BO,QAA3B,CAAoCD,WAApC,CAAlB;;QAEA,IAAG9P,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBzD,OAAvB,CAA+BsD,OAA/B,CAAuCU,EAAvC,IAA6C6D,WAAhD,EAA4D;UACxDvE,OAAO,CAAC1B,IAAR,CAAa,2BAAyBgI,WAAzB,GAAqC,IAAlD,EAAwDrF,GAAxD,CAA4DoF,WAA5D;QACH,CAFD,MAEK;UACD,IAAGD,UAAU,IAAI,SAAjB,EAA2B;YACvB;YACA;YACAE,WAAW,GAAG,QAAd;YACAD,WAAW,GAAG7P,KAAK,CAACoG,MAAN,CAAakF,SAAb,CAAuBuE,WAAvB,EAAoCG,KAApC,IAA6CH,WAA3D;UACH;;UACDrG,OAAO,CAACd,MAAR,CAAe,oCAAkCoH,WAAlC,GAA8C,IAA9C,GAAmDD,WAAnD,GAA+D,mDAA/D,GAAmHD,UAAnH,GAA8H,kBAA7I;QACH;MACJ;;MACD,KAAKzH,IAAL,CAAUG,QAAV,CAAmB,oBAAnB;IAEH,CArBD,MAqBK;MACD,KAAKH,IAAL,CAAUmG,WAAV,CAAsB,oBAAtB;IACH;;IACD,KAAKpF,cAAL;EACH,CA5ED;;EA8EA5K,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCkM,MAArC,GAA8C,UAASV,EAAT,EAAY;IACtD,IAAIlK,KAAK,GAAG,IAAZ;;IACA,IAAGkK,EAAH,EAAM;MACF,KAAK/D,SAAL,CAAemI,WAAf,CAA2B,QAA3B;MACA,KAAK5E,OAAL,CAAapB,QAAb,CAAsB,QAAtB;MACA,KAAKwB,MAAL,CAAYwE,WAAZ,CAAwB,QAAxB;IACH,CAJD,MAIK;MACD,KAAKnI,SAAL,CAAe8J,WAAf,CAA2B,QAA3B;;MACA,IAAG,KAAK9J,SAAL,CAAe+J,QAAf,CAAwB,QAAxB,CAAH,EAAqC;QACjC,IAAG5R,MAAM,CAACmE,OAAV,EAAkB;UACdzC,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBS,KAAvB,CAA6BzB,GAA7B,CAAiC,QAAjC,EAA0C,MAA1C;;UACA3I,KAAK,CAACmH,YAAN;QACH;MACJ,CALD,MAKK;QACD,IAAG7I,MAAM,CAACmE,OAAP,IAAkB,KAAK0D,SAAL,CAAejF,MAAf,KAA0B,GAA/C,EAAmD;UAC/ClB,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBS,KAAvB,CAA6BzB,GAA7B,CAAiC,QAAjC,EAA0C,OAA1C;;UACA3I,KAAK,CAACmH,YAAN;QACH;MACJ;;MACD,KAAKuC,OAAL,CAAa4E,WAAb,CAAyB,QAAzB;MACA,KAAKxE,MAAL,CAAYxB,QAAZ,CAAqB,QAArB;IACH;;IAED,KAAKY,cAAL;EACH,CAxBD;;EA0BA5K,MAAM,CAACgL,mBAAP,CAA2B5K,SAA3B,CAAqCyR,aAArC,GAAqD,UAASC,KAAT,EAAe;IAChE,KAAK3H,WAAL,CAAiBC,MAAjB,CAAwB,iDAAxB;IACA,KAAKD,WAAL,CAAiBX,IAAjB,CAAsB,8BAAtB,EAAsDmB,IAAtD,CAA2DmH,KAA3D;EACH,CAHD;EAKA;AACJ;AACA;;;EACI9R,MAAM,CAAC+R,iBAAP,GAA2B,UAASnK,OAAT,EAAiB;IACxC5H,MAAM,CAAC2H,UAAP,CAAkB+C,IAAlB,CAAuB,IAAvB,EAA6B9C,OAA7B;EACH,CAFD;;EAGA5H,MAAM,CAAC0F,MAAP,CAAc1F,MAAM,CAAC+R,iBAArB,EAAwC/R,MAAM,CAAC2H,UAA/C;;EAEA3H,MAAM,CAAC+R,iBAAP,CAAyB3R,SAAzB,CAAmCiI,kBAAnC,GAAwD,YAAU;IAC9D,IAAG,KAAKJ,WAAR,EACI,OAAO,+DAAP,CADJ,KAGI,OAAO,EAAP;EACP,CALD;;EAOAjI,MAAM,CAAC+R,iBAAP,CAAyB3R,SAAzB,CAAmCuJ,IAAnC,GAA0C,YAAU,CACnD,CADD;;EAGA3J,MAAM,CAAC+R,iBAAP,CAAyB3R,SAAzB,CAAmCwI,WAAnC,GAAiD,YAAU;IACvD,IAAIlH,KAAK,GAAG,IAAZ;;IACA,KAAKgH,MAAL,IAAe,KAAKA,MAAL,CAAY,OAAZ,CAAf,IAAuC,KAAKA,MAAL,CAAY,OAAZ,EAAqBgC,IAArB,CAA0BhJ,KAA1B,EAAiCA,KAAK,CAACoG,MAAvC,CAAvC;EACH,CAHD;;EAKA9H,MAAM,CAAC+R,iBAAP,CAAyB3R,SAAzB,CAAmCqK,gBAAnC,GAAsD,YAAU;IAC5D,IAAI/I,KAAK,GAAG,IAAZ;;IACA,KAAKmI,IAAL,CAAU+B,EAAV,CAAa,gBAAb,EAA8B,uBAA9B,EAAsD,YAAU;MAC5DlK,KAAK,CAACiC,OAAN;;MACAjC,KAAK,CAACgH,MAAN,IAAgBhH,KAAK,CAACgH,MAAN,CAAa,QAAb,CAAhB,IAA0ChH,KAAK,CAACgH,MAAN,CAAa,QAAb,EAAuBgC,IAAvB,CAA4BhJ,KAA5B,EAAmCA,KAAK,CAACoG,MAAzC,CAA1C;IACH,CAHD;EAIH,CAND;EAQA;AACJ;AACA;;;EACI9H,MAAM,CAACgS,iBAAP,GAA2B,UAASpK,OAAT,EAAiB;IACxCA,OAAO,CAACM,UAAR,GAAqB,IAArB;IACAlI,MAAM,CAAC2H,UAAP,CAAkB+C,IAAlB,CAAuB,IAAvB,EAA6B9C,OAA7B;IACA,KAAKqK,KAAL,GAAarK,OAAO,CAACqK,KAArB;IACA,KAAKC,MAAL,GAActK,OAAO,CAACsK,MAAtB;IACA,KAAKC,SAAL,GAAiBvK,OAAO,CAACuK,SAAzB;IACA,KAAK/E,EAAL,GAAU,KAAK+E,SAAL,CAAe/E,EAAf,GAAkB,GAAlB,GAAsB5M,IAAI,CAAC4R,MAAL,EAAhC;IACA,KAAKvK,SAAL,CAAeW,IAAf,CAAoB,YAApB,EAAkC,KAAK4E,EAAvC;;IACA,IAAI1L,KAAK,GAAG,IAAZ;EACH,CATD;;EAUA1B,MAAM,CAAC0F,MAAP,CAAc1F,MAAM,CAACgS,iBAArB,EAAwChS,MAAM,CAAC2H,UAA/C;;EAGA3H,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCiS,QAAnC,GAA8C,UAASJ,KAAT,EAAe;IACzD,KAAKA,KAAL,GAAaA,KAAb;EACH,CAFD;;EAIAjS,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCiI,kBAAnC,GAAwD,YAAU;IAC9D,IAAG,KAAKJ,WAAR,EACI,OAAO,0CAAP,CADJ,KAGI,OAAO,EAAP;EACP,CALD;;EAOAjI,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCuJ,IAAnC,GAA0C,YAAU,CACnD,CADD;;EAGA3J,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCwI,WAAnC,GAAiD,YAAU;IACvD5I,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BwI,WAA5B,CAAwC8B,IAAxC,CAA6C,IAA7C;;IACA,IAAIhJ,KAAK,GAAG,IAAZ;;IACA,KAAK4Q,cAAL;IACA,KAAKzK,SAAL,CAAe8J,WAAf,CAA2B,wBAA3B,EAAqD,IAArD;IACA,KAAK9J,SAAL,CAAe8J,WAAf,CAA2B,wBAA3B,EAAqD,IAArD;;IACAjQ,KAAK,CAACoH,YAAN;;IACApH,KAAK,CAACmH,YAAN;;IACA,KAAKE,YAAL,CAAkB3F,SAAlB;IACA,KAAKsF,MAAL,IAAe,KAAKA,MAAL,CAAY,OAAZ,CAAf,IAAuC,KAAKA,MAAL,CAAY,OAAZ,EAAqBgC,IAArB,CAA0BhJ,KAA1B,EAAiCA,KAAK,CAACoG,MAAvC,CAAvC;EACH,CAVD;;EAWA9H,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmC0I,YAAnC,GAAkD,YAAW;IACzD,IAAIpH,KAAK,GAAG,IAAZ;;IACAA,KAAK,CAACmG,SAAN,CAAgBjF,MAAhB,CAAuBlB,KAAK,CAACmG,SAAN,CAAgB2B,IAAhB,CAAqB,qBAArB,EAA4CC,WAA5C,KAA0D/H,KAAK,CAACgI,WAAN,CAAkBD,WAAlB,EAAjF;EACH,CAHD;;EAIAzJ,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCkS,cAAnC,GAAoD,YAAW;IAC3D,IAAI5Q,KAAK,GAAG,IAAZ;;IACA,IAAI6Q,GAAG,GAAK7Q,KAAK,CAACoG,MAAN,CAAa0K,iBAAb,CAA+B,CAAC9Q,KAAK,CAACuQ,KAAN,CAAYQ,CAAb,EAAgB/Q,KAAK,CAACuQ,KAAN,CAAYvR,CAA5B,CAA/B,CAAZ;;IACA6R,GAAG,CAAC,CAAD,CAAH,IAAY7Q,KAAK,CAACwQ,MAAlB;;IACAxQ,KAAK,CAACmG,SAAN,CAAgBwC,GAAhB,CAAoB;MAChB,aAAa,gCAAgCkI,GAAG,CAAC,CAAD,CAAnC,GAAyC,KAAzC,GAAiDA,GAAG,CAAC,CAAD,CAApD,GAAyD;IADtD,CAApB;EAGH,CAPD;;EAUAvS,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCqK,gBAAnC,GAAsD,YAAU;IAC5D,IAAI/I,KAAK,GAAG,IAAZ;;IACAJ,CAAC,CAAC,MAAD,CAAD,CAAUoR,GAAV,CAAc,iBAAd;IAEA,KAAK7I,IAAL,CAAU+B,EAAV,CAAa,gBAAb,EAA8B,uBAA9B,EAAsD,YAAU;MAC5DlK,KAAK,CAACiR,KAAN;IACH,CAFD;IAIArR,CAAC,CAAC,MAAD,CAAD,CAAUsR,GAAV,CAAc,iDAAd,EAAiE,UAAS/N,CAAT,EAAW;MACxE0E,UAAU,CAAC,YAAU;QACjB,IAAG7H,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuBwH,WAAvB,IAAsCvR,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYC,OAAZ,CAAoB,iBAApB,EAAuCpS,MAA7E,IAAuFW,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYlB,QAAZ,CAAqB,iBAArB,CAA1F,EACI;;QACJlQ,KAAK,CAACiR,KAAN;MACH,CAJS,EAIR,EAJQ,CAAV;IAKH,CAND;EAOH,CAfD;;EAgBA3S,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCuS,KAAnC,GAA2C,YAAU;IACjD,IAAIjR,KAAK,GAAG,IAAZ;;IACA,IAAI,KAAKmG,SAAL,CAAeW,IAAf,CAAoB,YAApB,KAAoC,KAAK4E,EAA1C,IAAiD,CAAC1L,KAAK,CAACmG,SAAN,CAAgBmL,EAAhB,CAAmB,UAAnB,CAArD,EACI;;IACJtR,KAAK,CAACiC,OAAN;;IACA,IAAGjC,KAAK,CAACyQ,SAAN,YAA2BnS,MAAM,CAACiT,MAArC,EAA4C;MACxCvR,KAAK,CAACoG,MAAN,CAAaoL,cAAb,CAA4BxR,KAAK,CAACyQ,SAAlC;IACH;;IAEDzQ,KAAK,CAACgH,MAAN,IAAgBhH,KAAK,CAACgH,MAAN,CAAa,QAAb,CAAhB,IAA0ChH,KAAK,CAACgH,MAAN,CAAa,QAAb,EAAuBgC,IAAvB,CAA4BhJ,KAA5B,EAAmCA,KAAK,CAACoG,MAAzC,CAA1C;EACH,CAVD;;EAWA9H,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmCuD,OAAnC,GAA6C,YAAW;IACpD,IAAIjC,KAAK,GAAG,IAAZ;;IACAA,KAAK,CAACmG,SAAN,CAAgB8J,WAAhB,CAA4B,wBAA5B,EAAsD,KAAtD;;IACAjQ,KAAK,CAACmG,SAAN,CAAgB8J,WAAhB,CAA4B,wBAA5B,EAAsD,KAAtD;;IACA3R,MAAM,CAAC2H,UAAP,CAAkBvH,SAAlB,CAA4BuD,OAA5B,CAAoC+G,IAApC,CAAyC,IAAzC;EAEH,CAND;;EAOA1K,MAAM,CAACgS,iBAAP,CAAyB5R,SAAzB,CAAmC+S,IAAnC,GAA0C,YAAU;IAChD,IAAIzR,KAAK,GAAG,IAAZ,CADgD,CAEhD;;;IACAA,KAAK,CAACmG,SAAN,CAAgB8J,WAAhB,CAA4B,wBAA5B,EAAsD,IAAtD;EACH,CAJD;AAOH,CA77BD,EA67BGpM,MA77BH,EA67BWtF,MA77BX,EA67BmBD,MA77BnB,EA67B2BQ,IA77B3B;;AAi8BA,CAAC,UAAUc,CAAV,EAAc;EAAA;;EAEX,IAAI8R,MAAM,GAAG,EAAb,CAFW,CAMX;EACA;EACA;;EACA,SAASC,SAAT,CAAmBC,YAAnB,EAAiCxL,MAAjC,EAAwC;IACpC,KAAKsF,EAAL,GAAU,EAAV;IACA,KAAKmG,OAAL,GAAe,EAAf;IACA,KAAK/K,IAAL,GAAY,EAAZ;IACA,KAAKgL,IAAL,GAAYF,YAAZ;IACA,KAAKxL,MAAL,GAAcA,MAAd;IACA,KAAK2L,QAAL,GAAgBH,YAAY,CAAC,CAAD,CAAZ,CAAgBI,OAAhC;EACH;;EAEDL,SAAS,CAACjT,SAAV,CAAoBuT,QAApB,GAA+B,YAAU;IACrC,OAAO,KAAKC,WAAL,IAAoB,QAA3B;EACH,CAFD;;EAGAP,SAAS,CAACjT,SAAV,CAAoByT,QAApB,GAA+B,YAAU;IACrC,OAAO,KAAKD,WAAL,IAAoB,QAA3B;EACH,CAFD;;EAGAP,SAAS,CAACjT,SAAV,CAAoB0T,OAApB,GAA8B,UAAStL,IAAT,EAAc;IACxC,IAAI9G,KAAK,GAAG,IAAZ;;IACA,KAAI,IAAIqI,IAAR,IAAgBvB,IAAhB,EAAqB;MACjB9G,KAAK,CAAC8G,IAAN,CAAWuB,IAAX,IAAmBvB,IAAI,CAACuB,IAAD,CAAvB;IACH;EACJ,CALD;;EAMAsJ,SAAS,CAACjT,SAAV,CAAoB2T,OAApB,GAA8B,YAAU;IACpC,IAAI7H,KAAK,GAAG,KAAKpE,MAAL,CAAYuD,OAAZ,EAAZ,CADoC,CAEpC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;IACA,IAAI2I,IAAI,GAAG,gBAAgBC,MAAhB,GAAyB;MAACxB,CAAC,EAAE,KAAKA,CAAT;MAAY/R,CAAC,EAAE,KAAKA,CAApB;MAAuBiC,KAAK,EAAE,gBAAaA,KAAb,GAAmBuJ,KAAK,CAACgI,KAAvD;MAA8DtR,MAAM,EAAE,gBAAaA,MAAb,GAAoBsJ,KAAK,CAACgI;IAAhG,CAAzB,GAAkI,KAAKV,IAAL,CAAU,CAAV,EAAaO,OAAb,EAA7I;IACAC,IAAI,GAAG1S,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBsO,IAAnB,CAAP,CAXoC,CAYpC;IACA;;IAGA,IAAG,EAAE,gBAAgBC,MAAlB,CAAH,EAA6B;MACzB,IAAIE,MAAM,GAAG,KAAKX,IAAL,CAAU,CAAV,EAAavS,qBAAb,CAAmC,KAAK6G,MAAL,CAAYuD,OAAZ,GAAsB+I,IAAtB,CAA2B,CAA3B,CAAnC,CAAb;MACA,IAAIC,EAAE,GAAGL,IAAI,CAACvB,CAAL,GAAOuB,IAAI,CAACrR,KAArB;MACA,IAAI2R,EAAE,GAAGN,IAAI,CAACtT,CAAL,GAAOsT,IAAI,CAACpR,MAArB,CAHyB,CAMzB;;MACA,IAAIT,QAAQ,GAAG,KAAK2F,MAAL,CAAYuD,OAAZ,GAAsB+I,IAAtB,CAA2B,CAA3B,EAA8BG,cAA9B,EAAf;MACApS,QAAQ,CAACsQ,CAAT,GAAauB,IAAI,CAACvB,CAAlB;MACAtQ,QAAQ,CAACzB,CAAT,GAAasT,IAAI,CAACtT,CAAlB;MACAyB,QAAQ,GAAGA,QAAQ,CAACqS,eAAT,CAAyBL,MAAzB,CAAX;MACAH,IAAI,CAACvB,CAAL,GAAStQ,QAAQ,CAACsQ,CAAlB;MACAuB,IAAI,CAACtT,CAAL,GAASyB,QAAQ,CAACzB,CAAlB,CAZyB,CAazB;;MACAyB,QAAQ,CAACsQ,CAAT,GAAa4B,EAAb;MACAlS,QAAQ,CAACzB,CAAT,GAAa4T,EAAb;MACAnS,QAAQ,GAAGA,QAAQ,CAACqS,eAAT,CAAyBL,MAAzB,CAAX;MACAH,IAAI,CAACrR,KAAL,GAAaR,QAAQ,CAACsQ,CAAT,GAAauB,IAAI,CAACvB,CAA/B;MACAuB,IAAI,CAACpR,MAAL,GAAcT,QAAQ,CAACzB,CAAT,GAAasT,IAAI,CAACtT,CAAhC;IAEH,CApCmC,CAsCpC;IACA;IACA;IACA;IACA;IACA;IACA;;;IAEA,OAAO,CAACsT,IAAI,CAACvB,CAAN,EAAQuB,IAAI,CAACtT,CAAb,EAAesT,IAAI,CAACrR,KAApB,EAA0BqR,IAAI,CAACpR,MAA/B,CAAP;EACH,CA/CD;;EAgDAyQ,SAAS,CAACjT,SAAV,CAAoBqU,YAApB,GAAmC,YAAU;IACzC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIT,IAAI,GAAG,KAAKD,OAAL,EAAX;IACA,IAAIW,EAAE,GAAG,KAAK5M,MAAL,CAAY6M,eAAZ,CAA4BX,IAAI,CAAC,CAAD,CAAhC,EAAsCA,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAApD,CAAT;IACA,IAAIY,EAAE,GAAG,KAAK9M,MAAL,CAAY6M,eAAZ,CAA6BX,IAAI,CAAC,CAAD,CAAJ,GAAUA,IAAI,CAAC,CAAD,CAA3C,EAAiDA,IAAI,CAAC,CAAD,CAArD,CAAT;IAEA,OAAO;MAACU,EAAE,EAAEA,EAAL;MAAQE,EAAE,EAAEA;IAAZ,CAAP;EACH,CAhBD;;EAiBAvB,SAAS,CAACjT,SAAV,CAAoByB,gBAApB,GAAuC,UAASqF,IAAT,EAAesM,IAAf,EAAoB;IACvDA,IAAI,GAAGA,IAAI,IAAI,KAAKA,IAAL,CAAU,CAAV,CAAf;;IACA,IAAIqB,GAAJ,EAAQC,GAAR;;IACA,IAAGD,GAAG,GAAGrB,IAAI,CAACuB,YAAL,CAAkB7N,IAAlB,CAAT,EAAiC;MAC7B,OAAO2N,GAAP;IACH,CAFD,MAEM,IAAGC,GAAG,GAAGtB,IAAI,CAACuB,YAAL,CAAkB,OAAlB,CAAT,EAAoC;MACtC,IAAIvN,CAAC,GAAGsN,GAAG,CAACjO,KAAJ,CAAU,GAAV,CAAR;;MACA,IAAImO,CAAC,GAAGxN,CAAC,CAACiJ,MAAF,CAAS,UAAS5L,CAAT,EAAW;QACxB,IAAIA,CAAC,GAAGA,CAAC,CAACH,IAAF,EAAR;QACA,IAAIoF,IAAI,GAAGjF,CAAC,CAACgC,KAAF,CAAQ,GAAR,CAAX;QACA,IAAIiD,IAAI,CAAC,CAAD,CAAJ,IAAS5C,IAAb,EACI,OAAO,IAAP;MACP,CALO,CAAR;;MAMA,IAAG8N,CAAC,CAACrU,MAAL,EAAY;QACR,OAAOqU,CAAC,CAAC,CAAD,CAAD,CAAKnO,KAAL,CAAW,GAAX,EAAgBC,GAAhB,GAAsBpC,IAAtB,EAAP;MACH;IACJ;;IAGD,IAAIuQ,MAAM,GAAG3T,CAAC,CAACkS,IAAD,CAAD,CAAQyB,MAAR,EAAb;IACA,IAAIxB,QAAQ,GAAGwB,MAAM,CAACtU,MAAP,GAAgBsU,MAAM,CAAC,CAAD,CAAN,CAAUvB,OAA1B,GAAoC,IAAnD;IAEA,IAAID,QAAQ,IAAIA,QAAQ,IAAE,KAA1B,EACI,OAAO,KAAK5R,gBAAL,CAAsBqF,IAAtB,EAA2B+N,MAAM,CAAC,CAAD,CAAjC,CAAP,CADJ,KAGI,OAAO3O,SAAP;EACP,CA1BD;;EA2BA+M,SAAS,CAACjT,SAAV,CAAoB8U,QAApB,GAA+B,UAAShO,IAAT,EAAc;IACzC,IAAI2N,GAAJ,EAASC,GAAT;;IACA,IAAGD,GAAG,GAAG,KAAK/K,IAAL,CAAU5C,IAAV,CAAT,EAAyB;MACrB,OAAO2N,GAAP;IAEH,CAHD,MAGM,IAAGC,GAAG,GAAG,KAAKhL,IAAL,CAAU,OAAV,CAAT,EAA4B;MAC9B,IAAItC,CAAC,GAAGsN,GAAG,CAACjO,KAAJ,CAAU,GAAV,CAAR;;MACA,IAAImO,CAAC,GAAGxN,CAAC,CAACiJ,MAAF,CAAS,UAAS5L,CAAT,EAAW;QACxB,IAAIA,CAAC,GAAGA,CAAC,CAACH,IAAF,EAAR;QACA,IAAIG,CAAC,CAACb,OAAF,CAAUkD,IAAV,MAAkB,CAAtB,EACI,OAAOrC,CAAP;MACP,CAJO,CAAR;MAMA,OAAOmQ,CAAC,CAACrU,MAAF,GAAWqU,CAAC,CAAC,CAAD,CAAD,CAAKnO,KAAL,CAAW,GAAX,EAAgBC,GAAhB,GAAsBpC,IAAtB,EAAX,GAA0C4B,SAAjD;IACH;;IACD,OAAO,EAAP;EACH,CAhBD;;EAiBA+M,SAAS,CAACjT,SAAV,CAAoB8N,SAApB,GAAgC,YAAU;IAEtC;IAEA,IAAIuE,CAAC,GAAG,KAAKe,IAAL,CAAU,CAAV,EAAavQ,qBAAb,GAAqCb,IAA7C;IACA,IAAI1B,CAAC,GAAG,KAAK8S,IAAL,CAAU,CAAV,EAAavQ,qBAAb,GAAqCZ,GAA7C;IACA,IAAI8S,CAAC,GAAG,KAAK3B,IAAL,CAAU,CAAV,EAAavQ,qBAAb,GAAqCN,KAA7C;IACA,IAAIyS,CAAC,GAAG,KAAK5B,IAAL,CAAU,CAAV,EAAavQ,qBAAb,GAAqCL,MAA7C;IACA,OAAO,CAAC6P,CAAC,GAAC0C,CAAC,GAAC,CAAL,EAAOzU,CAAC,GAAC0U,CAAC,GAAC,CAAX,CAAP;EACH,CATD;;EAUA/B,SAAS,CAACjT,SAAV,CAAoBiV,YAApB,GAAmC,YAAU;IACzC,IAAI3T,KAAK,GAAG,IAAZ;;IACA,IAAI4T,CAAC,GAAG5T,KAAK,CAACqS,OAAN,EAAR;;IACA,OAAO;MAACtB,CAAC,EAAE6C,CAAC,CAAC,CAAD,CAAD,GAAKA,CAAC,CAAC,CAAD,CAAD,GAAK,CAAd;MAAiB5U,CAAC,EAAE4U,CAAC,CAAC,CAAD,CAAD,GAAKA,CAAC,CAAC,CAAD,CAAD,GAAK;IAA9B,CAAP;EACH,CAJD;;EAKAjC,SAAS,CAACjT,SAAV,CAAoBmV,eAApB,GAAsC,UAASrD,MAAT,EAAgB;IAClDA,MAAM,GAAGA,MAAM,GAAGA,MAAH,GAAY,CAA3B;IACA,IAAI8B,IAAI,GAAG,KAAKD,OAAL,EAAX;IACA,IAAItB,CAAC,GAAGuB,IAAI,CAACvB,CAAL,GAASuB,IAAI,CAACrR,KAAL,GAAW,CAA5B;IACA,IAAIjC,CAAC,GAAGsT,IAAI,CAACtT,CAAL,GAASsT,IAAI,CAACpR,MAAL,GAAY,CAArB,GAAyBsP,MAAjC;IACA,IAAIsD,MAAM,GAAG,KAAK1N,MAAL,CAAY6M,eAAZ,CAA4BlC,CAA5B,EAA8B/R,CAA9B,CAAb;IACA,OAAO;MAAC+U,GAAG,EAAED,MAAM,CAAC,CAAD,CAAZ;MAAiBE,GAAG,EAAEF,MAAM,CAAC,CAAD;IAA5B,CAAP;EACH,CAPD;;EAQAnC,SAAS,CAACjT,SAAV,CAAoBuV,UAApB,GAAiC,UAASC,IAAT,EAAc;IAC3C,KAAKC,OAAL,GAAeD,IAAI,GAAGA,IAAH,GAAWtP,SAA9B;EACH,CAFD;;EAGA+M,SAAS,CAACjT,SAAV,CAAoB0V,UAApB,GAAiC,UAASF,IAAT,EAAc;IAC3C,KAAKG,OAAL,GAAeH,IAAI,GAAGA,IAAH,GAAWtP,SAA9B;EACH,CAFD;;EAGA+M,SAAS,CAACjT,SAAV,CAAoB4V,OAApB,GAA8B,UAASpP,GAAT,EAAa;IACvC,IAAI,KAAKuI,IAAL,IAAa,KAAKqE,IAAL,CAAUyB,MAAV,CAAiB,GAAjB,EAAsBtU,MAAvC,EACI,KAAK6S,IAAL,CAAUyC,MAAV;IACJ,KAAK9G,IAAL,GAAYvI,GAAG,GAAGA,GAAH,GAASN,SAAxB,CAHuC,CAIvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACH,CAZD;;EAaA+M,SAAS,CAACjT,SAAV,CAAoB8V,SAApB,GAAgC,UAASpD,MAAT,EAAgB;IAC5C,KAAKA,MAAL,GAAcA,MAAM,GAAGA,MAAH,GAAYxM,SAAhC;EACH,CAFD;;EAGA+M,SAAS,CAACjT,SAAV,CAAoB0T,OAApB,GAA8B,UAAStL,IAAT,EAAc;IAExC,IAAGA,IAAH,EAAQ;MACJ,IAAG,OAAOA,IAAP,IAAe,QAAlB,EAA2B;QACvB,IAAGA,IAAI,CAAC2N,MAAL,CAAY,CAAZ,EAAc,CAAd,KAAkB,GAAlB,IAAyB3N,IAAI,CAAC2N,MAAL,CAAY,CAAZ,EAAc,CAAd,KAAkB,GAA9C,EAAkD;UAC9C,IAAG;YACC,IAAIC,GAAJ;YACAvH,IAAI,CAAC,WAASrG,IAAV,CAAJ;YACA,KAAKA,IAAL,GAAY4N,GAAZ;UACH,CAJD,CAIC,OAAMC,GAAN,EAAU;YACP,IAAIC,KAAK,GAAG,sCAAoC,KAAK1C,WAAzC,GAAqD,IAArD,GAA0D,KAAKxG,EAA/D,GAAkE,4CAA9E;YACA,KAAK5E,IAAL,GAAY,EAAZ;YACA,OAAO;cAAC+N,MAAM,EAAED;YAAT,CAAP;UACH;QACJ,CAVD,MAUK;UACD,KAAK9N,IAAL,GAAYA,IAAZ;QACH;MACJ,CAdD,MAcK;QACD,KAAKA,IAAL,GAAYA,IAAZ;MACH;;MACD,OAAO,KAAKA,IAAZ;IACH,CAnBD,MAmBK;MACD,KAAKA,IAAL,GAAYlC,SAAZ;IACH;EACJ,CAxBD;;EAyBA+M,SAAS,CAACjT,SAAV,CAAoB0J,IAApB,GAA2B,UAAS0M,EAAT,EAAYC,EAAZ,EAAe;IACtC,IAAIC,MAAM,GAAG,KAAKlD,IAAL,CAAU,CAAV,CAAb;;IAEA,IAAG,QAAOgD,EAAP,KAAa,QAAhB,EAAyB;MACrBlV,CAAC,CAACqV,IAAF,CAAOH,EAAP,EAAU,UAASpP,GAAT,EAAasJ,IAAb,EAAkB;QACxB,IAAI,OAAOA,IAAP,IAAe,QAAf,IAA2B,OAAOA,IAAP,IAAe,QAA9C,EAAuD;UACnDgG,MAAM,CAACE,YAAP,CAAoBxP,GAApB,EAAwBsJ,IAAxB;QACH;MACJ,CAJD;IAKH,CAND,MAOK,IAAG,OAAO8F,EAAP,IAAa,QAAb,KAA0B,OAAOC,EAAP,IAAa,QAAb,IAAyB,OAAOA,EAAP,IAAa,QAAhE,CAAH,EAA6E;MAC9EC,MAAM,CAACE,YAAP,CAAoBJ,EAApB,EAAuBC,EAAvB;IACH,CAFI,MAGA,IAAGA,EAAE,IAAInQ,SAAT,EAAoB;MACrB,OAAOoQ,MAAM,CAAC3B,YAAP,CAAoByB,EAApB,CAAP;IACH;EACJ,CAhBD;;EAiBAnD,SAAS,CAACjT,SAAV,CAAoByW,KAApB,GAA4B,UAASzJ,EAAT,EAAY;IACpC,IAAG,CAACA,EAAJ,EAAQ,OAAO,KAAP;IACR,KAAKA,EAAL,GAAUA,EAAV;IACA,KAAKoG,IAAL,CAAU,CAAV,EAAaoD,YAAb,CAA0B,IAA1B,EAA+BxJ,EAA/B;;IACA,IAAG,KAAKuG,QAAL,EAAH,EAAmB;MACf,KAAK7L,MAAL,CAAYgP,iBAAZ;IACH;EACJ,CAPD,CAlOW,CA6OX;EACA;EACA;;;EACA,SAAS7D,MAAT,CAAgBK,YAAhB,EAA8ByD,aAA9B,EAA6CC,QAA7C,EAAuDlP,MAAvD,EAA8D;IAC1DuL,SAAS,CAAC3I,IAAV,CAAe,IAAf,EAAqB4I,YAArB;IAEA,KAAKyD,aAAL,GAAqBA,aAArB;IACA,KAAKjP,MAAL,GAAcA,MAAd;IAGA,KAAKsF,EAAL,GAAU,KAAKoG,IAAL,CAAU1J,IAAV,CAAe,IAAf,CAAV;;IAEA,IAAG,CAAC,KAAKsD,EAAT,EAAY;MACR,KAAKyJ,KAAL,CAAW,KAAKpD,QAAL,GAAc,GAAd,GAAkBuD,QAAQ,CAAC5J,EAAT,EAA7B;MACA,KAAK6J,MAAL,GAAc,IAAd;IACH;;IAED,KAAKC,YAAL,GAAoB,KAAK9J,EAAL,CAAQzI,OAAR,CAAgB,GAAhB,EAAoB,GAApB,CAApB;IAEA,KAAK+M,KAAL,GAAa,KAAK8B,IAAL,CAAU1J,IAAV,CAAe,OAAf,CAAb;IAEA,KAAK0J,IAAL,CAAU,CAAV,EAAaoD,YAAb,CAA0B,OAA1B,EAAkC,CAAC,KAAKpD,IAAL,CAAU1J,IAAV,CAAe,OAAf,KAAyB,EAA1B,IAA8B,gBAAhE;IACA,KAAK5H,KAAL,GAAa;MAACiV,IAAI,EAAE,KAAKtV,gBAAL,CAAsB,MAAtB;IAAP,CAAb;IAEA,KAAKK,KAAL,CAAWkV,MAAX,GAAoB,KAAKvV,gBAAL,CAAsB,QAAtB,KAAmC,EAAvD,CArB0D,CAsB1D;IACA;IACA;IACA;;IACI,IAAIsT,CAAJ;;IACA,IAAG,KAAK3B,IAAL,CAAUhL,IAAV,CAAe,cAAf,CAAH,EAAkC;MAC9B2M,CAAC,GAAG,KAAK3B,IAAL,CAAUhL,IAAV,CAAe,cAAf,CAAJ;IACH,CAFD,MAEK;MACD2M,CAAC,GAAG,KAAKtT,gBAAL,CAAsB,cAAtB,CAAJ;MACAsT,CAAC,GAAGA,CAAC,GAAGA,CAAC,CAACxQ,OAAF,CAAU,IAAV,EAAe,EAAf,CAAH,GAAwB,GAA7B;MACAwQ,CAAC,GAAGA,CAAC,IAAI,GAAL,GAAW,GAAX,GAAiB1O,UAAU,CAAC0O,CAAD,CAA/B;IACH;;IACD,KAAKjT,KAAL,CAAW,cAAX,IAA6BiT,CAA7B;IACA,KAAK3B,IAAL,CAAUhL,IAAV,CAAe,cAAf,EAA+B2M,CAA/B,EAnCsD,CAoC1D;;IAEA,IAAIkC,aAAa,GAAIN,aAAa,CAACtK,OAAd,IAAyBsK,aAAa,CAACtK,OAAd,CAAsB,KAAKW,EAA3B,CAAzB,GAA0D2J,aAAa,CAACtK,OAAd,CAAsB,KAAKW,EAA3B,CAA1D,GAA2F,IAAhH;IAEA,KAAKiC,QAAL,GAAqB,KAAKiI,gBAAL,EAArB;IACA,KAAKjI,QAAL,IAAmB,KAAKvF,IAAL,CAAU,OAAV,EAAkB,KAAKA,IAAL,CAAU,OAAV,IAAmB,kBAArC,CAAnB;IAEA,KAAKyN,YAAL,GAAqB,EAArB;IACA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAKC,UAAL,GAAqB,EAArB;IACA,KAAK7D,WAAL,GAAqB,QAArB;IACA,IAAI8D,QAAQ,GAAG,KAAf;;IACA,IAAGL,aAAa,IAAIA,aAAa,CAACK,QAAlC,EAA2C;MACvCA,QAAQ,GAAG,IAAX;MACA,OAAOL,aAAa,CAACK,QAArB;IACH;;IACDL,aAAa,IAAK,KAAKM,MAAL,CAAYN,aAAZ,CAAlB;IACA,KAAKO,OAAL;IACA,IAAGF,QAAH,EACI,KAAKG,WAAL,CAAiB,IAAjB;IACJ,KAAKC,SAAL;EACH;;EACD9X,MAAM,CAAC0F,MAAP,CAAcuN,MAAd,EAAsBI,SAAtB;;EAEAJ,MAAM,CAAC7S,SAAP,CAAiB0X,SAAjB,GAA6B,YAAU;IACnC,KAAKC,YAAL,GAAoBtQ,IAAI,CAACC,SAAL,CAAe,KAAKsQ,UAAL,EAAf,CAApB;EACH,CAFD;;EAGA/E,MAAM,CAAC7S,SAAP,CAAiB6X,OAAjB,GAA2B,YAAU;IACjC,OAAOxQ,IAAI,CAACC,SAAL,CAAe,KAAKsQ,UAAL,EAAf,KAAqC,KAAKD,YAAjD;EACH,CAFD;;EAGA9E,MAAM,CAAC7S,SAAP,CAAiB8X,IAAjB,GAAwB,UAAS9K,EAAT,EAAY;IAChC,KAAK+K,YAAL,GAAoB,KAAK3E,IAAL,CAAU4E,KAAV,EAApB;EACH,CAFD;;EAGAnF,MAAM,CAAC7S,SAAP,CAAiBiY,UAAjB,GAA8B,YAAU;IACpC,KAAKF,YAAL,GAAoB,IAApB;EACH,CAFD;;EAGAlF,MAAM,CAAC7S,SAAP,CAAiBkY,UAAjB,GAA8B,YAAU;IACpC;IACA,KAAKH,YAAL,CAAkBI,QAAlB,CAA2B7W,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuB+I,IAAlD;IACA,KAAKZ,IAAL,GAAY,KAAK2E,YAAjB;IACA,KAAKA,YAAL,GAAoB,IAApB;EACH,CALD;;EAOAlF,MAAM,CAAC7S,SAAP,CAAiB4X,UAAjB,GAA8B,UAASQ,WAAT,EAAqB;IAC/C,IAAIC,OAAO,GAAG,KAAK1B,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,CAAd;IACA,IAAIsL,CAAC,GAAG;MACJtL,EAAE,EAAE,KAAKA,EADL;MAEJ8J,YAAY,EAAE,KAAKA,YAFf;MAGJxF,KAAK,EAAE,KAAKA,KAHR;MAIJrC,QAAQ,EAAE,KAAKA,QAAL,KAAkB,KAAKiI,gBAAL,CAAsB,IAAtB,CAAlB,GAAgDhR,SAAhD,GAA4D,KAAK+I,QAJvE;MAKJ8H,IAAI,EAAE,KAAKJ,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,KAAuC,KAAK2J,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,EAAoC+J,IAL7E;MAMJtB,OAAO,EAAE,KAAKA,OANV;MAOJE,OAAO,EAAE,KAAKA,OAPV;MAQJ5G,IAAI,EAAE,KAAKA,IARP;MASJ2D,MAAM,EAAE,KAAKA,MATT;MAUJtK,IAAI,EAAE,KAAKA,IAVP;MAWJmQ,UAAU,EAAE,KAAKA;IAXb,CAAR;;IAaA,IAAGH,WAAH,EAAe;MACXE,CAAC,CAACrJ,QAAF,GAAc,KAAKA,QAAnB;MACAqJ,CAAC,CAACE,WAAF,GAAiB,KAAKpQ,IAAL,IAAa,KAAKA,IAAL,CAAU7H,MAAxB,IAAmC,CAAnD;IACH;;IACDW,CAAC,CAACqV,IAAF,CAAO+B,CAAP,EAAS,UAAStR,GAAT,EAAa+E,GAAb,EAAiB;MACtB,IAAGA,GAAG,IAAI7F,SAAV,EAAoB;QAChB,OAAOoS,CAAC,CAACtR,GAAD,CAAR;MACH;IACJ,CAJD;;IAKA,IAAG,KAAKyR,WAAR,EAAoB;MAChB,IAAIC,IAAI,GAAG,IAAX;MACA,KAAKD,WAAL,CAAiB7K,OAAjB,CAAyB,UAASlE,IAAT,EAAc;QACnC4O,CAAC,CAAC5O,IAAD,CAAD,GAAUgP,IAAI,CAAChP,IAAD,CAAd;MACH,CAFD;IAGH;;IACD,OAAO4O,CAAP;EACH,CA/BD;;EAgCAzF,MAAM,CAAC7S,SAAP,CAAiBoY,WAAjB,GAA+B,YAAU;IACrC,IAAIhQ,IAAI,GAAG;MACP4E,EAAE,EAAE,KAAKA,EADF;MAEPsE,KAAK,EAAE,KAAKA,KAFL;MAGP6B,OAAO,EAAE,KAAKA,OAHP;MAIP/K,IAAI,EAAE,KAAKA;IAJJ,CAAX;;IAMA,KAAI,IAAIpB,GAAR,IAAe,KAAKoB,IAApB,EAAyB;MACrB,IAAGpB,GAAG,IAAE,OAAL,IAAgBA,GAAG,IAAE,IAAxB,EACIoB,IAAI,CAACpB,GAAD,CAAJ,GAAY,KAAKoB,IAAL,CAAUpB,GAAV,CAAZ;IACP;;IAED,OAAOoB,IAAP;EACH,CAbD;;EAeAyK,MAAM,CAAC7S,SAAP,CAAiBuX,MAAjB,GAA0B,UAAS/P,OAAT,EAAiB;IACvC,KAAI,IAAIR,GAAR,IAAeQ,OAAf,EAAuB;MACnB;MACA,IAAImR,MAAM,GAAG,QAAM/Y,MAAM,CAACgG,OAAP,CAAeoB,GAAf,CAAnB;MACA,IAAI2R,MAAM,IAAI,IAAd,EACI,KAAKA,MAAL,EAAanR,OAAO,CAACR,GAAD,CAApB,EADJ,KAEI;QACA,KAAKA,GAAL,IAAYQ,OAAO,CAACR,GAAD,CAAnB;QACA,KAAKyR,WAAL,GAAmB,KAAKA,WAAL,IAAoB,EAAvC;QACA,KAAKA,WAAL,CAAiBvR,IAAjB,CAAsBF,GAAtB;MACH;IACJ;EACJ,CAZD;;EAaA6L,MAAM,CAAC7S,SAAP,CAAiByW,KAAjB,GAAyB,UAASzJ,EAAT,EAAY;IACjC,KAAKA,EAAL,GAAUA,EAAV;IACA,KAAKoG,IAAL,CAAUtM,IAAV,CAAe,IAAf,EAAqBkG,EAArB;EACH,CAHD;;EAIA6F,MAAM,CAAC7S,SAAP,CAAiB4Y,QAAjB,GAA4B,UAAStH,KAAT,EAAe;IACvC,KAAKA,KAAL,GAAaA,KAAb;EACH,CAFD;;EAGAuB,MAAM,CAAC7S,SAAP,CAAiB6Y,QAAjB,GAA4B,UAAS/W,KAAT,EAAe;IACvCZ,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAe,KAAKxD,KAApB,EAA2BA,KAA3B;IACA,KAAK0V,OAAL;EACH,CAHD;;EAIA3E,MAAM,CAAC7S,SAAP,CAAiB8Y,kBAAjB,GAAsC,YAAU;IAC5C,IAAIR,CAAC,GAAG,KAAK3B,aAAL,CAAmBoC,KAA3B;IACA,IAAIhE,CAAC,GAAG,CAAC1O,UAAU,CAAC,KAAK+B,IAAL,CAAU,KAAKuO,aAAL,CAAmBqC,qBAA7B,CAAD,CAAV,GAAkEV,CAAC,CAACW,GAArE,IAA4EX,CAAC,CAACY,WAAtF;IAEA,OAAO;MACHC,CAAC,EAAE/Y,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBF,CAAjB,GAAqBpE,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBH,CAApD,CADA;MAEHI,CAAC,EAAEnZ,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBE,CAAjB,GAAqBxE,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBC,CAApD,CAFA;MAGHC,CAAC,EAAEpZ,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBG,CAAjB,GAAqBzE,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBE,CAApD,CAHA;MAIHC,CAAC,EAAErZ,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBI,CAAjB,GAAqB1E,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBG,CAApD;IAJA,CAAP;EAMH,CAVD;;EAYA5G,MAAM,CAAC7S,SAAP,CAAiBwX,OAAjB,GAA2B,UAAST,IAAT,EAAc;IAErC,IAAIzV,KAAK,GAAG,IAAZ;;IAGA,IAAG,KAAKqV,aAAL,CAAmB+C,YAAtB,EAAmC;MAC/B,KAAKtG,IAAL,CAAUnJ,GAAV,CAAc,KAAKnI,KAAnB;MACA;IACH;;IAED,IAAGiV,IAAH,EAAQ;MACJ,IAAI1K,OAAO,GAAG,EAAd;MACAA,OAAO,CAAC,KAAKW,EAAN,CAAP,GAAmB;QAAC+J,IAAI,EAAEA;MAAP,CAAnB;MACA7V,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAe,KAAKqR,aAApB,EAAmC;QAACtK,OAAO,EAAEA;MAAV,CAAnC;IACH,CAJD,MAIM,IAAG,CAAC0K,IAAD,IAASA,IAAI,KAAG7Q,SAAhB,IAA6B,KAAKyQ,aAAL,CAAmBtK,OAAhD,IAA2D,KAAKsK,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,CAA3D,IAAkG,KAAK2J,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,EAAoC+J,IAAzI,EAA8I;MAChJ,OAAO,KAAKJ,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,EAAoC+J,IAA3C;IACH,CAhBoC,CAmBrC;;;IACA,IAAG,KAAKJ,aAAL,CAAmBoC,KAAnB,CAAyBvN,EAAzB,IAA+B,KAAK+M,UAAvC,EAAkD;MAC9C,IAAID,CAAC,GAAG,KAAK3B,aAAL,CAAmBoC,KAA3B;MACA,IAAIhE,CAAC,GAAG,CAAC,KAAKwD,UAAL,GAAkBD,CAAC,CAACW,GAArB,IAA4BX,CAAC,CAACY,WAAtC;MAEA,IAAIS,GAAG,GAAG;QACNR,CAAC,EAAE/Y,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBF,CAAjB,GAAqBpE,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBH,CAApD,CADG;QAENI,CAAC,EAAEnZ,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBE,CAAjB,GAAqBxE,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBC,CAApD,CAFG;QAGNC,CAAC,EAAEpZ,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBG,CAAjB,GAAqBzE,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBE,CAApD,CAHG;QAINC,CAAC,EAAErZ,IAAI,CAACgZ,KAAL,CAAWd,CAAC,CAAC1M,MAAF,CAASyN,OAAT,CAAiBI,CAAjB,GAAqB1E,CAArB,GAAyBuD,CAAC,CAAC1M,MAAF,CAAS0N,MAAT,CAAgBG,CAApD;MAJG,CAAV;MAMA,KAAKtC,YAAL,CAAkB,MAAlB,IAA4B,UAAUwC,GAAG,CAACR,CAAd,GAAkB,GAAlB,GAAwBQ,GAAG,CAACJ,CAA5B,GAAgC,GAAhC,GAAsCI,GAAG,CAACH,CAA1C,GAA8C,GAA9C,GAAoDG,GAAG,CAACF,CAAxD,GAA0D,GAAtF;IACH,CAXD,MAWM,IAAG,KAAK9C,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,KAAuC,KAAK2J,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,EAAoC+J,IAA9E,EAAoF;MACtF,KAAKI,YAAL,CAAkB,MAAlB,IAA4B,KAAKR,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,EAAoC+J,IAAhE;IACH,CAFK,MAEA,IAAG,KAAK9H,QAAL,IAAiB,KAAK0H,aAAL,CAAmB/K,MAAnB,CAA0BqD,QAA9C,EAAuD;MACzD,KAAKkI,YAAL,CAAkB,MAAlB,IAA4B,KAAKR,aAAL,CAAmB/K,MAAnB,CAA0BqD,QAAtD;IACH,CAFK,MAEA,IAAG,KAAK0H,aAAL,CAAmB/K,MAAnB,CAA0BpG,IAA7B,EAAkC;MACpC,KAAK2R,YAAL,CAAkB,MAAlB,IAA4B,KAAKR,aAAL,CAAmB/K,MAAnB,CAA0BpG,IAAtD;IAEH,CAHK,MAGA,IAAG,KAAK1D,KAAL,CAAWiV,IAAX,IAAiB,MAApB,EAA2B;MAC7B,KAAKI,YAAL,CAAkB,MAAlB,IAA4B,KAAKrV,KAAL,CAAWiV,IAAX,GAAkB,KAAKjV,KAAL,CAAWiV,IAA7B,GAAoC,KAAKJ,aAAL,CAAmB/K,MAAnB,CAA0BgO,WAA1F;IAEH,CAHK,MAGD;MACD,KAAKzC,YAAL,CAAkB,MAAlB,IAA4B,MAA5B;IACH;;IAGD,IAAGvX,MAAM,CAACuG,QAAP,CAAgB,KAAKwQ,aAAL,CAAmB/K,MAAnB,CAA0B0L,QAA1C,CAAH,EACI,KAAKF,aAAL,CAAmB,MAAnB,IAA6BxX,MAAM,CAACia,SAAP,CAAiB,KAAK1C,YAAL,CAAkBJ,IAAnC,EAAyC+C,OAAzC,CAAiDzT,UAAU,CAAC,KAAKsQ,aAAL,CAAmB/K,MAAnB,CAA0B0L,QAA3B,CAA3D,EAAiGyC,WAAjG,EAA7B,CADJ,KAGI,KAAK3C,aAAL,CAAmB,MAAnB,IAA6B,KAAKT,aAAL,CAAmB/K,MAAnB,CAA0B0L,QAAvD;IAEJ,IAAG1X,MAAM,CAACuG,QAAP,CAAgB,KAAKwQ,aAAL,CAAmB/K,MAAnB,CAA0BoO,KAA1C,CAAH,EACI,KAAK3C,UAAL,CAAgB,MAAhB,IAA0BzX,MAAM,CAACia,SAAP,CAAiB,KAAK1C,YAAL,CAAkBJ,IAAnC,EAAyC+C,OAAzC,CAAiDzT,UAAU,CAAC,KAAKsQ,aAAL,CAAmB/K,MAAnB,CAA0BoO,KAA3B,CAA3D,EAA8FD,WAA9F,EAA1B,CADJ,KAGI,KAAK1C,UAAL,CAAgB,MAAhB,IAA0B,KAAKV,aAAL,CAAmB/K,MAAnB,CAA0BoO,KAApD;IAGJ,KAAK5G,IAAL,CAAUnJ,GAAV,CAAc,MAAd,EAAqB,KAAKkN,YAAL,CAAkB,MAAlB,CAArB;IACA,KAAKJ,IAAL,GAAY,KAAKI,YAAL,CAAkB,MAAlB,CAAZ;;IAEA,IAAG,KAAKrV,KAAL,CAAWkV,MAAX,IAAmB,MAAnB,IAA6B,KAAKL,aAAL,CAAmB/K,MAAnB,CAA0BoL,MAA1B,IAAoC9Q,SAApE,EAA8E;MAC1E,KAAKkN,IAAL,CAAUnJ,GAAV,CAAc,QAAd,EAAuB,KAAK0M,aAAL,CAAmB/K,MAAnB,CAA0BoL,MAAjD;IACH,CAFD,MAEK;MACD,IAAI5P,CAAC,GAAG,KAAKtF,KAAL,CAAWkV,MAAX,IAAqB9Q,SAArB,GAAiC,EAAjC,GAAsC,KAAKpE,KAAL,CAAWkV,MAAzD;MACA,KAAK5D,IAAL,CAAUnJ,GAAV,CAAc,QAAd,EAAwB7C,CAAxB;IACH;;IAED,IAAG,KAAKkQ,QAAR,EACI,KAAK2C,MAAL;EAEP,CAtED;;EAuEApH,MAAM,CAAC7S,SAAP,CAAiBka,WAAjB,GAA+B,UAAS1O,EAAT,EAAa2O,WAAb,EAAyB;IACpD3O,EAAE,GAAGA,EAAE,KAAKtF,SAAP,GAAmBtG,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAAnB,GAA6C,KAAK0L,gBAAL,EAAlD,CADoD,CACuB;;IAC3E,IAAIkD,YAAY,GAAG,KAAKnL,QAAxB;IACA,KAAKA,QAAL,GAAgBzD,EAAhB;IACAA,EAAE,GAAG,KAAK9B,IAAL,CAAU,OAAV,EAAkB,KAAKA,IAAL,CAAU,OAAV,IAAmB,kBAArC,CAAH,GAA8D,KAAKA,IAAL,CAAU,OAAV,EAAkB,KAAKA,IAAL,CAAU,OAAV,EAAmBnF,OAAnB,CAA2B,kBAA3B,EAA8C,EAA9C,CAAlB,CAAhE;IACA,IAAG,KAAK0K,QAAL,IAAiBmL,YAApB,EACI,KAAK1S,MAAL,CAAYoL,cAAZ,CAA2B,IAA3B;IACJ,CAACqH,WAAD,IAAgB,KAAK3C,OAAL,EAAhB;EACH,CARD;;EASA3E,MAAM,CAAC7S,SAAP,CAAiBqa,SAAjB,GAA6B,UAAS9J,MAAT,EAAgB;IACzC,IAAI+J,aAAJ;;IACA,IAAGA,aAAa,GAAG,KAAK3D,aAAL,CAAmBnG,cAAnB,IAAqC,KAAKmG,aAAL,CAAmBnG,cAAnB,CAAkCD,MAAlC,CAAxD,EAAkG;MAC9F,KAAKA,MAAL,GAAcA,MAAd;MACA,KAAKnI,IAAL,CAAUmI,MAAV,GAAmBA,MAAnB;MACA,KAAK2J,WAAL,CAAiBI,aAAa,CAACrL,QAA/B,EAAyC,IAAzC;IACH,CAJD,MAIK;MACD,KAAKsB,MAAL,GAAcrK,SAAd;MACA,KAAKkC,IAAL,CAAUmI,MAAV,GAAmBrK,SAAnB;MACA,KAAKgU,WAAL,CAAiB,KAAjB,EAAwB,IAAxB;IACH;;IACD,KAAK1C,OAAL;EACH,CAZD;;EAaA3E,MAAM,CAAC7S,SAAP,CAAiByX,WAAjB,GAA+B,UAASjM,EAAT,EAAY;IACvC;IACA,KAAK9D,MAAL,CAAYqG,YAAZ,CAAyB,IAAzB;EACH,CAHD;;EAIA8E,MAAM,CAAC7S,SAAP,CAAiBua,aAAjB,GAAiC,UAASxO,GAAT,EAAa;IAC1C,KAAKwM,UAAL,GAAkBrX,CAAC,CAACsZ,SAAF,CAAYzO,GAAZ,IAAmB1F,UAAU,CAAC0F,GAAD,CAA7B,GAAqC7F,SAAvD;EACH,CAFD;;EAGA2M,MAAM,CAAC7S,SAAP,CAAiBkX,gBAAjB,GAAoC,UAASuD,SAAT,EAAmB;IACnD,IAAIC,IAAI,GAAG,KAAK/D,aAAL,CAAmBtK,OAAnB,CAA2B,KAAKW,EAAhC,CAAX;;IACA,IAAG,CAACyN,SAAD,IAAcC,IAAd,IAAsBA,IAAI,CAACzL,QAAL,KAAkB/I,SAA3C,EAAqD;MACjD,OAAOwU,IAAI,CAACzL,QAAZ;IACH,CAFD,MAEM,IACF,KAAK0H,aAAL,CAAmBgE,UAAnB,IAAiC,KAAK7Y,KAAL,CAAWiV,IAAX,IAAmB,MAApD,IAA8D,KAAK/J,EAAL,IAAW,QAAzE,IAAqF,KAAKA,EAAL,IAAW,QAD9F,EAEL;MACG,OAAO,IAAP;IACH,CAJK,MAID;MACD,OAAO,KAAP;IACH;EACJ,CAXD;;EAYA6F,MAAM,CAAC7S,SAAP,CAAiB4a,SAAjB,GAA6B,YAAU;IACnC,KAAKxH,IAAL,CAAUnJ,GAAV,CAAc;MAAC,QAAS,KAAKoN,UAAL,CAAgBN;IAA1B,CAAd;EACH,CAFD;;EAGAlE,MAAM,CAAC7S,SAAP,CAAiB6a,WAAjB,GAA+B,YAAU;IACrC,KAAKzH,IAAL,CAAUnJ,GAAV,CAAc;MAAC,QAAS,KAAKkN,YAAL,CAAkBJ;IAA5B,CAAd;EACH,CAFD;;EAGAlE,MAAM,CAAC7S,SAAP,CAAiBia,MAAjB,GAA0B,YAAU;IAChC,KAAK7G,IAAL,CAAUnJ,GAAV,CAAc;MAAC,QAAS,KAAKmN,aAAL,CAAmBL;IAA7B,CAAd;IACA,KAAKO,QAAL,GAAgB,IAAhB;EACH,CAHD;;EAIAzE,MAAM,CAAC7S,SAAP,CAAiB8a,QAAjB,GAA4B,YAAU;IAClC,KAAK1H,IAAL,CAAUnJ,GAAV,CAAc;MAAC,QAAS,KAAKkN,YAAL,CAAkBJ;IAA5B,CAAd;IACA,KAAKO,QAAL,GAAgB,KAAhB;EACH,CAHD,CA5gBW,CAihBX;EACA;EACA;;;EACA,SAASzD,MAAT,CAAgBrM,OAAhB,EAAyBsM,KAAzB,EAAgCpM,MAAhC,EAAuC;IAEnC,IAAG,CAACF,OAAO,CAACwF,EAAT,IAAe,CAACxF,OAAO,CAACuT,GAA3B,EAAgC,OAAO,KAAP;IAEhC,IAAIC,GAAG,GAAG9Z,CAAC,CAAC,cAAYsG,OAAO,CAACwF,EAApB,GAAuB,SAAvB,GAAiCxF,OAAO,CAACuT,GAAzC,GAA6C,KAA9C,CAAD,CAAsD9Q,GAAtD,CAA0D;MAChE1H,KAAK,EAAEiF,OAAO,CAACjF,KAAR,GAAc,IAD2C;MAEhEC,MAAM,EAAEgF,OAAO,CAAChF,MAAR,GAAe,IAFyC,CAGhE;MACA;MACA;;IALgE,CAA1D,EAMPoH,QANO,CAME,eANF,CAAV;IAQAqJ,SAAS,CAAC3I,IAAV,CAAe,IAAf,EAAqB0Q,GAArB;IAEA,KAAKtT,MAAL,GAAcA,MAAd;IAEA,KAAKqT,GAAL,GAAWvT,OAAO,CAACuT,GAAnB;IACA,KAAKtE,KAAL,CAAWjP,OAAO,CAACwF,EAAnB;IACA,KAAKwG,WAAL,GAAmB,QAAnB;IACA,KAAKnB,CAAL,GAAShM,UAAU,CAACmB,OAAO,CAAC6K,CAAT,CAAnB;IACA,KAAK/R,CAAL,GAAS+F,UAAU,CAAEmB,OAAO,CAAClH,CAAV,CAAnB;IACA,KAAK2a,EAAL,GAAU,CAAC,KAAK5I,CAAN,EAAQ,KAAK/R,CAAb,CAAV;IACA,KAAKiC,KAAL,GAAa8D,UAAU,CAAEmB,OAAO,CAACjF,KAAV,CAAvB;IACA,KAAKC,MAAL,GAAc6D,UAAU,CAAEmB,OAAO,CAAChF,MAAV,CAAxB;IACA,KAAKiT,OAAL,GAAgBjO,OAAO,CAACiO,OAAxB;IACA,KAAKE,OAAL,GAAgBnO,OAAO,CAACmO,OAAxB;IACA,KAAK5G,IAAL,GAAavH,OAAO,CAACuH,IAArB;IACA,KAAK2D,MAAL,GAAelL,OAAO,CAACkL,MAAvB;IACA,kBAAe;MAACL,CAAC,EAAE,KAAKA,CAAT;MAAY/R,CAAC,EAAC,KAAKA,CAAnB;MAAsBiC,KAAK,EAAC,KAAKA,KAAjC;MAAwCC,MAAM,EAAE,KAAKA;IAArD,CAAf;IACA,KAAK0Y,SAAL,GAAiB1T,OAAO,CAAC0T,SAAzB;IACA,KAAKC,QAAL,GAAgB3T,OAAO,CAAC2T,QAAR,IAAoBjV,SAApB,GAAgC,IAAhC,GAAuCtG,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAAC2T,QAA5B,CAAvD;IACA,KAAKC,MAAL,GAAc5T,OAAO,CAAC4T,MAAR,IAAkBlV,SAAlB,GAA8B,KAA9B,GAAsCtG,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAAC4T,MAA5B,CAApD;IACA,KAAKC,QAAL,GAAgB7T,OAAO,CAAC6T,QAAxB;IACA,KAAKC,MAAL,GAAc9T,OAAO,CAAC8T,MAAR,IAAkBpV,SAAlB,GAA8B,IAA9B,GAAqC1E,QAAQ,CAACgG,OAAO,CAAC8T,MAAT,CAA3D;IACA,KAAKlT,IAAL,GAAY,OAAOZ,OAAO,CAACY,IAAf,KAAwB,WAAxB,GAAsC,EAAtC,GAA2CZ,OAAO,CAACY,IAA/D;IAEA,KAAK8J,cAAL,GApCmC,CAsCnC;EACH;;EACDtS,MAAM,CAAC0F,MAAP,CAAcuO,MAAd,EAAsBZ,SAAtB;;EAEAY,MAAM,CAAC7T,SAAP,CAAiB4X,UAAjB,GAA8B,YAAU;IACpC,IAAIU,CAAC,GAAG;MACJtL,EAAE,EAAE,KAAKA,EADL;MAEJmO,QAAQ,EAAE,KAAKA,QAFX;MAGJC,MAAM,EAAE,KAAKA,MAHT;MAIJC,QAAQ,EAAE,KAAKA,QAJX;MAKJC,MAAM,EAAE,KAAKA,MALT;MAMJ7F,OAAO,EAAE,KAAKA,OANV;MAOJE,OAAO,EAAE,KAAKA,OAPV;MAQJ5G,IAAI,EAAE,KAAKA,IARP;MASJ2D,MAAM,EAAE,KAAKA,MATT;MAUJtK,IAAI,EAAE,KAAKA,IAVP;MAWJ2S,GAAG,EAAE,KAAKA,GAXN;MAYJxY,KAAK,EAAE,gBAAaA,KAZhB;MAaJC,MAAM,EAAE,gBAAaA,MAbjB;MAcJ6P,CAAC,EAAE,KAAKA,CAdJ;MAeJ/R,CAAC,EAAE,KAAKA,CAfJ;MAgBJ4a,SAAS,EAAE,KAAKA;IAhBZ,CAAR;IAkBAha,CAAC,CAACqV,IAAF,CAAO+B,CAAP,EAAS,UAAStR,GAAT,EAAa+E,GAAb,EAAiB;MACtB,IAAGA,GAAG,IAAI7F,SAAV,EAAoB;QAChB,OAAOoS,CAAC,CAACtR,GAAD,CAAR;MACH;IACJ,CAJD;IAKA,OAAOsR,CAAP;EACH,CAzBD;;EA2BAzE,MAAM,CAAC7T,SAAP,CAAiBuX,MAAjB,GAA0B,UAASnP,IAAT,EAAemT,QAAf,EAAwB;IAC9C,KAAI,IAAIvU,GAAR,IAAeoB,IAAf,EAAoB;MAChB;MACA,IAAIuQ,MAAM,GAAG,QAAM/Y,MAAM,CAACgG,OAAP,CAAeoB,GAAf,CAAnB;MACA,IAAI2R,MAAM,IAAI,IAAd,EACI,KAAKA,MAAL,EAAavQ,IAAI,CAACpB,GAAD,CAAjB,EAAuBuU,QAAvB;IACP;EACJ,CAPD;;EASA1H,MAAM,CAAC7T,SAAP,CAAiBwb,MAAjB,GAA0B,UAAST,GAAT,EAAcQ,QAAd,EAAuB;IAC7C,IAAG,CAACR,GAAJ,EACI,OAAO,KAAP;IACJA,GAAG,GAAGnb,MAAM,CAAC2G,OAAP,CAAewU,GAAf,CAAN;IACAQ,QAAQ,GAAGA,QAAQ,IAAI,KAAKA,QAA5B;IACA,IAAIP,GAAG,GAAI,IAAIS,KAAJ,EAAX;IACA,IAAInP,MAAM,GAAG,IAAb;IACA,KAAKyO,GAAL,GAAWA,GAAX;;IACAC,GAAG,CAACU,MAAJ,GAAa,YAAU;MACnBpP,MAAM,WAAN,CAAe/J,KAAf,GAAuB,KAAKA,KAA5B;MACA+J,MAAM,WAAN,CAAe9J,MAAf,GAAwB,KAAKA,MAA7B;MACA8J,MAAM,CAAC5C,IAAP,CAAY;QAAC2I,CAAC,EAAE/F,MAAM,CAAC+F,CAAX;QAAc/R,CAAC,EAAEgM,MAAM,CAAChM,CAAxB;QAA2BiC,KAAK,EAAE,KAAKA,KAAvC;QAA8CC,MAAM,EAAE,KAAKA;MAA3D,CAAZ;MACA8J,MAAM,CAAC/J,KAAP,GAAe,KAAKA,KAApB;MACA+J,MAAM,CAAC9J,MAAP,GAAgB,KAAKA,MAArB;MACA8J,MAAM,CAAC8G,IAAP,CAAY,CAAZ,EAAeoD,YAAf,CAA4B,KAA5B,EAAmCuE,GAAnC;MACAzO,MAAM,CAAC4F,cAAP,CAAsBqJ,QAAtB;IACH,CARD;;IASAP,GAAG,CAACD,GAAJ,GAAWA,GAAX;EACH,CAlBD;;EAoBAlH,MAAM,CAAC7T,SAAP,CAAiB2b,KAAjB,GAAyB,UAASV,EAAT,EAAY;IACjC,KAAK5I,CAAL,GAAS4I,EAAE,CAAC,CAAD,CAAX;IACA,KAAK3a,CAAL,GAAS2a,EAAE,CAAC,CAAD,CAAX;IACA,KAAKA,EAAL,GAAU,CAAC,KAAK5I,CAAN,EAAS,KAAK/R,CAAd,CAAV,CAHiC,CAIjC;IACA;IACA;IACA;IACA;IACA;IACA;;IACA,IAAG,KAAKoH,MAAL,CAAYuD,OAAZ,GAAsB2Q,QAAzB,EACI,KAAKV,SAAL,GAAiB,KAAKxT,MAAL,CAAY6M,eAAZ,CAA4B0G,EAAE,CAAC,CAAD,CAA9B,EAAmCA,EAAE,CAAC,CAAD,CAArC,CAAjB;IAEJ,KAAK/I,cAAL;IACA,IAAG,KAAK2J,QAAR,EACI,KAAKA,QAAL,CAAcvR,IAAd,CAAmB,IAAnB;EACP,CAjBD;;EAkBAuJ,MAAM,CAAC7T,SAAP,CAAiB8b,WAAjB,GAA+B,UAASb,EAAT,EAAY;IAEvC,IAAInP,KAAK,GAAG,KAAKpE,MAAL,CAAYuD,OAAZ,EAAZ;;IACA,IAAI8Q,aAAa,GAAG,EAApB;IAEAd,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAF,GAAQnP,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAhB;IACAf,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAF,GAAQnP,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAhB;IAGA,IAAGlQ,KAAK,CAAC8P,QAAT,EACI,KAAKV,SAAL,GAAiB,KAAKxT,MAAL,CAAY6M,eAAZ,CAA4B0G,EAAE,CAAC,CAAD,CAA9B,EAAmCA,EAAE,CAAC,CAAD,CAArC,CAAjB;IAEJc,aAAa,CAACd,EAAd,GAAmBA,EAAnB;IACA,KAAK1D,MAAL,CAAYwE,aAAZ;EACH,CAdD;;EAgBAlI,MAAM,CAAC7T,SAAP,CAAiBkS,cAAjB,GAAkC,UAASqJ,QAAT,EAAkB;IAChD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAIja,KAAK,GAAG,IAAZ;;IACA,IAAI6Q,GAAG,GAAG7Q,KAAK,CAACoG,MAAN,CAAa0K,iBAAb,CAA+B,CAAC,KAAKC,CAAN,EAAS,KAAK/R,CAAd,CAA/B,CAAV,CAVgD,CAYhD;IACA;;;IAEA,KAAK8S,IAAL,CAAUnJ,GAAV,CAAc;MACV,aAAa,qCAAmCkI,GAAG,CAAC,CAAD,CAAtC,GAA0C,KAA1C,GAAgDA,GAAG,CAAC,CAAD,CAAnD,GAAuD;IAD1D,CAAd;EAIH,CAnBD;;EAoBA0B,MAAM,CAAC7T,SAAP,CAAiBic,YAAjB,GAAgC,UAASC,MAAT,EAAgB;IAC5C,IAAG,OAAOA,MAAP,IAAiB,QAApB,EAA6B;MACzBA,MAAM,GAAGA,MAAM,CAAC5X,IAAP,GAAcmC,KAAd,CAAoB,GAApB,CAAT;MACAyV,MAAM,GAAG,CAAC7V,UAAU,CAAC6V,MAAM,CAAC,CAAD,CAAP,CAAX,EAAuB7V,UAAU,CAAC6V,MAAM,CAAC,CAAD,CAAP,CAAjC,CAAT;IACH;;IACD,IAAG,QAAOA,MAAP,KAAiB,QAAjB,IAA6BA,MAAM,CAAC3b,MAAP,IAAe,CAA/C,EAAiD;MAC7C,IAAGW,CAAC,CAACsZ,SAAF,CAAY0B,MAAM,CAAC,CAAD,CAAlB,KAA0Bhb,CAAC,CAACsZ,SAAF,CAAY0B,MAAM,CAAC,CAAD,CAAlB,CAA7B,EAAoD;QAChD,IAAIjB,EAAE,GAAG,KAAKvT,MAAL,CAAYyU,eAAZ,CAA4BD,MAA5B,CAAT;QACA,KAAKP,KAAL,CAAWV,EAAX;MACH;IACJ;EACJ,CAXD,CA5qBW,CAwrBX;;;EACApH,MAAM,CAACuI,gBAAP,GAA0B,UAASC,OAAT,EAAkBC,OAAlB,EAA2BC,WAA3B,EAAwCC,YAAxC,EAAsDjB,QAAtD,EAA+D;IACrFc,OAAO,GAAShW,UAAU,CAACgW,OAAD,CAA1B;IACAC,OAAO,GAASjW,UAAU,CAACiW,OAAD,CAA1B;IACAC,WAAW,GAAKlW,UAAU,CAACkW,WAAD,CAA1B;IACAC,YAAY,GAAInW,UAAU,CAACmW,YAAD,CAA1B,CAJqF,CAKrF;IACA;;IAGA,OAAO,CAACH,OAAD,EAAUC,OAAV,CAAP;EACH,CAVD;;EAWAzI,MAAM,CAAC7T,SAAP,CAAiByc,IAAjB,GAAwB,UAASC,WAAT,EAAsB5I,KAAtB,EAA6B6I,WAA7B,EAA0CC,aAA1C,EAAwD;IAC5E,IAAItb,KAAK,GAAG,IAAZ;;IACA,KAAKub,EAAL,GAAU,KAAKxK,CAAf;IACA,KAAKyK,EAAL,GAAU,KAAKxc,CAAf;IAEAY,CAAC,CAAC,MAAD,CAAD,CAAUsK,EAAV,CAAa,uBAAb,EAAqC,UAAS/G,CAAT,EAAW;MAC5CA,CAAC,CAAC0H,cAAF;;MACA7K,KAAK,CAACoG,MAAN,CAAauD,OAAb,GAAuB8R,IAAvB,CAA4BnT,QAA5B,CAAqC,gBAArC,EAF4C,CAG5C;;;MACA,IAAIoT,QAAQ,GAAGpd,MAAM,CAAC4E,WAAP,CAAmBC,CAAnB,CAAf;MACA,IAAIwY,EAAE,GAAGD,QAAQ,CAAC3K,CAAT,GAAaqK,WAAW,CAACrK,CAAlC;MACA,IAAI6K,EAAE,GAAGF,QAAQ,CAAC1c,CAAT,GAAaoc,WAAW,CAACpc,CAAlC;;MACAgB,KAAK,CAACqa,KAAN,CAAY,CAACra,KAAK,CAACub,EAAN,GAAWI,EAAE,GAACnJ,KAAf,EAAsBxS,KAAK,CAACwb,EAAN,GAAWI,EAAE,GAACpJ,KAApC,CAAZ,EAP4C,CAQ5C;MACA;MAEA;MACA;;IACH,CAbD;IAcA5S,CAAC,CAAC,MAAD,CAAD,CAAUsK,EAAV,CAAa,qBAAb,EAAmC,UAAS/G,CAAT,EAAW;MAC1CA,CAAC,CAAC0H,cAAF;;MACA7K,KAAK,CAAC6b,MAAN;;MACA,IAAIH,QAAQ,GAAGpd,MAAM,CAAC4E,WAAP,CAAmBC,CAAnB,CAAf;MACA,IAAIwY,EAAE,GAAGD,QAAQ,CAAC3K,CAAT,GAAaqK,WAAW,CAACrK,CAAlC;MACA,IAAI6K,EAAE,GAAGF,QAAQ,CAAC1c,CAAT,GAAaoc,WAAW,CAACpc,CAAlC;;MACAgB,KAAK,CAACqa,KAAN,CAAY,CAACra,KAAK,CAACub,EAAN,GAAWI,EAAE,GAACnJ,KAAf,EAAsBxS,KAAK,CAACwb,EAAN,GAAWI,EAAE,GAACpJ,KAApC,CAAZ,EAN0C,CAQ1C;MACA;MACA;;;MACA6I,WAAW,CAACrS,IAAZ,CAAiBhJ,KAAjB;MACA,IAAGA,KAAK,CAACub,EAAN,IAAYvb,KAAK,CAAC+Q,CAAlB,IAAuB/Q,KAAK,CAACwb,EAAN,IAAYxb,KAAK,CAAChB,CAA5C,EACIsc,aAAa,CAACtS,IAAd,CAAmBhJ,KAAnB;IACP,CAdD;EAeH,CAlCD;;EAmCAuS,MAAM,CAAC7T,SAAP,CAAiBmd,MAAjB,GAA0B,YAAU;IAChC;IACA;IACAjc,CAAC,CAAC,MAAD,CAAD,CAAUoR,GAAV,CAAc,cAAd;IACA,KAAK5K,MAAL,CAAYuD,OAAZ,GAAsB8R,IAAtB,CAA2BnN,WAA3B,CAAuC,gBAAvC;EACH,CALD;;EAMAiE,MAAM,CAAC7T,SAAP,aAA0B,YAAU;IAChC,IAAG,KAAK+O,IAAR,EACI,KAAKqE,IAAL,CAAUyB,MAAV,CAAiB,GAAjB,EAAsBlK,KAAtB,GAA8B1K,MAA9B;IACJ,KAAKyH,MAAL,CAAYuD,OAAZ,GAAsB8R,IAAtB,CAA2B3T,IAA3B,CAAgC,MAAI,KAAK4D,EAAzC,EAA6CrC,KAA7C,GAAqD1K,MAArD;EACH,CAJD;;EAKA4T,MAAM,CAAC7T,SAAP,CAAiBod,SAAjB,GAA6B,UAASxW,GAAT,EAAa;IACtC,KAAKyW,MAAL,GAAczW,GAAd;IACA,KAAK0W,cAAL,GAAuB1W,GAAvB;IACA,KAAKuM,OAAL,GAAe,CAACvM,GAAD,CAAf;EACH,CAJD;;EAMAhH,MAAM,CAACqT,SAAP,GAAmBA,SAAnB;EACArT,MAAM,CAACiT,MAAP,GAAgBA,MAAhB;EACAjT,MAAM,CAACiU,MAAP,GAAgBA,MAAhB,CA1vBW,CA4vBX;;EACA,IAAI0J,OAAO,GAAS3b,QAAQ,CAAC4b,oBAAT,CAA8B,QAA9B,CAApB;EACA,IAAIC,QAAQ,GAAQF,OAAO,CAACA,OAAO,CAAChd,MAAR,GAAiB,CAAlB,CAAP,CAA4Bwa,GAA5B,CAAgCtU,KAAhC,CAAsC,GAAtC,CAApB;EACAgX,QAAQ,CAAC/W,GAAT;EACA,IAAIgX,WAAW,GAAMD,QAAQ,CAAC5W,IAAT,CAAc,GAAd,IAAmB,GAAxC;EACA4W,QAAQ,CAAC/W,GAAT;EACA,IAAIiX,aAAa,GAAIF,QAAQ,CAAC5W,IAAT,CAAc,GAAd,IAAmB,GAAxC;EAKA,IAAI+W,SAAS,GAAG,EAAhB;EACA,IAAIC,QAAQ,GAAI,CAAhB,CAxwBW,CA0wBX;;EACA,IAAIC,QAAQ;IACRC,YAAY,EAAU,CADd;IAERC,UAAU,EAAY;MAACxS,EAAE,EAAE;IAAL,CAFd;IAGRlD,MAAM,EAAgB,EAHd;IAIR2V,YAAY,EAAU,CAJd;IAKRC,UAAU,EAAY,CALd;IAMRvD,UAAU,EAAY,KANd;IAORpY,KAAK,EAAiB,IAPd;IAQRC,MAAM,EAAgB,IARd;IASR2b,eAAe,EAAO,IATd;IAURzT,OAAO,EAAe;MAACzI,GAAG,EAAE,CAAN;MAASD,IAAI,EAAE,CAAf;MAAkBE,KAAK,EAAE,CAAzB;MAA4BC,MAAM,EAAE;IAApC,CAVd;IAWRic,QAAQ,EAAc,IAXd;IAYRC,SAAS,EAAa,IAZd;IAaRC,QAAQ,EAAc,IAbd;IAcRC,SAAS,EAAa,IAdd;IAeRC,WAAW,EAAW,gBAfd;IAgBR;IACA9E,YAAY,EAAgB,KAjBpB;IAkBR9N,MAAM,EAAgB;MAACgO,WAAW,EAAE,SAAd;MACC6E,UAAU,EAAE,SADb;MAECnH,QAAQ,EAAE,EAFX;MAGC0C,KAAK,EAAE,EAHR;MAIC0E,SAAS,EAAE,SAJZ;MAKCnO,MAAM,EAAE;IALT,CAlBd;IAwBRlE,OAAO,EAAe,EAxBd;IAyBRsS,OAAO,EAAe,EAzBd;IA0BR;IACA;IACA3C,OAAO,EAAe,EA5Bd;IA6BR4C,MAAM,EAAgB,SA7Bd;IA8BRC,OAAO,EAAe,IA9Bd;IA+BR3P,SAAS,EAAa,IA/Bd;IAgCRE,QAAQ,EAAc,IAhCd;IAiCR0P,WAAW,EAAW,IAjCd;IAkCRC,UAAU,EAAY,IAlCd;IAmCRC,SAAS,EAAa,IAnCd;IAoCRxR,IAAI,EAAkB;MAAChC,EAAE,EAAE,KAAL;MAAYyT,KAAK,EAAE,CAAC,CAAD,EAAG,EAAH,CAAnB;MAA2BC,KAAK,EAAE,CAAlC;MAAqCC,OAAO,EAAE;QAAC3T,EAAE,EAAE,IAAL;QAAWsD,QAAQ,EAAE;MAArB,CAA9C;MAA6EsQ,UAAU,EAAE;IAAzF,CApCd;IAqCRC,MAAM,EAAgB;MAAC7T,EAAE,EAAE,KAAL;MAAYyT,KAAK,EAAE,KAAnB;MAA0BR,UAAU,EAAE,KAAtC;MAA6Ca,QAAQ,EAAE;IAAvD,CArCd;IAsCRC,UAAU,EAAY,IAtCd;IAuCRC,QAAQ,EAAc;MAACC,IAAI,EAAE,KAAP;MAAcjU,EAAE,EAAE,KAAlB;MAAyBkU,QAAQ,EAAE,OAAnC;MAA4C3d,QAAQ,EAAE;IAAtD,CAvCd;IAwCR4d,QAAQ,EAAc;MAACF,IAAI,EAAE,KAAP;MAAcjU,EAAE,EAAE,KAAlB;MAAyBkU,QAAQ,EAAE,OAAnC;MAA4C3d,QAAQ,EAAE,KAAtD;MAA6D6d,QAAQ,EAAE,IAAvE;MAA6Erd,KAAK,EAAE,GAApF;MAAyF6b,QAAQ,EAAE,EAAnG;MAAuGC,SAAS,EAAE,EAAlH;MAAsHwB,mBAAmB,EAAE,IAA3I;MAAiJC,gBAAgB,EAAE;IAAnK,CAxCd;IAyCRC,WAAW,EAAW,KAzCd;IA0CRvP,cAAc,EAAQ;MAClB,KAAK;QAAC,SAAS,SAAV;QAAqB,SAAS,GAA9B;QAAmC,SAAS,EAA5C;QAAgD,YAAY;MAA5D,CADa;MAElB,KAAK;QAAC,SAAS,UAAV;QAAsB,SAAS,GAA/B;QAAoC,SAAS,EAA7C;QAAiD,YAAY;MAA7D;IAFa;EA1Cd,wCA8Cc;IAClB,aAAc,IADI;IAElB,cAAe,IAFG;IAGlB,kBAAmB,IAHD;IAIlB,gBAAiB,IAJC;IAKlB,oBAAqB,IALH;IAMlB,mBAAoB,IANF;IAOlB,gBAAiB,IAPC;IAQlB,oBAAqB,IARH;IASlB,mBAAoB,IATF;IAUlB,uBAAwB,IAVN;IAWlB,2BAA4B,IAXV;IAYlB,0BAA2B,IAZT;IAalB,iBAAkB,IAbA;IAclB,qBAAsB,IAdJ;IAelB,kBAAmB,IAfD;IAgBlB,sBAAuB;EAhBL,CA9Cd,2CAgEc;IAClBwP,aAAa,EAAE,EADG;IAElBC,aAAa,EAAE,EAFG;IAGlBC,aAAa,EAAE,EAHG;IAIlBC,aAAa,EAAE,EAJG;IAKlBhT,aAAa,EAAE,EALG;IAMlBiT,WAAW,EAAE,EANK;IAOlBC,iBAAiB,EAAE;EAPD,CAhEd,uCA0Ec;IAAC7U,EAAE,EAAE,KAAL;IAAY8U,MAAM,EAAE;MAACC,GAAG,EAAE,KAAN;MAAaC,IAAI,EAAE;IAAnB,CAApB;IAAgD5U,MAAM,EAAE;MAAC0N,MAAM,EAAE,IAAT;MAAemH,OAAO,EAAE,IAAxB;MAA8BF,GAAG,EAAE,SAAnC;MAA8CC,IAAI,EAAE;IAApD,CAAxD;IAAwHvH,GAAG,EAAE,CAA7H;IAAgIyH,GAAG,EAAE;EAArI,CA1Ed,yCA2EC;IAAClV,EAAE,EAAE;EAAL,CA3ED,sCA4Ec;IAClBA,EAAE,EAAE,KADc;IAElBvE,MAAM,EAAE,KAFU;IAGlB0Z,eAAe,EAAE,KAHC;IAIlBC,WAAW,EAAE,EAJK;IAKlBC,iBAAiB,EAAE,WALD;IAMlB7U,cAAc,EAAE,KANE;IAOlBW,MAAM,EAAE,UAPU;IAQlBpK,KAAK,EAAE,OARW;IASlBR,QAAQ,EAAE,MATQ;IAUlB+e,MAAM,EAAE,IAVU;IAWlBC,aAAa,EAAE,MAXG;IAYlBC,YAAY,EAAE;MACVjU,MAAM,EAAE,SADE;MAEVT,MAAM,EAAE,SAFE;MAGVa,aAAa,EAAE;QACX8T,YAAY,EAAE,IADH;QAEXhT,WAAW,EAAE,KAFF;QAGXZ,WAAW,EAAE;MAHF;IAHL,CAZI;IAqBlB6T,mBAAmB,EAAE,eArBH;IAsBlBzQ,aAAa,EAAE;EAtBG,CA5Ed,0CAoGE;IACN0Q,UAAU,EAAE;MACR3V,EAAE,EAAE,IADI;MAER4V,OAAO,EAAE,EAFD;MAGRC,IAAI,EAAE,MAHE;MAIRC,IAAI,EAAE;IAJE,CADN;IAONlR,KAAK,EAAE;EAPD,CApGF,yCA6GC;IACLrD,MAAM,EAAE;MACJK,KAAK,EAAE;QACHC,WAAW,EAAE,KADV;QAEHkU,cAAc,EAAE,QAFb;QAGHC,eAAe,EAAE,KAHd;QAIHC,WAAW,EAAE,KAJV;QAKHxT,WAAW,EAAE,KALV;QAMHyT,cAAc,EAAE,QANb;QAOHrT,QAAQ,EAAE;MAPP;IADH,CADH;IAYL/B,MAAM,EAAE;MACJc,KAAK,EAAE;QACHC,WAAW,EAAE,KADV;QAEHY,WAAW,EAAE,KAFV;QAGHI,QAAQ,EAAE;MAHP;IADH,CAZH;IAmBLlB,aAAa,EAAE;MACXC,KAAK,EAAE;QACHC,WAAW,EAAE,IADV;QAEHY,WAAW,EAAE,KAFV;QAGHI,QAAQ,EAAE,KAHP;QAIHN,YAAY,EAAE,IAJX;QAKHG,iBAAiB,EAAE;MALhB;IADI;EAnBV,CA7GD,6CA0IM;IACVY,QAAQ,EAAE,KADA;IACO;IACjB8R,WAAW,EAAE,EAFH;IAGVre,KAAK,EAAE;EAHG,CA1IN,4CA+II;IACR8I,QAAQ,EAAE,KADF;IAERF,SAAS,EAAE;EAFH,CA/IJ,4CAmJI;IACRK,EAAE,EAAE,KADI;IAERmW,MAAM,EAAE,EAFA;IAGRC,MAAM,EAAE,KAHA;IAIR/T,MAAM,EAAE,MAJA;IAIQ;IAChBgU,IAAI,EAAE,SALE;IAMRC,OAAO,EAAE;EAND,CAnJJ,wCA2JA,EA3JA,wCA4JA,EA5JA,+CA6JO;IACXtW,EAAE,EAAE,KADO;IAEXzJ,QAAQ,EAAE,UAFC;IAGXggB,KAAK,EAAE,aAHI;IAIXC,QAAQ,EAAE,IAJC;IAKX3D,SAAS,EAAE;EALA,CA7JP,+CAoKO;IACX7S,EAAE,EAAE,KADO;IAEXzJ,QAAQ,EAAE,UAFC;IAGXggB,KAAK,EAAE,QAHI;IAIXC,QAAQ,EAAE,KAJC;IAKX3D,SAAS,EAAE;EALA,CApKP,gDA2KQ,CA3KR,sCA4Kc;IAAC7S,EAAE,EAAE,KAAL;IAAYoV,WAAW,EAAE,qBAAzB;IAAgDjZ,QAAQ,EAAE,kBAASoF,MAAT,EAAgB;MACpG,OAAO,mBAAmBA,MAAM,CAACC,EAA1B,GAA+B,IAA/B,IAAuCD,MAAM,CAACuE,KAAP,IAAcvE,MAAM,CAACC,EAA5D,IAAkE,WAAzE;IACH;EAF6B,CA5Kd,6CA+Kc;IAACxB,EAAE,EAAE,KAAL;IAAYoV,WAAW,EAAE,qBAAzB;IAAgDjZ,QAAQ,EAAE,kBAAS2E,MAAT,EAAgB;MAChG,OAAO,mBAAmBA,MAAM,CAACU,EAA1B,GAA+B,IAA/B,GAAsCV,MAAM,CAACU,EAA7C,GAAkD,WAAzD;IACH;EAFyB,CA/Kd,aAAZ,CA3wBW,CA+7BX;;EACA,IAAI+O,aAAa,GAAG;IAAC,OAAO4B,aAAa,GAAC;EAAtB,CAApB;EAGA;;EACA3K,MAAM,GAAG,gBAASiP,IAAT,EAAeza,OAAf,EAAuB;IAAA;;IAE5B,IAAIsE,KAAJ;;IAEA,KAAKoW,OAAL;MACIC,UAAU,EAAG;QAAC,aAAalP,SAAd;QAAyB,UAAUJ,MAAnC;QAA2C,UAAUgB;MAArD,CADjB;MAEIuO,qBAAqB,EAAE,iCAAU;QAC7B,KAAKvX,QAAL,CAAcwX,UAAd,GAA2BC,IAA3B,CAAgC,UAASvS,MAAT,EAAgB;UAC5C,IAAGA,MAAH,EAAU;YACNA,MAAM,CAACnC,OAAP,CAAe,UAASkC,KAAT,EAAe;cAC1B,IAAGA,KAAK,CAAC+R,IAAN,IAAc,QAAjB,EAA0B;gBACtB/V,KAAK,CAACyW,YAAN,GAAqB3iB,MAAM,CAACqG,YAAP,CAAoB6J,KAAK,CAACsL,MAA1B,CAArB;gBACAtP,KAAK,CAAC0W,cAAN,GAAuB1S,KAAK,CAACuL,QAA7B;cACH;YACJ,CALD;UAMH;QACJ,CATD;MAUH,CAbL;MAcIoH,SAAS,EAAE,qBAAU;QACjB3W,KAAK,CAAC4W,MAAN,GAAe5W,KAAK,CAACtE,OAAN,CAAckb,MAA7B;;QACA5W,KAAK,CAAC4W,MAAN,CAAa9U,OAAb,CAAqB,UAAS2L,CAAT,EAAW;UAC5BA,CAAC,CAACpG,OAAF,CAAUvF,OAAV,CAAkB,UAAShH,GAAT,EAAa;YAC3BkF,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,MAAIxC,GAAG,CAAC+b,KAAxB,EAA+BzW,MAA/B,CAAsCqN,CAAC,CAACqJ,OAAxC;UACH,CAFD;QAGH,CAJD;MAKH,CArBL;MAsBIC,gBAAgB,EAAG,0BAASrb,OAAT,EAAiB;QAChC,IAAGA,OAAH,EACItG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAAN,CAAcsb,aAA7B,EAA4Ctb,OAA5C;;QACJ,IAAGsE,KAAK,CAACtE,OAAN,CAAcsb,aAAd,CAA4BtX,EAA/B,EAAkC;UAC9B,IAAG,CAACM,KAAK,CAACiX,cAAV,EAAyB;YACrBjX,KAAK,CAACiX,cAAN,GAAuB7hB,CAAC,CAAC,2CAAD,CAAxB;YACA4K,KAAK,CAACkX,mBAAN,GAA4B9hB,CAAC,CAAC,yCAAD,CAAD,CAA6CiX,QAA7C,CAAsDrM,KAAK,CAACiX,cAA5D,CAA5B;YACAjX,KAAK,CAACmX,sBAAN,GAA+B/hB,CAAC,CAAC,6CAAD,CAAD,CAAiDiX,QAAjD,CAA0DrM,KAAK,CAACiX,cAAhE,CAA/B;YACAjX,KAAK,CAACoX,sBAAN,GAA+BhiB,CAAC,CAAC,0BAAD,CAAD,CAA8BiX,QAA9B,CAAuCrM,KAAK,CAACmX,sBAA7C,CAA/B;YACAnX,KAAK,CAACqX,kBAAN,GAA2BjiB,CAAC,CAAC,qDAAD,CAAD,CAAyDiX,QAAzD,CAAkErM,KAAK,CAACoX,sBAAxE,CAA3B;;YACApX,KAAK,CAACiX,cAAN,CAAqB5K,QAArB,CAA8BrM,KAAK,CAACJ,KAApC;UACH;;UACDI,KAAK,CAACkX,mBAAN,CAA0BzY,IAA1B,CAA+BuB,KAAK,CAACtE,OAAN,CAAcsb,aAAd,CAA4Bf,KAA3D;;UACAjW,KAAK,CAACqX,kBAAN,CAAyBxY,KAAzB;;UACAmB,KAAK,CAACiX,cAAN,CAAqBnT,WAArB,CAAiC,yEAAjC;;UACA9D,KAAK,CAACiX,cAAN,CAAqBnZ,QAArB,CAA8B,YAAUkC,KAAK,CAACtE,OAAN,CAAcsb,aAAd,CAA4B/gB,QAApE,EAZ8B,CAa9B;UACA;UACA;;;UACA+J,KAAK,CAACiX,cAAN,CAAqB9Y,GAArB,CAAyB;YAAC,cAAc6B,KAAK,CAACtE,OAAN,CAAcsb,aAAd,CAA4BzE;UAA3C,CAAzB;;UAEAvS,KAAK,CAACtE,OAAN,CAAckb,MAAd,CAAqB9U,OAArB,CAA6B,UAAS2L,CAAT,EAAW;YACpC,IAAIjJ,IAAI,GAAGpP,CAAC,CAAC,oDAAkDqY,CAAC,CAACvM,EAApD,GAAuD,IAAvD,GACT,4DADS,IACqDuM,CAAC,CAACqJ,OAAF,GAAU,SAAV,GAAoB,EADzE,IAC6E,KAD7E,GAET,SAFS,GAECrJ,CAAC,CAACjI,KAFH,GAES,WAFT,GAGT,QAHQ,CAAD,CAGG6G,QAHH,CAGYrM,KAAK,CAACqX,kBAHlB,CAAX;UAIH,CALD;;UAMArX,KAAK,CAACoX,sBAAN,CAA6Bla,YAA7B,CAA0C;YAACC,oBAAoB,EAAE;UAAvB,CAA1C;;UACA6C,KAAK,CAACiX,cAAN,CAAqBzQ,GAArB;;UACAxG,KAAK,CAACiX,cAAN,CAAqBvX,EAArB,CAAwB,OAAxB,EAAgC,qBAAhC,EAAuD,YAAW;YAC9D,IAAIwB,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,UAAb,CAAT;YACA,IAAIgb,KAAK,GAAGliB,CAAC,CAAC,IAAD,CAAD,CAAQkI,IAAR,CAAa,OAAb,CAAZ;YACAga,KAAK,CAACtc,IAAN,CAAW,SAAX,EAAsB,CAACsc,KAAK,CAACtc,IAAN,CAAW,SAAX,CAAvB;;YACAgF,KAAK,CAACtE,OAAN,CAAckb,MAAd,CAAqB9U,OAArB,CAA6B,UAAS2L,CAAT,EAAW;cACrC,IAAGA,CAAC,CAACvM,EAAF,IAAQA,EAAX,EAAeuM,CAAC,CAACqJ,OAAF,GAAY,CAACrJ,CAAC,CAACqJ,OAAf;YACjB,CAFD;;YAGAthB,KAAK,CAACmhB,SAAN;UACH,CARD;;UASA3W,KAAK,CAACkX,mBAAN,CAA0BxX,EAA1B,CAA6B,OAA7B,EAAqC,YAAU;YAC3CM,KAAK,CAACiX,cAAN,CAAqBxR,WAArB,CAAiC,QAAjC;UACH,CAFD;;UAIAzF,KAAK,CAACiX,cAAN,CAAqBxR,WAArB,CAAiC,QAAjC,EAA0C,CAACzF,KAAK,CAACtE,OAAN,CAAcsb,aAAd,CAA4Bd,QAAvE;QAEH,CAzCD,MAyCK;UACDlW,KAAK,CAACiX,cAAN,IAAwBjX,KAAK,CAACiX,cAAN,CAAqBM,IAArB,EAAxB;QACH;MAEJ,CAtEL;MAuEIC,gBAAgB,EAAG,0BAAS9b,OAAT,EAAiB;QAChC,IAAGA,OAAH,EACItG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAAN,CAAc+b,aAA7B,EAA4C/b,OAA5C;;QACJ,IAAGsE,KAAK,CAACtE,OAAN,CAAc+b,aAAd,CAA4B/X,EAA/B,EAAkC;UAC9B,IAAG,CAACM,KAAK,CAAC0X,cAAV,EAAyB;YACrB1X,KAAK,CAAC0X,cAAN,GAAuBtiB,CAAC,CAAC,2CAAD,CAAxB;YACA4K,KAAK,CAAC2X,mBAAN,GAA4BviB,CAAC,CAAC,yCAAD,CAAD,CAA6CiX,QAA7C,CAAsDrM,KAAK,CAAC0X,cAA5D,CAA5B;YACA1X,KAAK,CAAC4X,sBAAN,GAA+BxiB,CAAC,CAAC,6CAAD,CAAD,CAAiDiX,QAAjD,CAA0DrM,KAAK,CAAC0X,cAAhE,CAA/B;YACA1X,KAAK,CAAC6X,sBAAN,GAA+BziB,CAAC,CAAC,0BAAD,CAAD,CAA8BiX,QAA9B,CAAuCrM,KAAK,CAAC4X,sBAA7C,CAA/B;YACA5X,KAAK,CAAC8X,kBAAN,GAA2B1iB,CAAC,CAAC,qDAAD,CAAD,CAAyDiX,QAAzD,CAAkErM,KAAK,CAAC6X,sBAAxE,CAA3B;;YACA7X,KAAK,CAAC0X,cAAN,CAAqBrL,QAArB,CAA8BrM,KAAK,CAACiR,IAApC;UACH;;UACDjR,KAAK,CAAC2X,mBAAN,CAA0BlZ,IAA1B,CAA+BuB,KAAK,CAACtE,OAAN,CAAc+b,aAAd,CAA4BxB,KAA3D;;UACAjW,KAAK,CAAC8X,kBAAN,CAAyBjZ,KAAzB;;UACAmB,KAAK,CAAC0X,cAAN,CAAqB5T,WAArB,CAAiC,yEAAjC;;UACA9D,KAAK,CAAC0X,cAAN,CAAqB5Z,QAArB,CAA8B,YAAUkC,KAAK,CAACtE,OAAN,CAAc+b,aAAd,CAA4BxhB,QAApE,EAZ8B,CAa9B;UACA;UACA;;;UACA+J,KAAK,CAAC0X,cAAN,CAAqBvZ,GAArB,CAAyB;YAAC,cAAc6B,KAAK,CAACtE,OAAN,CAAc+b,aAAd,CAA4BlF;UAA3C,CAAzB;;UAEAvS,KAAK,CAACtE,OAAN,CAAcqc,MAAd,CAAqBjW,OAArB,CAA6B,UAASkW,CAAT,EAAW;YACpC,IAAIxT,IAAI,GAAGpP,CAAC,CAAC,oDAAkD4iB,CAAC,CAACC,SAApD,GAA8D,IAA9D,GACT,SADS,GACCD,CAAC,CAACxS,KADH,GACS,WADT,GAET,QAFQ,CAAD,CAEG6G,QAFH,CAEYrM,KAAK,CAAC8X,kBAFlB,CAAX;UAGH,CAJD;;UAKA9X,KAAK,CAAC6X,sBAAN,CAA6B3a,YAA7B,CAA0C;YAACC,oBAAoB,EAAE;UAAvB,CAA1C;;UACA6C,KAAK,CAAC0X,cAAN,CAAqBlR,GAArB;;UACAxG,KAAK,CAAC0X,cAAN,CAAqBhY,EAArB,CAAwB,OAAxB,EAAgC,qBAAhC,EAAuD,YAAW;YAC9D,IAAIwB,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,UAAb,CAAT;;YACA9G,KAAK,CAAC0iB,QAAN,CAAehX,EAAf;UACH,CAHD;;UAIAlB,KAAK,CAAC2X,mBAAN,CAA0BjY,EAA1B,CAA6B,OAA7B,EAAqC,YAAU;YAC3CM,KAAK,CAAC0X,cAAN,CAAqBjS,WAArB,CAAiC,QAAjC;UACH,CAFD;;UAIAzF,KAAK,CAAC0X,cAAN,CAAqBjS,WAArB,CAAiC,QAAjC,EAA0C,CAACzF,KAAK,CAACtE,OAAN,CAAc+b,aAAd,CAA4BvB,QAAvE;QAEH,CAnCD,MAmCK;UACDlW,KAAK,CAAC0X,cAAN,IAAwB1X,KAAK,CAAC0X,cAAN,CAAqBH,IAArB,EAAxB;QACH;MAEJ,CAjHL;MAkHIW,QAAQ,EAAE,kBAAShX,EAAT,EAAY;QAClBlB,KAAK,CAAC0X,cAAN,CAAqBpa,IAArB,CAA0B,qBAA1B,EAAiDmI,WAAjD,CAA6D,QAA7D,EAAsE,KAAtE;;QACAzF,KAAK,CAAC0X,cAAN,CAAqBpa,IAArB,CAA0B,qBAAmB4D,EAAnB,GAAsB,IAAhD,EAAsDuE,WAAtD,CAAkE,QAAlE,EAA2E,IAA3E;;QACAzF,KAAK,CAACtE,OAAN,CAAcqc,MAAd,CAAqBjW,OAArB,CAA6B,UAASqW,KAAT,EAAe;UACzCnY,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,MAAI6a,KAAK,CAACF,SAA1B,EAAqCV,IAArC;QACF,CAFD;;QAGA,IAAIY,KAAK,GAAGnY,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,MAAI4D,EAApB,CAAZ;;QACAiX,KAAK,CAAClR,IAAN;QACAkR,KAAK,GAAG,IAAIhR,SAAJ,CAAcgR,KAAd,EAAqB3iB,KAArB,CAAR;QACA,IAAIsS,IAAI,GAAGqQ,KAAK,CAACtQ,OAAN,EAAX;QACA7H,KAAK,CAACoY,QAAN,GAAiBtQ,IAAjB;;QACAtS,KAAK,CAAC6iB,UAAN,CAAiBrY,KAAK,CAACoY,QAAvB;;QACApY,KAAK,CAACsY,UAAN,GAAmB,IAAnB;QACAtY,KAAK,CAACuY,SAAN,GAAkB,CAAlB;;QACA/iB,KAAK,CAACgjB,OAAN;;QACAL,KAAK,GAAG,IAAR;MACH,CAlIL;MAmIIM,qBAAqB,EAAE,iCAAU;QAC7B,IAAIvX,EAAJ;QACA,IAAIwX,YAAY,GAAG,EAAnB;QACA,IAAIhd,OAAO,GAAG,EAAd;QACA,IAAIid,QAAQ,GAAG,EAAf;;QAEA3Y,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,GAAhB,EAAqBmN,IAArB,CAA0B,UAASrR,KAAT,EAAe;UACrC,IAAG8H,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQ,CAAR,EAAWyT,YAAX,CAAwB,IAAxB,CAAR,EAAsC;YAClC;YACAnN,OAAO,CAACN,IAAR,CAAa;cAAC6a,KAAK,EAAE/U,EAAR;cAAY2V,KAAK,EAAE3V;YAAnB,CAAb;UACH;QACJ,CALD;;QAMAwX,YAAY,CAACtd,IAAb,CAAkB;UAACoK,KAAK,EAAE,qBAAR;UAA+B9J,OAAO,EAAEA;QAAxC,CAAlB;;QAEAsE,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,yDAAhB,EAA2EmN,IAA3E,CAAgF,UAASrR,KAAT,EAAe;UAC3F,IAAG8H,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQ,CAAR,EAAWyT,YAAX,CAAwB,IAAxB,CAAR,EAAsC;YAClC;YACA8P,QAAQ,CAACvd,IAAT,CAAc;cAAC6a,KAAK,EAAE/U,EAAR;cAAY2V,KAAK,EAAE3V;YAAnB,CAAd;UACH;QACJ,CALD;;QAMAwX,YAAY,CAACtd,IAAb,CAAkB;UAACoK,KAAK,EAAE,mBAAR;UAA6B9J,OAAO,EAAEid;QAAtC,CAAlB;QAGA,OAAOD,YAAP;MACH,CA3JL;MA4JIhV,eAAe,EAAE,yBAASkV,MAAT,EAAgB;QAC7B,IAAIpjB,KAAK,GAAG,IAAZ;;QACA,OAAOA,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsByY,MAAtB,CAAP;MACH,CA/JL;MAgKIC,aAAa,EAAE,yBAAU;QACrB,IAAIrjB,KAAK,GAAG,IAAZ;;QACA,IAAG,CAACwK,KAAK,CAACiF,QAAV,EAAmB;UACf,IAAGjF,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBC,EAAtB,EAAyB;YACrBM,KAAK,CAAC8Y,WAAN,CAAkBlG,SAAlB,CAA4BzO,oBAA5B,GADqB,CAErB;;UACH;;UACD,IAAInE,KAAK,CAACtE,OAAN,CAAcqD,QAAd,CAAuBsW,UAAvB,CAAkC3V,EAAtC,EAAyC;YACrC,IAAIkG,KAAK,GAAGpQ,KAAK,CAACujB,aAAN,EAAZ;;YACA,IAAG/Y,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBC,EAAtB,EAAyB;cACrBM,KAAK,CAAC8Y,WAAN,CAAkBlG,SAAlB,CAA4BjN,aAA5B,CAA0CC,KAA1C;YACH,CAFD,MAEK;cACD5F,KAAK,CAACiR,IAAN,CAAW/S,MAAX,CAAkB0H,KAAlB;YACH;UACJ;QACJ;MACJ,CAhLL;MAiLImT,aAAa,EAAG,uBAASxjB,QAAT,EAAkB;QAE9ByK,KAAK,CAAC4F,KAAN,IAAgB5F,KAAK,CAAC4F,KAAN,CAAY/G,KAAZ,GAAoB1K,MAApB,EAAhB;QACA6L,KAAK,CAAC4F,KAAN,GAAcxQ,CAAC,CAAC,iKAA+J4K,KAAK,CAACtE,OAAN,CAAcqD,QAAd,CAAuBsW,UAAvB,CAAkCC,OAAjM,GAAyM,oDAAzM,GAA8PtV,KAAK,CAACtE,OAAN,CAAcqD,QAAd,CAAuBsW,UAAvB,CAAkCC,OAAhS,GAAwS,qFAAzS,CAAf;;QAEA,IAAG9f,KAAK,CAACuJ,QAAN,CAAeia,WAAf,MAAgCxjB,KAAK,CAACuJ,QAAN,CAAeka,UAAf,EAAnC,EAA+D;UAC3DjZ,KAAK,CAAC4F,KAAN,CAAY2R,IAAZ;QACH,CAFD,MAEK;UACDvX,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,cAAjB,EAAiCwG,WAAjC,CAA6C,UAA7C;;UACA9D,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,eAAjB,EAAkCwG,WAAlC,CAA8C,UAA9C;;UACA9D,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,cAAjB,EAAiCwG,WAAjC,CAA6C,UAA7C;;UACA9D,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,cAAjB,EAAiCwG,WAAjC,CAA6C,UAA7C;;UAEAtO,KAAK,CAACuJ,QAAN,CAAeka,UAAf,MACCjZ,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,cAAjB,EAAiCQ,QAAjC,CAA0C,UAA1C,KAAyDkC,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,cAAjB,EAAiCQ,QAAjC,CAA0C,UAA1C,CAD1D;UAGAtI,KAAK,CAACuJ,QAAN,CAAeia,WAAf,MACChZ,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,cAAjB,EAAiCQ,QAAjC,CAA0C,UAA1C,KAAyDkC,KAAK,CAAC4F,KAAN,CAAYtI,IAAZ,CAAiB,eAAjB,EAAkCQ,QAAlC,CAA2C,UAA3C,CAD1D;QAEH;;QAEDkC,KAAK,CAAC4F,KAAN,CAAYlG,EAAZ,CAAe,OAAf,EAAuB,6BAAvB,EAAqD,UAAS/G,CAAT,EAAW;UAC5DA,CAAC,CAAC0H,cAAF;UACA,IAAG7K,KAAK,CAACuJ,QAAN,CAAeka,UAAf,EAAH,EACI;;UACJzjB,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsB;YAAC+Y,IAAI,EAAE1jB,KAAK,CAACuJ,QAAN,CAAema,IAAf,GAAoB;UAA3B,CAAtB,EAAqD1C,IAArD,CAA0D,YAAU;YAChEjhB,QAAQ,IAAIA,QAAQ,EAApB;UACH,CAFD;QAGH,CAPD,EAOGmK,EAPH,CAOM,OAPN,EAOc,6BAPd,EAO4C,UAAS/G,CAAT,EAAW;UACnDA,CAAC,CAAC0H,cAAF;UACA,IAAG7K,KAAK,CAACuJ,QAAN,CAAeia,WAAf,EAAH,EACI;;UACJxjB,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsB;YAAC+Y,IAAI,EAAE1jB,KAAK,CAACuJ,QAAN,CAAema,IAAf,GAAoB;UAA3B,CAAtB,EAAqD1C,IAArD,CAA0D,YAAU;YAChEjhB,QAAQ,IAAIA,QAAQ,EAApB;UACH,CAFD;QAGH,CAdD,EAcGmK,EAdH,CAcM,OAdN,EAcc,8BAdd,EAc6C,UAAS/G,CAAT,EAAW;UACpDA,CAAC,CAAC0H,cAAF;UACA,IAAG7K,KAAK,CAACuJ,QAAN,CAAeia,WAAf,EAAH,EACI;;UACJxjB,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsB;YAAC+Y,IAAI,EAAE;UAAP,CAAtB,EAAiC1C,IAAjC,CAAsC,YAAU;YAC5CjhB,QAAQ,IAAIA,QAAQ,EAApB;UACH,CAFD;QAGH,CArBD,EAqBGmK,EArBH,CAqBM,OArBN,EAqBc,6BArBd,EAqB4C,UAAS/G,CAAT,EAAW;UACnDA,CAAC,CAAC0H,cAAF;UACA,IAAG7K,KAAK,CAACuJ,QAAN,CAAeka,UAAf,EAAH,EACI;;UACJzjB,KAAK,CAACuJ,QAAN,CAAeoB,MAAf,CAAsB;YAACgZ,QAAQ,EAAE;UAAX,CAAtB,EAAwC3C,IAAxC,CAA6C,YAAU;YACnDjhB,QAAQ,IAAIA,QAAQ,EAApB;UACH,CAFD;QAGH,CA5BD;;QA8BA,OAAOyK,KAAK,CAAC4F,KAAb;MACH,CApOL;MAqOIwT,aAAa,EAAE,yBAAU;QACrB,OAAMpZ,KAAK,CAAC6S,OAAN,CAAcpe,MAApB,EAA2B;UACvBe,KAAK,CAAC6jB,YAAN,CAAmBrZ,KAAK,CAAC6S,OAAN,CAAc,CAAd,CAAnB;QACH;MACJ,CAzOL;MA0OIyG,uBAAuB,EAAE,mCAAU;QAE/B,IAAIhd,IAAI,GAAI,KAAKyC,QAAL,CAAcsF,SAAd,EAAZ;;QACA,IAAI7O,KAAK,GAAG,IAAZ;;QAEAA,KAAK,CAAC4jB,aAAN;;QAEA9c,IAAI,IAAIA,IAAI,CAACwF,OAAL,CAAa,UAAShH,GAAT,EAAa;UAC9B,IAAGA,GAAG,CAAC0F,MAAJ,IAAc,EAAE1F,GAAG,YAAYiN,MAAjB,CAAjB,EAA0C;YACtCjN,GAAG,CAAC0F,MAAJ,CAAWU,EAAX,GAAgB,YAAUpG,GAAG,CAACoG,EAA9B;YACApG,GAAG,CAAC0F,MAAJ,CAAW6O,QAAX,GAAsB,IAAtB;;YACA,IAAI7O,MAAM,GAAGhL,KAAK,CAAC+jB,SAAN,CAAgBze,GAAG,CAAC0F,MAApB,CAAb;;YACAA,MAAM,IAAIA,MAAM,CAAC8Q,SAAP,CAAiBxW,GAAjB,CAAV;UACH;QACJ,CAPO,CAAR;MASH,CA1PL;MA2PI0e,SAAS,EAAE,qBAAU;QACjB,OAAO1lB,MAAM,CAAC2lB,IAAP,CAAYC,IAAZ,GAAiB,gBAAxB;MACH,CA7PL;MA8PIC,KAAK,EAAE,iBAAU;QACb,OAAO3Z,KAAK,CAAC8P,QAAb;MACH,CAhQL;MAiQI8J,kBAAkB,EAAE,4BAAS7f,MAAT,EAAgB;QAChC,IAAI8f,IAAJ;QACA,IAAIzP,KAAK,GAAG,KAAZ;QACA,IAAI0P,EAAE,GAAG/f,MAAM,CAACvB,IAAP,EAAT;;QACA,IAAGshB,EAAE,CAAChiB,OAAH,CAAW,GAAX,KAAiB,CAAC,CAAlB,IAAuBgiB,EAAE,CAAChiB,OAAH,CAAW,UAAX,MAAyB,CAAhD,IAAqDgiB,EAAE,CAAChiB,OAAH,CAAW,GAAX,KAAiB,CAAC,CAA1E,EAA4E;UACxE,OAAO;YAACsS,KAAK,EAAE;UAAR,CAAP;QACH;;QACD,IAAI2P,MAAM,GAAGD,EAAE,CAACE,SAAH,CAAaF,EAAE,CAAChiB,OAAH,CAAW,GAAX,IAAkB,CAA/B,EAAkCgiB,EAAE,CAACG,WAAH,CAAe,GAAf,CAAlC,CAAb;QACA,IAAIrB,MAAM,GAAGkB,EAAE,CAACE,SAAH,CAAaF,EAAE,CAAChiB,OAAH,CAAW,GAAX,IAAkB,CAA/B,EAAkCgiB,EAAE,CAAChiB,OAAH,CAAW,GAAX,CAAlC,CAAb;;QACA,IAAG;UACC+hB,IAAI,GAAG,IAAIK,QAAJ,CAAatB,MAAb,EAAoBmB,MAApB,CAAP;QACH,CAFD,CAEC,OAAM5P,GAAN,EAAU;UACPC,KAAK,GAAGD,GAAR;QACH;;QAED,IAAI,CAACC,KAAL,EACI,OAAOyP,IAAP,CADJ,KAGI,OAAOzP,KAAP,CAlB4B,CAkBf;MACpB,CApRL;MAqRI0B,UAAU,EAAE,oBAASQ,WAAT,EAAsB6N,MAAtB,EAA8BC,YAA9B,EAA2C;QACnDA,YAAY,GAAGA,YAAY,IAAI,EAA/B;QACA,IAAI1e,OAAO,GAAGtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBwG,KAAK,CAACtE,OAAzB,CAAd,CAFmD,CAGnD;QACA;QACA;;QACAtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAekC,OAAf,EAAwB0e,YAAxB;QAEA1e,OAAO,CAACwU,OAAR,GAAkBlQ,KAAK,CAACoY,QAAxB;QAEA,OAAO1c,OAAO,CAACmX,OAAf,CAVmD,CAWnD;;QACA,IAAIvG,WAAJ,EAAgB;UACZ5Q,OAAO,CAAC6E,OAAR,GAAkB,EAAlB;;UACAP,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASuL,CAAT,EAAW;YAC7B3R,OAAO,CAAC6E,OAAR,CAAgBnF,IAAhB,CAAqBiS,CAAC,CAACvB,UAAF,CAAaQ,WAAb,CAArB;UACH,CAFD;;UAGA5Q,OAAO,CAACmX,OAAR,GAAkB7S,KAAK,CAACtE,OAAN,CAAcmX,OAAhC;QACH,CAND,MAMK;UACD7S,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASuL,CAAT,EAAW;YAC7BA,CAAC,CAACtB,OAAF,OAAgBrQ,OAAO,CAAC6E,OAAR,CAAgB8M,CAAC,CAACnM,EAAlB,IAAwBmM,CAAC,CAACvB,UAAF,EAAxC;UACH,CAFD;;UAGA,IAAG9L,KAAK,CAAC6S,OAAN,CAAcpe,MAAd,GAAuB,CAA1B,EACIiH,OAAO,CAACmX,OAAR,GAAkB,EAAlB;;UACJ7S,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAASuY,CAAT,EAAW;YAC7B3e,OAAO,CAACmX,OAAR,CAAgBzX,IAAhB,CAAqBif,CAAC,CAACvO,UAAF,EAArB;UACH,CAFD;QAGH;;QAGD,IAAGqO,MAAH,EACI/kB,CAAC,CAACqV,IAAF,CAAO/O,OAAP,EAAe,UAASR,GAAT,EAAa+E,GAAb,EAAiB;UAC5B,IAAG1E,IAAI,CAACC,SAAL,CAAeyE,GAAf,KAAqB1E,IAAI,CAACC,SAAL,CAAewW,QAAQ,CAAC9W,GAAD,CAAvB,CAAxB,EACI,OAAOQ,OAAO,CAACR,GAAD,CAAd;QACP,CAHD;QAIJ,OAAOQ,OAAP;MACH,CAzTL;MA0TI;MACAgE,EAAE,EAAG,YAAS4a,KAAT,EAAgB/kB,QAAhB,EAA0B;QAC3B,KAAKglB,cAAL,GAAsBC,IAAI,CAACC,GAAL,EAAtB;QACA,IAAI,CAACza,KAAK,CAACxD,MAAN,CAAa8d,KAAb,CAAL,EACIta,KAAK,CAACxD,MAAN,CAAa8d,KAAb,IAAsB,EAAtB;;QACJta,KAAK,CAACxD,MAAN,CAAa8d,KAAb,EAAoBlf,IAApB,CAAyB7F,QAAzB;MACH,CAhUL;MAiUIiR,GAAG,EAAG,aAAS8T,KAAT,EAAgB/kB,QAAhB,EAA0B;QAC5ByK,KAAK,CAACxD,MAAN,CAAa8d,KAAb,IAAsB,EAAtB;MACH,CAnUL;MAoUI;MACA;MACA;MACA;MACA;MACA;MACA;MACAI,OAAO,EAAE,iBAASJ,KAAT,EAAe;QACpBta,KAAK,CAAC2a,aAAN,IAAuB3a,KAAK,CAAC2a,aAAN,CAAoBL,KAApB,CAAvB,IAAqDta,KAAK,CAAC2a,aAAN,CAAoBL,KAApB,GAArD;MACH,CA7UL;MA+UIM,SAAS,EAAE,mBAASC,SAAT,EAAmB;QAC1B7a,KAAK,CAACxD,MAAN,GAAewD,KAAK,CAACxD,MAAN,IAAgB,EAA/B;;QAEA,KAAK,IAAI7H,CAAT,IAAckmB,SAAd,EAAyB;UACrB,IAAI,OAAOA,SAAS,CAAClmB,CAAD,CAAhB,KAAwB,QAA5B,EAAsC;YAClC,IAAIklB,IAAI,GAAGgB,SAAS,CAAClmB,CAAD,CAAT,IAAgB,EAAhB,GAAqB,KAAKilB,kBAAL,CAAwBiB,SAAS,CAAClmB,CAAD,CAAjC,CAArB,GAA6D,IAAxE;YAEA,IAAIklB,IAAI,IAAI,CAACA,IAAI,CAACzP,KAAd,IAAuB,EAAEyP,IAAI,YAAYiB,SAAhB,IAA6BjB,IAAI,YAAYkB,WAA/C,CAA3B,EACI/a,KAAK,CAACxD,MAAN,CAAa7H,CAAb,IAAkBklB,IAAlB,CADJ,KAGI7Z,KAAK,CAACxD,MAAN,CAAa7H,CAAb,IAAkB,IAAlB;UACP,CAPD,MAOO,IAAG,OAAOkmB,SAAS,CAAClmB,CAAD,CAAhB,KAAwB,UAA3B,EAAuC;YAC1CqL,KAAK,CAACxD,MAAN,CAAa7H,CAAb,IAAkBkmB,SAAS,CAAClmB,CAAD,CAA3B;UACH;QACJ;;QAEDS,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAAN,CAAcc,MAA7B,EAAqCqe,SAArC;MACH,CAhWL;MAiWIG,UAAU,EAAG,oBAAStf,OAAT,EAAiB;QAC1BtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAAN,CAAc0F,OAA7B,EAAsC1F,OAAtC;MACH,CAnWL;MAoWIuf,cAAc,EAAE,wBAASvf,OAAT,EAAiB;QAC7BtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAAN,CAAc4Y,WAA7B,EAA0C5Y,OAA1C;MACH,CAtWL;MAuWIwf,aAAa,EAAE,uBAASxf,OAAT,EAAiB;QAC5BtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAAN,CAAc0D,UAA7B,EAAyC1D,OAAzC;MACH,CAzWL;MA0WIyf,eAAe,EAAE,yBAAStd,IAAT,EAAc;QAC3BmC,KAAK,CAACtE,OAAN,CAAcY,IAAd,CAAmBwF,OAAnB,CAA2B,UAAShH,GAAT,EAAa;UACpC,OAAOA,GAAG,CAAC+C,IAAD,CAAV;QACH,CAFD;MAGH,CA9WL;MA+WIud,gBAAgB,EAAE,0BAASvd,IAAT,EAAc;QAC5BmC,KAAK,CAACtE,OAAN,CAAcY,IAAd,CAAmBwF,OAAnB,CAA2B,UAAShH,GAAT,EAAa;UACpCA,GAAG,CAAC+C,IAAD,CAAH,GAAY,EAAZ;QACH,CAFD;MAGH,CAnXL;MAoXIwd,mBAAmB,EAAE,+BAAU;QAC3Brb,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASb,MAAT,EAAgB;UAClCA,MAAM,CAACoG,OAAP,GAAiB,EAAjB;QACH,CAFD;;QAGA7R,KAAK,CAACuJ,QAAN,CAAesF,SAAf,GAA2BvC,OAA3B,CAAmC,UAAShH,GAAT,EAAc1B,KAAd,EAAoB;UACnD,IAAG0B,GAAG,CAACyF,OAAJ,IAAezF,GAAG,CAACyF,OAAJ,CAAY9L,MAA9B,EAAqC;YACjC,IAAG,QAAOqG,GAAG,CAACyF,OAAX,KAAsB,QAAzB,EAAkC;cAC9BzF,GAAG,CAACyF,OAAJ,CAAYuB,OAAZ,CAAoB,UAASb,MAAT,EAAgB;gBAChC,IAAIoM,CAAC,GAAG7X,KAAK,CAACsL,SAAN,CAAgBG,MAAM,CAACC,EAAvB,CAAR;;gBACA,IAAGmM,CAAH,EACIA,CAAC,CAAChG,OAAF,CAAUjM,IAAV,CAAeN,GAAf;cACP,CAJD;YAKH;UACJ;QACJ,CAVD;MAWH,CAnYL;MAoYIwgB,YAAY,EAAE,sBAASrf,SAAT,EAAmB;QAC7B,IAAIzG,KAAK,GAAG,IAAZ;;QACAwK,KAAK,CAAC/D,SAAN,GAAkB+D,KAAK,CAAC/D,SAAN,IAAmB,EAArC;;QACA,KAAK,IAAI4B,IAAT,IAAiB5B,SAAjB,EAA2B;UACvB,IAAG4B,IAAI,IAAIzD,SAAX,EAAqB;YACjB4F,KAAK,CAACtE,OAAN,CAAcO,SAAd,CAAwB4B,IAAxB,IAAgC5B,SAAS,CAAC4B,IAAD,CAAzC;YACA,IAAIoB,CAAC,GAAGe,KAAK,CAACtE,OAAN,CAAcO,SAAd,CAAwB4B,IAAxB,CAAR;;YACA,IAAGA,IAAI,IAAI,eAAX,EAA2B;cACvBoB,CAAC,GAAG,iHAA+GA,CAA/G,GAAiH,iBAArH;cACApB,IAAI,GAAG,WAAP;YACH;;YAEDmC,KAAK,CAAC/D,SAAN,CAAgB4B,IAAhB,IAAwB0d,UAAU,CAACC,OAAX,CAAmBvc,CAAnB,CAAxB;UACH;QACJ;MACJ,CAnZL;MAoZIwc,eAAe,EAAG,yBAASxa,MAAT,EAAiBwD,MAAjB,EAAwB;QACtC,IAAIA,MAAM,GAAGjP,KAAK,CAACkmB,eAAN,CAAsBC,cAAtB,CAAqC,QAArC,EAA+CC,WAA/C,CAA2DnX,MAA3D,CAAb;;QACA,IAAGA,MAAM,CAACtB,QAAV,EACIlC,MAAM,CAACmN,WAAP,CAAmB,IAAnB,EADJ,KAGInN,MAAM,CAACmN,WAAP,CAAmB,KAAnB;QAEJ,IAAG3J,MAAM,CAAClI,KAAV,EACI0E,MAAM,CAACyK,OAAP,CAAejH,MAAM,CAAClI,KAAtB,EADJ,KAGI0E,MAAM,CAACyK,OAAP;MAEP,CAhaL;MAiaID,MAAM,EAAG,gBAAS/P,OAAT,EAAiB;QACtB,KAAK,IAAIR,GAAT,IAAgBQ,OAAhB,EAAwB;UACpB,IAAIR,GAAG,IAAI,SAAX,EAAqB;YACjB9F,CAAC,CAACqV,IAAF,CAAO/O,OAAO,CAAC6E,OAAf,EAAuB,UAASW,EAAT,EAAYiK,aAAZ,EAA0B;cAC7C,IAAIlK,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAAb;;cACAD,MAAM,IAAIA,MAAM,CAACwK,MAAP,CAAcN,aAAd,CAAV;;cACA,IAAGA,aAAa,CAACsB,UAAd,IAA0BrS,SAA7B,EAAuC;gBACnC5E,KAAK,CAACqmB,iBAAN;;gBACArmB,KAAK,CAACsmB,mBAAN;cACH;;cACD,IAAG3Q,aAAa,CAAChI,QAAd,IAAwB/I,SAA3B,EAAqC;gBACjC5E,KAAK,CAACwR,cAAN,CAAqB/F,MAArB;;gBACAjB,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,IAA4BlB,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,KAA6B,EAAzD;gBACAlB,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,EAA0BiC,QAA1B,GAAqClC,MAAM,CAACkC,QAA5C;cACH;YACJ,CAZD;UAaH,CAdD,MAcM,IAAIjI,GAAG,IAAI,SAAX,EAAqB;YACvB9F,CAAC,CAACqV,IAAF,CAAO/O,OAAO,CAACmX,OAAf,EAAuB,UAAS3R,EAAT,EAAY+O,aAAZ,EAA0B;cAC7C,IAAIzP,MAAM,GAAGhL,KAAK,CAAC2L,SAAN,CAAgBD,EAAhB,CAAb;;cACAV,MAAM,IAAIA,MAAM,CAACiL,MAAP,CAAcwE,aAAd,CAAV;YACH,CAHD;UAIH,CALK,MAKD;YACD,IAAIpD,MAAM,GAAG,QAAM/Y,MAAM,CAACgG,OAAP,CAAeoB,GAAf,CAAnB;YACA,IAAI1F,KAAK,CAACyF,cAAN,CAAqB4R,MAArB,CAAJ,EACI,KAAKA,MAAL,EAAanR,OAAO,CAACR,GAAD,CAApB,EADJ,KAEI;cACA8E,KAAK,CAACtE,OAAN,CAAcR,GAAd,IAAqBQ,OAAO,CAACR,GAAD,CAA5B;YACH;UACJ;QACJ;MACJ,CA/bL;MAgcI4R,QAAQ,EAAE,kBAAStH,KAAT,EAAe;QACrBA,KAAK,KAAKxF,KAAK,CAACtE,OAAN,CAAc8J,KAAd,GAAsBA,KAA3B,CAAL;MACH,CAlcL;MAmcIuW,YAAY,EAAE,sBAASC,SAAT,EAAmB;QAC7B,IAAGA,SAAH,EAAa;UACThc,KAAK,CAACtE,OAAN,CAAcsgB,SAAd,GAA0BA,SAA1B;QACH,CAFD,MAEK;UACD,OAAOhc,KAAK,CAACtE,OAAN,CAAcsgB,SAArB;QACH;MACJ,CAzcL;MA0cIC,eAAe,EAAE,yBAASvc,EAAT,EAAY;QACzBA,EAAE,GAAG5L,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAAL;;QACA,IAAGA,EAAH,EAAM;UACFM,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,gBAAd,EAA+B,GAA/B,EAAmC,UAAS/G,CAAT,EAAW;YAC1CA,CAAC,CAAC0H,cAAF;UACH,CAFD;QAGH,CAJD,MAIK;UACDL,KAAK,CAACiR,IAAN,CAAWzK,GAAX,CAAe,gBAAf;QACH;;QACDxG,KAAK,CAACkc,YAAN,GAAqBxc,EAArB;MACH,CApdL;MAqdIyc,cAAc,EAAE,wBAASlc,GAAT,EAAa;QAACD,KAAK,CAACtE,OAAN,CAAcgX,WAAd,GAA4BzS,GAA5B;MAAgC,CArdlE;MAsdImc,kBAAkB,EAAE,4BAASnc,GAAT,EAAa;QAAED,KAAK,CAACtE,OAAN,CAAc2W,eAAd,GAAiCve,MAAM,CAACqG,YAAP,CAAoB8F,GAApB,CAAjC;MAA2D,CAtdlG;MAudIoc,UAAU,EAAE,oBAASnT,CAAT,EAAW;QAAClJ,KAAK,CAACtE,OAAN,CAAcqX,OAAd,GAAwB7J,CAAC,IAAI9O,SAA7B;MAAwC,CAvdpE;MAwdIkiB,YAAY,EAAE,sBAASpT,CAAT,EAAW;QAAClJ,KAAK,CAACtE,OAAN,CAAc0H,SAAd,GAA0B8F,CAAC,IAAI9O,SAA/B;MAA0C,CAxdxE;MAydImiB,WAAW,EAAE,qBAASrT,CAAT,EAAW;QAAClJ,KAAK,CAACtE,OAAN,CAAc4H,QAAd,GAAyB4F,CAAC,IAAI9O,SAA9B;MAAyC,CAzdtE;MA0dIoiB,aAAa,EAAE,uBAAStT,CAAT,EAAW;QAAClJ,KAAK,CAACtE,OAAN,CAAcuX,UAAd,GAA2B/J,CAAC,IAAI9O,SAAhC;MAA2C,CA1d1E;MA2dIqiB,YAAY,EAAE,sBAASvT,CAAT,EAAW;QAAClJ,KAAK,CAACtE,OAAN,CAAcwX,SAAd,GAA0BhK,CAAC,IAAI9O,SAA/B;MAA0C,CA3dxE;MA4dIsiB,eAAe,EAAE,yBAASxT,CAAT,EAAW;QAAClJ,KAAK,CAACtE,OAAN,CAAcihB,YAAd,GAA6BzT,CAAC,IAAI9O,SAAlC;MAA6C;IA5d9E,wCA6dQ,YAASkgB,KAAT,EAAgBsC,OAAhB,EAAwB;MACxB5c,KAAK,CAAC2a,aAAN,GAAsB3a,KAAK,CAAC2a,aAAN,IAAuB,EAA7C;MACA3a,KAAK,CAAC2a,aAAN,CAAoBL,KAApB,IAA6BsC,OAA7B;IACH,CAheL,0DAie2B,8BAASA,OAAT,EAAiB;MACpC5c,KAAK,CAAC6c,iBAAN,GAA0BD,OAA1B;IACH,CAneL,8DAoe+B,kCAAS5Y,KAAT,EAAe;MACtChE,KAAK,CAACtE,OAAN,CAAcwR,qBAAd,GAAsClJ,KAAtC;;MACAxO,KAAK,CAACsnB,WAAN;IACH,CAveL,0DAwe2B,8BAASF,OAAT,EAAiB;MACpC5c,KAAK,CAAC+c,iBAAN,GAA0BH,OAA1B;IACH,CA1eL,mDA2emB,uBAASld,EAAT,EAAY;MACvBA,EAAE,GAAG5L,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAAL;MACAtK,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACmT,UAAU,EAACnP;MAAZ,CAA9B;;MACAM,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASuL,CAAT,EAAW;QAC7BA,CAAC,CAACe,WAAF;MACH,CAFD;IAGH,CAjfL,uDAkfwB,2BAAS4O,SAAT,EAAmB;MACnChd,KAAK,CAACtE,OAAN,CAAcgJ,cAAd,GAA+BsY,SAA/B;MACA,IAAIld,MAAM,GAAG,EAAb;;MACA,KAAI,IAAI2E,MAAR,IAAkBzE,KAAK,CAACtE,OAAN,CAAcgJ,cAAhC,EAA+C;QAC3C5E,MAAM,CAAC2E,MAAD,CAAN,GAAiBzE,KAAK,CAACtE,OAAN,CAAcgJ,cAAd,CAA6BD,MAA7B,EAAqClI,KAArC,CAA2C9H,MAA3C,GAAoDuL,KAAK,CAACtE,OAAN,CAAcgJ,cAAd,CAA6BD,MAA7B,EAAqClI,KAAzF,GAAiGnC,SAAlH;MACH;;MACD5E,KAAK,CAACynB,SAAN,CAAgB;QAACxY,MAAM,EAAE3E;MAAT,CAAhB;IACH,CAzfL,qDA0fsB,yBAASG,GAAT,EAAa;MAC3BD,KAAK,CAACtE,OAAN,CAAckS,YAAd,GAA6B9Z,MAAM,CAACqG,YAAP,CAAoB8F,GAApB,CAA7B;;MACAzK,KAAK,CAACsmB,mBAAN;IACH,CA7fL,+CA8fgB,mBAAShc,MAAT,EAAgB;MACxB1K,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACoE,MAAM,EAACA;MAAR,CAA9B;MAEA,IAAGA,MAAM,CAAC2E,MAAV,EACIzE,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqB2E,MAArB,GAA8B3E,MAAM,CAAC2E,MAArC,CAJoB,CAMxB;MACA;MACA;MACA;MACA;MACA;MACA;;MACArP,CAAC,CAACqV,IAAF,CAAOzK,KAAK,CAACtE,OAAN,CAAcoE,MAArB,EAA4B,UAAS5E,GAAT,EAAcqB,KAAd,EAAoB;QAC5C,IAAGA,KAAK,KAAK,IAAV,IAAkBA,KAAK,IAAI,EAA9B,EACI,OAAOyD,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqB5E,GAArB,CAAP;MACP,CAHD;MAIA,IAAG4E,MAAM,CAAC6S,UAAV,EACI3S,KAAK,CAACiR,IAAN,CAAW9S,GAAX,CAAe;QAAC,cAAc6B,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqB6S;MAApC,CAAf;MACJ,IAAG7S,MAAM,CAACoO,KAAV,EACIlO,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqBoO,KAArB,GAA8BpO,MAAM,CAACoO,KAAP,IAAgB,KAAGxY,QAAQ,CAACoK,MAAM,CAACoO,KAAR,CAA5B,GAA8CxY,QAAQ,CAACoK,MAAM,CAACoO,KAAR,CAAtD,GAAuEpO,MAAM,CAACoO,KAA3G;MACJ,IAAGpO,MAAM,CAAC0L,QAAV,EACIxL,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqB0L,QAArB,GAAiC1L,MAAM,CAAC0L,QAAP,IAAmB,KAAG9V,QAAQ,CAACoK,MAAM,CAAC0L,QAAR,CAA/B,GAAoD9V,QAAQ,CAACoK,MAAM,CAAC0L,QAAR,CAA5D,GAAgF1L,MAAM,CAAC0L,QAAvH;;MACJhW,KAAK,CAACsmB,mBAAN;IACH,CAthBL,iDAuhBkB,qBAAUpgB,OAAV,EAAmB;MAE7B,IAAGA,OAAO,CAACgE,EAAR,KAAetF,SAAlB,EACIsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAb;MAEJtK,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACgY,QAAQ,EAAEhY;MAAX,CAA9B;MAEAsE,KAAK,CAAC2J,OAAN,GAAgB3J,KAAK,CAAC2J,OAAN,IAAiB;QAACuT,WAAW,EAAE,EAAd;QAAkBC,UAAU,EAAE,EAA9B;QAAkCC,cAAc,EAAE,EAAlD;QAAsDC,MAAM,EAAE;MAA9D,CAAjC;MACArd,KAAK,CAAC2J,OAAN,CAAcuT,WAAd,GAA+B,EAA/B;MACAld,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,GAA+B,EAA/B;MACAnd,KAAK,CAAC2J,OAAN,CAAcyT,cAAd,GAA+B,EAA/B;MACApd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,GAA+B,EAA/B;;MAGA,IAAGrd,KAAK,CAAC2J,OAAN,CAAchO,SAAjB,EAA2B;QACvBqE,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B2hB,SAA3B,GAAuCtd,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B2hB,SAA3B,CAAqC7kB,OAArC,CAA6C,sBAA7C,EAAqE,EAArE,CAAvC;MACH,CAFD,MAEK;QACDuH,KAAK,CAAC2J,OAAN,CAAchO,SAAd,GAA0BvG,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,gBAAtB,CAA1B;;QACAkC,KAAK,CAACiR,IAAN,CAAW/S,MAAX,CAAkB8B,KAAK,CAAC2J,OAAN,CAAchO,SAAhC;MACH;;MAGD,IAAI4hB,EAAE,GAAGvd,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBzd,QAAvB,CAAgC0E,KAAhC,CAAsC,GAAtC,CAAT;;MACA,IAAG4iB,EAAE,CAAC,CAAD,CAAF,CAAMzlB,OAAN,CAAc,KAAd,KAAsB,CAAC,CAAvB,IAA4BylB,EAAE,CAAC,CAAD,CAAF,CAAMzlB,OAAN,CAAc,QAAd,KAAyB,CAAC,CAAzD,EAA2D;QACvDkI,KAAK,CAAC2J,OAAN,CAAcuT,WAAd,CAA0BM,SAA1B,GAAsCD,EAAE,CAAC,CAAD,CAAxC;MACH;;MACD,IAAGA,EAAE,CAAC,CAAD,CAAF,CAAMzlB,OAAN,CAAc,MAAd,KAAuB,CAAC,CAAxB,IAA6BylB,EAAE,CAAC,CAAD,CAAF,CAAMzlB,OAAN,CAAc,OAAd,KAAwB,CAAC,CAAzD,EAA2D;QACvDkI,KAAK,CAAC2J,OAAN,CAAcuT,WAAd,CAA0BO,SAA1B,GAAsCF,EAAE,CAAC,CAAD,CAAxC;MACH;;MACD,IAAGA,EAAE,CAAC,CAAD,CAAL,EAAS;QACLvd,KAAK,CAAC2J,OAAN,CAAcuT,WAAd,CAA0BO,SAA1B,GAAsCF,EAAE,CAAC,CAAD,CAAxC;MACH;;MAED,IAAIjD,KAAK,GAAG,8BAA4Bta,KAAK,CAACiR,IAAN,CAAWrT,IAAX,CAAgB,IAAhB,CAAxC;;MACAoC,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwBmC,QAAxB,CAAiC,eAAakC,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBzd,QAArE;;MAEAb,CAAC,CAAC,MAAD,CAAD,CAAUoR,GAAV,CAAc8T,KAAd,EAAqB5a,EAArB,CAAwB4a,KAAxB,EAA+B,UAAS3hB,CAAT,EAAY;QAEvC7E,MAAM,CAAC4pB,KAAP,GAAe5pB,MAAM,CAAC4E,WAAP,CAAmBC,CAAnB,CAAf;QAEAqH,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B3F,KAA3B,CAAiCE,IAAjC,GAAyCyC,CAAC,CAACC,OAAF,GAAYxD,CAAC,CAACrB,MAAD,CAAD,CAAUwD,UAAV,EAAZ,GAAqCyI,KAAK,CAACiR,IAAN,CAAW0M,MAAX,GAAoBznB,IAA1D,GAAiE,IAAzG;QACA8J,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B3F,KAA3B,CAAiCG,GAAjC,GAAyCwC,CAAC,CAACE,OAAF,GAAYzD,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAAZ,GAAqCwI,KAAK,CAACiR,IAAN,CAAW0M,MAAX,GAAoBxnB,GAA1D,GAAiE,IAAzG;QAEA,IAAIkkB,CAAC,GAAG;UAAC9T,CAAC,EAAE5N,CAAC,CAACC,OAAF,GAAYxD,CAAC,CAACrB,MAAD,CAAD,CAAUwD,UAAV,EAAhB;UAAwC/C,CAAC,EAAEmE,CAAC,CAACE,OAAF,GAAYzD,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV;QAAvD,CAAR;;QAEA,IAAIomB,KAAK,GAAG5d,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B5E,qBAA3B,EAAZ;;QACA,IAAI8mB,KAAK,GAAG7d,KAAK,CAACJ,KAAN,CAAY,CAAZ,EAAe7I,qBAAf,EAAZ;;QACA6mB,KAAK,GAAG;UACJznB,GAAG,EAAEynB,KAAK,CAACznB,GAAN,GAAYf,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EADb;UAEJnB,MAAM,EAAEunB,KAAK,CAACvnB,MAAN,GAAejB,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAFnB;UAGJtB,IAAI,EAAE0nB,KAAK,CAAC1nB,IAAN,GAAad,CAAC,CAACrB,MAAD,CAAD,CAAUwD,UAAV,EAHf;UAIJnB,KAAK,EAAEwnB,KAAK,CAACxnB,KAAN,GAAchB,CAAC,CAACrB,MAAD,CAAD,CAAUwD,UAAV,EAJjB;UAKJd,KAAK,EAAEmnB,KAAK,CAACnnB,KALT;UAMJC,MAAM,EAAEknB,KAAK,CAAClnB;QANV,CAAR;QAQAmnB,KAAK,GAAG;UACJ1nB,GAAG,EAAE0nB,KAAK,CAAC1nB,GAAN,GAAYf,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EADb;UAEJnB,MAAM,EAAEwnB,KAAK,CAACxnB,MAAN,GAAejB,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAFnB;UAGJtB,IAAI,EAAE2nB,KAAK,CAAC3nB,IAAN,GAAad,CAAC,CAACrB,MAAD,CAAD,CAAUwD,UAAV,EAHf;UAIJnB,KAAK,EAAEynB,KAAK,CAACznB,KAAN,GAAchB,CAAC,CAACrB,MAAD,CAAD,CAAUwD,UAAV,EAJjB;UAKJd,KAAK,EAAEonB,KAAK,CAACpnB,KALT;UAMJC,MAAM,EAAEmnB,KAAK,CAACnnB;QANV,CAAR;;QASA,IAAG2jB,CAAC,CAAC9T,CAAF,GAAMsX,KAAK,CAACznB,KAAZ,IAAqBikB,CAAC,CAAC7lB,CAAF,GAAMqpB,KAAK,CAACxnB,MAAjC,IAA2CgkB,CAAC,CAAC9T,CAAF,GAAMsX,KAAK,CAAC3nB,IAAvD,IAA+DmkB,CAAC,CAAC7lB,CAAF,GAAMqpB,KAAK,CAAC1nB,GAA9E,EAAkF;UAC9E;QACH;;QAED,IAAG6J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBlnB,GAArB,IAA4B6J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBhnB,MAApD,EAA2D;UAC3D;UACI,IAAG2J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBlnB,GAArB,IAA4BkkB,CAAC,CAAC7lB,CAAF,GAAMwL,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBlnB,GAA1D,EAA8D;YAC1D6J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBlnB,GAArB,GAA8B,KAA9B;YACA,OAAO6J,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBK,SAAhC;UACH,CAHD,MAGM,IAAGxd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBhnB,MAArB,IAA+BgkB,CAAC,CAAC7lB,CAAF,GAAMwL,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBhnB,MAA7D,EAAoE;YACtE2J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBhnB,MAArB,GAA8B,KAA9B;YACA,OAAO2J,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBK,SAAhC;UACH;QACJ,CATD,MASK;UACL;UAEI,IAAGI,KAAK,CAACvnB,MAAN,GAAewnB,KAAK,CAAC1nB,GAAN,GAAYynB,KAAK,CAAClnB,MAApC,EAA2C;YACvCsJ,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBK,SAAzB,GAAqC,QAArC;YACAxd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBlnB,GAArB,GAA8BkkB,CAAC,CAAC7lB,CAAhC;UACH,CAHD,MAGM,IAAGopB,KAAK,CAACznB,GAAN,GAAY0nB,KAAK,CAACxnB,MAAN,GAAeunB,KAAK,CAAClnB,MAApC,EAA2C;YAC7CsJ,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBK,SAAzB,GAAqC,KAArC;YACAxd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBhnB,MAArB,GAA8BgkB,CAAC,CAAC7lB,CAAhC;UACH;QACJ;;QAED,IAAGwL,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBjnB,KAArB,IAA8B4J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBnnB,IAAtD,EAA2D;UAC3D;UAEI,IAAG8J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBnnB,IAArB,IAA6BmkB,CAAC,CAAC9T,CAAF,GAAMvG,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBnnB,IAA3D,EAAgE;YAC5D8J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBnnB,IAArB,GAA6B,KAA7B;YACA,OAAO8J,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBM,SAAhC;UACH,CAHD,MAGM,IAAGzd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBjnB,KAArB,IAA8BikB,CAAC,CAAC9T,CAAF,GAAMvG,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBjnB,KAA5D,EAAkE;YACpE4J,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBjnB,KAArB,GAA6B,KAA7B;YACA,OAAO4J,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBM,SAAhC;UACH;QACJ,CAVD,MAUK;UACL;UACI,IAAGG,KAAK,CAACxnB,KAAN,GAAcynB,KAAK,CAAC3nB,IAAN,GAAa0nB,KAAK,CAACnnB,KAApC,EAA0C;YACtCuJ,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBM,SAAzB,GAAqC,OAArC;YACAzd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBnnB,IAArB,GAA4BmkB,CAAC,CAAC9T,CAA9B;UACH,CAHD,MAGM,IAAGqX,KAAK,CAAC1nB,IAAN,GAAa2nB,KAAK,CAACznB,KAAN,GAAcwnB,KAAK,CAACnnB,KAApC,EAA0C;YAC5CuJ,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBM,SAAzB,GAAqC,MAArC;YACAzd,KAAK,CAAC2J,OAAN,CAAc0T,MAAd,CAAqBjnB,KAArB,GAA6BikB,CAAC,CAAC9T,CAA/B;UACH;QACJ;;QAED,IAAIF,GAAG,GAAIjR,CAAC,CAACoE,MAAF,CAAS,EAAT,EAAawG,KAAK,CAAC2J,OAAN,CAAcuT,WAA3B,EAAwCld,KAAK,CAAC2J,OAAN,CAAcwT,UAAtD,CAAX;QACA,IAAIW,IAAI,GAAG,EAAX;QACAzX,GAAG,CAACmX,SAAJ,IAAiBM,IAAI,CAAC1iB,IAAL,CAAUiL,GAAG,CAACmX,SAAd,CAAjB;QACAnX,GAAG,CAACoX,SAAJ,IAAiBK,IAAI,CAAC1iB,IAAL,CAAUiL,GAAG,CAACoX,SAAd,CAAjB;QACApX,GAAG,GAAGyX,IAAI,CAAC/iB,IAAL,CAAU,GAAV,CAAN;;QAEA,IAAGiF,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBK,SAAzB,IAAoCxd,KAAK,CAAC2J,OAAN,CAAcuT,WAAd,CAA0BM,SAA9D,IAA4Exd,KAAK,CAAC2J,OAAN,CAAcwT,UAAd,CAAyBM,SAAzB,IAAoCzd,KAAK,CAAC2J,OAAN,CAAcuT,WAAd,CAA0BO,SAA7I,EAAuJ;UACnJzd,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B2hB,SAA3B,GAAuCtd,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB,CAAxB,EAA2B2hB,SAA3B,CAAqC7kB,OAArC,CAA6C,sBAA7C,EAAqE,EAArE,CAAvC;;UACAuH,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwBmC,QAAxB,CAAiC,eAAauI,GAA9C;;UACArG,KAAK,CAAC2J,OAAN,CAAcyT,cAAd,GAA+B/W,GAA/B;QACH;MACJ,CArFD;IAsFH,CAjpBL,iDAkpBkB,qBAAU3K,OAAV,EAAkB;MAC5B,IAAI,OAAOA,OAAO,CAACiY,IAAf,IAAuB,QAAvB,IAAmCjY,OAAO,CAACiY,IAAR,CAAa7b,OAAb,CAAqB,UAArB,KAAoC,CAA3E,EAA6E;QACzE4D,OAAO,CAACiY,IAAR,GAAene,KAAK,CAACokB,kBAAN,CAAyBle,OAAO,CAACiY,IAAjC,CAAf;MACH;;MAEDve,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACmY,QAAQ,EAAEnY;MAAX,CAA9B;MACAsE,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBnU,EAAvB,GAA4BM,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBF,IAAvB,IAA6B,KAAzD;MACA3T,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAAvB,GAAkChgB,MAAM,CAACqG,YAAP,CAAoB6F,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAA3C,CAAlC;;MAEA,IAAG,CAAC9T,KAAK,CAAC+d,QAAV,EAAoB;QAChB/d,KAAK,CAAC+d,QAAN,GAAiB3oB,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,gBAAtB,CAAjB,CADgB,CAEhB;QACA;QACA;QACA;;QACAkC,KAAK,CAACge,MAAN,CAAanK,QAAb,CAAsB3V,MAAtB,CAA6B8B,KAAK,CAAC+d,QAAnC;MACH;;MACD/d,KAAK,CAAC+d,QAAN,CAAe5f,GAAf,CAAmB;QACf1H,KAAK,EAAEuJ,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBpd,KAAvB,IAAgCuJ,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBpd,KAAvB,IAAgC,MAAhC,GAAyC,EAAzC,GAA8C,IAA9E,CADQ;QAEf,aAAauJ,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBvB,QAAvB,GAAkC,GAFhC;QAGf,cAActS,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBtB,SAAvB,GAAiCvS,KAAK,CAACJ,KAAN,CAAYrC,WAAZ,EAAjC,GAA2D,GAA3D,GAA+D;MAH9D,CAAnB,EAjB4B,CAwB5B;MACA;MACA;MACA;MACA;MACA;MACA;;;MAEA,IAAGyC,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBG,gBAAvB,IAA2ClgB,MAAM,CAACmE,OAArD,EAA6D;QACzD7C,CAAC,CAAC,MAAD,CAAD,CAAUqQ,WAAV,CAAsB,4BAAtB,EAAoD,IAApD;;QACAzF,KAAK,CAAC+d,QAAN,CAAe1R,QAAf,CAAwB,MAAxB;MACH,CAnC2B,CAoC5B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;IACH,CA9rBL,qDA+rBsB,yBAAS4R,MAAT,EAAgB;MAC9Bje,KAAK,CAACtE,OAAN,CAAcwiB,YAAd,GAA6BD,MAA7B;IACH,CAjsBL,uDAksBwB,2BAASE,CAAT,EAAW;MAC3B,IAAG,OAAOA,CAAP,IAAY,QAAf,EACIA,CAAC,GAAGA,CAAC,CAAC3lB,IAAF,GAASmC,KAAT,CAAe,GAAf,CAAJ;MACJqF,KAAK,CAACoY,QAAN,GAAiB,CAAC7d,UAAU,CAAC4jB,CAAC,CAAC,CAAD,CAAF,CAAX,EAAmB5jB,UAAU,CAAC4jB,CAAC,CAAC,CAAD,CAAF,CAA7B,EAAqC5jB,UAAU,CAAC4jB,CAAC,CAAC,CAAD,CAAF,CAA/C,EAAuD5jB,UAAU,CAAC4jB,CAAC,CAAC,CAAD,CAAF,CAAjE,CAAjB;MACAne,KAAK,CAACuY,SAAN,GAAkB,CAAlB;IACH,CAvsBL,uDAwsBwB,6BAAU;MAC1BvY,KAAK,CAACoe,WAAN,GAAoBpe,KAAK,CAACqe,UAAN,CAAiBnO,OAArC;MACAlQ,KAAK,CAACse,WAAN,GAAoBte,KAAK,CAACkQ,OAA1B;MACAlQ,KAAK,CAACue,WAAN,GAAoBve,KAAK,CAACoe,WAAN,CAAkB,CAAlB,IAAuBpe,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA3C;;MACAlQ,KAAK,CAACkI,IAAN,CAAW,CAAX,EAAcwC,YAAd,CAA2B,SAA3B,EAAqC1K,KAAK,CAACoe,WAAN,CAAkBrjB,IAAlB,CAAuB,GAAvB,CAArC;;MACAiF,KAAK,CAACwe,OAAN,GAAgB,CAAhB;IACH,CA9sBL,gDA+sBiB,oBAASL,CAAT,EAAWM,eAAX,EAA2B;MAEpC,IAAG,OAAON,CAAP,IAAY,QAAf,EAAwB;QACpBA,CAAC,GAAGA,CAAC,CAAC3lB,IAAF,GAASmC,KAAT,CAAe,GAAf,CAAJ;MACH;;MACD,IAAI+jB,CAAC,GAAIP,CAAC,IAAIA,CAAC,CAAC1pB,MAAF,IAAU,CAAhB,GAAqB0pB,CAArB,GAAyBne,KAAK,CAACqe,UAAN,CAAiBnO,OAAlD;;MACA,IAAIyO,SAAS,GAAGpkB,UAAU,CAACmkB,CAAC,CAAC,CAAD,CAAF,CAAV,IAAoB1e,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAApB,IAAwC3V,UAAU,CAACmkB,CAAC,CAAC,CAAD,CAAF,CAAV,IAAoB1e,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA5E;;MACAlQ,KAAK,CAACkQ,OAAN,GAAgB,CAAC3V,UAAU,CAACmkB,CAAC,CAAC,CAAD,CAAF,CAAX,EAAmBnkB,UAAU,CAACmkB,CAAC,CAAC,CAAD,CAAF,CAA7B,EAAqCnkB,UAAU,CAACmkB,CAAC,CAAC,CAAD,CAAF,CAA/C,EAAuDnkB,UAAU,CAACmkB,CAAC,CAAC,CAAD,CAAF,CAAjE,CAAhB;MACA1e,KAAK,CAAC4e,OAAN,GAAgB5e,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAnC;MAEA,CAAClQ,KAAK,CAACwe,OAAP,IAAkBhpB,KAAK,CAACqpB,iBAAN,EAAlB;;MAEA,IAAG,CAACV,CAAJ,EAAM;QACFne,KAAK,CAACoY,QAAN,GAAiBpY,KAAK,CAACkQ,OAAvB;QACAlQ,KAAK,CAAC8e,MAAN,GAAe,CAAf;MACH;;MAED,IAAIC,CAAC,GAAG/e,KAAK,CAACtE,OAAN,CAAckD,OAAtB;;MAEA,IAAGmgB,CAAC,CAAC5oB,GAAL,EAAS;QACL6J,KAAK,CAACkQ,OAAN,CAAc,CAAd,KAAoB6O,CAAC,CAAC5oB,GAAtB;QACA6J,KAAK,CAACkQ,OAAN,CAAc,CAAd,KAAoB6O,CAAC,CAAC5oB,GAAtB;MACH;;MACD,IAAG4oB,CAAC,CAAC3oB,KAAL,EAAW;QACP4J,KAAK,CAACkQ,OAAN,CAAc,CAAd,KAAoB6O,CAAC,CAAC3oB,KAAtB;MACH;;MACD,IAAG2oB,CAAC,CAAC1oB,MAAL,EAAY;QACR2J,KAAK,CAACkQ,OAAN,CAAc,CAAd,KAAoB6O,CAAC,CAAC1oB,MAAtB;MACH;;MACD,IAAG0oB,CAAC,CAAC7oB,IAAL,EAAU;QACN8J,KAAK,CAACkQ,OAAN,CAAc,CAAd,KAAoB6O,CAAC,CAAC7oB,IAAtB;QACA8J,KAAK,CAACkQ,OAAN,CAAc,CAAd,KAAoB6O,CAAC,CAAC7oB,IAAtB;MACH;;MAED8J,KAAK,CAACgI,KAAN,GAAcxS,KAAK,CAACwpB,QAAN,EAAd;MACAhf,KAAK,CAACif,UAAN,GAAmBjf,KAAK,CAACue,WAAN,GAAkBve,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAlB,GAA8ClQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAjE;MAEAlQ,KAAK,CAACuT,MAAN,GAAevT,KAAK,CAACuT,MAAN,IAAgB,EAA/B;MACAvT,KAAK,CAACuT,MAAN,CAAa2L,EAAb,GAAkB,CAAClf,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA4BlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA7B,IAA+ClQ,KAAK,CAACgI,KAAvE;MACAhI,KAAK,CAACuT,MAAN,CAAa4L,EAAb,GAAkB,CAACnf,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA4BlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA7B,IAA+ClQ,KAAK,CAACgI,KAAvE;;MAGAhI,KAAK,CAACof,WAAN,CAAkBjhB,GAAlB,CAAsB;QAClB,aAAa,eAAa6B,KAAK,CAACuT,MAAN,CAAa2L,EAA1B,GAA6B,KAA7B,GAAmClf,KAAK,CAACuT,MAAN,CAAa4L,EAAhD,GAAmD;MAD9C,CAAtB;;MAGAnf,KAAK,CAACkI,IAAN,CAAW/J,GAAX,CAAe;QACX,aAAa,WAAS6B,KAAK,CAACif,UAAf,GAA0B;MAD5B,CAAf;;MAGA,IAAGN,SAAS,IAAI,CAACF,eAAjB,EAAiC;QAC7BjpB,KAAK,CAAC6pB,UAAN;MACH;;MAEDV,SAAS,IAAInpB,KAAK,CAACklB,OAAN,CAAc,MAAd,CAAb;MAEA,OAAO,IAAP;IACH,CAtwBL,oDAuwBqB,wBAAS5S,IAAT,EAAc;MAC3B9H,KAAK,CAACoe,WAAN,GAAoBtW,IAApB;MACA9H,KAAK,CAACse,WAAN,GAAoBxW,IAApB;MACA9H,KAAK,CAACue,WAAN,GAAoBve,KAAK,CAACoe,WAAN,CAAkB,CAAlB,IAAuBpe,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA3C;MAEAlQ,KAAK,CAACkQ,OAAN,GAAgBpI,IAAhB;MACA9H,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,GAA2BlQ,KAAK,CAACkQ,OAAjC;MACAlQ,KAAK,CAACoe,WAAN,GAAoBtW,IAApB;MACA9H,KAAK,CAACse,WAAN,GAAoBte,KAAK,CAACkQ,OAA1B;MACAlQ,KAAK,CAACue,WAAN,GAAoBve,KAAK,CAACoe,WAAN,CAAkB,CAAlB,IAAuBpe,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA3C;;MACAlQ,KAAK,CAACkI,IAAN,CAAW,CAAX,EAAcwC,YAAd,CAA2B,SAA3B,EAAqC1K,KAAK,CAACoe,WAAN,CAAkBrjB,IAAlB,CAAuB,GAAvB,CAArC;;MAEAiF,KAAK,CAACgI,KAAN,GAAgBxS,KAAK,CAACwpB,QAAN,EAAhB;MAEA,IAAIE,EAAE,GAAI,CAACpX,IAAI,CAAC,CAAD,CAAN,GAAW9H,KAAK,CAACgI,KAA1B;MACA,IAAImX,EAAE,GAAI,CAACrX,IAAI,CAAC,CAAD,CAAN,GAAW9H,KAAK,CAACgI,KAA1B;;MACAhI,KAAK,CAACsf,OAAN,CAAcnhB,GAAd,CAAkB;QACd,aAAa,eAAa+gB,EAAb,GAAgB,KAAhB,GAAsBC,EAAtB,GAAyB;MADxB,CAAlB;;MAGAnf,KAAK,CAACuY,SAAN,GAAkB,CAAlB;;MACA/iB,KAAK,CAAC6iB,UAAN,CAAiBvQ,IAAjB;IACH,CA5xBL,iEA6xBkC,uCAAU;MAEpC,IAAIyX,eAAe,GAAGvf,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBwe,SAArB,EAAtB;;MAEA,IAAI9W,EAAE,GAAG,CAAC6W,eAAe,CAACE,YAAhB,GAA+BlW,GAA/B,EAAD,EAAuCgW,eAAe,CAACE,YAAhB,GAA+BjW,GAA/B,EAAvC,CAAT;MACA,IAAIhB,EAAE,GAAG,CAAC+W,eAAe,CAACG,YAAhB,GAA+BnW,GAA/B,EAAD,EAAuCgW,eAAe,CAACG,YAAhB,GAA+BlW,GAA/B,EAAvC,CAAT;;MACA,IAAImW,IAAI,GAAGnqB,KAAK,CAAC6a,eAAN,CAAsB3H,EAAtB,CAAX;;MACA,IAAIkX,IAAI,GAAGpqB,KAAK,CAAC6a,eAAN,CAAsB7H,EAAtB,CAAX,CAPoC,CASpC;;;MACA,IAAGmX,IAAI,CAAC,CAAD,CAAJ,GAAUC,IAAI,CAAC,CAAD,CAAjB,EAAqB;QACjB,IAAIC,cAAc,GAAI7f,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAAC8f,WAArC,GAAoD,GAAzE;QACAF,IAAI,CAAC,CAAD,CAAJ,GAAU,EAAEC,cAAc,GAAGD,IAAI,CAAC,CAAD,CAAvB,CAAV;MACH;;MAED,IAAInpB,KAAK,GAAIkpB,IAAI,CAAC,CAAD,CAAJ,GAAUC,IAAI,CAAC,CAAD,CAA3B;MACA,IAAIlpB,MAAM,GAAGkpB,IAAI,CAAC,CAAD,CAAJ,GAAUD,IAAI,CAAC,CAAD,CAA3B;;MACAnqB,KAAK,CAAC6iB,UAAN,CAAiB,CAACuH,IAAI,CAAC,CAAD,CAAL,EAAUD,IAAI,CAAC,CAAD,CAAd,EAAmBlpB,KAAnB,EAA0BC,MAA1B,CAAjB;IAGH,CAjzBL,4CAkzBY,kBAAU;MACdsJ,KAAK,CAACJ,KAAN,CAAYzB,GAAZ,CAAgB;QACZ1H,KAAK,EAAEuJ,KAAK,CAACJ,KAAN,CAAYnJ,KAAZ,EADK;QAEZC,MAAM,EAAEsJ,KAAK,CAACJ,KAAN,CAAYnJ,KAAZ,KAAsBuJ,KAAK,CAAC4e;MAFxB,CAAhB;;MAIA,IAAG,CAAC9qB,MAAM,CAACsE,OAAP,CAAeC,EAAnB,EAAuB;QACnB2H,KAAK,CAACJ,KAAN,CAAYzB,GAAZ,CAAgB;UACZ1H,KAAK,EAAE,MADK;UAEZC,MAAM,EAAE;QAFI,CAAhB;MAIH,CALD,MAKK;QACDsJ,KAAK,CAACJ,KAAN,CAAYzB,GAAZ,CAAgB;UACZ1H,KAAK,EAAE;QADK,CAAhB;MAGH;;MACDjB,KAAK,CAAC6pB,UAAN;IACH,CAl0BL,gDAm0BgB,oBAAS3jB,OAAT,EAAiB;MACzBA,OAAO,GAAGA,OAAO,IAAIsE,KAAK,CAACtE,OAAN,CAAckD,OAAnC;;MACA,KAAI,IAAIjK,CAAR,IAAa+G,OAAb,EAAqB;QACjBA,OAAO,CAAC/G,CAAD,CAAP,GAAa+G,OAAO,CAAC/G,CAAD,CAAP,GAAae,QAAQ,CAACgG,OAAO,CAAC/G,CAAD,CAAR,CAArB,GAAoC,CAAjD;MACH;;MACDS,CAAC,CAACoE,MAAF,CAASwG,KAAK,CAACtE,OAAN,CAAckD,OAAvB,EAAgClD,OAAhC,EALyB,CAQzB;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MACAlG,KAAK,CAAC6iB,UAAN;;MACA7iB,KAAK,CAACklB,OAAN,CAAc,YAAd;IACH,CA/1BL,6CAm2Bc,iBAAUjkB,KAAV,EAAiBC,MAAjB,EAAyB+c,UAAzB,EAAqC;MAE3C;MACAzT,KAAK,CAACtE,OAAN,CAAcjF,KAAd,GAA2B8D,UAAU,CAAC9D,KAAD,CAArC;MACAuJ,KAAK,CAACtE,OAAN,CAAchF,MAAd,GAA2B6D,UAAU,CAAC7D,MAAD,CAArC;MACAsJ,KAAK,CAACtE,OAAN,CAAc+X,UAAd,GAA2BA,UAAU,IAAE,IAAZ,IAAoBA,UAAU,IAAErZ,SAAhC,GAA6CtG,MAAM,CAACqG,YAAP,CAAoBsZ,UAApB,CAA7C,GAA+EzT,KAAK,CAACtE,OAAN,CAAc+X,UAAxH,CAL2C,CAO3C;;MACA,IAAK,CAACzT,KAAK,CAACtE,OAAN,CAAcjF,KAAf,IAAwB,CAACuJ,KAAK,CAACtE,OAAN,CAAchF,MAA5C,EAAoD;QAChDsJ,KAAK,CAACtE,OAAN,CAAcjF,KAAd,GAAuBuJ,KAAK,CAACqe,UAAN,CAAiB5nB,KAAxC;QACAuJ,KAAK,CAACtE,OAAN,CAAchF,MAAd,GAAuBsJ,KAAK,CAACqe,UAAN,CAAiB3nB,MAAxC;MACH,CAHD,MAGM,IAAI,CAACsJ,KAAK,CAACtE,OAAN,CAAcjF,KAAf,IAAwBuJ,KAAK,CAACtE,OAAN,CAAchF,MAA1C,EAAiD;QACnDsJ,KAAK,CAACtE,OAAN,CAAcjF,KAAd,GAAuBf,QAAQ,CAACsK,KAAK,CAACtE,OAAN,CAAchF,MAAd,GAAuBsJ,KAAK,CAACqe,UAAN,CAAiB5nB,KAAxC,GAAgDuJ,KAAK,CAACqe,UAAN,CAAiB3nB,MAAlE,CAA/B;MACH,CAFK,MAEA,IAAIsJ,KAAK,CAACtE,OAAN,CAAcjF,KAAd,IAAuB,CAACuJ,KAAK,CAACtE,OAAN,CAAchF,MAA1C,EAAiD;QACnDsJ,KAAK,CAACtE,OAAN,CAAchF,MAAd,GAAuBhB,QAAQ,CAACsK,KAAK,CAACtE,OAAN,CAAcjF,KAAd,GAAsBuJ,KAAK,CAACqe,UAAN,CAAiB3nB,MAAvC,GAA8CsJ,KAAK,CAACqe,UAAN,CAAiB5nB,KAAhE,CAA/B;MACH,CAf0C,CAiB3C;MACA;MACA;MACA;MACA;MACA;;;MAEAuJ,KAAK,CAAC4e,OAAN,GAAqB5e,KAAK,CAACtE,OAAN,CAAcjF,KAAd,GAAsBuJ,KAAK,CAACtE,OAAN,CAAchF,MAAzD;MACAsJ,KAAK,CAACgI,KAAN,GAAqBxS,KAAK,CAACwpB,QAAN,EAArB;;MAEAxpB,KAAK,CAACuqB,aAAN,CAAoBtM,UAApB;;MAEA,IAAGzT,KAAK,CAAC6S,OAAT,EACIrd,KAAK,CAACwqB,qBAAN;MAGJ,OAAO,CAAChgB,KAAK,CAACtE,OAAN,CAAcjF,KAAf,EAAsBuJ,KAAK,CAACtE,OAAN,CAAchF,MAApC,CAAP;IACH,CAr4BL,mDAs4BoB,uBAASgJ,EAAT,EAAYugB,KAAZ,EAAkB;MAE9BvgB,EAAE,GAAGA,EAAE,IAAEtF,SAAJ,GAAgBtG,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAAhB,GAA0CM,KAAK,CAACtE,OAAN,CAAc+X,UAA7D;MACAre,CAAC,CAACrB,MAAD,CAAD,CAAUyS,GAAV,CAAc,eAAd;;MAEAxG,KAAK,CAACiR,IAAN,CAAW9S,GAAX,CAAe;QACX,SAAS,MADE;QAEX;QACA,UAAU,GAHC;QAIX,kBAAmB6B,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAiB,GAAjB,GAAqBlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAtB,GAAwC;MAJ/C,CAAf;;MAMA,IAAGpc,MAAM,CAACsE,OAAP,CAAeC,EAAlB,EAAqB;QACjB2H,KAAK,CAACkgB,QAAN,GAAiBlgB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA/C;;QACAlQ,KAAK,CAACkI,IAAN,CAAWxR,MAAX,CAAkBsJ,KAAK,CAACiR,IAAN,CAAWkP,UAAX,KAA0BngB,KAAK,CAACkgB,QAAlD;MACH;;MACD,IAAG,CAAClgB,KAAK,CAACnD,YAAV,EAAuB;QACnBmD,KAAK,CAACnD,YAAN,GAAqB,IAAI/I,MAAM,CAACuB,YAAX,CAAwB2K,KAAK,CAACiR,IAAN,CAAW,CAAX,CAAxB,EAAuC,YAAU;UAElE,IAAGnd,MAAM,CAACsE,OAAP,CAAeC,EAAlB,EAAqB;YACjB2H,KAAK,CAACkgB,QAAN,GAAiBlgB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA/C;;YACAlQ,KAAK,CAACkI,IAAN,CAAWxR,MAAX,CAAkBsJ,KAAK,CAACiR,IAAN,CAAWkP,UAAX,KAA0BngB,KAAK,CAACkgB,QAAlD;UACH;;UAED,IAAGlgB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxS,EAAzB,IAA+BM,KAAK,CAACkS,UAAN,CAAiBlR,GAAnD,EAAuD;YACnD,IAAIe,MAAM,GAAG/B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBgB,SAArB,EAAb;;YACAoe,MAAM,CAACC,IAAP,CAAY/F,KAAZ,CAAkBI,OAAlB,CAA0B1a,KAAK,CAACkS,UAAN,CAAiBlR,GAA3C,EAAgD,QAAhD;;YACAhB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBsf,SAArB,CAA+Bve,MAA/B;;YACAvM,KAAK,CAAC+qB,2BAAN;UACH,CALD,MAKK;YACD/qB,KAAK,CAAC6iB,UAAN,CAAiBrY,KAAK,CAACkQ,OAAvB;UACH;;UACDlQ,KAAK,CAAC+d,QAAN,IAAkB/d,KAAK,CAAC+d,QAAN,CAAe5f,GAAf,CAAmB;YACjC,cAAc6B,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBtB,SAAvB,GAAiCvS,KAAK,CAACJ,KAAN,CAAYrC,WAAZ,EAAjC,GAA2D,GAA3D,GAA+D;UAD5C,CAAnB,CAAlB;;UAGA/H,KAAK,CAAC6pB,UAAN;QACH,CAnBoB,CAArB;MAoBH;;MAED,IAAG3f,EAAH,EAAM;QAEFM,KAAK,CAACJ,KAAN,CAAYzB,GAAZ,CAAgB;UACZ,SAAS,MADG;UAEZ,UAAU;QAFE,CAAhB;MAMH,CARD,MAQK;QACD6B,KAAK,CAACJ,KAAN,CAAYzB,GAAZ,CAAgB;UACZ,SAAS6B,KAAK,CAACtE,OAAN,CAAcjF,KAAd,GAAoB,IADjB;UAEZ,UAAUuJ,KAAK,CAACtE,OAAN,CAAchF,MAAd,GAAqB;QAFnB,CAAhB;MAIH;;MACDtB,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAAC+X,UAAU,EAAE/T;MAAb,CAA9B;;MACAlK,KAAK,CAAC6iB,UAAN,CAAiBrY,KAAK,CAACkQ,OAAvB;;MACA1a,KAAK,CAAC6pB,UAAN;IAEH,CA97BL,+CA+7BgB,mBAAS3jB,OAAT,EAAkB8kB,UAAlB,EAA6B;MACrC9kB,OAAO,CAACgE,EAAR,IAActF,SAAd,KAA4BsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAzC;MACAhE,OAAO,CAACyX,KAAR,IAAiB/Y,SAAjB,KAA+BsB,OAAO,CAACyX,KAAR,GAAgBrf,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACyX,KAA5B,CAA/C;MACA/d,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAAC6X,MAAM,EAAE7X;MAAT,CAA9B;MACA,CAAC8kB,UAAD,IAAehrB,KAAK,CAAC+I,gBAAN,EAAf;IACH,CAp8BL,6CAq8Bc,iBAAU7C,OAAV,EAAkB;MACxBA,OAAO,GAAGA,OAAO,IAAI,EAArB;MACAA,OAAO,CAACgE,EAAR,IAActF,SAAd,KAA4BsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAzC;MACAhE,OAAO,CAAC4X,UAAR,IAAsBlZ,SAAtB,KAAoCsB,OAAO,CAAC4X,UAAR,GAAqBxf,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAAC4X,UAA5B,CAAzD,EAHwB,CAKxB;;MACA5X,OAAO,CAAC0X,KAAR,GAAgB,CAAhB,CANwB,CAQxB;;MAEA,IAAG1X,OAAO,CAACyX,KAAX,EAAiB;QACb,IAAG,OAAOzX,OAAO,CAACyX,KAAf,IAAwB,QAA3B,EACIzX,OAAO,CAACyX,KAAR,GAAgBzX,OAAO,CAACyX,KAAR,CAAcxY,KAAd,CAAoB,GAApB,CAAhB;QACJe,OAAO,CAACyX,KAAR,GAAgB,CAACzd,QAAQ,CAACgG,OAAO,CAACyX,KAAR,CAAc,CAAd,CAAD,CAAT,EAA4Bzd,QAAQ,CAACgG,OAAO,CAACyX,KAAR,CAAc,CAAd,CAAD,CAApC,CAAhB;MACH;;MACD,IAAG,CAACnT,KAAK,CAACsY,UAAV,EAAqB;QACjBtY,KAAK,CAACsY,UAAN,GAAmB,EAAnB;QAEA,IAAIwG,MAAM,GAAG,CAAb;;QACA,KAAI,IAAInqB,CAAC,GAAG,CAAZ,EAAeA,CAAC,IAAI,EAApB,EAAwBA,CAAC,EAAzB,EAA4B;UACxBqL,KAAK,CAACsY,UAAN,CAAiB3jB,CAAC,GAAC,EAAnB,IAAyB;YACrBmqB,MAAM,EAAEA,MADa;YAErB5O,OAAO,EAAE,CAAC,CAAD,EAAG,CAAH,EAAKlQ,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAmB0G,MAAxB,EAAgC9e,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAmB0G,MAAnD;UAFY,CAAzB;UAIAA,MAAM,GAAGA,MAAM,GAAG9e,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmB0R,KAArC;QAEH;;QACD0L,MAAM,GAAG,CAAT;;QACA,KAAI,IAAInqB,CAAC,GAAG,CAAZ,EAAeA,CAAC,IAAI,CAAC,EAArB,EAAyBA,CAAC,EAA1B,EAA6B;UACzBqL,KAAK,CAACsY,UAAN,CAAiB3jB,CAAC,GAAC,EAAnB,IAAyB;YACrBmqB,MAAM,EAAEA,MADa;YAErB5O,OAAO,EAAE,CAAC,CAAD,EAAG,CAAH,EAAKlQ,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAmB0G,MAAxB,EAAgC9e,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAmB0G,MAAnD;UAFY,CAAzB;UAIAA,MAAM,GAAGA,MAAM,GAAG9e,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmB0R,KAArC;QAEH;MACJ;;MAEDhe,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACgG,IAAI,EAAEhG;MAAP,CAA9B,EAtCwB,CAuCxB;;MACAsE,KAAK,CAACiR,IAAN,CAAWzK,GAAX,CAAe,mBAAf;;MAGA,IAAGxG,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmBhC,EAAnB,IAAyBM,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmB4R,UAA/C,EAA0D;QACtD;QACA;QAGA,IAAGxf,MAAM,CAACsE,OAAP,CAAeE,OAAlB,EAA0B;UACtB0H,KAAK,CAACygB,aAAN,GAAsB;YAAEC,YAAY,EAAE;UAAhB,CAAtB;;UAEA1gB,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,YAAd,EAA4B,YAAW;YACnCM,KAAK,CAACygB,aAAN,CAAoBC,YAApB,GAAmC,IAAnC;YACA1gB,KAAK,CAACygB,aAAN,CAAoBE,OAApB,GAA8B5sB,MAAM,CAAC4sB,OAArC;YACA3gB,KAAK,CAACygB,aAAN,CAAoBG,OAApB,GAA8B7sB,MAAM,CAAC6sB,OAArC;UACH,CAJD,EAIGlhB,EAJH,CAIM,YAJN,EAIoB,YAAW;YAC3BM,KAAK,CAACygB,aAAN,CAAoBC,YAApB,GAAmC,KAAnC;UACH,CAND;;UAQAtrB,CAAC,CAACU,QAAD,CAAD,CAAYyd,MAAZ,CAAmB,YAAW;YAC1B,IAAIvT,KAAK,CAACygB,aAAN,CAAoBC,YAAxB,EACI3sB,MAAM,CAAC8sB,QAAP,CAAgB7gB,KAAK,CAACygB,aAAN,CAAoBE,OAApC,EAA6C3gB,KAAK,CAACygB,aAAN,CAAoBG,OAAjE;UACP,CAHD;QAIH;;QAED5gB,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,mBAAd,EAAkC,UAAS4a,KAAT,EAAgBlH,KAAhB,EAAuB0N,MAAvB,EAA+BC,MAA/B,EAAuC;UACrE,IAAG3rB,CAAC,CAACklB,KAAK,CAAC1T,MAAP,CAAD,CAAgBlB,QAAhB,CAAyB,gBAAzB,KAA8CtQ,CAAC,CAACklB,KAAK,CAAC1T,MAAP,CAAD,CAAgBC,OAAhB,CAAwB,iBAAxB,EAA2CpS,MAA5F,EACI,OAFiE,CAGrE;UACA;;UACA6lB,KAAK,CAACja,cAAN;UACA,IAAIqe,CAAC,GAAGtL,KAAK,GAAG,CAAR,GAAY,CAAZ,GAAgB,CAAC,CAAzB;UACA,IAAIiH,CAAC,GAAGvmB,MAAM,CAAC4E,WAAP,CAAmB4hB,KAAnB,CAAR;UACAD,CAAC,CAAC9T,CAAF,GAAM8T,CAAC,CAAC9T,CAAF,GAAMvG,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBznB,IAAhC;UACAmkB,CAAC,CAAC7lB,CAAF,GAAM6lB,CAAC,CAAC7lB,CAAF,GAAMwL,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBxnB,GAAhC;;UAEA,IAAI4L,MAAM,GAAGvM,KAAK,CAACwrB,iBAAN,CAAwB,CAAC3G,CAAC,CAAC9T,CAAH,EAAM8T,CAAC,CAAC7lB,CAAR,CAAxB,CAAb;;UACAkqB,CAAC,GAAG,CAAJ,GAAQlpB,KAAK,CAACyrB,MAAN,CAAalf,MAAb,CAAR,GAA+BvM,KAAK,CAAC0rB,OAAN,CAAcnf,MAAd,CAA/B,CAZqE,CAarE;;UACA,OAAO,KAAP;QACH,CAfD;MAgBH;;MACDvM,KAAK,CAAC2rB,cAAN;;MACAnhB,KAAK,CAACohB,OAAN,GAAgB,IAAhB;IACH,CAzhCL,oDA0hCqB,0BAAU;MACvB,IAAIC,GAAG,GAAGrhB,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmB2R,OAAnB,CAA2BrQ,QAA3B,IAAuC,MAAjD;;MACA,IAAG,CAAEhD,KAAK,CAACshB,WAAX,EAAuB;QAEnB,IAAIjO,OAAO,GAAGje,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,gBAAtB,CAAd;QAEAuV,OAAO,CAAC4N,MAAR,GAAiB7rB,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,oBAAtB,CAAjB;QACA,IAAIwc,KAAK,GAAGxmB,MAAM,CAAC+D,WAAP,GAAoB,UAApB,GAAiC,OAA7C;QACAwb,OAAO,CAAC4N,MAAR,CAAevhB,EAAf,CAAkB4a,KAAlB,EAAwB,UAAS3hB,CAAT,EAAW;UAC/BA,CAAC,CAAC4oB,eAAF;;UACA/rB,KAAK,CAACyrB,MAAN;QACH,CAHD;QAKA5N,OAAO,CAAC6N,OAAR,GAAkB9rB,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,qBAAtB,CAAlB;QACAuV,OAAO,CAAC6N,OAAR,CAAgBxhB,EAAhB,CAAmB4a,KAAnB,EAAyB,UAAS3hB,CAAT,EAAW;UAChCA,CAAC,CAAC4oB,eAAF;;UACA/rB,KAAK,CAAC0rB,OAAN;QACH,CAHD;QAIA7N,OAAO,CAACnV,MAAR,CAAemV,OAAO,CAAC4N,MAAvB,EAA+B/iB,MAA/B,CAAsCmV,OAAO,CAAC6N,OAA9C;QACAlhB,KAAK,CAACshB,WAAN,GAAoBjO,OAApB;;QACArT,KAAK,CAACiR,IAAN,CAAW/S,MAAX,CAAkB8B,KAAK,CAACshB,WAAxB;MACH;;MACDthB,KAAK,CAACshB,WAAN,CAAkBxd,WAAlB,CAA8B,MAA9B;;MACA9D,KAAK,CAACshB,WAAN,CAAkBxd,WAAlB,CAA8B,OAA9B;;MACAud,GAAG,IAAI,OAAP,IAAkBrhB,KAAK,CAACshB,WAAN,CAAkBxjB,QAAlB,CAA2B,OAA3B,CAAlB,IAEAujB,GAAG,IAAI,MAAP,IAAiBrhB,KAAK,CAACshB,WAAN,CAAkBxjB,QAAlB,CAA2B,MAA3B,CAFjB;MAICkC,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmBhC,EAAnB,IAA0B2hB,GAAG,IAAE,MAAhC,GAA0CrhB,KAAK,CAACshB,WAAN,CAAkBra,IAAlB,EAA1C,GAAqEjH,KAAK,CAACshB,WAAN,CAAkB/J,IAAlB,EAArE;IACH,CAvjCL,+CAwjCgB,mBAASxB,IAAT,EAAc;MACtBA,IAAI,GAAGA,IAAI,IAAI,SAAR,GAAoB,SAApB,GAAgC,SAAvC;MACA/V,KAAK,CAACtE,OAAN,CAAcoX,MAAd,GAAuBiD,IAAvB;MACA,IAAGA,IAAI,IAAI,SAAX,EACI/V,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,uBAApB,EADJ,KAGIkC,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,uBAAvB;IACP,CA/jCL,sDAgkCuB,0BAAS4F,IAAT,EAAc;MAC7B1J,KAAK,CAACtE,OAAN,CAAcgX,WAAd,GAA4BhJ,IAA5B;IACH,CAlkCL,oDAmkCqB,wBAAUhK,EAAV,EAAcsP,QAAd,EAAuB;MACpChP,KAAK,CAACtE,OAAN,CAAcuY,WAAd,GAA4BngB,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAA5B;MACA,IAAGsP,QAAQ,KAAK,KAAhB,EACIxZ,KAAK,CAACiO,kBAAN;IACP,CAvkCL,8CAwkCe,kBAAU/H,OAAV,EAAkB;MAEzBA,OAAO,GAAGA,OAAO,IAAIsE,KAAK,CAACtE,OAAN,CAAcuR,KAAnC;MACAvR,OAAO,CAACgE,EAAR,IAActF,SAAd,KAA4BsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAzC;MACAtK,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACuR,KAAK,EAAEvR;MAAR,CAA9B;MAEA,IAAI8lB,WAAW,GAAG,KAAlB;;MAEA,IAAG,CAACxhB,KAAK,CAACyhB,MAAV,EAAiB;QACbzhB,KAAK,CAACyhB,MAAN,GAAe,EAAf;QACAzhB,KAAK,CAACyhB,MAAN,CAAaC,QAAb,GAAwBtsB,CAAC,CAAC,iBAAD,CAAD,CAAqB0I,QAArB,CAA8B,uBAA9B,CAAxB;;QACAtI,KAAK,CAACmsB,mBAAN;;QACA3hB,KAAK,CAACyhB,MAAN,CAAa9lB,SAAb,GAAyBvG,CAAC,CAAC,SAAD,CAAD,CAAa0I,QAAb,CAAsB,cAAtB,EAAsCyZ,IAAtC,EAAzB;QACAvX,KAAK,CAACyhB,MAAN,CAAand,KAAb,GAAqBlP,CAAC,CAAC,WAAD,CAAtB;QACA,IAAIwsB,EAAE,GAAGxsB,CAAC,CAAC,QAAD,CAAV;QACA4K,KAAK,CAACyhB,MAAN,CAAaI,QAAb,GAAwBzsB,CAAC,CAAC,SAAO4K,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBuH,MAApB,CAA2BC,GAAlC,GAAsC,OAAvC,CAAzB;QACAzU,KAAK,CAACyhB,MAAN,CAAaK,SAAb,GAAyB1sB,CAAC,CAAC,SAAO4K,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBuH,MAApB,CAA2BE,IAAlC,GAAuC,OAAxC,CAA1B;QACAkN,EAAE,CAAC1jB,MAAH,CAAU8B,KAAK,CAACyhB,MAAN,CAAaI,QAAvB;QACAD,EAAE,CAAC1jB,MAAH,CAAU8B,KAAK,CAACyhB,MAAN,CAAaC,QAAvB;QACAE,EAAE,CAAC1jB,MAAH,CAAU8B,KAAK,CAACyhB,MAAN,CAAaK,SAAvB;;QACA9hB,KAAK,CAACyhB,MAAN,CAAand,KAAb,CAAmBpG,MAAnB,CAA0B0jB,EAA1B;;QACA5hB,KAAK,CAACyhB,MAAN,CAAa9lB,SAAb,CAAuBuC,MAAvB,CAA8B8B,KAAK,CAACyhB,MAAN,CAAand,KAA3C;;QACAtE,KAAK,CAACiR,IAAN,CAAW/S,MAAX,CAAkB8B,KAAK,CAACyhB,MAAN,CAAa9lB,SAA/B;MACH;;MAED,IAAI,CAACqE,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBvN,EAArB,IAA2BM,KAAK,CAACyhB,MAAN,CAAa9lB,SAAb,CAAuBmL,EAAvB,CAA0B,UAA1B,CAA/B,EAAqE;QACjE9G,KAAK,CAACyhB,MAAN,CAAa9lB,SAAb,CAAuB4b,IAAvB;;QACAiK,WAAW,GAAG,IAAd;MACH,CAHD,MAGM,IAAGxhB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBvN,EAApB,IAA0B,CAACM,KAAK,CAACyhB,MAAN,CAAa9lB,SAAb,CAAuBmL,EAAvB,CAA0B,UAA1B,CAA9B,EAAoE;QACtE9G,KAAK,CAACyhB,MAAN,CAAa9lB,SAAb,CAAuBsL,IAAvB;;QACAua,WAAW,GAAG,IAAd;MACH;;MAED,IAAG9lB,OAAO,CAACoE,MAAX,EAAkB;QACdE,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,GAAoC1Z,MAAM,CAACia,SAAP,CAAiB/N,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAA5C,EAAiDsN,KAAjD,EAApC;QACA/hB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B6U,OAA3B,GAAqC7gB,MAAM,CAACia,SAAP,CAAiB/N,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAA5C,EAAkDqN,KAAlD,EAArC;QACA/hB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2ByN,OAA3B,GAAqC;UACjCF,CAAC,EAAErN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B6U,OAA3B,CAAmCtH,CAAnC,GAAuCrN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCH,CAD3C;UAEjCI,CAAC,EAAEzN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B6U,OAA3B,CAAmClH,CAAnC,GAAuCzN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCC,CAF3C;UAGjCC,CAAC,EAAE1N,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B6U,OAA3B,CAAmCjH,CAAnC,GAAuC1N,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCE,CAH3C;UAIjCC,CAAC,EAAE3N,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B6U,OAA3B,CAAmChH,CAAnC,GAAuC3N,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCG;QAJ3C,CAArC;QAMA6T,WAAW,GAAG,IAAd;QACAxhB,KAAK,CAACyhB,MAAN,IAAgBjsB,KAAK,CAACmsB,mBAAN,EAAhB;MACH;;MAED,IAAGjmB,OAAO,CAAC8Y,MAAX,EAAkB;QACdxU,KAAK,CAACyhB,MAAN,CAAaI,QAAb,CAAsBpjB,IAAtB,CAA2BuB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBuH,MAApB,CAA2BC,GAAtD;;QACAzU,KAAK,CAACyhB,MAAN,CAAaK,SAAb,CAAuBrjB,IAAvB,CAA4BuB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBuH,MAApB,CAA2BE,IAAvD;MACH;;MAED8M,WAAW,IAAIhsB,KAAK,CAACsnB,WAAN,EAAf;IACH,CA5nCL,iDA6nCkB,uBAAU;MACpBtnB,KAAK,CAACqmB,iBAAN;;MACArmB,KAAK,CAACsmB,mBAAN;IACH,CAhoCL,uDAioCwB,6BAAU;MAC1B9b,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBE,GAApB,GAA0B,CAA1B;MACAnN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoB2H,GAApB,GAA0B,KAA1B;MACA,IAAIoN,MAAM,GAAG,EAAb;;MACAhiB,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASuL,CAAT,EAAW;QAC7B,IAAGA,CAAC,CAACZ,UAAF,IAAc,IAAd,IAAsBY,CAAC,CAACZ,UAAF,IAAcrS,SAAvC,EAAkD4nB,MAAM,CAAC5mB,IAAP,CAAYiS,CAAC,CAACZ,UAAd;MACrD,CAFD;;MAGA,IAAGuV,MAAM,CAACvtB,MAAP,GAAc,CAAjB,EAAmB;QACfuL,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBE,GAApB,GAA0B6U,MAAM,CAACvtB,MAAP,IAAiB,CAAjB,GAAqB,CAArB,GAAyBH,IAAI,CAAC6Y,GAAL,CAAS8U,KAAT,CAAe,IAAf,EAAoBD,MAApB,CAAnD;QACAhiB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoB2H,GAApB,GAA0BtgB,IAAI,CAACsgB,GAAL,CAASqN,KAAT,CAAe,IAAf,EAAoBD,MAApB,CAA1B;QACAhiB,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBG,WAApB,GAAkCpN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoB2H,GAApB,GAA0B5U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBE,GAAhF;MACH;IACJ,CA7oCL,yDA8oCyB,+BAAU;MAAA;;MAC3BnN,KAAK,CAACyhB,MAAN,CAAaC,QAAb,CAAsBvjB,GAAtB;QACIwU,UAAU,EAAE3S,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U;MAD3C,wDAEgB,gCAAgCzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAA3D,GAAiE,MAAjE,GAA0EzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAArG,GAA4G,QAF5H,wDAGgB,iEAAiE1U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAA5F,GAAkG,qBAAlG,GAA0HzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAArJ,GAA4J,IAH5K,wDAIgB,mCAAmC1U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAA9D,GAAoE,MAApE,GAA6EzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAAxG,GAA+G,QAJ/H,wDAKgB,8BAA8B1U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAAzD,GAA+D,MAA/D,GAAwEzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAAnG,GAA0G,aAL1H,wDAMgB,gCAAgC1U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAA3D,GAAiE,MAAjE,GAA0EzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAArG,GAA4G,aAN5H,wDAOgB,8BAA8B1U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAAzD,GAA+D,MAA/D,GAAwEzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAAnG,GAA0G,QAP1H,0CAQI,QARJ,EAQc,gEAAgE1U,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B2U,GAA3F,GAAiG,kBAAjG,GAAsHzU,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B4U,IAAjJ,GAAwJ,oBARtK;IAUH,CAzpCL,4CA0pCa,gBAASvW,GAAT,EAAa;MAClB6B,KAAK,CAACtE,OAAN,CAAcyC,GAAd,GAAoBA,GAApB;IACH,CA5pCL,6CA6pCc,iBAASzC,OAAT,EAAiB;MACvBA,OAAO,GAAGA,OAAO,IAAIsE,KAAK,CAACtE,OAAN,CAAc+D,IAAnC;MACA/D,OAAO,CAACgE,EAAR,IAActF,SAAd,KAA4BsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAzC;MACAtK,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAAC+D,IAAI,EAAE/D;MAAP,CAA9B;MAEAsE,KAAK,CAACkiB,KAAN,IAAeliB,KAAK,CAACkiB,KAAN,CAAY1b,GAAZ,CAAgB,mBAAhB,CAAf;;MAGA,IAAGxG,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBC,EAAtB,EAAyB;QACrB,IAAIyiB,aAAa,GAAG/sB,CAAC,CAAC,MAAI4K,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBqV,WAAxB,CAArB;;QAEA,IAAGqN,aAAa,CAAC1tB,MAAjB,EAAwB;UAEpB,IAAG,CAACuL,KAAK,CAACkiB,KAAV,EAAgB;YACZ,IAAG,CAACC,aAAa,CAACrb,EAAd,CAAiB,IAAjB,CAAJ,EAA2B;cACvB9G,KAAK,CAACkiB,KAAN,GAAc9sB,CAAC,CAAC,QAAD,CAAD,CAAYiX,QAAZ,CAAqB8V,aAArB,CAAd;YACH,CAFD,MAEK;cACDniB,KAAK,CAACkiB,KAAN,GAAcC,aAAd;YACH;;YAED,IAAG,CAACniB,KAAK,CAACkiB,KAAN,CAAYxc,QAAZ,CAAqB,aAArB,CAAJ,EACI1F,KAAK,CAACkiB,KAAN,CAAYpkB,QAAZ,CAAqB,aAArB;UACP;;UAED,IAAGkC,KAAK,CAACkiB,KAAN,CAAYE,QAAZ,GAAuB3tB,MAAvB,KAAgC,CAAnC,EACI;YACAuL,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAAUb,MAAV,EAAkBtM,CAAlB,EAAqB;cACvC,IAAG,CAACsM,MAAM,CAACkC,QAAX,EACInD,KAAK,CAACkiB,KAAN,CAAYhkB,MAAZ,CAAmB8B,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmB5D,QAAnB,CAA4BoF,MAA5B,CAAnB;YACP,CAHD;;UAKJjB,KAAK,CAACkiB,KAAN,CAAYxiB,EAAZ,CAAe,mBAAf,EAAmC,GAAnC,EAAuC,UAAS/G,CAAT,EAAW;YAC9CA,CAAC,CAAC0H,cAAF;YACA,IAAIyK,QAAQ,GAAG1V,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,MAAb,EAAqBnF,OAArB,CAA6B,GAA7B,EAAiC,EAAjC,CAAf;;YACA,IAAIwI,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBgK,QAAhB,CAAb;;YACA,IAAI/I,MAAM,GAAGd,MAAM,CAACe,SAAP,EAAb,CAJ8C,CAK9C;;YACArJ,CAAC,CAACC,OAAF,GAAYmJ,MAAM,CAAC,CAAD,CAAlB;YACApJ,CAAC,CAACE,OAAF,GAAYkJ,MAAM,CAAC,CAAD,CAAlB;;YAEAvM,KAAK,CAAC6sB,kBAAN,CAAyB1pB,CAAzB,EAA2BsI,MAA3B;UACH,CAVD,EAUGvB,EAVH,CAUM,uBAVN,EAU8B,GAV9B,EAUkC,UAAS/G,CAAT,EAAW;YACzC,IAAImS,QAAQ,GAAG1V,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,MAAb,EAAqBnF,OAArB,CAA6B,GAA7B,EAAiC,EAAjC,CAAf;;YACA,IAAIwI,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBgK,QAAhB,CAAb;;YACA,IAAI,CAAC7J,MAAM,CAACuK,QAAZ,EACIvK,MAAM,CAAC6N,SAAP;UACP,CAfD,EAeGpP,EAfH,CAeM,sBAfN,EAe6B,GAf7B,EAeiC,UAAS/G,CAAT,EAAW;YACxC,IAAImS,QAAQ,GAAG1V,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,MAAb,EAAqBnF,OAArB,CAA6B,GAA7B,EAAiC,EAAjC,CAAf;;YACA,IAAIwI,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBgK,QAAhB,CAAb;;YACA,IAAI,CAAC7J,MAAM,CAACuK,QAAZ,EACIvK,MAAM,CAAC8N,WAAP;UACP,CApBD;QAsBH;MACJ;IACJ,CAptCL,mDAqtCoB,uBAASrT,OAAT,EAAiB;MAC7B,IAAIlG,KAAK,GAAG,IAAZ;;MAEAkG,OAAO,GAAMA,OAAO,IAAIsE,KAAK,CAACtE,OAAN,CAAcwW,UAAtC;MACAxW,OAAO,CAACgE,EAAR,IAActF,SAAd,KAA4BsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAzC;;MAEA,IAAG,CAACM,KAAK,CAACkS,UAAV,EAAqB;QACjBlS,KAAK,CAACkS,UAAN,GAAmB;UAAC4D,MAAM,EAAE,KAAT;UAAgBwM,WAAW,EAAE,KAA7B;UAAoCthB,GAAG,EAAE;QAAzC,CAAnB;MACH;;MAED5L,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACwW,UAAU,EAAExW;MAAb,CAA9B;;MAEA,IAAGsE,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxS,EAA5B,EAA+B;QAC3BM,KAAK,CAACiR,IAAN,CAAWxL,WAAX,CAAuB,wBAAvB,EAAiD,IAAjD,EAD2B,CAE3B;QACA;;;QACA,IAAG,CAAC3R,MAAM,CAACyuB,mBAAX,EAA+B;UAC3B/sB,KAAK,CAACgtB,iBAAN,CACI,YAAU;YACVhtB,KAAK,CAACitB,aAAN;UACC,CAHL,EAII,YAAU;YACRjtB,KAAK,CAACitB,aAAN,CAAoB;cAAC/iB,EAAE,EAAC;YAAJ,CAApB;UACD,CANL;QAQH,CATD,MASO;UACH,IAAG,CAACM,KAAK,CAACkS,UAAN,CAAiBlR,GAArB,EAAyB;YAyBrB;YAzBqB,IA0BZ0hB,WA1BY,GA0BrB,SAASA,WAAT,CAAqBC,MAArB,EAA6B3hB,GAA7B,EAAkC;cAC9B;cACA,KAAK4hB,OAAL,GAAeD,MAAf;cACA,KAAKE,IAAL,GAAY7hB,GAAZ;cACA,KAAK8hB,MAAL,CAAY9hB,GAAZ;YACH,CA/BoB;;YACrBhB,KAAK,CAAC+iB,WAAN,GAAoB3tB,CAAC,CAAC,sEAAoEI,KAAK,CAAC0L,EAA1E,GAA6E,UAA9E,CAAD,CAA2F8hB,SAA3F,CAAqGhjB,KAAK,CAACiR,IAA3G,CAApB;;YACAjR,KAAK,CAAC+iB,WAAN,CAAkB5kB,GAAlB,CAAsB;cAClBlI,QAAQ,EAAE,UADQ;cAElBE,GAAG,EAAC,CAFc;cAGlBD,IAAI,EAAE,CAHY;cAIlBG,MAAM,EAAE,CAJU;cAKlBD,KAAK,EAAE,CALW;cAMlB,WAAW;YANO,CAAtB;;YAQA4J,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,GAAuB,IAAIof,MAAM,CAACC,IAAP,CAAY4C,GAAhB,CAAoBjjB,KAAK,CAAC+iB,WAAN,CAAkB,CAAlB,CAApB,EAA0C;cAC7DG,SAAS,EAAExnB,OAAO,CAACqa,IAD0C;cAE7DoN,iBAAiB,EAAE,KAF0C;cAG7DC,iBAAiB,EAAE,KAH0C;cAI7DC,cAAc,EAAE,KAJ6C;cAK7DC,YAAY,EAAE,KAL+C;cAM7DC,WAAW,EAAE,KANgD;cAO7DC,iBAAiB,EAAE,KAP0C;cAQ7DC,WAAW,EAAE;YARgD,CAA1C,CAAvB;YAWA,IAAIC,OAAJ;YACAhB,WAAW,CAACxuB,SAAZ,GAAwB,IAAIksB,MAAM,CAACC,IAAP,CAAYsD,WAAhB,EAAxB;;YAUAjB,WAAW,CAACxuB,SAAZ,CAAsB0vB,KAAtB,GAA8B,YAAW,CAErC;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;YACH,CAZD;;YAcAlB,WAAW,CAACxuB,SAAZ,CAAsB2vB,IAAtB,GAA6B,YAAW;cACpC,IAAIC,iBAAiB,GAAG,KAAKC,aAAL,EAAxB;cACA,IAAIvb,EAAE,GAAIsb,iBAAiB,CAACE,oBAAlB,CAAuC,KAAKpB,OAAL,CAAalD,YAAb,EAAvC,CAAV;cACA,IAAIhX,EAAE,GAAIob,iBAAiB,CAACE,oBAAlB,CAAuC,KAAKpB,OAAL,CAAanD,YAAb,EAAvC,CAAV;cACA,IAAIwE,GAAG,GAAGH,iBAAiB,CAACI,0BAAlB,CAA6C,KAAKtB,OAAL,CAAalD,YAAb,EAA7C,CAAV;cACA,IAAIyE,GAAG,GAAGL,iBAAiB,CAACI,0BAAlB,CAA6C,KAAKtB,OAAL,CAAanD,YAAb,EAA7C,CAAV;cACA,IAAIzX,KAAK,GAAG,CAACmc,GAAG,CAAC5d,CAAJ,GAAQ0d,GAAG,CAAC1d,CAAb,IAAgBvG,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA5B;cACA,IAAIkU,EAAE,GAAG,CACLpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8B+T,GAAG,CAAC1d,CAAJ,GAAMyB,KAD/B,EAELhI,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BiU,GAAG,CAAC3vB,CAAJ,GAAMwT,KAF/B,EAGLhI,KAAK,CAACiR,IAAN,CAAWxa,KAAX,KAAmBuR,KAHd,EAILhI,KAAK,CAACiR,IAAN,CAAW1T,WAAX,KAAyByK,KAJpB,CAAT;;cAMAxS,KAAK,CAAC6iB,UAAN,CAAiB+L,EAAjB,EAboC,CAcpC;cACA;cACA;cACA;cACA;;YACH,CAnBD;;YAqBA,IAAIC,SAAS,GAAG,IAAIjE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuBtkB,KAAK,CAACukB,UAAN,CAAiBC,SAAxC,EAAmDxkB,KAAK,CAACukB,UAAN,CAAiBE,OAApE,CAAhB;YACA,IAAIC,SAAS,GAAG,IAAItE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuBtkB,KAAK,CAACukB,UAAN,CAAiBI,MAAxC,EAAgD3kB,KAAK,CAACukB,UAAN,CAAiBK,QAAjE,CAAhB;YACA,IAAIjC,MAAM,GAAG,IAAIvC,MAAM,CAACC,IAAP,CAAYwE,YAAhB,CAA6BR,SAA7B,EAAuCK,SAAvC,CAAb;YAEA1kB,KAAK,CAACkS,UAAN,CAAiBwR,OAAjB,GAA2B,IAAIhB,WAAJ,CAAgBC,MAAhB,EAAwB3iB,KAAK,CAACkS,UAAN,CAAiBlR,GAAzC,CAA3B;;YAEA,IAAG,CAAChB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAA1B,IAAoC,CAAC/B,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAjE,EAAsE;cAClE,IAAI2iB,SAAS,GAAG,IAAIjE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuBtkB,KAAK,CAACukB,UAAN,CAAiBC,SAAxC,EAAmDxkB,KAAK,CAACukB,UAAN,CAAiBE,OAApE,CAAhB;cACA,IAAIC,SAAS,GAAG,IAAItE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuBtkB,KAAK,CAACukB,UAAN,CAAiBI,MAAxC,EAAgD3kB,KAAK,CAACukB,UAAN,CAAiBK,QAAjE,CAAhB;cACA,IAAIjC,MAAM,GAAG,IAAIvC,MAAM,CAACC,IAAP,CAAYwE,YAAhB,CAA6BR,SAA7B,EAAuCK,SAAvC,CAAb;;cACA1kB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqB8jB,SAArB,CAA+BnC,MAA/B;YACH,CALD,MAKK;cACD3iB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBwX,OAArB,CAA6BxY,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAtD;;cACA1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBsf,SAArB,CAA+BtgB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAAxD;YACH;;YACD/B,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBoQ,WAAzB,GAAuC,IAAvC;;YACAtiB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqB+jB,WAArB,CAAiC,MAAjC,EAAwC,YAAU;cAC9C/kB,KAAK,CAAC2e,SAAN,GAAkB,KAAlB;YACH,CAFD;;YAGAyB,MAAM,CAACC,IAAP,CAAY/F,KAAZ,CAAkB0K,eAAlB,CAAkChlB,KAAK,CAACkS,UAAN,CAAiBlR,GAAnD,EAAwD,MAAxD,EAAgE,YAAU;cACtE3D,UAAU,CAAC,YAAW;gBAClB2C,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,gBAApB;;gBACAT,UAAU,CAAC,YAAW;kBAClB2C,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,2BAAvB;;kBACA9D,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,gBAAvB,EAFkB,CAGlB;;;kBACA,IAAG,CAAC9D,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAA1B,IAAoC,CAAC/B,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAjE,EAAuE;oBACnE1B,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAAzB,GAAkC/B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBgB,SAArB,GAAiCijB,MAAjC,EAAlC;oBACAjlB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAzB,GAAgC1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBkkB,OAArB,EAAhC;kBACH;gBACJ,CARS,EAQP,GARO,CAAV;cASH,CAXS,EAWP,CAXO,CAAV;YAYH,CAbD;YAcA7nB,UAAU,CAAC,YAAU;cACjB;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cAEA7H,KAAK,CAAC+qB,2BAAN;YACH,CApBS,EAoBR,GApBQ,CAAV;UAsBH,CA1HD,MA0HK;YACDvgB,KAAK,CAACiR,IAAN,CAAWxL,WAAX,CAAuB,wBAAvB,EAAiD,IAAjD;;YACAzF,KAAK,CAAC+iB,WAAN,IAAqB/iB,KAAK,CAAC+iB,WAAN,CAAkB9b,IAAlB,EAArB;;YACA,IAAGvL,OAAO,CAACqa,IAAX,EAAgB;cACZ/V,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBmkB,YAArB,CAAkCzpB,OAAO,CAACqa,IAA1C;YACH;UACJ;QACJ;MACJ,CAhJD,MAgJK;QACD;QACA/V,KAAK,CAACiR,IAAN,CAAWxL,WAAX,CAAuB,wBAAvB,EAAiD,KAAjD;;QACAzF,KAAK,CAAC+iB,WAAN,IAAqB/iB,KAAK,CAAC+iB,WAAN,CAAkBxL,IAAlB,EAArB;QACAvX,KAAK,CAACkS,UAAN,CAAiBoQ,WAAjB,GAA+B,KAA/B;MAEH;IAEJ,CAz3CL,uDA03CwB,2BAAS/sB,QAAT,EAAmB6vB,IAAnB,EAAwB;MACxCrxB,MAAM,CAACsxB,cAAP,GAAwB,YAAW;QAC/B,IAAGvxB,MAAM,CAACwxB,kBAAV,EAA6B;UACzBxxB,MAAM,CAACwxB,kBAAP;QACH,CAFD,MAEK;UACDC,KAAK,CAAC,mCAAD,CAAL;QACH;MACJ,CAND;;MAOAvlB,KAAK,CAACwlB,gBAAN,GAAyB1vB,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CAAzB;;MACAiK,KAAK,CAACwlB,gBAAN,CAAuB5V,MAAvB,GAAgC,YAAU;QACtC9b,MAAM,CAACyuB,mBAAP,GAA6B,IAA7B;QACA,IAAG,OAAOhtB,QAAP,IAAmB,UAAtB,EACIA,QAAQ;MACf,CAJD;;MAKAyK,KAAK,CAACwlB,gBAAN,CAAuBvW,GAAvB,GAA6B,2CAAyCjP,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyB2D,MAA/F,CAdwC,CAc8D;;MAEtG/f,QAAQ,CAAC2vB,IAAT,CAAc9uB,WAAd,CAA0BqJ,KAAK,CAACwlB,gBAAhC;IACH,CA34CL,qDA64CsB,yBAAS1qB,GAAT,EAAa;MAC3B;MACA,IAAItF,KAAK,GAAG,IAAZ;;MACAA,KAAK,CAACqU,OAAN,IAAiBrU,KAAK,CAACqU,OAAN,CAAcpD,KAAd,EAAjB;MACA,IAAGjR,KAAK,CAACkwB,iBAAT,EACIlwB,KAAK,CAACkwB,iBAAN,CAAwBjuB,OAAxB;MAEJjC,KAAK,CAACkwB,iBAAN,GAA0B,IAAI5xB,MAAM,CAAC+R,iBAAX,CAA6B;QACnDtJ,KAAK,EAAEyD,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqBwU,WADuB;QAEnDtY,UAAU,EAAElI,MAAM,CAACmE,OAAP,GAAiB,KAAjB,GAAyB+H,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BtY,UAFZ;QAGnDL,SAAS,EAAEqE,KAAK,CAAC2lB,QAHkC;QAInD9pB,QAAQ,EAAEf,GAAG,YAAYiM,MAAf,GAAyB/G,KAAK,CAAC/D,SAAN,CAAgBsY,iBAAzC,GAA6DvU,KAAK,CAAC/D,SAAN,CAAgBqY,WAJpC;QAKnD1Y,MAAM,EAAEpG,KAL2C;QAMnD8G,IAAI,EAAExB,GAAG,YAAYiM,MAAf,GAAwBjM,GAAG,CAACwR,WAAJ,EAAxB,GAA4CxR,GANC;QAOnDgB,UAAU,EAAEkE,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BtR,QAA1B,IAAsC,QAPC;QAQnDjH,WAAW,EAAEiE,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BtR,QAA1B,IAAsC,QARA;QASnDvM,KAAK,EAAEuJ,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0B7d,KATkB;QAUnD+F,MAAM,EAAE;UACA,SAAS,eAASZ,MAAT,EAAgB;YACrB,IAAGoE,KAAK,CAACxD,MAAN,CAAa,mBAAb,CAAH,EAAsC;cAClCwD,KAAK,CAACxD,MAAN,CAAa,mBAAb,EAAkCgC,IAAlC,CAAuC,IAAvC,EAA6ChJ,KAA7C;YACH;;YACDA,KAAK,CAACklB,OAAN,CAAc,cAAd;UACH,CAND;UAOA,UAAW,gBAAS9e,MAAT,EAAgB;YAC3BpG,KAAK,CAACiO,kBAAN,GAD2B,CAE3B;;;YACAzD,KAAK,CAAC8Y,WAAN,IAAqB9Y,KAAK,CAAC8Y,WAAN,CAAkBlG,SAAvC,IAAoD5S,KAAK,CAAC8Y,WAAN,CAAkBlG,SAAlB,CAA4BjS,aAA5B,EAApD;;YACA,IAAGX,KAAK,CAACxD,MAAN,CAAa,oBAAb,CAAH,EAAsC;cAClCwD,KAAK,CAACxD,MAAN,CAAa,oBAAb,EAAmCgC,IAAnC,CAAwC,IAAxC,EAA8ChJ,KAA9C;YACH;;YACDA,KAAK,CAACklB,OAAN,CAAc,eAAd;UACH;QAfG;MAV2C,CAA7B,CAA1B;IA4BH,CAh7CL,oDAi7CqB,wBAAShf,OAAT,EAAiB;MAC9BA,OAAO,GAAGA,OAAO,IAAIsE,KAAK,CAACtE,OAAN,CAAckqB,WAAnC;MACAlqB,OAAO,CAACgE,EAAR,IAActF,SAAd,KAA4BsB,OAAO,CAACgE,EAAR,GAAa5L,MAAM,CAACqG,YAAP,CAAoBuB,OAAO,CAACgE,EAA5B,CAAzC;MACAtK,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAewG,KAAK,CAACtE,OAArB,EAA8B;QAACkqB,WAAW,EAAElqB;MAAd,CAA9B;MAEAsE,KAAK,CAAC6lB,YAAN,IAAsB7lB,KAAK,CAAC6lB,YAAN,CAAmBrf,GAAnB,CAAuB,0BAAvB,CAAtB;;MAGA,IAAGxG,KAAK,CAACtE,OAAN,CAAckqB,WAAd,CAA0BlmB,EAA7B,EAAgC;QAC5B,IAAIyiB,aAAa,GAAG/sB,CAAC,CAAC,MAAI4K,KAAK,CAACtE,OAAN,CAAckqB,WAAd,CAA0B9Q,WAA/B,CAArB;;QACA,IAAGqN,aAAa,CAAC1tB,MAAjB,EAAwB;UACpB,IAAG,CAACuL,KAAK,CAAC6lB,YAAV,EAAuB;YACnB,IAAG,CAAC1D,aAAa,CAACrb,EAAd,CAAiB,IAAjB,CAAJ,EAA2B;cACvB9G,KAAK,CAAC6lB,YAAN,GAAqBzwB,CAAC,CAAC,QAAD,CAAD,CAAYiX,QAAZ,CAAqB8V,aAArB,CAArB;YACH,CAFD,MAEK;cACDniB,KAAK,CAAC6lB,YAAN,GAAqB1D,aAArB;YACH;;YAED,IAAG,CAACniB,KAAK,CAAC6lB,YAAN,CAAmBngB,QAAnB,CAA4B,qBAA5B,CAAJ,EACI1F,KAAK,CAAC6lB,YAAN,CAAmB/nB,QAAnB,CAA4B,qBAA5B;UACP;;UAED,IAAGkC,KAAK,CAAC6lB,YAAN,CAAmBzD,QAAnB,GAA8B3tB,MAA9B,KAAuC,CAA1C,EACA;YACIuL,KAAK,CAAC6S,OAAN,CAAciT,IAAd,CAAmB,UAASnY,CAAT,EAAWD,CAAX,EAAa;cAC5B,OAAOC,CAAC,CAACzM,EAAF,IAAQwM,CAAC,CAACxM,EAAV,GAAe,CAAf,GAAmB,EAAEyM,CAAC,CAACzM,EAAF,GAAOwM,CAAC,CAACxM,EAAX,KAAkB,CAAC,CAA7C;YACH,CAFD;;UAIJlB,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAAUtB,MAAV,EAAkB7L,CAAlB,EAAqB;YACvCqL,KAAK,CAAC6lB,YAAN,CAAmB3nB,MAAnB,CAA0B8B,KAAK,CAACtE,OAAN,CAAckqB,WAAd,CAA0B/pB,QAA1B,CAAmC2E,MAAnC,CAA1B;UACH,CAFD;;UAIAR,KAAK,CAAC6lB,YAAN,CAAmBnmB,EAAnB,CAAsB,0BAAtB,EAAiD,GAAjD,EAAqD,UAAS/G,CAAT,EAAW;YAC5DA,CAAC,CAAC0H,cAAF;YACA,IAAI0lB,QAAQ,GAAG3wB,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,MAAb,EAAqBnF,OAArB,CAA6B,GAA7B,EAAiC,EAAjC,CAAf;;YACA,IAAI+H,MAAM,GAAGhL,KAAK,CAAC2L,SAAN,CAAgB4kB,QAAhB,CAAb;;YACA,IAAIhkB,MAAM,GAAGvB,MAAM,CAACwB,SAAP,EAAb;YACArJ,CAAC,GAAG;cAACC,OAAO,EAAEmJ,MAAM,CAAC,CAAD,CAAhB;cAAqBlJ,OAAO,EAAEkJ,MAAM,CAAC,CAAD;YAApC,CAAJ;;YACAvM,KAAK,CAAC6sB,kBAAN,CAAyB1pB,CAAzB,EAA2B6H,MAA3B;UACH,CAPD,EAOGd,EAPH,CAOM,8BAPN,EAOqC,GAPrC,EAOyC,UAAS/G,CAAT,EAAW;YAChDA,CAAC,CAAC0H,cAAF;YACA,IAAI0lB,QAAQ,GAAG3wB,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,MAAb,EAAqBnF,OAArB,CAA6B,GAA7B,EAAiC,EAAjC,CAAf;;YACA,IAAI+H,MAAM,GAAGhL,KAAK,CAAC2L,SAAN,CAAgB4kB,QAAhB,CAAb;;YACA/lB,KAAK,CAACtE,OAAN,CAAc0H,SAAd,IAA2BpD,KAAK,CAACtE,OAAN,CAAc0H,SAAd,CAAwB5E,IAAxB,CAA6BgC,MAA7B,EAAqC7H,CAArC,EAAwCnD,KAAxC,CAA3B;UACH,CAZD,EAYGkK,EAZH,CAYM,6BAZN,EAYoC,GAZpC,EAYwC,UAAS/G,CAAT,EAAW;YAC/CA,CAAC,CAAC0H,cAAF;YACA,IAAI0lB,QAAQ,GAAG3wB,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,MAAb,EAAqBnF,OAArB,CAA6B,GAA7B,EAAiC,EAAjC,CAAf;;YACA,IAAI+H,MAAM,GAAGhL,KAAK,CAAC2L,SAAN,CAAgB4kB,QAAhB,CAAb;;YACA/lB,KAAK,CAACtE,OAAN,CAAc4H,QAAd,IAA0BtD,KAAK,CAACtE,OAAN,CAAc4H,QAAd,CAAuB9E,IAAvB,CAA4BgC,MAA5B,EAAoC7H,CAApC,EAAuCnD,KAAvC,CAA1B;UACH,CAjBD;QAkBH;MACJ;IACJ,CAr+CL,+CA2+CgB,mBAAS0L,EAAT,EAAY;MACpB,OAAOlB,KAAK,CAACO,OAAN,CAAcP,KAAK,CAACgmB,WAAN,CAAkB9kB,EAAlB,CAAd,CAAP;IACH,CA7+CL,+CA8+CgB,mBAASA,EAAT,EAAY;MACpB,OAAOlB,KAAK,CAAC6S,OAAN,CAAc7S,KAAK,CAACimB,WAAN,CAAkB/kB,EAAlB,CAAd,CAAP;IACH,CAh/CL,6CAi/Cc,iBAASA,EAAT,EAAY;MAClB,IAAG1L,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAAH,EACI,OAAO;QAACkJ,KAAK,EAAE;MAAR,CAAP,CADJ,KAEK,IAAG5U,KAAK,CAAC2L,SAAN,CAAgBD,EAAhB,CAAH,EACD,OAAO;QAACkJ,KAAK,EAAE;MAAR,CAAP,CADC,KAGD,OAAO,IAAP;IAEP,CAz/CL,yDA0/CyB,+BAAU;MAC3BpK,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASb,MAAT,EAAgB;QAClCA,MAAM,CAACyK,OAAP;MACH,CAFD;IAGH,CA9/CL,6CAggDc,mBAAU;MAChB,IAAG1L,KAAK,CAAC8Y,WAAN,IAAqB9Y,KAAK,CAAC8Y,WAAN,CAAkBlG,SAA1C,EAAoD;QAChD5S,KAAK,CAAC8Y,WAAN,CAAkBlG,SAAlB,CAA4BpT,aAA5B,CAA0CrL,MAA1C;MACH;;MACD6L,KAAK,CAACiR,IAAN,CAAWpS,KAAX,GAAmBqnB,YAAnB,CAAgClmB,KAAK,CAACJ,KAAtC,EAA6ChC,IAA7C,CAAkD,OAAlD,EAA0D,EAA1D,EAA8DkG,WAA9D,CAA0E,0BAA1E;;MACA9D,KAAK,CAACJ,KAAN,CAAYzL,MAAZ;;MACA2d,SAAS,CAAC9R,KAAK,CAACiR,IAAN,CAAWrT,IAAX,CAAgB,IAAhB,CAAD,CAAT,GAAmCxD,SAAnC;MACA,OAAO5E,KAAP;IACH,CAxgDL,6CAygDc,mBAAU;MAChB,OAAOwK,KAAP;IACH,CA3gDL,+CA4gDgB,qBAAU,CAErB,CA9gDL,8CAghDc,oBAAU;MAEhB;MACA;MACA;MAEA;MAEA;MACA,IAAImmB,MAAM,GAAGnmB,KAAK,CAACiR,IAAN,CAAWxa,KAAX,KAAqBuJ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAlC,CATgB,CAWhB;MACA;MACA;;;MACA,OAAOiW,MAAM,IAAI,CAAjB;IACH,CA/hDL,gDAgiDiB,sBAAU;MACnBnmB,KAAK,CAACgI,KAAN,GAAcxS,KAAK,CAACwpB,QAAN,EAAd;MACAxpB,KAAK,CAACqU,OAAN,IAAiBrU,KAAK,CAACqU,OAAN,CAAczD,cAAd,EAAjB;;MACA5Q,KAAK,CAACwqB,qBAAN;;MACAxqB,KAAK,CAAC4wB,gBAAN;;MACA,IAAGpmB,KAAK,CAACqmB,aAAT,EACIrmB,KAAK,CAACqmB,aAAN,CAAoB3vB,MAApB,CAA2BsJ,KAAK,CAACJ,KAAN,CAAYrC,WAAZ,EAA3B;IACP,CAviDL,gDAyiDiB,sBAAU;MACnB,OAAOyC,KAAK,CAACkQ,OAAb;IACH,CA3iDL,sDA6iDuB,0BAASzZ,KAAT,EAAeC,MAAf,EAAsB;MAErCD,KAAK,GAAG8D,UAAU,CAAC9D,KAAD,CAAlB;MACAC,MAAM,GAAG6D,UAAU,CAAC7D,MAAD,CAAnB;;MACAlB,KAAK,CAAC8wB,OAAN,CAAc7vB,KAAd,EAAoBC,MAApB;;MACAsJ,KAAK,CAACoY,QAAN,GAAiB5iB,KAAK,CAAC+wB,gBAAN,CAAuB9vB,KAAvB,EAA6BC,MAA7B,CAAjB,CALqC,CAMrC;MACA;;MAEAlB,KAAK,CAAC6iB,UAAN,CAAiBrY,KAAK,CAACoY,QAAvB;;MACAhjB,CAAC,CAACrB,MAAD,CAAD,CAAU2mB,OAAV,CAAkB,QAAlB;;MACAllB,KAAK,CAAC8wB,OAAN,CAAc7vB,KAAd,EAAoBC,MAApB,EAXqC,CAarC;MACA;MACA;;;MAEA,OAAOsJ,KAAK,CAACkQ,OAAb;IACH,CA/jDL,sDAgkDuB,0BAASzZ,KAAT,EAAgBC,MAAhB,EAAuB;MAGtC,IAAI8vB,SAAS,GAAG/vB,KAAK,GAAGC,MAAxB;MACA,IAAI+vB,SAAS,GAAGzmB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA9C;MAEA,IAAIkU,EAAE,GAAGhvB,CAAC,CAACoE,MAAF,CAAS,EAAT,EAAYwG,KAAK,CAACqe,UAAN,CAAiBnO,OAA7B,CAAT;;MAEA,IAAIsW,SAAS,IAAIC,SAAjB,EAA2B;QACvB;QACA;QACA,IAAID,SAAS,GAAGC,SAAhB,EAA0B;UACtBrC,EAAE,CAAC,CAAD,CAAF,GAAQpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BsW,SAAtC;UACApC,EAAE,CAAC,CAAD,CAAF,GAAQpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA+B,CAACkU,EAAE,CAAC,CAAD,CAAF,GAAQpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAT,IAAsC,CAA7E;QACH,CAHD,MAGK;UACDkU,EAAE,CAAC,CAAD,CAAF,GAAQpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BsW,SAAtC;UACApC,EAAE,CAAC,CAAD,CAAF,GAAQpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA+B,CAACkU,EAAE,CAAC,CAAD,CAAF,GAAQpkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAT,IAAsC,CAA7E;QACH;MAEJ;;MAED,OAAOkU,EAAP;IACH,CAtlDL,kDAulDmB,sBAASsC,SAAT,EAAmB;MAC9B,IAAG1mB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxS,EAA5B,EAA+B;QAC3B,IAAG,CAACM,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAA1B,IAAoC,CAAC/B,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAjE,EAAsE;UAClE,IAAI2iB,SAAS,GAAG,IAAIjE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuBtkB,KAAK,CAACukB,UAAN,CAAiBC,SAAxC,EAAmDxkB,KAAK,CAACukB,UAAN,CAAiBE,OAApE,CAAhB;UACA,IAAIC,SAAS,GAAG,IAAItE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuBtkB,KAAK,CAACukB,UAAN,CAAiBI,MAAxC,EAAgD3kB,KAAK,CAACukB,UAAN,CAAiBK,QAAjE,CAAhB;UACA,IAAIjC,MAAM,GAAG,IAAIvC,MAAM,CAACC,IAAP,CAAYwE,YAAhB,CAA6BR,SAA7B,EAAuCK,SAAvC,CAAb;;UACA1kB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqB8jB,SAArB,CAA+BnC,MAA/B;;UACA3iB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAAzB,GAAkC/B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBgB,SAArB,GAAiCijB,MAAjC,EAAlC;UACAjlB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAzB,GAAgC1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBkkB,OAArB,EAAhC;QACH,CAPD,MAOK;UACDllB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBwX,OAArB,CAA6BxY,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxQ,IAAtD;;UACA1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBsf,SAArB,CAA+BtgB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBnQ,MAAxD;QACH;MACJ,CAZD,MAYK;QACD,IAAG2kB,SAAH,EAAa;UACT,IAAIvI,CAAC,GAAGne,KAAK,CAACoY,QAAN,IAAkBpY,KAAK,CAACqe,UAAN,CAAiBnO,OAA3C;UACAlQ,KAAK,CAACuY,SAAN,GAAkB,CAAlB;UACAvY,KAAK,CAAC8e,MAAN,GAAe,CAAf;;UACAtpB,KAAK,CAAC6iB,UAAN,CAAiB8F,CAAjB;QACH,CALD,MAKK;UACD3oB,KAAK,CAAC6iB,UAAN;QACH;MACJ;IACJ,CA9mDL,mDA+mDoB,yBAAU;MACtB,IAAI8F,CAAC,GAAWne,KAAK,CAACkQ,OAAtB;;MACA,IAAIuU,OAAO,GAAKjvB,KAAK,CAACiT,eAAN,CAAsB0V,CAAC,CAAC,CAAD,CAAvB,EAA2BA,CAAC,CAAC,CAAD,CAA5B,EAAiC,CAAjC,CAAhB;;MACA,IAAIyG,QAAQ,GAAIpvB,KAAK,CAACiT,eAAN,CAAsB0V,CAAC,CAAC,CAAD,CAAD,GAAKA,CAAC,CAAC,CAAD,CAA5B,EAAgCA,CAAC,CAAC,CAAD,CAAjC,EAAsC,CAAtC,CAAhB;;MACA,IAAIwG,MAAM,GAAMnvB,KAAK,CAACiT,eAAN,CAAsB0V,CAAC,CAAC,CAAD,CAAvB,EAA2BA,CAAC,CAAC,CAAD,CAA5B,EAAiC,CAAjC,CAAhB;;MACA,IAAIqG,SAAS,GAAGhvB,KAAK,CAACiT,eAAN,CAAsB0V,CAAC,CAAC,CAAD,CAAvB,EAA2BA,CAAC,CAAC,CAAD,CAAD,GAAKA,CAAC,CAAC,CAAD,CAAjC,EAAsC,CAAtC,CAAhB;;MACA,OAAO,CAACsG,OAAD,EAAUE,MAAV,EAAkBC,QAAlB,EAA4BJ,SAA5B,CAAP;IACH,CAtnDL,sDAunDuB,4BAAU;MACzB,IAAIhvB,KAAK,GAAG,IAAZ;;MACAwK,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,sCAAhB,EAAwDmN,IAAxD,CAA6D,UAASrR,KAAT,EAAe;QACpE,IAAGhE,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,cAAb,CAAH,EAAiC;UAC7BlH,CAAC,CAAC,IAAD,CAAD,CAAQ+I,GAAR,CAAY,cAAZ,EAA4B/I,CAAC,CAAC,IAAD,CAAD,CAAQkH,IAAR,CAAa,cAAb,IAA+B0D,KAAK,CAACgI,KAAjE;QACH;MACR,CAJD;IAKH,CA9nDL,4CAgoDY,gBAASjG,MAAT,EAAgB;MACpB,IAAG/B,KAAK,CAACkS,UAAN,CAAiBlR,GAApB,EAAwB;QACpB,IAAG,CAAChB,KAAK,CAAC2e,SAAV,EAAoB;UAChB3e,KAAK,CAAC2e,SAAN,GAAkB,IAAlB;UACA,IAAIjd,IAAI,GAAG1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBkkB,OAArB,KAA+B,CAA1C;UACAxjB,IAAI,GAAGA,IAAI,GAAG,EAAP,GAAY,EAAZ,GAAiBA,IAAxB;;UACA1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBwX,OAArB,CAA6B9W,IAA7B;QACH;MACJ,CAPD,MAOM,IAAG1B,KAAK,CAACohB,OAAT,EAAiB;QACnBphB,KAAK,CAACohB,OAAN,GAAgB,KAAhB;QACA/jB,UAAU,CAAC,YAAU;UACjB2C,KAAK,CAACohB,OAAN,GAAgB,IAAhB;QACH,CAFS,EAEP,GAFO,CAAV;;QAGA5rB,KAAK,CAACkM,IAAN,CAAW,CAAX,EAAcK,MAAd;MACH;IACJ,CA/oDL,6CAgpDa,iBAASA,MAAT,EAAgB;MACrB,IAAG/B,KAAK,CAACkS,UAAN,CAAiBlR,GAApB,EAAwB;QACpB,IAAG,CAAChB,KAAK,CAAC2e,SAAP,IAAoB3e,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBkkB,OAArB,KAA+B,CAA/B,IAAoCllB,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyB8D,OAApF,EAA6F;UACzFhW,KAAK,CAAC2e,SAAN,GAAkB,IAAlB;UACA,IAAIjd,IAAI,GAAG1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBkkB,OAArB,KAAiC,CAA5C;UACAxjB,IAAI,GAAGA,IAAI,GAAG,CAAP,GAAW,CAAX,GAAeA,IAAtB;;UACA1B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBwX,OAArB,CAA6B9W,IAA7B;QACH;MACJ,CAPD,MAOM,IAAG1B,KAAK,CAACohB,OAAT,EAAiB;QACnBphB,KAAK,CAACohB,OAAN,GAAgB,KAAhB;QACA/jB,UAAU,CAAC,YAAU;UACjB2C,KAAK,CAACohB,OAAN,GAAgB,IAAhB;QACH,CAFS,EAEP,GAFO,CAAV;;QAGA5rB,KAAK,CAACkM,IAAN,CAAW,CAAC,CAAZ,EAAeK,MAAf;MACH;IACJ,CA/pDL,oDAgqDqB,wBAAU4kB,UAAV,EAAqB;MAElC,IAAIC,cAAc,GAAG5mB,KAAK,CAAC8e,MAA3B;MACA9e,KAAK,CAACgI,KAAN,GAAehI,KAAK,CAACgI,KAAN,GAAc6e,MAA7B;MACA,IAAInlB,IAAI,GAAK1B,KAAK,CAAC8e,MAAnB;MACA9e,KAAK,CAAC8e,MAAN,GAAe9e,KAAK,CAAC8e,MAAN,GAAe+H,MAA9B;MAGA,IAAIC,MAAM,GAAO9mB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAjB;MACA,IAAI6W,OAAO,GAAM/mB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAjB;MACA,IAAI8W,UAAU,GAAG,EAAjB;MAEAA,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAoBpY,KAAK,CAAC8e,MAA3C;MACAkI,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAoBpY,KAAK,CAAC8e,MAA3C;MAEAkI,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmB,CAAC4W,MAAM,GAAGE,UAAU,CAAC,CAAD,CAApB,IAA2B,CAA/D;MACAA,UAAU,CAAC,CAAD,CAAV,GAAiB9W,OAAO,CAAC,CAAD,CAAP,GAAa,CAAC6W,OAAO,GAAGC,UAAU,CAAC,CAAD,CAArB,IAA4B,CAA1D;;MAEAxxB,KAAK,CAAC6iB,UAAN,CAAiB2O,UAAjB;IAEH,CAprDL,mDAqrDoB,yBAAU,CAEzB,CAvrDL,kDAwrDmB,wBAAU,CAExB,CA1rDL,4CA2rDa,gBAAU/lB,MAAV,EAAkBW,WAAlB,EAA8B;MAEnCA,WAAW,GAAGA,WAAW,IAAExH,SAAb,GAAyB1E,QAAQ,CAACkM,WAAD,CAAjC,GAAiD,KAA/D;;MAEA,IAAG,OAAOX,MAAP,IAAiB,QAApB,EAA8B;QAC1BA,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBG,MAAhB,CAAT;MACH;;MAED,IAAGjB,KAAK,CAACkS,UAAN,CAAiBlR,GAApB,EAAyB;QACrB,IAAGC,MAAM,YAAY8G,MAArB,EAA4B;UACxB,IAAIuB,MAAM,GAAG9T,KAAK,CAACiT,eAAN,CAAsBxH,MAAM,CAACsF,CAA7B,EAAgCtF,MAAM,CAACzM,CAAvC,CAAb;;UACAwL,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBwX,OAArB,CAA6B5W,WAAW,IAAI,CAA5C;;UACA5B,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBsf,SAArB,CAA+B;YAAC/W,GAAG,EAAED,MAAM,CAAC,CAAD,CAAZ;YAAgBE,GAAG,EAAEF,MAAM,CAAC,CAAD;UAA3B,CAA/B;QACH,CAJD,MAIK;UACD,IAAIqZ,MAAM,GAAG1hB,MAAM,CAACsH,YAAP,EAAb;UACA0e,OAAO,CAACC,GAAR,CAAYvE,MAAZ;UACA,IAAI0B,SAAS,GAAG,IAAIjE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuB3B,MAAM,CAACna,EAAP,CAAU,CAAV,CAAvB,EAAqCma,MAAM,CAACna,EAAP,CAAU,CAAV,CAArC,CAAhB;UACA,IAAIkc,SAAS,GAAG,IAAItE,MAAM,CAACC,IAAP,CAAYiE,MAAhB,CAAuB3B,MAAM,CAACja,EAAP,CAAU,CAAV,CAAvB,EAAqCia,MAAM,CAACja,EAAP,CAAU,CAAV,CAArC,CAAhB;UACA,IAAIia,MAAM,GAAG,IAAIvC,MAAM,CAACC,IAAP,CAAYwE,YAAhB,CAA6BR,SAA7B,EAAuCK,SAAvC,CAAb;;UACA1kB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqB8jB,SAArB,CAA+BnC,MAA/B;QACH;;QACD;MACH,CAtBkC,CAwBnC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;;MAEA,IAAI7a,IAAI,GAAG,EAAX;MAAA,IAAeoI,OAAf;MAAA,IAAwBiX,WAAW,GAAG,EAAtC;;MAEA,IAAG,QAAOlmB,MAAP,KAAiB,QAAjB,IAA6BA,MAAM,CAACxM,MAAP,KAAkB2F,SAAlD,EAA4D;QAC5D;QACI,IAAIgtB,KAAJ;;QACAtf,IAAI,GAAG7G,MAAM,CAAC,CAAD,CAAN,CAAU4G,OAAV,EAAP;QACA,IAAIwf,IAAI,GAAG,CAACvf,IAAI,CAAC,CAAD,CAAL,CAAX;QACA,IAAIwf,IAAI,GAAG,CAACxf,IAAI,CAAC,CAAD,CAAL,CAAX;QAEA,IAAImB,CAAC,GAAInB,IAAI,CAAC,CAAD,CAAJ,GAAQA,IAAI,CAAC,CAAD,CAArB;QACA,IAAIyf,IAAI,GAAG,CAACte,CAAD,CAAX;QACA,IAAIC,CAAC,GAAIpB,IAAI,CAAC,CAAD,CAAJ,GAAQA,IAAI,CAAC,CAAD,CAArB;QACA,IAAI0f,IAAI,GAAG,CAACte,CAAD,CAAX;;QACA,IAAIjI,MAAM,CAACxM,MAAP,GAAgB,CAApB,EAAsB;UAClB,KAAK,IAAIE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsM,MAAM,CAACxM,MAA3B,EAAmCE,CAAC,EAApC,EAAuC;YACnCyyB,KAAK,GAAGnmB,MAAM,CAACtM,CAAD,CAAN,CAAUkT,OAAV,EAAR;YACAwf,IAAI,CAACjsB,IAAL,CAAUgsB,KAAK,CAAC,CAAD,CAAf;YACAE,IAAI,CAAClsB,IAAL,CAAUgsB,KAAK,CAAC,CAAD,CAAf;;YACA,IAAIK,EAAE,GAAGL,KAAK,CAAC,CAAD,CAAL,GAASA,KAAK,CAAC,CAAD,CAAvB;;YACA,IAAIM,EAAE,GAAGN,KAAK,CAAC,CAAD,CAAL,GAASA,KAAK,CAAC,CAAD,CAAvB;;YACAG,IAAI,CAACnsB,IAAL,CAAUqsB,EAAV;YACAD,IAAI,CAACpsB,IAAL,CAAUssB,EAAV;UACH;QACJ;;QACDL,IAAI,GAAG/yB,IAAI,CAAC6Y,GAAL,CAAS8U,KAAT,CAAe3tB,IAAf,EAAqB+yB,IAArB,CAAP;QACAC,IAAI,GAAGhzB,IAAI,CAAC6Y,GAAL,CAAS8U,KAAT,CAAe3tB,IAAf,EAAqBgzB,IAArB,CAAP;QAEA,IAAIre,CAAC,GAAG3U,IAAI,CAACsgB,GAAL,CAASqN,KAAT,CAAe3tB,IAAf,EAAqBizB,IAArB,IAA6BF,IAArC;QACA,IAAIne,CAAC,GAAG5U,IAAI,CAACsgB,GAAL,CAASqN,KAAT,CAAe3tB,IAAf,EAAqBkzB,IAArB,IAA6BF,IAArC;QACAxf,IAAI,GAAG,CAACuf,IAAD,EAAOC,IAAP,EAAare,CAAb,EAAgBC,CAAhB,CAAP;MAEH,CA7BD,MA6BK;QACL;QACIpB,IAAI,GAAG7G,MAAM,CAAC4G,OAAP,EAAP;MACH;;MAED,IAAG5G,MAAM,YAAY8G,MAArB,EAA4B;QACxB/H,KAAK,CAACuY,SAAN,GAAkB3W,WAAW,IAAI,CAAjC;QACA,IAAIwiB,EAAE,GAAGpkB,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,EAAkCrI,OAA3C;;QAEA1a,KAAK,CAAC6iB,UAAN,CAAiB,CACbpX,MAAM,CAACsF,CAAP,GAAS6d,EAAE,CAAC,CAAD,CAAF,GAAM,CADF,EAEbnjB,MAAM,CAACzM,CAAP,GAAS4vB,EAAE,CAAC,CAAD,CAAF,GAAM,CAFF,EAGbA,EAAE,CAAC,CAAD,CAHW,EAIbA,EAAE,CAAC,CAAD,CAJW,CAAjB;;QAMApkB,KAAK,CAAC8e,MAAN,GAAe9e,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,EAAkCuG,MAAjD;QACA;MACH;;MAED,IAAIqI,WAAW,GAAG,EAAlB;MACA/xB,CAAC,CAACqV,IAAF,CAAOzK,KAAK,CAACsY,UAAb,EAAyB,UAASpd,GAAT,EAAcysB,KAAd,EAAoB;QACzC,IAAGR,WAAW,CAAC1yB,MAAf,EAAsB;UAClB,IAAGqT,IAAI,CAAC,CAAD,CAAJ,GAAQA,IAAI,CAAC,CAAD,CAAZ,IAAqBqf,WAAW,CAAC,CAAD,CAAX,GAAiBrf,IAAI,CAAC,CAAD,CAAtB,IAA+BA,IAAI,CAAC,CAAD,CAAJ,GAAU6f,KAAK,CAACzX,OAAN,CAAc,CAAd,CAAhE,EAAmF;YAC/ElQ,KAAK,CAACuY,SAAN,GAAkB3W,WAAW,GAAGA,WAAH,GAAkBlM,QAAQ,CAACwF,GAAD,CAAR,GAAc,CAA7D;YACA,IAAIkpB,EAAE,GAAGpkB,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,EAAkCrI,OAA3C;;YAEA1a,KAAK,CAAC6iB,UAAN,CAAiB,CAACvQ,IAAI,CAAC,CAAD,CAAJ,GAAQsc,EAAE,CAAC,CAAD,CAAF,GAAM,CAAd,GAAgBtc,IAAI,CAAC,CAAD,CAAJ,GAAQ,CAAzB,EACCA,IAAI,CAAC,CAAD,CAAJ,GAAQsc,EAAE,CAAC,CAAD,CAAF,GAAM,CAAd,GAAgBtc,IAAI,CAAC,CAAD,CAAJ,GAAQ,CADzB,EAECsc,EAAE,CAAC,CAAD,CAFH,EAGCA,EAAE,CAAC,CAAD,CAHH,CAAjB,EAJ+E,CAQ/E;;;YACApkB,KAAK,CAAC8e,MAAN,GAAe9e,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,EAAkCuG,MAAjD;UACH,CAVD,MAUM,IAAIhX,IAAI,CAAC,CAAD,CAAJ,GAAQA,IAAI,CAAC,CAAD,CAAZ,IAAqBqf,WAAW,CAAC,CAAD,CAAX,GAAiBrf,IAAI,CAAC,CAAD,CAAtB,IAA+BA,IAAI,CAAC,CAAD,CAAJ,GAAU6f,KAAK,CAACzX,OAAN,CAAc,CAAd,CAAjE,EAAoF;YACtFlQ,KAAK,CAACuY,SAAN,GAAkB3W,WAAW,GAAGA,WAAH,GAAkBlM,QAAQ,CAACwF,GAAD,CAAR,GAAc,CAA7D;YACA,IAAIkpB,EAAE,GAAGpkB,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,EAAkCrI,OAA3C;;YACA1a,KAAK,CAAC6iB,UAAN,CAAiB,CAACvQ,IAAI,CAAC,CAAD,CAAJ,GAAQsc,EAAE,CAAC,CAAD,CAAF,GAAM,CAAd,GAAgBtc,IAAI,CAAC,CAAD,CAAJ,GAAQ,CAAzB,EACCA,IAAI,CAAC,CAAD,CAAJ,GAAQsc,EAAE,CAAC,CAAD,CAAF,GAAM,CAAd,GAAgBtc,IAAI,CAAC,CAAD,CAAJ,GAAQ,CADzB,EAECsc,EAAE,CAAC,CAAD,CAFH,EAGCA,EAAE,CAAC,CAAD,CAHH,CAAjB,EAHsF,CAOtF;;;YACApkB,KAAK,CAAC8e,MAAN,GAAe9e,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,EAAkCuG,MAAjD;UACH;QACJ;;QACDqI,WAAW,GAAGQ,KAAK,CAACzX,OAApB;MACH,CAxBD;IA0BH,CA3yDL,8CA4yDe,kBAASjP,MAAT,EAAiB+E,MAAjB,EAAwB;MAG/B,IAAGhG,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxS,EAA5B,EAA+B;QAC3BsG,MAAM,GAAGA,MAAM,GAAG,CAACA,MAAM,GAAC,EAAR,IAAYxQ,KAAK,CAACwpB,QAAN,EAAf,GAAkC,CAAjD;;QACAhf,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,WAApB;;QACA,IAAI8pB,MAAM,GAAG3mB,MAAM,CAACoI,eAAP,CAAuBrD,MAAvB,CAAb;;QACAhG,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBsf,SAArB,CAA+BsH,MAA/B;;QACAvqB,UAAU,CAAC,YAAU;UACjB2C,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,WAAvB;QACH,CAFS,EAER,GAFQ,CAAV;MAGH,CARD,MAQK;QACDkC,MAAM,GAAGA,MAAM,GAAG,CAACA,MAAM,GAAC,EAAR,IAAYxQ,KAAK,CAACwpB,QAAN,EAAf,GAAkC,CAAjD;QACA,IAAIlX,IAAI,GAAG7G,MAAM,CAAC4G,OAAP,EAAX;QACA,IAAIuc,EAAE,GAAKpkB,KAAK,CAACkQ,OAAjB;;QACA1a,KAAK,CAAC6iB,UAAN,CACI,CAACvQ,IAAI,CAAC,CAAD,CAAJ,GAAQsc,EAAE,CAAC,CAAD,CAAF,GAAM,CAAd,GAAgBtc,IAAI,CAAC,CAAD,CAAJ,GAAQ,CAAzB,EACIA,IAAI,CAAC,CAAD,CAAJ,GAAQsc,EAAE,CAAC,CAAD,CAAF,GAAM,CAAd,GAAgBtc,IAAI,CAAC,CAAD,CAAJ,GAAQ,CAAxB,GAA4B9B,MADhC,EAEIoe,EAAE,CAAC,CAAD,CAFN,EAGIA,EAAE,CAAC,CAAD,CAHN,CADJ,EAJC,CASD;QACA;;MACH;IAEJ,CAp0DL,0CAq0DW,cAAUhR,KAAV,EAAiBrR,MAAjB,EAAyB8lB,KAAzB,EAA+B;MAElC,IAAIf,MAAM,GAAO9mB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAjB;MACA,IAAI6W,OAAO,GAAM/mB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAjB;MACA,IAAI8W,UAAU,GAAG,EAAjB;MAEA,IAAIc,aAAa,GAAG9nB,KAAK,CAACuY,SAAN,IAAmBvY,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmByR,KAAnB,CAAyB,CAAzB,CAAnB,IAAkDnT,KAAK,CAACuY,SAAN,IAAmBvY,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmByR,KAAnB,CAAyB,CAAzB,CAAzF;;MAEA,IAAG,CAAC0U,KAAJ,EAAU;QACN;QACA,IAAInJ,CAAC,GAAGtL,KAAK,GAAG,CAAR,GAAY,CAAZ,GAAgB,CAAC,CAAzB;QAEA,IAAG,CAACpT,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAN,GAAgBmG,CAAjC,CAAJ,EACI;QAEJ1e,KAAK,CAAC+nB,UAAN,GAAmB/nB,KAAK,CAACuY,SAAzB;QACAvY,KAAK,CAAC+nB,UAAN,IAAoBrJ,CAApB;QAEA,IAAGoJ,aAAa,KAAK9nB,KAAK,CAAC+nB,UAAN,GAAmB/nB,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmByR,KAAnB,CAAyB,CAAzB,CAAnB,IAAkDnT,KAAK,CAAC+nB,UAAN,GAAmB/nB,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmByR,KAAnB,CAAyB,CAAzB,CAA1E,CAAhB,EACI,OAAO,KAAP;QAEJnT,KAAK,CAACuY,SAAN,GAAkBvY,KAAK,CAAC+nB,UAAxB,CAbM,CAcN;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA,IAAIjf,CAAC,GAAG9I,KAAK,CAACsY,UAAN,CAAiBtY,KAAK,CAACuY,SAAvB,CAAR;QACAvY,KAAK,CAAC8e,MAAN,GAAuBhW,CAAC,CAACgW,MAAzB;QACAkI,UAAU,GAAale,CAAC,CAACoH,OAAzB;MACH,CAzBD,MAyBK;QACD;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QAEA;QACA;QAGA8W,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAoByP,KAArC;QACAb,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACoY,QAAN,CAAe,CAAf,IAAoByP,KAArC;MACH;;MAED,IAAInlB,KAAK,GAAG,EAAZ;;MACA,IAAGX,MAAH,EAAU;QACN,IAAIimB,IAAI,GAAGtJ,CAAC,GAAG,CAAJ,GAAQ,GAAR,GAAc,CAAC,CAA1B,CADM,CACuB;;QAC7Bhc,KAAK,GAAG,CAAE,CAACX,MAAM,CAAC,CAAD,CAAN,GAAY/B,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAb,IAAiC8X,IAAnC,EAA2C,CAACjmB,MAAM,CAAC,CAAD,CAAN,GAAY/B,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAb,IAAiC8X,IAA5E,CAAR;QACAhB,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBxN,KAAK,CAAC,CAAD,CAAxC;QACAskB,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBxN,KAAK,CAAC,CAAD,CAAxC;MACH,CALD,MAKK;QACDA,KAAK,GAAG,CAAC,CAACokB,MAAM,GAAGE,UAAU,CAAC,CAAD,CAApB,IAA2B,CAA5B,EAA+B,CAACD,OAAO,GAAGC,UAAU,CAAC,CAAD,CAArB,IAA4B,CAA3D,CAAR;QACAA,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBxN,KAAK,CAAC,CAAD,CAAzC;QACAskB,UAAU,CAAC,CAAD,CAAV,GAAiBhnB,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBxN,KAAK,CAAC,CAAD,CAAzC;MACH,CA/DiC,CAgElC;;;MACA,IAAG1C,KAAK,CAACtE,OAAN,CAAc6X,MAAd,CAAqBJ,KAAxB,EACA;QACI,IAAG6T,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAnB,EACI8W,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAhB,CADJ,KAEK,IAAG8W,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAA1B,GAAgChnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAjE,EACD8W,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA4BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA5B,GAAwD8W,UAAU,CAAC,CAAD,CAAlF;QAEJ,IAAGA,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAnB,EACI8W,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAhB,CADJ,KAEK,IAAG8W,UAAU,CAAC,CAAD,CAAV,GAAgBA,UAAU,CAAC,CAAD,CAA1B,GAAgChnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA6BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAhE,EACD8W,UAAU,CAAC,CAAD,CAAV,GAAgBhnB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA4BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA5B,GAAwD8W,UAAU,CAAC,CAAD,CAAlF;MACP;;MAEDxxB,KAAK,CAAC6iB,UAAN,CAAiB2O,UAAjB,EA9EkC,CA+ElC;;IAEH,CAt5DL,kDAw5DkB,sBAASxmB,MAAT,EAAgB;MAE1B,IAAIU,EAAE,GAAGV,MAAM,CAACU,EAAhB;;MACA,IAAI,EAAEV,MAAM,YAAYuH,MAApB,CAAJ,EAAgC;QAC5BvH,MAAM,GAAGhL,KAAK,CAAC2L,SAAN,CAAgBX,MAAM,CAACU,EAAvB,CAAT;MACH;;MAED,IAAGlB,KAAK,CAACioB,aAAN,IAAuBjoB,KAAK,CAACioB,aAAN,CAAoB/mB,EAApB,IAA0BV,MAAM,CAACU,EAA3D,EAA8D;QAC1DlB,KAAK,CAACioB,aAAN,GAAsB,IAAtB;QACA,OAAOjoB,KAAK,CAACioB,aAAb;MACH;;MAEDznB,MAAM,UAAN;;MACAR,KAAK,CAAC6S,OAAN,CAAcqV,MAAd,CAAqBloB,KAAK,CAACimB,WAAN,CAAkB/kB,EAAlB,CAArB,EAA2C,CAA3C;;MAEA1L,KAAK,CAACoV,iBAAN;;MAEA,IAAI5K,KAAK,CAAC6S,OAAN,CAAcpe,MAAd,IAAwB,CAA5B,EACIuL,KAAK,CAACtE,OAAN,CAAcuW,YAAd,GAA6B,CAA7B;IACP,CA36DL,+CA66DgB,mBAASrD,IAAT,EAAehV,MAAf,EAAuB;MAE/B;MACA,IAAI8B,OAAO,GAAGtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmByW,aAAnB,EAAkCrB,IAAlC,CAAd;MAEA,IAAG,CAAClT,OAAO,CAACuT,GAAZ,EACI,OAAO,KAAP;MAEJvT,OAAO,CAACuT,GAAR,GAAcnb,MAAM,CAAC2G,OAAP,CAAeiB,OAAO,CAACuT,GAAvB,CAAd;;MAEA,IAAIvT,OAAO,CAACjF,KAAR,IAAiBiF,OAAO,CAAChF,MAA7B,EAAoC;QAChC,IAAGgF,OAAO,CAAC0T,SAAX,EAAsB;UACtB;UACI,IAAID,EAAE,GAAG3Z,KAAK,CAAC6a,eAAN,CAAsB3U,OAAO,CAAC0T,SAA9B,CAAT;QACH,CAHD,MAGM,IAAI1T,OAAO,CAACyT,EAAR,IAAerb,MAAM,CAACuG,QAAP,CAAgBqB,OAAO,CAAC6K,CAAxB,KAA8BzS,MAAM,CAACuG,QAAP,CAAgBqB,OAAO,CAAClH,CAAxB,CAAjD,EAA6E;UACnF;UACI,IAAI2a,EAAE,GAAGzT,OAAO,CAACyT,EAAR,IAAc,CAACzT,OAAO,CAAC6K,CAAT,EAAY7K,OAAO,CAAClH,CAApB,CAAvB;QACH,CAHK,MAGD;UACD,OAAO,KAAP;QACH;;QAEDkH,OAAO,CAAC6K,CAAR,GAAY4I,EAAE,CAAC,CAAD,CAAd;QACAzT,OAAO,CAAClH,CAAR,GAAY2a,EAAE,CAAC,CAAD,CAAd;QACAzT,OAAO,CAACyT,EAAR,GAAaA,EAAb;QACAzT,OAAO,CAACwF,EAAR,GAAcxF,OAAO,CAACwF,EAAR,IAAc1L,KAAK,CAAC2yB,QAAN,EAA5B;;QACA,IAAG,CAACzsB,OAAO,CAAC0T,SAAT,IAAsBpP,KAAK,CAAC8P,QAA/B,EAAwC;UACpCpU,OAAO,CAAC0T,SAAR,GAAoB5Z,KAAK,CAACiT,eAAN,CAAsB/M,OAAO,CAAC6K,CAA9B,EAAiC7K,OAAO,CAAClH,CAAzC,CAApB;QACH;;QAED,IAAIgM,MAAM,GAAG,IAAIuH,MAAJ,CAAWrM,OAAX,EAAoBsE,KAAK,CAACgI,KAA1B,EAAiCxS,KAAjC,CAAb,CAnBgC,CAsBhC;;QACAwK,KAAK,CAACge,MAAN,CAAanL,OAAb,CAAqB3U,MAArB,CAA4BsC,MAAM,CAAC8G,IAAnC;;QACA9G,MAAM,CAACyC,IAAP,IAAezC,MAAM,CAACsJ,OAAP,CAAetJ,MAAM,CAACyC,IAAtB,CAAf;;QACAjD,KAAK,CAAC6S,OAAN,CAAczX,IAAd,CAAmBoF,MAAnB;;QACAR,KAAK,CAACimB,WAAN,CAAkBzlB,MAAM,CAACU,EAAzB,IAA+BlB,KAAK,CAAC6S,OAAN,CAAcpe,MAAd,GAAuB,CAAtD;;QAEA,IAAGmF,MAAH,EAAU;UACN,IAAG,OAAOA,MAAP,IAAiB,UAApB,EAA+B;YAC3BA,MAAM,CAAC4G,MAAD,CAAN;UACH,CAFD,MAEK;YACDR,KAAK,CAAC6c,iBAAN,IAA2B7c,KAAK,CAAC6c,iBAAN,CAAwBre,IAAxB,CAA6BgC,MAA7B,CAA3B;UACH;QACJ;;QAGD,OAAOA,MAAP;MACH,CAtCD,MAsCK;QACD,IAAI0O,GAAG,GAAG,IAAIS,KAAJ,EAAV;;QACAT,GAAG,CAACU,MAAJ,GAAa,YAAU;UACnBlU,OAAO,CAACjF,KAAR,GAAgB,KAAKA,KAArB;UACAiF,OAAO,CAAChF,MAAR,GAAiB,KAAKA,MAAtB;UACA,OAAOlB,KAAK,CAAC+jB,SAAN,CAAgB7d,OAAhB,EAAyB9B,MAAzB,CAAP;QACH,CAJD;;QAKAsV,GAAG,CAACD,GAAJ,GAAUvT,OAAO,CAACuT,GAAlB;MACH;IACJ,CAt+DL,8CAu+Dc,oBAAU;MAChBjP,KAAK,CAACtE,OAAN,CAAcuW,YAAd,GAA6BjS,KAAK,CAACtE,OAAN,CAAcuW,YAAd,GAA6B,CAA1D;MACA,IAAI/Q,EAAE,GAAG,YAAWlB,KAAK,CAACtE,OAAN,CAAcuW,YAAlC;MACA,IAAGjS,KAAK,CAACimB,WAAN,CAAkB/kB,EAAlB,KAAyB9G,SAA5B,EACI,OAAO5E,KAAK,CAAC2yB,QAAN,EAAP,CADJ,KAGI,OAAOjnB,EAAP;IACP,CA9+DL,2DA++D4B,iCAAU;MAC9B;MACA;MACA;MACA;MACA;MACA;MACA,IAAIiQ,EAAJ,EAAQC,EAAR;;MACApR,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAAStB,MAAT,EAAgB;QAClCA,MAAM,CAAC4F,cAAP,CAAsBpG,KAAK,CAACgI,KAA5B;MACH,CAFD;IAGH,CA1/DL,qDA4/DsB,2BAAU;MACxB;MACA,KAAK1L,IAAL,CAAU,IAAV,EAAgB/B,UAAU,CAAC,KAAKqD,IAAL,CAAU,GAAV,CAAD,CAA1B;MACA,KAAKtB,IAAL,CAAU,IAAV,EAAgB/B,UAAU,CAAC,KAAKqD,IAAL,CAAU,GAAV,CAAD,CAA1B;IACH,CAhgEL,gDAigEiB,oBAAUuT,EAAV,EAAcC,EAAd,EAAkB;MAC3BD,EAAE,GAAGA,EAAE,GAACnR,KAAK,CAACgI,KAAd;MACAoJ,EAAE,GAAGA,EAAE,GAACpR,KAAK,CAACgI,KAAd;MACA,KAAKpK,IAAL,CAAU;QAAC2I,CAAC,EAAE,KAAKjK,IAAL,CAAU,IAAV,IAAkB6U,EAAtB;QAA0B3c,CAAC,EAAE,KAAK8H,IAAL,CAAU,IAAV,IAAkB8U;MAA/C,CAAV;IACH,CArgEL,mDAsgEoB,yBAAY;MACxB;MACA,IAAG,KAAK9U,IAAL,CAAU,IAAV,KAAmB,KAAKsB,IAAL,CAAU,GAAV,CAAnB,IAAqC,KAAKtB,IAAL,CAAU,IAAV,KAAmB,KAAKsB,IAAL,CAAU,GAAV,CAA3D,EAA0E;QACtElC,OAAO,CAACmhB,iBAAR,CAA0Bre,IAA1B,CAA+B,IAA/B;MACH;IACJ,CA3gEL,sDA4gEuB,0BAAU4pB,SAAV,EAAqB;MACpCpoB,KAAK,CAACioB,aAAN,GAAsBzyB,KAAK,CAAC2L,SAAN,CAAgBinB,SAAhB,CAAtB;IACH,CA9gEL,wDA+gEyB,8BAAU;MAC3BpoB,KAAK,CAACioB,aAAN,GAAsB,IAAtB;IACH,CAjhEL,sDAkhEuB,4BAAU;MACzB,OAAOjoB,KAAK,CAACioB,aAAb;IACH,CAphEL,iDAqhEkB,qBAAUtvB,CAAV,EAAYiD,MAAZ,EAAmB;MAE7B,IAAGxG,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYlB,QAAZ,CAAqB,iBAArB,KAA2CtQ,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYC,OAAZ,CAAoB,eAApB,EAAqCpS,MAAnF,EACI,OAAO,KAAP;MAEJ,IAAGuL,KAAK,CAACqoB,WAAN,CAAkB3oB,EAAlB,IAAwBtK,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYlB,QAAZ,CAAqB,OAArB,KAA+B,eAA1D,EACI,OAAO,KAAP;MAEJ1F,KAAK,CAAC2G,WAAN,GAAoB,IAApB,CAR6B,CAU7B;;MACA3G,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,WAApB;;MAEAnF,CAAC,CAAC0H,cAAF;;MACA,IAAGvM,MAAM,CAAC+D,WAAV,EAAsB;QAClB,IAAIywB,EAAE,GAAG3vB,CAAC,CAACK,aAAF,IAAmBL,CAAC,CAACK,aAAF,CAAgBC,OAAnC,IAA8CN,CAAC,CAACK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,CAA9C,GAA2EN,CAAC,CAACK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,CAA3E,GAAwGN,CAAjH;MACH,CAFD,MAEK;QACD,IAAI2vB,EAAE,GAAG3vB,CAAT;MACH;;MAEDqH,KAAK,CAACuT,MAAN,GAAevT,KAAK,CAACuT,MAAN,IAAgB,EAA/B,CApB6B,CAsB7B;;MACAvT,KAAK,CAACuT,MAAN,CAAagV,GAAb,GAAmBvoB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAnB;MACAlQ,KAAK,CAACuT,MAAN,CAAaiV,GAAb,GAAmBxoB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAnB,CAxB6B,CAyB7B;;MACAlQ,KAAK,CAACuT,MAAN,CAAahN,CAAb,GAAkB+hB,EAAE,CAAC1vB,OAArB;MACAoH,KAAK,CAACuT,MAAN,CAAa/e,CAAb,GAAkB8zB,EAAE,CAACzvB,OAArB,CA3B6B,CA4B7B;;MACAmH,KAAK,CAACuT,MAAN,CAAapC,EAAb,GAAkB,CAAlB;MACAnR,KAAK,CAACuT,MAAN,CAAanC,EAAb,GAAkB,CAAlB,CA9B6B,CA+B7B;;MACApR,KAAK,CAACuT,MAAN,CAAakV,EAAb,GAAkB,CAAlB;MACAzoB,KAAK,CAACuT,MAAN,CAAamV,EAAb,GAAkB,CAAlB,CAjC6B,CAmC7B;;MACA1oB,KAAK,CAACuT,MAAN,CAAaoV,EAAb,GAAmBL,EAAE,CAAC1vB,OAAtB;MACAoH,KAAK,CAACuT,MAAN,CAAaqV,EAAb,GAAmBN,EAAE,CAACzvB,OAAtB;MAEAmH,KAAK,CAACuT,MAAN,CAAa2L,EAAb,GAAkBlf,KAAK,CAACuT,MAAN,CAAa2L,EAAb,IAAmB,CAArC;MACAlf,KAAK,CAACuT,MAAN,CAAa4L,EAAb,GAAkBnf,KAAK,CAACuT,MAAN,CAAa4L,EAAb,IAAmB,CAArC,CAxC6B,CA0C7B;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA,IAAGxmB,CAAC,CAACod,IAAF,CAAOje,OAAP,CAAe,OAAf,MAA4B,CAA/B,EAAkC;QAC9B1C,CAAC,CAACU,QAAD,CAAD,CAAY4J,EAAZ,CAAe,yBAAf,EAA0ClK,KAAK,CAACqzB,UAAhD;;QACA,IAAG7oB,KAAK,CAACtE,OAAN,CAAc6X,MAAd,CAAqBC,QAAxB,EAAiC;UAC7Bpe,CAAC,CAACU,QAAD,CAAD,CAAY4J,EAAZ,CAAe,qBAAf,EAAsC,UAAU/G,CAAV,EAAa;YAC/C,IAAIA,CAAC,CAACmwB,OAAF,IAAa,EAAjB,EAAqB;cACjBtzB,KAAK,CAACuzB,SAAN,CAAgBpwB,CAAhB,EAAmBiD,MAAnB;YACH;UACJ,CAJD;QAKH,CAND,MAMK;UACDxG,CAAC,CAACU,QAAD,CAAD,CAAY4J,EAAZ,CAAe,uBAAf,EAAwC,UAAS/G,CAAT,EAAW;YAC/CnD,KAAK,CAACuzB,SAAN,CAAgBpwB,CAAhB,EAAkBiD,MAAlB;UACH,CAFD;QAGH;MACJ,CAhE4B,CAiE7B;MACA;;IACH,CAxlEL,gDAylEkB,oBAAUjD,CAAV,EAAY;MAEtBA,CAAC,CAAC0H,cAAF,GAFsB,CAKtB;;MAEA,IAAIioB,EAAE,GAAG3vB,CAAC,CAACK,aAAF,IAAmBL,CAAC,CAACK,aAAF,CAAgBC,OAAnC,IAA8CN,CAAC,CAACK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,CAA9C,GAA2EN,CAAC,CAACK,aAAF,CAAgBC,OAAhB,CAAwB,CAAxB,CAA3E,GAAwGN,CAAjH,CAPsB,CAUtB;;MACA,IAAGnD,KAAK,CAACwzB,KAAN,CAAahpB,KAAK,CAACuT,MAAN,CAAaoV,EAAb,GAAkBL,EAAE,CAAC1vB,OAAlC,EAA4CoH,KAAK,CAACuT,MAAN,CAAaqV,EAAb,GAAkBN,EAAE,CAACzvB,OAAjE,CAAH,EAA8E;QAC1E,IAAGmH,KAAK,CAACkS,UAAN,CAAiBlR,GAApB,EAAwB;UACpB;UACA;UACA;UACA,IAAI+E,KAAK,GAAG/F,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBgB,SAArB,EAAZ,CAJoB,CAMpB;UACA;UACA;;;UAEA,IAAIinB,UAAU,GAAGjpB,KAAK,CAACkS,UAAN,CAAiBwR,OAAjB,CAAyBK,aAAzB,EAAjB;;UAEA,IAAImF,UAAU,GAAGD,UAAU,CAACjF,oBAAX,CAAgCje,KAAhC,CAAjB;UACAmjB,UAAU,CAAC3iB,CAAX,IAAgBvG,KAAK,CAACuT,MAAN,CAAaoV,EAAb,GAAkBL,EAAE,CAAC1vB,OAArC;UACAswB,UAAU,CAAC10B,CAAX,IAAgBwL,KAAK,CAACuT,MAAN,CAAaqV,EAAb,GAAkBN,EAAE,CAACzvB,OAArC;UAEAkN,KAAK,GAAGkjB,UAAU,CAACE,oBAAX,CAAgCD,UAAhC,CAAR;;UAEAlpB,KAAK,CAACkS,UAAN,CAAiBlR,GAAjB,CAAqBsf,SAArB,CAA+Bva,KAA/B;QACH;MACJ;;MAED/F,KAAK,CAACuT,MAAN,CAAaoV,EAAb,GAAmBL,EAAE,CAAC1vB,OAAtB;MACAoH,KAAK,CAACuT,MAAN,CAAaqV,EAAb,GAAmBN,EAAE,CAACzvB,OAAtB,CAnCsB,CAqCtB;;MACAmH,KAAK,CAACuT,MAAN,CAAapC,EAAb,GAAmBnR,KAAK,CAACuT,MAAN,CAAahN,CAAb,GAAiB+hB,EAAE,CAAC1vB,OAAvC;MACAoH,KAAK,CAACuT,MAAN,CAAanC,EAAb,GAAmBpR,KAAK,CAACuT,MAAN,CAAa/e,CAAb,GAAiB8zB,EAAE,CAACzvB,OAAvC,CAvCsB,CAyCtB;;MACA,IAAI4vB,EAAE,GAAG/yB,QAAQ,CAACsK,KAAK,CAACuT,MAAN,CAAagV,GAAb,GAAmBvoB,KAAK,CAACuT,MAAN,CAAapC,EAAb,GAAiBnR,KAAK,CAACgI,KAA3C,CAAjB;MACA,IAAI0gB,EAAE,GAAGhzB,QAAQ,CAACsK,KAAK,CAACuT,MAAN,CAAaiV,GAAb,GAAmBxoB,KAAK,CAACuT,MAAN,CAAanC,EAAb,GAAiBpR,KAAK,CAACgI,KAA3C,CAAjB,CA3CsB,CA6CtB;;MACA,IAAGhI,KAAK,CAACtE,OAAN,CAAc6X,MAAd,CAAqBJ,KAAxB,EAA8B;QAE1B,IAAGsV,EAAE,GAAGzoB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAR,EACIuY,EAAE,GAAGzoB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAL,CADJ,KAEK,IAAGlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBuY,EAAnB,GAAwBzoB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAzD,EACDuY,EAAE,GAAIzoB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA4BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA5B,GAAwDlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA9D;QAEJ,IAAGwY,EAAE,GAAG1oB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAR,EACIwY,EAAE,GAAG1oB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAL,CADJ,KAEK,IAAGlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBwY,EAAnB,GAAwB1oB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAzD,EACDwY,EAAE,GAAI1oB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA4BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA5B,GAAwDlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAA9D;MAEP;;MAGDlQ,KAAK,CAACuT,MAAN,CAAakV,EAAb,GAAkBA,EAAlB;MACAzoB,KAAK,CAACuT,MAAN,CAAamV,EAAb,GAAkBA,EAAlB,CA9DsB,CAiEtB;MACA;IAEH,CA7pEL,+CA8pEgB,mBAAU/vB,CAAV,EAAYiD,MAAZ,EAAoBwtB,OAApB,EAA4B;MAEpC;MACA;MAEAppB,KAAK,CAAC2G,WAAN,GAAoB,KAApB;;MACA3G,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,WAAvB;;MACA1O,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,qBAAhB;MACApR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,yBAAhB;MACApR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,uBAAhB,EAToC,CAYpC;;MACA,IAAI4iB,OAAO,KAAK,IAAZ,IAAoB90B,IAAI,CAAC+0B,GAAL,CAASrpB,KAAK,CAACuT,MAAN,CAAapC,EAAtB,IAA0B,CAA9C,IAAmD7c,IAAI,CAAC+0B,GAAL,CAASrpB,KAAK,CAACuT,MAAN,CAAanC,EAAtB,IAA0B,CAAjF,EAAmF;QAC/E;QACA,IAAGpR,KAAK,CAACqoB,WAAN,CAAkB3oB,EAArB,EACIM,KAAK,CAACspB,eAAN,IAAyB9zB,KAAK,CAAC+zB,qBAAN,CAA4B5wB,CAA5B,CAAzB,CADJ,KAEK,IAAIqH,KAAK,CAACwpB,cAAV,EACDh0B,KAAK,CAAC6sB,kBAAN,CAAyB1pB,CAAzB,EAA4BqH,KAAK,CAACwpB,cAAlC;MACP;;MAGDxpB,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBlQ,KAAK,CAACuT,MAAN,CAAakV,EAAb,IAAmBzoB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAtC;MACAlQ,KAAK,CAACkQ,OAAN,CAAc,CAAd,IAAmBlQ,KAAK,CAACuT,MAAN,CAAamV,EAAb,IAAmB1oB,KAAK,CAACkQ,OAAN,CAAc,CAAd,CAAtC,CAvBoC,CA0BpC;MACA;MAEA;MACI;MACA;MACJ;IAGH,CAjsEL,2CAksEY,eAAS3J,CAAT,EAAY/R,CAAZ,EAAc;MAElB;MACA;MACA,IAAI0qB,EAAE,GAAGlf,KAAK,CAACuT,MAAN,CAAa2L,EAAb,GAAkB3Y,CAA3B;MACA,IAAI4Y,EAAE,GAAGnf,KAAK,CAACuT,MAAN,CAAa4L,EAAb,GAAkB3qB,CAA3B;;MAEA,IAAG,CAACwL,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxS,EAA1B,IAAgCM,KAAK,CAACtE,OAAN,CAAc6X,MAAd,CAAqBJ,KAAxD,EAA8D;QAC1D,IAAIsW,GAAG,GAAGzpB,KAAK,CAACkI,IAAN,CAAW,CAAX,EAAcnR,qBAAd,EAAV;;QACA,IAAI4rB,MAAM,GAAG3iB,KAAK,CAACiR,IAAN,CAAW,CAAX,EAAcla,qBAAd,EAAb;;QACA,IAAG0yB,GAAG,CAACvzB,IAAJ,GAASqQ,CAAT,GAAaoc,MAAM,CAACzsB,IAApB,IAA4BuzB,GAAG,CAACrzB,KAAJ,GAAUmQ,CAAV,GAAcoc,MAAM,CAACvsB,KAApD,EAA0D;UACtD8oB,EAAE,GAAGlf,KAAK,CAACuT,MAAN,CAAa2L,EAAlB;QACH;;QACD,IAAGuK,GAAG,CAACtzB,GAAJ,GAAQ3B,CAAR,GAAYmuB,MAAM,CAACxsB,GAAnB,IAA0BszB,GAAG,CAACpzB,MAAJ,GAAW7B,CAAX,GAAemuB,MAAM,CAACtsB,MAAnD,EAA0D;UACtD8oB,EAAE,GAAGnf,KAAK,CAACuT,MAAN,CAAa4L,EAAlB;QACH;MACJ;;MAEDnf,KAAK,CAACof,WAAN,CAAkBjhB,GAAlB,CAAsB;QAClB,aAAa,eAAa+gB,EAAb,GAAgB,KAAhB,GAAsBC,EAAtB,GAAyB;MADpB,CAAtB;;MAIAnf,KAAK,CAACuT,MAAN,CAAa2L,EAAb,GAAkBA,EAAlB;MACAlf,KAAK,CAACuT,MAAN,CAAa4L,EAAb,GAAkBA,EAAlB;MACA,OAAO,IAAP;IAEH,CA5tEL,2CA6tEY,eAAS5Y,CAAT,EAAW/R,CAAX,EAAa,CAEpB,CA/tEL,8DAiuE+B,kCAAUmE,CAAV,EAAasI,MAAb,EAAqB;MAC5CjB,KAAK,CAACwpB,cAAN,GAAuBvoB,MAAvB;IACH,CAnuEL,gDAouEiB,oBAAUyoB,EAAV,EAAa9tB,MAAb,EAAoB;MAC7B;MACA;MACA;MACA8tB,EAAE,CAACrpB,cAAH,GAJ6B,CAK7B;MAEA;;;MACA,IAAGL,KAAK,CAAC2G,WAAT,EAAqB;QACjBnR,KAAK,CAACuzB,SAAN,CAAgBW,EAAhB,EAAoB9tB,MAApB,EAA4B,IAA5B;MACH;;MACD,IAAIjD,CAAC,GAAG+wB,EAAE,CAAC1wB,aAAX;;MAEA,IAAGgH,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmBhC,EAAnB,IAAyB/G,CAAC,CAACM,OAA3B,IAAsCN,CAAC,CAACM,OAAF,CAAUxE,MAAV,IAAoB,CAA7D,EAA+D;QAC3DuL,KAAK,CAAC2pB,qBAAN,GAA8B3pB,KAAK,CAACkQ,OAApC;QACAlQ,KAAK,CAAC4pB,mBAAN,GAA6B5pB,KAAK,CAACgI,KAAnC;QACAhI,KAAK,CAAC6pB,YAAN,GAAwB,CAAxB;QACA7pB,KAAK,CAAC8pB,cAAN,GAAuBx1B,IAAI,CAACC,KAAL,CACnBoE,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,GAAqBH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KADf,EAEnBH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,GAAqBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAFf,CAAvB;MAGH,CAPD,MAOM,IAAGJ,CAAC,CAACM,OAAF,IAAaN,CAAC,CAACM,OAAF,CAAUxE,MAAV,IAAoB,CAApC,EAAsC;QACxCe,KAAK,CAACu0B,WAAN,CAAkBL,EAAlB,EAAqB9tB,MAArB;MACH;;MAEDxG,CAAC,CAACU,QAAD,CAAD,CAAY4J,EAAZ,CAAe,yBAAf,EAA0C,UAAS/G,CAAT,EAAW;QACjDA,CAAC,CAAC0H,cAAF;;QAAoB7K,KAAK,CAACw0B,SAAN,CAAgBrxB,CAAhB,EAAkBnD,KAAlB;MACvB,CAFD,EAEGkK,EAFH,CAEM,wBAFN,EAEgC,UAAS/G,CAAT,EAAW;QACvCA,CAAC,CAAC0H,cAAF;;QAAoB7K,KAAK,CAACy0B,QAAN,CAAetxB,CAAf,EAAiBnD,KAAjB;MACvB,CAJD;IAOH,CAnwEL,+CAowEgB,mBAAUk0B,EAAV,EAAc9tB,MAAd,EAAqB;MAC7B;MACA;MACA;MACA8tB,EAAE,CAACrpB,cAAH;;MACA,IAAI1H,CAAC,GAAG+wB,EAAE,CAAC1wB,aAAX;;MAEA,IAAGgH,KAAK,CAACtE,OAAN,CAAcgG,IAAd,CAAmBhC,EAAnB,IAAyB/G,CAAC,CAACM,OAA3B,IAAsCN,CAAC,CAACM,OAAF,CAAUxE,MAAV,IAAoB,CAA7D,EAA+D;QAC3D,IAAG,CAACX,MAAM,CAACiE,GAAX,EAAe;UACXY,CAAC,CAACqP,KAAF,GAAU1T,IAAI,CAACC,KAAL,CACFoE,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,GAAqBH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KADhC,EAEFH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,GAAqBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAFhC,IAEuCiH,KAAK,CAAC8pB,cAFvD;QAGH;;QAED,IAAGnxB,CAAC,CAACqP,KAAF,IAAS,CAAT,IAAchI,KAAK,CAACohB,OAAvB,EAAgC;UAC5B,IAAI1C,CAAC,GAAG/lB,CAAC,CAACqP,KAAF,GAAU,CAAV,GAAc,CAAd,GAAkB,CAAC,CAA3B;UAEA,IAAIkiB,EAAE,GAAGvxB,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,IAAsBH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAnC,GAA2CH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,GAAqB,CAACH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,GAAqBH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAnC,IAA0C,CAA/D,GAAmEkH,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBznB,IAAlI,GAAyIyC,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,GAAqB,CAACH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAb,GAAqBH,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaH,KAAnC,IAA0C,CAA/D,GAAmEkH,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBznB,IAAzO;UACA,IAAIi0B,EAAE,GAAGxxB,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,IAAsBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAnC,GAA2CJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,IAAsBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,GAAqBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAxD,IAAiEiH,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBxnB,GAAhI,GAAsIwC,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,IAAsBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAb,GAAqBJ,CAAC,CAACM,OAAF,CAAU,CAAV,EAAaF,KAAxD,IAAiEiH,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBxnB,GAApO;;UACA,IAAI4L,MAAM,GAAGvM,KAAK,CAACwrB,iBAAN,CAAwB,CAACkJ,EAAD,EAAKC,EAAL,CAAxB,CAAb;;UAEA,IAAIzL,CAAC,GAAG,CAAR,EACIlpB,KAAK,CAACyrB,MAAN,CAAalf,MAAb,EADJ,KAGIvM,KAAK,CAAC0rB,OAAN,CAAcnf,MAAd;QACP;MACJ,CAnBD,MAmBM,IAAG/B,KAAK,CAAC2G,WAAT,EAAqB;QACvBnR,KAAK,CAACqzB,UAAN,CAAiBa,EAAjB;MACH;IACJ,CAjyEL,8CAkyEe,kBAAUA,EAAV,EAAc9tB,MAAd,EAAqB;MAC5B;MACA;MACA;MACA8tB,EAAE,CAACrpB,cAAH;;MACA,IAAI1H,CAAC,GAAG+wB,EAAE,CAAC1wB,aAAX;;MACA,IAAGgH,KAAK,CAAC4mB,cAAT,EAAwB;QACpB5mB,KAAK,CAAC4mB,cAAN,GAAwB,KAAxB;QACA5mB,KAAK,CAAC6pB,YAAN,GAAwB,KAAxB;MACH,CAHD,MAGM,IAAG7pB,KAAK,CAAC2G,WAAT,EAAqB;QACvBnR,KAAK,CAACuzB,SAAN,CAAgBW,EAAhB,EAAoB9tB,MAApB;MACH;;MAEDxG,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,yBAAhB;MACApR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,wBAAhB;IACH,CAjzEL,sDAkzEuB,0BAAS4jB,KAAT,EAAe;MAC9B,KAAI,IAAIz1B,CAAR,IAAaqL,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,CAAb,EAAkC;QAC9BpqB,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,EAAqBz1B,CAArB,EAAwB4iB,IAAxB;MACH;IACJ,CAtzEL,sDAuzEuB,0BAAS6S,KAAT,EAAe;MAC9B,KAAI,IAAIz1B,CAAR,IAAaqL,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,CAAb,EAAkC;QAC9BpqB,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,EAAqBz1B,CAArB,EAAwBsS,IAAxB;MACH;IACJ,CA3zEL,wDA4zEyB,4BAASmjB,KAAT,EAAe;MAChC,KAAI,IAAIz1B,CAAR,IAAaqL,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,CAAb,EAAkC;QAC9BpqB,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,EAAqBz1B,CAArB,EAAwB4iB,IAAxB;MACH;IACJ,CAh0EL,0DAi0E2B,8BAAS6S,KAAT,EAAe;MAClC,KAAI,IAAIz1B,CAAR,IAAaqL,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,CAAb,EAAkC;QAC9BpqB,KAAK,CAAC6S,OAAN,CAAcuX,KAAd,EAAqBz1B,CAArB,EAAwBsS,IAAxB;MACH;IACJ,CAr0EL,gDAu0EiB,sBAAU;MACnB,OAAOjH,KAAK,CAAC6S,OAAb;IACH,CAz0EL,iDA20EkB,uBAAU;MACpB,OAAO7S,KAAK,CAACqqB,WAAb;IACH,CA70EL,kDA+0EsB,sBAASnpB,EAAT,EAAaopB,sBAAb,EAAoC;MAClD;MACA,IAAG,OAAOppB,EAAP,IAAa,QAAhB,EAAyB;QACrB,IAAID,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAAb;MACH,CAFD,MAEK;QACD,IAAID,MAAM,GAAGC,EAAb;MACH;;MACD,IAAG,CAACD,MAAJ,EAAY,OAAO,KAAP;;MACZ,IAAGjB,KAAK,CAACtE,OAAN,CAAcuY,WAAd,IAA6B,CAACjU,KAAK,CAACuqB,WAAN,CAAkB7qB,EAAnD,EAAsD;QAClD,IAAGuB,MAAM,CAACuK,QAAV,EAAmB;UACfhW,KAAK,CAACwR,cAAN,CAAqB/F,MAArB;;UACA;QACH;MACJ,CALD,MAKM,IAAGjB,KAAK,CAACqqB,WAAN,CAAkB51B,MAAlB,GAAyB,CAA5B,EAA8B;QAChCe,KAAK,CAACiO,kBAAN;MACH;;MACDzD,KAAK,CAACqqB,WAAN,CAAkBjvB,IAAlB,CAAuB6F,MAAM,CAACC,EAA9B;;MACAD,MAAM,CAACkN,MAAP;IACH,CAj2EL,wDAk2EyB,8BAAU;MAC3B/Y,CAAC,CAACqV,IAAF,CAAOzK,KAAK,CAACqqB,WAAb,EAA0B,UAASjxB,KAAT,EAAe8H,EAAf,EAAkB;QACxC1L,KAAK,CAACwR,cAAN,CAAqBxR,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAArB;MACH,CAFD;IAGH,CAt2EL,oDAu2EqB,wBAAUD,MAAV,EAAiB;MAC9B,IAAG,CAACA,MAAJ,EACIA,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgBd,KAAK,CAACqqB,WAAN,CAAkB,CAAlB,CAAhB,CAAT;;MACJ,IAAGppB,MAAH,EAAU;QACNA,MAAM,CAAC+N,QAAP;QACA,IAAIra,CAAC,GAAGS,CAAC,CAACo1B,OAAF,CAAUvpB,MAAM,CAACC,EAAjB,EAAqBlB,KAAK,CAACqqB,WAA3B,CAAR;;QACArqB,KAAK,CAACqqB,WAAN,CAAkBnC,MAAlB,CAAyBvzB,CAAzB,EAA2B,CAA3B,EAHM,CAIN;QACA;;MACH;IACJ,CAj3EL,sDAk3EuB,0BAAS4L,OAAT,EAAiB;MAChCA,OAAO,CAACuB,OAAR,CAAgB,UAASb,MAAT,EAAgB;QAC5B,IAAG,CAACA,MAAM,CAACuK,QAAR,IAAoB,CAACvK,MAAM,CAACkC,QAA/B,EAAwC;UACpCnD,KAAK,CAACyqB,kBAAN,CAAyBrvB,IAAzB,CAA8B6F,MAA9B;;UACAA,MAAM,CAAC6N,SAAP;QACH;MACJ,CALD;IAMH,CAz3EL,wDA03EyB,8BAAU;MAC3B9O,KAAK,CAACyqB,kBAAN,CAAyB3oB,OAAzB,CAAiC,UAASb,MAAT,EAAgB;QAC7C,IAAG,CAACA,MAAM,CAACuK,QAAR,IAAoB,CAACvK,MAAM,CAACkC,QAA/B,EACIlC,MAAM,CAAC8N,WAAP;MACP,CAHD;;MAIA/O,KAAK,CAACyqB,kBAAN,GAA2B,EAA3B;IACH,CAh4EL,uDAi4EwB,2BAAS9xB,CAAT,EAAW;MAC3B,IAAI+xB,EAAE,GAAG52B,MAAM,CAAC4E,WAAP,CAAmBC,CAAnB,CAAT;;MACA,IAAI4N,CAAC,GAAGmkB,EAAE,CAACnkB,CAAH,GAAOvG,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBznB,IAAnC;;MACA,IAAI1B,CAAC,GAAGk2B,EAAE,CAACl2B,CAAH,GAAOwL,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBxnB,GAAnC;;MACA,OAAOX,KAAK,CAACwrB,iBAAN,CAAwB,CAACza,CAAD,EAAG/R,CAAH,CAAxB,CAAP;IACH,CAt4EL,uDAu4EwB,2BAAS2a,EAAT,EAAY;MAC5B,IAAInH,KAAK,GAAGxS,KAAK,CAACwpB,QAAN,EAAZ;;MACA,OAAO,CAAC,CAAC7P,EAAE,CAAC,CAAD,CAAF,GAAMnP,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAP,IAAoClI,KAArC,EAA4C,CAACmH,EAAE,CAAC,CAAD,CAAF,GAAMnP,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAP,IAAoClI,KAAhF,CAAP;IACH,CA14EL,uDA24EwB,2BAASmH,EAAT,EAAY;MAC5B,IAAInH,KAAK,GAAGxS,KAAK,CAACwpB,QAAN,EAAZ;;MACA,OAAO,CAAE7P,EAAE,CAAC,CAAD,CAAH,GAAQnH,KAAR,GAAchI,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAf,EAA6Cf,EAAE,CAAC,CAAD,CAAH,GAAQnH,KAAR,GAAchI,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAA1D,CAAP;IACH,CA94EL,qDA+4EqB,yBAAUE,MAAV,EAAiB;MAE9B,IAAI7G,GAAG,GAAGhP,UAAU,CAAC6V,MAAM,CAAC,CAAD,CAAP,CAApB;MACA,IAAIua,GAAG,GAAGpwB,UAAU,CAAC6V,MAAM,CAAC,CAAD,CAAP,CAApB;MACA,IAAI7J,CAAC,GAAG,CAACokB,GAAG,GAAG3qB,KAAK,CAACukB,UAAN,CAAiBE,OAAxB,KAAoCzkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAAC8f,WAAxE,CAAR;MAEA,IAAIvW,GAAG,GAAGA,GAAG,GAAG,OAAN,GAAgB,GAA1B,CAN8B,CAO9B;;MACA,IAAIqhB,aAAa,GAAK5qB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAAC8f,WAArC,GAAoD,GAArD,IAA6D,IAAI,OAAjE,CAApB;MACA,IAAI+K,UAAU,GAAID,aAAa,GAAG,CAAhB,GAAoBt2B,IAAI,CAAC4yB,GAAL,CAAS,CAAC,IAAI5yB,IAAI,CAACw2B,GAAL,CAAS9qB,KAAK,CAAC+qB,kBAAf,CAAL,KAA4C,IAAIz2B,IAAI,CAACw2B,GAAL,CAAS9qB,KAAK,CAAC+qB,kBAAf,CAAhD,CAAT,CAAtC;MACA,IAAIv2B,CAAC,GAAGwL,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,KAAgC0a,aAAa,GAAG,CAAhB,GAAoBt2B,IAAI,CAAC4yB,GAAL,CAAS,CAAC,IAAI5yB,IAAI,CAACw2B,GAAL,CAASvhB,GAAT,CAAL,KAAuB,IAAIjV,IAAI,CAACw2B,GAAL,CAASvhB,GAAT,CAA3B,CAAT,CAArB,GAA4EshB,UAA3G,CAAR;MAEAtkB,CAAC,IAAIvG,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAL;MACA1b,CAAC,IAAIwL,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAL;MAEA,OAAO,CAAC3J,CAAD,EAAI/R,CAAJ,CAAP;IACH,CA/5EL,qDAg6EqB,yBAAU0qB,EAAV,EAAcC,EAAd,EAAiB;MAC9BD,EAAE,IAAIlf,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAN;MACAiP,EAAE,IAAInf,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAN;MACA;;MACA,IAAI8a,cAAc,GAAGhrB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAAC8f,WAApC,GAAkD,GAAlD,IAAuD,IAAIxrB,IAAI,CAAC22B,EAAhE,CAArB;MACA,IAAIJ,UAAU,GAAKG,cAAc,GAAG,CAAjB,GAAqB12B,IAAI,CAAC4yB,GAAL,CAAU,CAAC,IAAI5yB,IAAI,CAACw2B,GAAL,CAAS9qB,KAAK,CAAC+qB,kBAAf,CAAL,KAA6C,IAAIz2B,IAAI,CAACw2B,GAAL,CAAS9qB,KAAK,CAAC+qB,kBAAf,CAAjD,CAAV,CAAxC;MACA,IAAIG,QAAQ,GAAGlrB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8B2a,UAA7C;MACA,IAAIld,CAAC,GAAG,CAACud,QAAQ,GAAC/L,EAAV,IAAc6L,cAAtB;MACA,IAAIzhB,GAAG,GAAG,MAAIjV,IAAI,CAAC22B,EAAT,IAAe,IAAI32B,IAAI,CAAC62B,IAAL,CAAU72B,IAAI,CAAC82B,GAAL,CAASzd,CAAT,CAAV,CAAJ,GAA6BrZ,IAAI,CAAC22B,EAAL,GAAQ,CAApD,CAAV;MACA,IAAIN,GAAG,GAAG3qB,KAAK,CAACukB,UAAN,CAAiBE,OAAjB,GAAyBvF,EAAE,GAAClf,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAH,GAA+BlQ,KAAK,CAAC8f,WAAxE;MACAvW,GAAG,GAAIhP,UAAU,CAACgP,GAAG,CAAC8hB,OAAJ,CAAY,CAAZ,CAAD,CAAjB;MACAV,GAAG,GAAIpwB,UAAU,CAACowB,GAAG,CAACU,OAAJ,CAAY,CAAZ,CAAD,CAAjB;MACA,OAAO,CAAC9hB,GAAD,EAAKohB,GAAL,CAAP;IACH,CA76EL,+DA86E+B,mCAAUniB,EAAV,EAAcE,EAAd,EAAiB;MAExC,IAAIa,GAAG,GAAGhP,UAAU,CAAC6V,MAAM,CAAC,CAAD,CAAP,CAApB;MACA,IAAIua,GAAG,GAAGpwB,UAAU,CAAC6V,MAAM,CAAC,CAAD,CAAP,CAApB;MACA,IAAI7J,CAAC,GAAG,CAACokB,GAAG,GAAG3qB,KAAK,CAACukB,UAAN,CAAiBE,OAAxB,KAAoCzkB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAAC8f,WAAxE,CAAR;MAEA,IAAIvW,GAAG,GAAGA,GAAG,GAAG,OAAN,GAAgB,GAA1B,CANwC,CAOxC;;MACA,IAAIqhB,aAAa,GAAK5qB,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,IAA8BlQ,KAAK,CAAC8f,WAArC,GAAoD,GAArD,IAA6D,IAAI,OAAjE,CAApB;MACA,IAAI+K,UAAU,GAAID,aAAa,GAAG,CAAhB,GAAoBt2B,IAAI,CAAC4yB,GAAL,CAAS,CAAC,IAAI5yB,IAAI,CAACw2B,GAAL,CAAS9qB,KAAK,CAAC+qB,kBAAf,CAAL,KAA4C,IAAIz2B,IAAI,CAACw2B,GAAL,CAAS9qB,KAAK,CAAC+qB,kBAAf,CAAhD,CAAT,CAAtC;MACA,IAAIv2B,CAAC,GAAGwL,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,KAAgC0a,aAAa,GAAG,CAAhB,GAAoBt2B,IAAI,CAAC4yB,GAAL,CAAS,CAAC,IAAI5yB,IAAI,CAACw2B,GAAL,CAASvhB,GAAT,CAAL,KAAuB,IAAIjV,IAAI,CAACw2B,GAAL,CAASvhB,GAAT,CAA3B,CAAT,CAArB,GAA4EshB,UAA3G,CAAR;MAEAtkB,CAAC,IAAIvG,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAL;MACA1b,CAAC,IAAIwL,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAL;MAEA,OAAO,CAAC3J,CAAD,EAAI/R,CAAJ,CAAP;IACH,CA97EL,oDAg8EoB,wBAASiY,UAAT,EAAqB;MACjC,IAAIxD,CAAC,GAAG,CAACwD,UAAU,GAAGzM,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBE,GAAlC,IAAyCnN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBG,WAArE;MACA,IAAIS,GAAG,GAAG,CACNvZ,IAAI,CAACgZ,KAAL,CAAWtN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2ByN,OAA3B,CAAmCF,CAAnC,GAAuCpE,CAAvC,GAA2CjJ,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCH,CAAxF,CADM,EAEN/Y,IAAI,CAACgZ,KAAL,CAAWtN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2ByN,OAA3B,CAAmCE,CAAnC,GAAuCxE,CAAvC,GAA2CjJ,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCC,CAAxF,CAFM,EAGNnZ,IAAI,CAACgZ,KAAL,CAAWtN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2ByN,OAA3B,CAAmCG,CAAnC,GAAuCzE,CAAvC,GAA2CjJ,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCE,CAAxF,CAHM,EAINpZ,IAAI,CAACgZ,KAAL,CAAWtN,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2ByN,OAA3B,CAAmCI,CAAnC,GAAuC1E,CAAvC,GAA2CjJ,KAAK,CAACtE,OAAN,CAAcuR,KAAd,CAAoBnN,MAApB,CAA2B0N,MAA3B,CAAkCG,CAAxF,CAJM,CAAV;MAMA,OAAOE,GAAP;IACH,CAz8EL,sDA28EuB,0BAAU3M,EAAV,EAAcoqB,OAAd,EAAsB;MAErC,IAAGtrB,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,MAA8BlB,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,EAA0BiC,QAA1B,IAAsCmoB,OAAO,IAAI,MAA/E,CAAH,EAA2F;QACvF,OAAO,IAAP;MACH,CAFD,MAEM,IACF,CAACtrB,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,KAA6B9G,SAA7B,IAA0CtG,MAAM,CAACqG,YAAP,CAAoB6F,KAAK,CAACtE,OAAN,CAAc6E,OAAd,CAAsBW,EAAtB,EAA0BiC,QAA9C,CAA3C,MACCnD,KAAK,CAACtE,OAAN,CAAcmT,UAAd,IAA4Byc,OAAO,IAAI,MAAvC,IAAiDpqB,EAAE,IAAI,QAAvD,IAAmEA,EAAE,IAAI,QAD1E,CADE,EAIL;QACG,OAAO,IAAP;MACH,CANK,MAMD;QACD,OAAO,KAAP;MACH;IACJ,CAx9EL,wDAy9EyB,4BAASvI,CAAT,EAAYsI,MAAZ,EAAoBQ,WAApB,EAAgC;MAEjDzB,KAAK,CAACwpB,cAAN,GAAuB,IAAvB;MACA,IAAIpoB,OAAO,GAAGpB,KAAK,CAACtE,OAAN,CAAc0F,OAA5B;MAEA,IAAGH,MAAM,CAACyG,WAAP,IAAoB,QAAvB,EACIlS,KAAK,CAACyM,YAAN,CAAmBhB,MAAM,CAACC,EAA1B;;MACJ,IAAGlB,KAAK,CAACuqB,WAAN,CAAkB7qB,EAArB,EAAwB;QACpBM,KAAK,CAAC+c,iBAAN,CAAwBve,IAAxB,CAA6ByC,MAA7B;;QACA;MACH,CAVgD,CAWjD;;;MAGAzL,KAAK,CAAC2M,WAAN,CAAkBlB,MAAlB;;MAEA,IAAGjB,KAAK,CAACtE,OAAN,CAAcqX,OAAjB,EACI/S,KAAK,CAACtE,OAAN,CAAcqX,OAAd,CAAsBvU,IAAtB,CAA2ByC,MAA3B,EAAmCtI,CAAnC,EAAsCnD,KAAtC;;MAEJ,IAAGyL,MAAM,CAACgC,IAAP,IAAe,CAACjD,KAAK,CAACkc,YAAzB,EAAsC;QAClC,IAAGjb,MAAM,CAAC2F,MAAP,IAAe,OAAlB,EAA0B;UACtB,IAAI/D,GAAG,GAAG9O,MAAM,CAAC+O,IAAP,CAAY7B,MAAM,CAACgC,IAAnB,EAAyB,QAAzB,CAAV;UACAJ,GAAG,CAACE,KAAJ;QACH,CAHD,MAGK;UACDhP,MAAM,CAACiP,QAAP,CAAgBC,IAAhB,GAAuBhC,MAAM,CAACgC,IAA9B;QACH;MACJ;IAEJ,CAr/EL,gDAs/EiB,oBAASvI,GAAT,EAAa;MACtB,IAAGA,GAAG,CAACuP,MAAJ,CAAW,CAAX,EAAa,CAAb,KAAiB,MAApB,EACI,OAAO,IAAP;MACJ,IAAIshB,IAAI,GAAG,IAAIC,cAAJ,EAAX;MACAD,IAAI,CAACzoB,IAAL,CAAU,MAAV,EAAkBpI,GAAlB,EAAuB,KAAvB;MACA6wB,IAAI,CAACE,IAAL;MACA,OAAOF,IAAI,CAAC9mB,MAAL,IAAa,GAApB;IACH,CA7/EL,8CA8/Ee,kBAAS0R,IAAT,EAAcnb,IAAd,EAAmB;MAC1B,IAAImb,IAAI,CAACuV,YAAT,EAAuB;QACnB,IAAIC,GAAG,GAAExV,IAAI,CAACuV,YAAL,CAAkBE,MAA3B;MACH,CAFD,MAEO,IAAI73B,MAAM,CAAC4B,gBAAX,EAA6B;QAChC,IAAI5B,MAAM,CAAC4B,gBAAP,CAAwBk2B,gBAA5B,EAA6C;UACzC,IAAIF,GAAG,GAAE53B,MAAM,CAAC4B,gBAAP,CAAwBwgB,IAAxB,EAA8B,IAA9B,EAAoC0V,gBAApC,CAAqD7wB,IAArD,CAAT;QAAoE,CADxE,MAEI;UAAC,IAAI2wB,GAAG,GAAE53B,MAAM,CAAC4B,gBAAP,CAAwBwgB,IAAxB,EAA8Bnb,IAA9B,CAAT;QAA8C;;QAAA;MACtD;;MACD,OAAO2wB,GAAP;IACH,CAvgFL,4CAwgFY,gBAASG,GAAT,EAAa;MACjB,IAAIC,OAAO,GAAG,EAAd;MACAD,GAAG,GAAGA,GAAG,CAACl0B,WAAJ,EAAN;;MACAoI,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASuL,CAAT,EAAW;QAC7B,IAAGA,CAAC,CAACnM,EAAF,CAAKtJ,WAAL,GAAmBE,OAAnB,CAA2Bg0B,GAA3B,MAAoC,CAApC,IAAyCze,CAAC,CAACnM,EAAF,CAAKtJ,WAAL,GAAmBE,OAAnB,CAA2B,MAAIg0B,GAA/B,MAAwC,CAAC,CAAlF,IAAwFze,CAAC,CAAC7H,KAAF,IAAW6H,CAAC,CAAC7H,KAAF,CAAQ5N,WAAR,GAAsBE,OAAtB,CAA8Bg0B,GAA9B,MAAuC,CAA7I,EACIC,OAAO,CAAC3wB,IAAR,CAAa;UAAC8F,EAAE,EAAEmM,CAAC,CAACnM,EAAP;UAAW8J,YAAY,EAAEqC,CAAC,CAACrC;QAA3B,CAAb;MACP,CAHD;;MAIA,OAAO+gB,OAAP;IACH,CAhhFL,mDAihFmB,uBAASD,GAAT,EAAa;MACxB,IAAIC,OAAO,GAAG,EAAd;MACAD,GAAG,GAAGA,GAAG,CAACl0B,WAAJ,EAAN;;MACAoI,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAASuY,CAAT,EAAW;QAC7B,IAAGA,CAAC,CAACnZ,EAAF,CAAKtJ,WAAL,GAAmBE,OAAnB,CAA2Bg0B,GAA3B,MAAoC,CAAvC,EACIC,OAAO,CAAC3wB,IAAR,CAAaif,CAAC,CAACnZ,EAAf;MACP,CAHD;;MAIA,OAAO6qB,OAAP;IACH,CAzhFL,gDA0hFgB,oBAAS/nB,KAAT,EAAgB8nB,GAAhB,EAAoB;MAC5B,IAAIC,OAAO,GAAG,EAAd;MACAD,GAAG,GAAGA,GAAG,CAACl0B,WAAJ,EAAN;;MACAoI,KAAK,CAACtE,OAAN,CAAcY,IAAd,CAAmBwF,OAAnB,CAA2B,UAAS8W,MAAT,EAAgB;QACvC,KAAI,IAAIjkB,CAAR,IAAaikB,MAAb,EAAoB;UAChB,IAAG,CAAC,KAAGA,MAAM,CAACjkB,CAAD,CAAV,EAAeiD,WAAf,GAA6BE,OAA7B,CAAqCg0B,GAArC,MAA8C,CAA9C,IAAmDC,OAAO,CAACj0B,OAAR,CAAgB8gB,MAAM,CAAC1X,EAAvB,KAA4B,CAAC,CAAnF,EACI6qB,OAAO,CAAC3wB,IAAR,CAAawd,MAAM,CAAC1X,EAApB;QACP;MACJ,CALD;;MAMA,OAAO6qB,OAAP;IACH,CApiFL,0DAqiF0B,8BAAS7qB,EAAT,EAAY;MAC9BlB,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAASuY,CAAT,EAAW;QAC7B,IAAGA,CAAC,CAACnZ,EAAF,IAAMA,EAAT,EACImZ,CAAC,CAAC/S,IAAF,CAAOxJ,QAAP,CAAgB,sBAAhB;MACP,CAHD;IAIH,CA1iFL,iDA2iFiB,uBAAU;MACnBkC,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAASuY,CAAT,EAAW;QAC7BA,CAAC,CAAC/S,IAAF,CAAOxD,WAAP,CAAmB,sBAAnB;MACH,CAFD;IAGH,CA/iFL,2DAgjF4B,+BAASnL,CAAT,EAAW;MAE/B;MACA,IAAGvD,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYlB,QAAZ,CAAqB,eAArB,CAAH,EAA0C,OAAO,KAAP;MAE1C,IAAIglB,EAAE,GAAG52B,MAAM,CAAC4E,WAAP,CAAmBC,CAAnB,CAAT;;MACA,IAAI4N,CAAC,GAAGmkB,EAAE,CAACnkB,CAAH,GAAOvG,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBznB,IAAnC;;MACA,IAAI1B,CAAC,GAAGk2B,EAAE,CAACl2B,CAAH,GAAOwL,KAAK,CAACkI,IAAN,CAAWyV,MAAX,GAAoBxnB,GAAnC;;MACA,IAAIgZ,EAAE,GAAG3Z,KAAK,CAACwrB,iBAAN,CAAwB,CAACza,CAAD,EAAG/R,CAAH,CAAxB,CAAT;;MAEA,IAAG,CAACY,CAAC,CAACsZ,SAAF,CAAYnI,CAAZ,CAAD,IAAmB,CAACnR,CAAC,CAACsZ,SAAF,CAAYla,CAAZ,CAAvB,EACI,OAAO,KAAP;MAEJ,IAAI8H,IAAI,GAAG;QAAC6S,EAAE,EAAEA;MAAL,CAAX,CAb+B,CAe/B;MACA;MACA;;MACA,IAAGnP,KAAK,CAACioB,aAAT,EAAuB;QACnB;QACAjoB,KAAK,CAACioB,aAAN,CAAoBpY,KAApB,CAA0BV,EAA1B;;QACA;MACH;;MAED,IAAGpb,MAAM,CAACi4B,kBAAV,EACI1vB,IAAI,CAAC2S,GAAL,GAAWlb,MAAM,CAACi4B,kBAAlB;;MAEJx2B,KAAK,CAAC+jB,SAAN,CAAgBjd,IAAhB,EAAsB,IAAtB;IACH,CA5kFL,wDA6kFyB,4BAASoD,EAAT,EAAa4pB,eAAb,EAA6B;MAC9CtpB,KAAK,CAACspB,eAAN,GAAwB,IAAxB;MACAtpB,KAAK,CAACqoB,WAAN,CAAkB3oB,EAAlB,GAAuB5L,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAAvB;;MACAlK,KAAK,CAACiO,kBAAN;;MACAjO,KAAK,CAAC+I,gBAAN;IACH,CAllFL,wDAmlFyB,4BAASmB,EAAT,EAAY;MAC7BM,KAAK,CAACuqB,WAAN,CAAkB7qB,EAAlB,GAAuB5L,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAAvB;;MACAlK,KAAK,CAACiO,kBAAN;;MACAjO,KAAK,CAAC+I,gBAAN;IACH,CAvlFL,iDAwlFiB,qBAASmB,EAAT,EAAY;MACrBM,KAAK,CAACiF,QAAN,GAAiBvF,EAAjB;IACH,CA1lFL,qDA2lFsB,yBAASA,EAAT,EAAY;MAC1BM,KAAK,CAACisB,QAAN,CAAevsB,EAAf,GAAoB5L,MAAM,CAACqG,YAAP,CAAoBuF,EAApB,CAApB;;MACAlK,KAAK,CAACiO,kBAAN;;MACAjO,KAAK,CAAC+I,gBAAN;IACH,CA/lFL,gDAimFiB,oBAAUsU,OAAV,EAAkB;MAC3Bzd,CAAC,CAACqV,IAAF,CAAOoI,OAAP,EAAgB,UAASle,CAAT,EAAY6L,MAAZ,EAAmB;QAC/BhL,KAAK,CAAC+jB,SAAN,CAAgB/Y,MAAhB;MACH,CAFD;;MAGAR,KAAK,CAAC6S,OAAN,CAAciT,IAAd,CAAmB,UAASnY,CAAT,EAAWD,CAAX,EAAa;QAC5B,OAAOC,CAAC,CAACzM,EAAF,IAAQwM,CAAC,CAACxM,EAAV,GAAe,CAAf,GAAmB,EAAEyM,CAAC,CAACzM,EAAF,GAAOwM,CAAC,CAACxM,EAAX,KAAkB,CAAC,CAA7C;MACH,CAFD;;MAGAlB,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAAStB,MAAT,EAAiBpH,KAAjB,EAAuB;QACzC4G,KAAK,CAACimB,WAAN,CAAkBzlB,MAAM,CAACU,EAAzB,IAA+B9H,KAA/B;MACH,CAFD;IAKH,CA7mFL,qDA8mFsB,2BAAU,CAE3B,CAhnFL,4CAinFY,gBAASsQ,IAAT,EAAc;MAClB,IAAIwiB,KAAK,GAAG,EAAZ;MACA,IAAIC,KAAK,GAAGziB,IAAI,CAAC/O,KAAL,CAAW,IAAX,CAAZ;MACA,IAAIyxB,MAAM,GAAG/yB,MAAM,CAACvD,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAD,CAAnB;;MACA,KAAK,IAAIpB,CAAC,GAAG,CAAb,EAAiBA,CAAC,GAAGw3B,KAAK,CAAC13B,MAA3B,EAAoCE,CAAC,EAArC,EAAyC;QACrCu3B,KAAK,CAAC9wB,IAAN,CAAWgxB,MAAM,CAAC1iB,IAAP,CAAYyiB,KAAK,CAACx3B,CAAD,CAAjB,EAAsB8J,IAAtB,EAAX;MACH;;MACD,OAAOytB,KAAK,CAACnxB,IAAN,CAAW,QAAX,CAAP;IACH,CAznFL,qDA0nFsB,yBAAS8e,IAAT,EAAc;MAC5B,IAAG;QACCA,IAAI;MACP,CAFD,CAEC,OAAMzP,KAAN,EAAY;QACT6c,OAAO,CAACC,GAAR,CAAY,+CAA6C9c,KAAK,CAACiiB,IAAnD,GAAwD,KAAxD,GAA8DjiB,KAAK,CAACkiB,OAAhF;MACH;IACJ,CAhoFL,8CAioFc,oBAAU;MAEhB,IAAG,CAACtsB,KAAK,CAACusB,YAAV,EAAwB;QACpBvsB,KAAK,CAACusB,YAAN,GAAqBn3B,CAAC,CAAC,wLAAD,CAAtB;;QACA4K,KAAK,CAACusB,YAAN,CAAmBlgB,QAAnB,CAA4B,MAA5B;MACH;;MACDrM,KAAK,CAACusB,YAAN,CAAmBjvB,IAAnB,CAAwB,wBAAxB,EAAkD2C,GAAlD,CAAsDD,KAAK,CAACkI,IAAN,CAAWlN,IAAX,CAAgB,WAAhB,CAAtD;;MACAgF,KAAK,CAACusB,YAAN,CAAmBjvB,IAAnB,CAAwB,yBAAxB,EAAmD2C,GAAnD,CAAuDD,KAAK,CAACtE,OAAN,CAAc8J,KAArE;;MACAnI,UAAU,CAAC,YAAW;QAClBhE,MAAM,CAAC,YAAD,CAAN,CAAqBmzB,MAArB;MACH,CAFS,EAEP,GAFO,CAAV;IAGH,CA5oFL,iDA6oFkB,qBAASvrB,MAAT,EAAgB;MAC1B,IAAGA,MAAM,CAACkC,QAAV,EACI,OAAO,KAAP;MAEJ,IAAIspB,GAAJ;;MACA,IAAIzsB,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBE,QAAvB,IAAmC,QAAvC,EAAgD;QAC5C6Y,GAAG,GACE,OAAOzsB,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAA9B,IAAsC,UAAvC,IAAsD3T,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAvB,CAA4BnV,IAA5B,CAAiCyC,MAAjC,EAAwCjB,KAAK,CAAC2J,OAAN,CAAchO,SAAtD,EAAiEsF,MAAjE,EAAyEzL,KAAzE,CAAtD,IAEAwK,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAvB,IAA6B,KAA7B,IAAsC1S,MAAM,CAACjB,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAxB,CAF5C,IAIA1S,MAAM,CAAC0I,OALX;MAMH,CAPD,MAOK;QACD8iB,GAAG,GACCxrB,MAAM,CAAC0I,OAAP,IAEC,OAAO3J,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAA9B,IAAsC,UAAvC,IAAsD3T,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAvB,CAA4BnV,IAA5B,CAAiCyC,MAAjC,EAAwCjB,KAAK,CAAC2J,OAAN,CAAchO,SAAtD,EAAiEsF,MAAjE,EAAyEzL,KAAzE,CAFtD,IAIAwK,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAvB,IAA6B,KAA7B,IAAsC1S,MAAM,CAACjB,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAxB,CALhD;MAMH;;MACD,IAAI8Y,GAAG,IAAIA,GAAG,CAACh4B,MAAf,EAAsB;QAClBuL,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwB8C,IAAxB,CAA6BguB,GAA7B;;QACAzsB,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwBmC,QAAxB,CAAiC,wBAAjC;MACH;IACJ,CArqFL,oDAsqFoB,wBAASmD,MAAT,EAAgB;MAC5B,IAAI4I,OAAJ;;MACA,IAAG7J,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBD,QAAvB,IAAmC,QAAtC,EAA+C;QAC3C/J,OAAO,GAAG,OAAO7J,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBF,IAA9B,IAAsC,UAAtC,GAAmD3T,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBF,IAAvB,CAA4BnV,IAA5B,CAAiCyC,MAAjC,EAAyCjB,KAAK,CAAC0sB,UAA/C,EAA2DzrB,MAA3D,EAAmEzL,KAAnE,CAAnD,GAA+HyL,MAAM,CAAC4I,OAAhJ;MACH,CAFD,MAEK;QACDA,OAAO,GAAG5I,MAAM,CAAC4I,OAAP,KAAmB,OAAO7J,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBF,IAA9B,IAAsC,UAAtC,GAAmD3T,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBF,IAAvB,CAA4BnV,IAA5B,CAAiCyC,MAAjC,EAAyCjB,KAAK,CAAC0sB,UAA/C,EAA2DzrB,MAA3D,EAAmEzL,KAAnE,CAAnD,GAA+H,IAAlJ,CAAV;MACH;;MAED,OAAOqU,OAAP;IACH,CA/qFL,2DAgrF2B,iCAAU;MAC7B,IAAG,CAAC7J,KAAK,CAAC+d,QAAP,IAAmB,CAAC/d,KAAK,CAAC+d,QAAN,CAAezhB,IAAf,CAAoB,OAApB,CAAvB,EAAqD;;MAErD,IAAI+J,GAAG,GAAG7Q,KAAK,CAAC8Q,iBAAN,CAAwBtG,KAAK,CAAC+d,QAAN,CAAezhB,IAAf,CAAoB,OAApB,CAAxB,CAAV,CAH6B,CAK7B;MACA;;;MAEA0D,KAAK,CAAC+d,QAAN,CAAe5f,GAAf,CAAmB;QACf,aAAa,gCAA8BkI,GAAG,CAAC,CAAD,CAAjC,GAAqC,KAArC,GAA2CA,GAAG,CAAC,CAAD,CAA9C,GAAkD;MADhD,CAAnB;IAGH,CA3rFL,iDA4rFkB,qBAAUJ,SAAV,EAAoB;MAE9B;MACA;MAEA;MACA,IAAG,CAACA,SAAJ,EACI;;MAEJ,IAAIzQ,KAAK,GAAG,IAAZ;;MAEA,IAAIqG,QAAQ,GAAIrG,KAAK,CAACm3B,cAAN,CAAqB1mB,SAArB,CAAhB;;MACA,IAAG,CAACpK,QAAJ,EACI;MAEJ,IAAIkK,KAAJ;;MACA,IAAGE,SAAS,YAAY8B,MAAxB,EAA+B;QAC3BhC,KAAK,GAAG;UAACQ,CAAC,EAAEN,SAAS,CAACM,CAAd;UAAiB/R,CAAC,EAAEyR,SAAS,CAACzR;QAA9B,CAAR;MACH,CAFD,MAEK;QACDuR,KAAK,GAAGE,SAAS,CAACkD,YAAV,EAAR;MACH;;MACD3T,KAAK,CAACqU,OAAN,IAAiBrU,KAAK,CAACqU,OAAN,CAAcpS,OAAd,EAAjB;MACAjC,KAAK,CAACqU,OAAN,GAAgB,IAAI/V,MAAM,CAACgS,iBAAX,CAA6B;QACzCnK,SAAS,EAAEqE,KAAK,CAAC+d,QADwB;QAEzChY,KAAK,EAAEA,KAFkC;QAGzCC,MAAM,EAAEC,SAAS,YAAY8B,MAArB,GAA8B9B,SAAS,CAACvP,MAAxC,GAAiD,CAHhB;QAIzCmF,QAAQ,EAAEA,QAJ+B;QAKzCD,MAAM,EAAEpG,KALiC;QAMzC8G,IAAI,EAAET,QANmC;QAM1B;QACfoK,SAAS,EAAEA,SAP8B;QAQzCnK,UAAU,EAAE,IAR6B;QASzCC,WAAW,EAAE,IAT4B;QAUzCS,MAAM,EAAE;UACJ,SAAS,iBAAU;YACf,IAAGwD,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAA1B,EAAmC;cAC/B,IAAIpR,KAAK,GAAG,KAAK/G,SAAL,CAAejF,MAAf,KAAwB,CAApC;;cACA,IAAGsJ,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAAvB,IAAmC,EAAEhgB,MAAM,CAACmE,OAAP,IAAkB+H,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBG,gBAA3C,CAAtC,EAAmG;gBAC/Fxe,KAAK,CAACse,QAAN,CAAe7N,SAAf,EAA0BvD,KAA1B;cACH;YACJ,CANc,CAOf;YACA;;UACH,CAVG;UAWJ,UAAU,kBAAU;YAChB1C,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAAvB,IAAmC9T,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBE,mBAA1D,IAAiFve,KAAK,CAACo3B,YAAN,CAAmB,IAAnB,CAAjF,CADgB,CAEhB;YACA;UACH,CAfG;UAgBJ,UAAU,kBAAU;YAChB,IAAG5sB,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAA1B,EAAmC;cAC/B,IAAIpR,KAAK,GAAG,KAAK/G,SAAL,CAAejF,MAAf,KAAwB,CAApC;;cACA,IAAGsJ,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBC,QAAvB,IAAmC,EAAEhgB,MAAM,CAACmE,OAAP,IAAkB+H,KAAK,CAACtE,OAAN,CAAcmY,QAAd,CAAuBG,gBAA3C,CAAtC,EAAmG;gBAC/Fxe,KAAK,CAACse,QAAN,CAAe7N,SAAf,EAA0BvD,KAA1B;cACH;YACJ;UACH;QAvBE;MAViC,CAA7B,CAAhB,CAtB8B,CA2D9B;MACA;MACA;MAEA;MACA;MACA;MACA;MAEA;IACH,CAjwFL,iDAkwFkB,uBAAU;MACpBlN,KAAK,CAACqU,OAAN,IAAiBrU,KAAK,CAACqU,OAAN,CAAcpD,KAAd,EAAjB,CADoB,CAEpB;IACH,CArwFL,6CAswFc,mBAAW;MACjBzG,KAAK,CAAC2J,OAAN,CAAchO,SAAd,CAAwBmI,WAAxB,CAAoC,wBAApC,EADiB,CAEjB;;IACH,CAzwFL,uDA0wFwB,2BAASnL,CAAT,EAAW;MAE3B,IAAGqH,KAAK,CAAC2G,WAAN,IAAqBvR,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYC,OAAZ,CAAoB,iBAApB,EAAuCpS,MAA5D,IAAsEW,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYlB,QAAZ,CAAqB,iBAArB,CAAzE,EACI;MACJ,KAAKmE,OAAL,IAAgB,KAAKA,OAAL,CAAapD,KAAb,EAAhB;IACH,CA/wFL,sDAgxFuB,0BAAS9N,CAAT,EAAW;MAC1B;MACA;MACA,IAAG,gBAAgBoO,MAAnB,EAA2B;QACvB,IAAI,CAAC,KAAKyE,QAAV,EACI,KAAKsD,SAAL;MACP;;MACDtZ,KAAK,CAACq3B,WAAN,CAAkB,IAAlB,EAP0B,CAQ1B;MACA;;;MACA,OAAO7sB,KAAK,CAACtE,OAAN,CAAc0H,SAAd,IAA2BpD,KAAK,CAACtE,OAAN,CAAc0H,SAAd,CAAwB5E,IAAxB,CAA6B,IAA7B,EAAmC7F,CAAnC,EAAsCnD,KAAtC,CAAlC;IACH,CA3xFL,qDA4xFsB,yBAASmD,CAAT,EAAW;MACzB;MACA;MACA,IAAG,gBAAgBoO,MAAnB,EAA2B;QACvB,IAAI,CAAC,KAAKyE,QAAV,EACI,KAAKuD,WAAL;MACP;;MACDvZ,KAAK,CAACs3B,OAAN,GAPyB,CAQzB;MACA;;;MACA,OAAO9sB,KAAK,CAACtE,OAAN,CAAc4H,QAAd,IAA0BtD,KAAK,CAACtE,OAAN,CAAc4H,QAAd,CAAuB9E,IAAvB,CAA4B,IAA5B,EAAkC7F,CAAlC,EAAqCnD,KAArC,CAAjC;IACH,CAvyFL,mDAwyFoB,uBAASkG,OAAT,EAAiB;MAC7BtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAcwG,KAAK,CAACtE,OAApB,EAA4BA,OAA5B;IACH,CA1yFL,uDA2yFwB,6BAAU;MAC1BsE,KAAK,CAACimB,WAAN,GAAoB,EAApB;;MACAjmB,KAAK,CAAC6S,OAAN,CAAc/Q,OAAd,CAAsB,UAAStB,MAAT,EAAiB7L,CAAjB,EAAmB;QACrCqL,KAAK,CAACimB,WAAN,CAAkBzlB,MAAM,CAACU,EAAzB,IAA+BvM,CAA/B;MACH,CAFD;IAGH,CAhzFL,mDAizFmB,uBAAS2lB,KAAT,EAAe;MAC1Bta,KAAK,CAAC+sB,aAAN,CAAoBzS,KAApB,IAA6B,IAA7B;IACH,CAnzFL,mDAozFmB,uBAASA,KAAT,EAAe;MAC1B,IAAGA,KAAH,EAAS;QACLta,KAAK,CAAC+sB,aAAN,CAAoBzS,KAApB,IAA6B,KAA7B;MACH,CAFD,MAEO;QACHta,KAAK,CAAC+sB,aAAN,GAAsB,EAAtB;MACH;IAEJ,CA3zFL,sDA4zFuB,4BAAU;MAEzB/sB,KAAK,CAACiR,IAAN,CAAWzK,GAAX,CAAe,gBAAf;;MACAxG,KAAK,CAACof,WAAN,CAAkB5Y,GAAlB,CAAsB,gBAAtB;;MACApR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,uBAAhB;MACApR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,6BAAhB;MACApR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,2BAAhB;;MAEA,IAAGxG,KAAK,CAACqoB,WAAN,CAAkB3oB,EAArB,EAAwB;QAEpB;QACAM,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,kDAAd,EAAkE,gBAAlE,EAAmF,UAAS/G,CAAT,EAAW;UAC1FA,CAAC,CAACK,aAAF,CAAgBqH,cAAhB;;UACA,IAAIG,MAAM,GAAGhL,KAAK,CAAC2L,SAAN,CAAgB/L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAhB,CAAb;;UACA,IAAIgT,WAAW,GAAG9c,MAAM,CAAC4E,WAAP,CAAmBC,CAAnB,CAAlB;UACA6H,MAAM,CAACmQ,IAAP,CAAYC,WAAZ,EAAyB5Q,KAAK,CAACgI,KAA/B,EAAsC,YAAW;YAC7C,IAAIhI,KAAK,CAAC8P,QAAV,EAAmB;cACf,KAAKV,SAAL,GAAiB5Z,KAAK,CAACiT,eAAN,CAAsB,KAAKlC,CAAL,GAAS,KAAK9P,KAAL,GAAa,CAA5C,EAA+C,KAAKjC,CAAL,IAAU,KAAKkC,MAAL,GAAY,CAAtB,CAA/C,CAAjB;YACH;;YACDsJ,KAAK,CAAC6c,iBAAN,IAA2B7c,KAAK,CAAC6c,iBAAN,CAAwBre,IAAxB,CAA6B,IAA7B,EAAkC,IAAlC,CAA3B;YACA,IAAG,KAAKuR,QAAR,EACI,KAAKA,QAAL,CAAcvR,IAAd,CAAmB,IAAnB;UACP,CAPD,EAOE,YAAU;YACRwB,KAAK,CAAC6c,iBAAN,IAA2B7c,KAAK,CAAC6c,iBAAN,CAAwBre,IAAxB,CAA6B,IAA7B,CAA3B;YACA,IAAG,KAAKuR,QAAR,EACI,KAAKA,QAAL,CAAcvR,IAAd,CAAmB,IAAnB;UACP,CAXD;QAYH,CAhBD;MAiBH,CA5BwB,CA8BzB;MACA;;;MACI,IAAG,CAACwB,KAAK,CAACqoB,WAAN,CAAkB3oB,EAAtB,EAA0B;QACtBM,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,yBAAd,EAAyC,gBAAzC,EAA2D,UAAU/G,CAAV,EAAa;UACpE,IAAIuI,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAT;;UACApI,KAAK,CAACw3B,gBAAN,CAAuBxuB,IAAvB,CAA4BhJ,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAA5B,EAAiDvI,CAAjD,EAAoDnD,KAApD,EAA2DkG,OAA3D;QACH,CAHD,EAGGgE,EAHH,CAGM,0BAHN,EAGkC,gBAHlC,EAGoD,UAAU/G,CAAV,EAAa;UAC7D,IAAIuI,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAT;;UACApI,KAAK,CAACy3B,eAAN,CAAsBzuB,IAAtB,CAA2BhJ,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAA3B,EAAgDvI,CAAhD,EAAmDnD,KAAnD,EAA0DkG,OAA1D;QACH,CAND;MAOH;;MACD,IAAG,CAACsE,KAAK,CAACuqB,WAAN,CAAkB7qB,EAAtB,EAAyB;QACrBM,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,yBAAd,EAAyC,gBAAzC,EAA2D,UAAU/G,CAAV,EAAa;UACpE,IAAIuI,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAT;;UACApI,KAAK,CAACw3B,gBAAN,CAAuBxuB,IAAvB,CAA4BhJ,KAAK,CAAC2L,SAAN,CAAgBD,EAAhB,CAA5B,EAAiDvI,CAAjD,EAAoDnD,KAApD,EAA2DkG,OAA3D;QACH,CAHD,EAGGgE,EAHH,CAGM,0BAHN,EAGkC,gBAHlC,EAGoD,UAAU/G,CAAV,EAAa;UAC7D,IAAIuI,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAT;;UACApI,KAAK,CAACy3B,eAAN,CAAsBzuB,IAAtB,CAA2BhJ,KAAK,CAAC2L,SAAN,CAAgBD,EAAhB,CAA3B,EAAgDvI,CAAhD,EAAmDnD,KAAnD,EAA0DkG,OAA1D;QACH,CAND;MAOH,CAjDoB,CAkDzB;;;MAEA,IAAGsE,KAAK,CAACtE,OAAN,CAAc6X,MAAd,CAAqBC,QAAxB,EAAiC;QAC7Bpe,CAAC,CAACU,QAAD,CAAD,CAAY4J,EAAZ,CAAe,uBAAf,EAAwC,UAAS/G,CAAT,EAAY;UAChD,IAAG,CAACqH,KAAK,CAAC2G,WAAP,IAAsBhO,CAAC,CAACmwB,OAAF,IAAa,EAAtC,EAAyC;YACrCnwB,CAAC,CAAC0H,cAAF;;YACAL,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,mBAApB;;YACA1I,CAAC,CAACU,QAAD,CAAD,CAAY4J,EAAZ,CAAe,6BAAf,EAA8C,UAAS/G,CAAT,EAAY;cACtDqH,KAAK,CAAC2G,WAAN,GAAoB,IAApB;cACAvR,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,6BAAhB;;cACAhR,KAAK,CAACu0B,WAAN,CAAkBpxB,CAAlB,EAAoBnD,KAApB;YACH,CAJD,EAIGkK,EAJH,CAIM,qBAJN,EAI6B,UAAU/G,CAAV,EAAa;cACtC,IAAIA,CAAC,CAACmwB,OAAF,IAAa,EAAjB,EAAqB;gBACjB1zB,CAAC,CAACU,QAAD,CAAD,CAAY0Q,GAAZ,CAAgB,6BAAhB;;gBACAxG,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,mBAAvB;cACH;YACJ,CATD;UAUH;QACJ,CAfD;MAgBH,CAjBD,MAiBM,IAAI,CAAC9D,KAAK,CAACtE,OAAN,CAAc6X,MAAd,CAAqB7T,EAA1B,EAA8B;QAChC,IAAI4a,KAAK,GAAGxmB,MAAM,CAAC+D,WAAP,GAAqB,0BAArB,GAAkD,qBAA9D;;QACA,IAAG,CAACmI,KAAK,CAACqoB,WAAN,CAAkB3oB,EAAtB,EAA0B;UACtB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACIM,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,0BAAd,EAA0C,gBAA1C,EAA4D,UAAU/G,CAAV,EAAa;YACrEqH,KAAK,CAACktB,gBAAN,GAAyB93B,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAAzB;UACH,CAFD;;UAGAwI,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,0BAAd,EAA0C,gBAA1C,EAA4D,UAAU/G,CAAV,EAAa;YACrEqH,KAAK,CAACktB,gBAAN,GAAyB93B,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAAzB;UACH,CAFD;;UAIAwI,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,8CAAd,EAA8D,gBAA9D,EAAgF,UAAU/G,CAAV,EAAa;YACzF,IAAIA,CAAC,CAACw0B,UAAN,EAAkB;cACdx0B,CAAC,CAAC0H,cAAF;YACH;;YACD,IAAGL,KAAK,CAACktB,gBAAN,KAA2B9yB,SAA3B,IAAwC4F,KAAK,CAACktB,gBAAN,KAA2B93B,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAAtE,EAA4F;cACxFhC,KAAK,CAAC6sB,kBAAN,CAAyB7jB,IAAzB,CAA8BhJ,KAA9B,EAAqCmD,CAArC,EAAwCnD,KAAK,CAACsL,SAAN,CAAgB1L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAhB,CAAxC;YACH,CANwF,CAOzF;;UACH,CARD;;UASAoC,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,8CAAd,EAA6D,gBAA7D,EAAgF,UAAU/G,CAAV,EAAa;YACzF,IAAIA,CAAC,CAACw0B,UAAN,EAAkB;cACdx0B,CAAC,CAAC0H,cAAF;YACH;;YACD,IAAGL,KAAK,CAACktB,gBAAN,KAA2B9yB,SAA3B,IAAwC4F,KAAK,CAACktB,gBAAN,KAA2B93B,CAAC,CAACrB,MAAD,CAAD,CAAUyD,SAAV,EAAtE,EAA6F;cACzFhC,KAAK,CAAC6sB,kBAAN,CAAyB7jB,IAAzB,CAA8BhJ,KAA9B,EAAqCmD,CAArC,EAAwCnD,KAAK,CAAC2L,SAAN,CAAgB/L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAhB,CAAxC;YACH;UACJ,CAPD,EAnCkB,CA2CtB;;QACH,CA5CD,MA4CK;UACD,IAAGoC,KAAK,CAACspB,eAAT,EACItpB,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,8CAAd,EAA8D,UAAU/G,CAAV,EAAa;YACvE,IAAIA,CAAC,CAACw0B,UAAN,EAAkB;cACdx0B,CAAC,CAAC0H,cAAF;YACH;;YACD7K,KAAK,CAAC+zB,qBAAN,CAA4B5wB,CAA5B;UACH,CALD;QAMP;MACJ,CAvDK,MAuDC;QAEHqH,KAAK,CAACiR,IAAN,CAAWvR,EAAX,CAAc,kDAAd,EAAkE,UAAS/G,CAAT,EAAW;UAEzE,IAAGvD,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYlB,QAAZ,CAAqB,gBAArB,KAAwCtQ,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYC,OAAZ,CAAoB,iBAApB,EAAuCpS,MAAlF,EAAyF;YACrF;UACH;;UACD,IAAGkE,CAAC,CAACod,IAAF,IAAQ,YAAX,EAAwB;YACpBpd,CAAC,CAAC0H,cAAF;UACH;;UAED,IAAG1H,CAAC,CAACiO,MAAF,IAAYxR,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYhJ,IAAZ,CAAiB,OAAjB,CAAZ,IAAyCxI,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYhJ,IAAZ,CAAiB,OAAjB,EAA0B9F,OAA1B,CAAkC,eAAlC,KAAoD,CAAC,CAAjG,EAAmG;YAC/F,IAAIgD,GAAG,GAAGtF,KAAK,CAACsL,SAAN,CAAgB1L,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYhJ,IAAZ,CAAiB,IAAjB,CAAhB,CAAV;;YACApI,KAAK,CAAC43B,wBAAN,CAA+B5uB,IAA/B,CAAoChJ,KAApC,EAA2CmD,CAA3C,EAA8CmC,GAA9C;UACH,CAHD,MAGM,IAAGnC,CAAC,CAACiO,MAAF,IAAYxR,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYhJ,IAAZ,CAAiB,OAAjB,CAAZ,IAAyCxI,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYhJ,IAAZ,CAAiB,OAAjB,EAA0B9F,OAA1B,CAAkC,eAAlC,KAAoD,CAAC,CAAjG,EAAmG;YACrG,IAAGkI,KAAK,CAACqoB,WAAN,CAAkB3oB,EAArB,EAAwB;cACpB;YACH;;YACD,IAAI5E,GAAG,GAAGtF,KAAK,CAAC2L,SAAN,CAAgB/L,CAAC,CAACuD,CAAC,CAACiO,MAAH,CAAD,CAAYhJ,IAAZ,CAAiB,IAAjB,CAAhB,CAAV;;YACApI,KAAK,CAAC43B,wBAAN,CAA+B5uB,IAA/B,CAAoChJ,KAApC,EAA2CmD,CAA3C,EAA8CmC,GAA9C;UACH;;UACD,IAAGnC,CAAC,CAACod,IAAF,IAAQ,WAAX,EAAuB;YACnBvgB,KAAK,CAACu0B,WAAN,CAAkBpxB,CAAlB,EAAoBnD,KAApB;UACH,CAFD,MAEK;YACDA,KAAK,CAAC63B,UAAN,CAAiB10B,CAAjB,EAAmBnD,KAAnB;UACH;QACJ,CAxBD;MA0BH;IACJ,CAr9FL,8CAs9Fc,kBAASqI,IAAT,EAAc;MACpBmC,KAAK,CAACge,MAAN,CAAangB,IAAb,IAAqBzI,CAAC,CAAC,2CAAyCyI,IAAzC,GAA8C,UAA/C,CAAtB;;MACAmC,KAAK,CAACsf,OAAN,CAAcphB,MAAd,CAAqB8B,KAAK,CAACge,MAAN,CAAangB,IAAb,CAArB;IACH,CAz9FL,wDA09FwB,8BAAU;MAC1B,OAAO,KAAKkB,QAAZ;IACH,CA59FL,+CA69Fe,mBAASuuB,SAAT,EAAmB;MAC1B,IAAIrsB,MAAM,GAAG,IAAI8F,MAAJ,CAAW3R,CAAC,CAACk4B,SAAD,CAAZ,EAAyBttB,KAAK,CAACtE,OAA/B,EAAwCsE,KAAK,CAAC8K,QAA9C,EAAwDtV,KAAxD,CAAb;MACAyL,MAAM,CAACsN,SAAP,CAAiB,CAAjB;;MACAvO,KAAK,CAACO,OAAN,CAAcnF,IAAd,CAAmB6F,MAAnB;;MACAjB,KAAK,CAACO,OAAN,CAAculB,IAAd,CAAmB,UAASnY,CAAT,EAAWD,CAAX,EAAa;QAC5B,OAAOC,CAAC,CAACzM,EAAF,IAAQwM,CAAC,CAACxM,EAAV,GAAe,CAAf,GAAmB,EAAEyM,CAAC,CAACzM,EAAF,GAAOwM,CAAC,CAACxM,EAAX,KAAkB,CAAC,CAA7C;MACH,CAFD;;MAGAlB,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASb,MAAT,EAAiB7H,KAAjB,EAAuB;QACzC4G,KAAK,CAACgmB,WAAN,CAAkB/kB,MAAM,CAACC,EAAzB,IAA+B9H,KAA/B;MACH,CAFD;;MAGA,OAAO6H,MAAP;IACH,CAx+FL,kDAy+FkB,sBAASC,EAAT,EAAY;MACtB,IAAI9H,KAAK,GAAG4G,KAAK,CAACgmB,WAAN,CAAkB9kB,EAAlB,CAAZ;;MACA,IAAG9H,KAAK,KAAKgB,SAAb,EAAuB;QACnB,IAAIiT,CAAC,GAAG7X,KAAK,CAACsL,SAAN,CAAgBI,EAAhB,CAAR;;QACAmM,CAAC,CAAC/F,IAAF,IAAU+F,CAAC,CAAC/F,IAAF,CAAOnT,MAAP,EAAV;;QACA6L,KAAK,CAACO,OAAN,CAAc2nB,MAAd,CAAqB9uB,KAArB,EAA2B,CAA3B;;QACA,OAAO4G,KAAK,CAACgmB,WAAN,CAAkB9kB,EAAlB,CAAP;MACH,CALD,MAKK;QACD,IAAG9L,CAAC,CAAC,MAAI8L,EAAL,CAAD,CAAUzM,MAAb,EAAoB;UAChBW,CAAC,CAAC,MAAI8L,EAAL,CAAD,CAAU/M,MAAV;QACH;MACJ;IACJ,CAr/FL,mDAs/FoB,yBAAU;MACtB,IAAIqB,KAAK,GAAG,IAAZ;;MACAwK,KAAK,CAACO,OAAN,GAAgB,EAAhB;MACAP,KAAK,CAACgmB,WAAN,GAAoB,EAApB;;MACAhmB,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,gBAAhB,EAAkCwG,WAAlC,CAA8C,eAA9C;;MACA9D,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,yBAAhB,EAA2CwG,WAA3C,CAAuD,wBAAvD;;MACA9D,KAAK,CAACkI,IAAN,CAAW5K,IAAX,CAAgB,sCAAhB,EAAwDmN,IAAxD,CAA6D,UAASrR,KAAT,EAAe;QACxE,IAAGhE,CAAC,CAAC,IAAD,CAAD,CAAQyR,OAAR,CAAgB,MAAhB,EAAwBpS,MAA3B,EACI;;QACJ,IAAGW,CAAC,CAAC,IAAD,CAAD,CAAQ,CAAR,EAAWyT,YAAX,CAAwB,IAAxB,CAAH,EAAkC;UAC9B,IAAI5H,MAAM,GAAG,IAAI8F,MAAJ,CAAW3R,CAAC,CAAC,IAAD,CAAZ,EAAoB4K,KAAK,CAACtE,OAA1B,EAAmCsE,KAAK,CAAC8K,QAAzC,EAAmDtV,KAAnD,CAAb;;UACAwK,KAAK,CAACO,OAAN,CAAcnF,IAAd,CAAmB6F,MAAnB;QACH,CANuE,CAOxE;QACA;QACA;;MACH,CAVD;;MAWAjB,KAAK,CAACO,OAAN,CAAculB,IAAd,CAAmB,UAASnY,CAAT,EAAWD,CAAX,EAAa;QAC5B,OAAOC,CAAC,CAACzM,EAAF,IAAQwM,CAAC,CAACxM,EAAV,GAAe,CAAf,GAAmB,EAAEyM,CAAC,CAACzM,EAAF,GAAOwM,CAAC,CAACxM,EAAX,KAAkB,CAAC,CAA7C;MACH,CAFD;;MAGAlB,KAAK,CAACO,OAAN,CAAcuB,OAAd,CAAsB,UAASb,MAAT,EAAiB7H,KAAjB,EAAuB;QACzC4G,KAAK,CAACgmB,WAAN,CAAkB/kB,MAAM,CAACC,EAAzB,IAA+B9H,KAA/B;MACH,CAFD;IAGH,CA7gGL,uDA8gGwB,6BAAU;MAC1B,IAAIm0B,QAAQ,GAAG/3B,KAAK,CAACkmB,eAAN,CAAsB8R,oBAAtB,CAA2C,QAA3C,CAAf;;MACAh4B,KAAK,CAACkmB,eAAN,CAAsBrX,SAAtB,GAAkCvC,OAAlC,CAA0C,UAASyP,MAAT,EAAgB;QACtD,IAAItQ,MAAM,GAAGzL,KAAK,CAACsL,SAAN,CAAgByQ,MAAM,CAACrQ,EAAvB,CAAb;;QACA,IAAGD,MAAH,EAAU;UACNA,MAAM,CAAC3E,IAAP,GAAciV,MAAd;;UACA,IAAGgc,QAAQ,IAAIhc,MAAM,CAAC9M,MAAP,KAAkBrK,SAA9B,IAA2CmX,MAAM,CAAC9M,MAAP,KAAgB,IAA9D,EAAmE;YAC/DxD,MAAM,CAACsN,SAAP,CAAiBgD,MAAM,CAAC9M,MAAxB,EAD+D,CAE/D;UACH;QACJ;MACJ,CATD;;MAUAjP,KAAK,CAACqjB,aAAN;;MACArjB,KAAK,CAACi4B,QAAN;;MACAj4B,KAAK,CAACuhB,gBAAN;;MACAvhB,KAAK,CAACmhB,SAAN;IACH,CA9hGL,0CAgiGU,cAAS/H,IAAT,EAAeuH,IAAf,EAAqB;MAEvB,IAAG,CAACvH,IAAI,CAAC/N,MAAT,EAAiB;QACb,MAAM,IAAI6sB,KAAJ,CAAU,yCAAV,CAAN;QACA,OAAO,KAAP;MACH;;MAGD,IAAG9e,IAAI,CAACqE,UAAR,EACI,IAAG;QAACrE,IAAI,CAACqE,UAAL,CAAgBzU,IAAhB,CAAqBhJ,KAArB;MAA6B,CAAjC,CAAiC,OAAM2U,GAAN,EAAU,CAAE,CAT1B,CAWvB;;MACA,IAAGyE,IAAI,CAAC/N,MAAL,CAAY/I,OAAZ,CAAoB,IAApB,MAA4B,CAA/B,EACI8W,IAAI,CAAC/N,MAAL,GAAc+N,IAAI,CAAC/N,MAAL,CAAYpI,OAAZ,CAAoB,aAApB,EAAmC,EAAnC,EAAuCA,OAAvC,CAA+C,IAA/C,EAAoD,GAApD,CAAd,CADJ,KAGImW,IAAI,CAAC/N,MAAL,GAAc+N,IAAI,CAAC/N,MAAL,CAAYpI,OAAZ,CAAoB,gBAApB,EAAsC,EAAtC,EAA0CA,OAA1C,CAAkD,IAAlD,EAAuD,GAAvD,CAAd;MAEJ;;MACAuH,KAAK,GAAI,EAAT;MAEAA,KAAK,CAACiF,QAAN,GAAiB2J,IAAI,CAAC3J,QAAtB;MACA,OAAO2J,IAAI,CAAC3J,QAAZ;MACAjF,KAAK,CAACtE,OAAN,GAAgBtG,CAAC,CAACoE,MAAF,CAAS,IAAT,EAAe,EAAf,EAAmBwY,QAAnB,EAA6BpD,IAA7B,CAAhB;MAEApZ,KAAK,CAAC0L,EAAN,GAAWlB,KAAK,CAACtE,OAAN,CAAciyB,SAAzB;MACA,IAAGn4B,KAAK,CAAC0L,EAAN,IAAY,KAAf,EACI1L,KAAK,CAAC0L,EAAN,GAAW,IAAX;MACJlB,KAAK,CAACyqB,kBAAN,GAA2B,EAA3B;MACAzqB,KAAK,CAACuqB,WAAN,GAAoB;QAAC7qB,EAAE,EAAC;MAAJ,CAApB;MACAM,KAAK,CAACqoB,WAAN,GAAoB;QAAC3oB,EAAE,EAAC;MAAJ,CAApB;MACAM,KAAK,CAACisB,QAAN,GAAoB;QAACvsB,EAAE,EAAC;MAAJ,CAApB;MACAM,KAAK,CAACgB,GAAN,GAAamV,IAAb;MACAnW,KAAK,CAACiR,IAAN,GAAa7b,CAAC,CAAC+gB,IAAD,CAAd;MACAnW,KAAK,CAACof,WAAN,GAAoBhqB,CAAC,CAAC,uCAAD,CAAD,CAA2CiX,QAA3C,CAAoDrM,KAAK,CAACiR,IAA1D,CAApB;MACAjR,KAAK,CAACsf,OAAN,GAAgBlqB,CAAC,CAAC,wCAAD,CAAD,CAA4CiX,QAA5C,CAAqDrM,KAAK,CAACof,WAA3D,CAAhB;MAEApf,KAAK,CAAC4e,OAAN,GAAgB,CAAhB;MACA5e,KAAK,CAAC2G,WAAN,GAAoB,KAApB;MACA3G,KAAK,CAACiQ,aAAN,GAAsB,EAAtB;MACAjQ,KAAK,CAACqe,UAAN,GAAmB,EAAnB;MACAre,KAAK,CAAC4tB,SAAN,GAAkB,CAAlB;MACA5tB,KAAK,CAACgI,KAAN,GAAe,CAAf,CAzCuB,CAyCG;;MAC1BhI,KAAK,CAAC8e,MAAN,GAAe,CAAf,CA1CuB,CA0CG;;MAC1B9e,KAAK,CAACqqB,WAAN,GAAuB,EAAvB;MACArqB,KAAK,CAAC6tB,OAAN,GAAuB,EAAvB;MACA7tB,KAAK,CAACO,OAAN,GAAuB,EAAvB;MACAP,KAAK,CAACgmB,WAAN,GAAuB,EAAvB;MACAhmB,KAAK,CAAC8K,QAAN,GAAuB;QAAC5J,EAAE,EAAE;MAAL,CAAvB;MACAlB,KAAK,CAAC6S,OAAN,GAAuB,EAAvB;MACA7S,KAAK,CAACimB,WAAN,GAAuB,EAAvB;MACAjmB,KAAK,CAACoY,QAAN,GAAuB,EAAvB,CAlDuB,CAkDI;;MAC3BpY,KAAK,CAACkQ,OAAN,GAAuB,EAAvB,CAnDuB,CAmDI;;MAC3BlQ,KAAK,CAAC8tB,WAAN,GAAuB,EAAvB;MACA9tB,KAAK,CAAC+tB,WAAN,GAAuB3zB,SAAvB;MACA4F,KAAK,CAACuY,SAAN,GAAuB,CAAvB;MACAvY,KAAK,CAACuT,MAAN,GAAuB,EAAvB;MACAvT,KAAK,CAACge,MAAN,GAAuB,EAAvB;MACAhe,KAAK,CAACguB,cAAN,GAAuB,KAAvB;MACAhuB,KAAK,CAACukB,UAAN,GAAuB;QAACE,OAAO,EAAC,CAAT;QAAYE,MAAM,EAAC,CAAnB;QAAsBC,QAAQ,EAAC,CAA/B;QAAkCJ,SAAS,EAAC;MAA5C,CAAvB;MACAxkB,KAAK,CAAC+sB,aAAN,GAAuB,EAAvB;MAEA/sB,KAAK,CAACguB,cAAN,GAAuB,KAAvB,EACIhuB,KAAK,CAACukB,UAAN,GAAuB;QAACE,OAAO,EAAC,CAAT;QAAYE,MAAM,EAAC,CAAnB;QAAsBC,QAAQ,EAAC,CAA/B;QAAkCJ,SAAS,EAAC;MAA5C,CAD3B,EAIA;MACAxkB,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,QAApB,EAA8BA,QAA9B,CAAuC,gBAAvC,EAAyDK,GAAzD,CAA6D,YAA7D,EAA0E6B,KAAK,CAACtE,OAAN,CAAcoE,MAAd,CAAqB6S,UAA/F,CALA;MAOA3S,KAAK,CAACJ,KAAN,GAAcxK,CAAC,CAAC,iCAAD,CAAf;;MACA4K,KAAK,CAACJ,KAAN,CAAYsmB,YAAZ,CAAyBlmB,KAAK,CAACiR,IAA/B;;MACAjR,KAAK,CAACJ,KAAN,CAAY1B,MAAZ,CAAmB8B,KAAK,CAACiR,IAAzB;;MAEA,IAAG,CAACjR,KAAK,CAACiF,QAAV,EAAmB;QAEf;QACA;QACA;QAEA,IAAGjF,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BtR,QAA1B,IAAsC,QAAzC,EAAkD;UAC9ChD,KAAK,CAAC2lB,QAAN,GAAmBvwB,CAAC,CAAC,8CAAD,CAApB;;UACA,IAAGtB,MAAM,CAACmE,OAAV,EAAkB;YACd7C,CAAC,CAAC,MAAD,CAAD,CAAU8I,MAAV,CAAiB8B,KAAK,CAAC2lB,QAAvB;UACH,CAFD,MAEK;YACD3lB,KAAK,CAACJ,KAAN,CAAY1B,MAAZ,CAAmB8B,KAAK,CAAC2lB,QAAzB;;YACA,IAAG,CAAC3lB,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBoV,eAAvB,EAAuC;cACnC,IAAG7U,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBC,EAAnB,IAAyBM,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BtR,QAA1B,IAAsC,MAAlE,EAAyE;gBACrEhD,KAAK,CAAC2lB,QAAN,CAAexnB,GAAf,CAAmB;kBAACjI,IAAI,EAAE8J,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBhJ;gBAA1B,CAAnB;;gBACAuJ,KAAK,CAAC2lB,QAAN,CAAe7nB,QAAf,CAAwB,MAAxB;cACH,CAHD,MAGM,IAAG,CAACkC,KAAK,CAACtE,OAAN,CAAc+D,IAAd,CAAmBC,EAApB,IAA0BM,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BtR,QAA1B,IAAsC,KAAnE,EAAyE;gBAC3EhD,KAAK,CAAC2lB,QAAN,CAAe7nB,QAAf,CAAwB,KAAxB;cACH;;cACD,IAAGkC,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BsX,MAA7B,EAAoC;gBAChC5rB,KAAK,CAAC2lB,QAAN,CAAexnB,GAAf,CAAmB,QAAnB,EAA4B6B,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BsX,MAAtD;cACH;YACJ;UACJ;QACJ,CAlBD,MAkBK;UACD5rB,KAAK,CAAC2lB,QAAN,GAAiBvwB,CAAC,CAAC,MAAI4K,KAAK,CAACtE,OAAN,CAAc4Y,WAAd,CAA0BQ,WAA/B,CAAlB;QACH;MAGJ,CArGsB,CAwGvB;MACA;MACA;;;MAEA,IAAImZ,OAAO,GAAG74B,CAAC,CAAC,UAAQ4K,KAAK,CAACtE,OAAN,CAAcgX,WAAtB,GAAkC,QAAnC,CAAD,CAA8C5U,QAA9C,CAAuD,gBAAvD,CAAd;;MACAkC,KAAK,CAACiR,IAAN,CAAW/S,MAAX,CAAkB+vB,OAAlB,EA7GuB,CA+GvB;MACA;;;MAEAz4B,KAAK,CAAC04B,QAAN,CAAe,SAAf;;MACA14B,KAAK,CAAC04B,QAAN,CAAe,UAAf;;MAEAD,OAAO,CAAC9vB,GAAR,CAAY;QACR,eAAe,sBAAY;UACvB,OAAO,EAAE/I,CAAC,CAAC,IAAD,CAAD,CAAQ+qB,UAAR,CAAmB,KAAnB,IAA4B,CAA9B,IAAiC,IAAxC;QACH,CAHO;QAIR,cAAc,qBAAY;UACtB,OAAO,EAAE/qB,CAAC,CAAC,IAAD,CAAD,CAAQmI,WAAR,CAAoB,KAApB,IAA6B,CAA/B,IAAkC,IAAzC;QACH;MANO,CAAZ;;MAQA,IAAGyC,KAAK,CAACtE,OAAN,CAAcwW,UAAd,CAAyBxS,EAA5B,EAA+B;QAC3BM,KAAK,CAACiR,IAAN,CAAWnT,QAAX,CAAoB,2BAApB;MACH,CA/HsB,CAiIvB;;;MACA,IAAGkC,KAAK,CAACtE,OAAN,CAAcsgB,SAAd,IAA2B5mB,CAAC,GAAGmE,MAAJ,CAAW40B,UAAtC,IAAoD/4B,CAAC,GAAGmE,MAAJ,CAAW40B,UAAX,CAAsBnuB,KAAK,CAACtE,OAAN,CAAcsgB,SAApC,CAAvD,EAAsG;QAClG,IAAIoS,GAAG,GAAGh5B,CAAC,GAAGmE,MAAJ,CAAW40B,UAAX,CAAsBnuB,KAAK,CAACtE,OAAN,CAAcsgB,SAApC,CAAV;;QACAoS,GAAG,IAAIA,GAAG,CAACC,MAAJ,CAAW74B,KAAX,CAAP;MACH,CArIsB,CAwIvB;;;MACAJ,CAAC,CAACk5B,IAAF,CAAO;QAAC5zB,GAAG,EAAEsF,KAAK,CAACtE,OAAN,CAAcmF,MAAd,GAAqB,KAArB,GAA2Bb,KAAK,CAACtE,OAAN,CAAc6yB;MAA/C,CAAP,EACK/X,IADL,CACU,UAASgY,OAAT,EAAiB;QAEnB;QACA,IAAIC,MAAM,GAAiBr5B,CAAC,CAACo5B,OAAD,CAAD,CAAWlxB,IAAX,CAAgB,KAAhB,CAA3B;QACA0C,KAAK,CAACkI,IAAN,GAA2BumB,MAA3B;QAEAzuB,KAAK,CAACqe,UAAN,CAAiB5nB,KAAjB,GAA2Bg4B,MAAM,CAAC7wB,IAAP,CAAY,OAAZ,CAA3B;QACAoC,KAAK,CAACqe,UAAN,CAAiB3nB,MAAjB,GAA2B+3B,MAAM,CAAC7wB,IAAP,CAAY,QAAZ,CAA3B;QACAoC,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,GAA2Bue,MAAM,CAAC7wB,IAAP,CAAY,SAAZ,CAA3B;;QAEA,IAAGoC,KAAK,CAACqe,UAAN,CAAiB5nB,KAAjB,IAA0BuJ,KAAK,CAACqe,UAAN,CAAiB3nB,MAA9C,EAAqD;UACjDsJ,KAAK,CAACqe,UAAN,CAAiB5nB,KAAjB,GAA2B8D,UAAU,CAACyF,KAAK,CAACqe,UAAN,CAAiB5nB,KAAjB,CAAuBgC,OAAvB,CAA+B,KAA/B,EAAqC,EAArC,CAAD,CAArC;UACAuH,KAAK,CAACqe,UAAN,CAAiB3nB,MAAjB,GAA2B6D,UAAU,CAACyF,KAAK,CAACqe,UAAN,CAAiB3nB,MAAjB,CAAwB+B,OAAxB,CAAgC,KAAhC,EAAsC,EAAtC,CAAD,CAArC;UACAuH,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,GAA2BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,GAA2BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyBvV,KAAzB,CAA+B,GAA/B,CAA3B,GAAiE,CAAC,CAAD,EAAG,CAAH,EAAMqF,KAAK,CAACqe,UAAN,CAAiB5nB,KAAvB,EAA8BuJ,KAAK,CAACqe,UAAN,CAAiB3nB,MAA/C,CAA5F;QACH,CAJD,MAIM,IAAGsJ,KAAK,CAACqe,UAAN,CAAiBnO,OAApB,EAA4B;UAC9BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,GAA2BlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyBvV,KAAzB,CAA+B,GAA/B,CAA3B;UACAqF,KAAK,CAACqe,UAAN,CAAiB5nB,KAAjB,GAA2B8D,UAAU,CAACyF,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAD,CAArC;UACAlQ,KAAK,CAACqe,UAAN,CAAiB3nB,MAAjB,GAA2B6D,UAAU,CAACyF,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyB,CAAzB,CAAD,CAArC;QACH,CAJK,MAID;UACDqV,KAAK,CAAC,2EAAD,CAAL;UACA,OAAO,KAAP;QACH,CArBkB,CAsBnB;;;QACA,IAAImJ,GAAG,GAAiBD,MAAM,CAAC7wB,IAAP,CAAY,mBAAZ,KAAoC6wB,MAAM,CAAC7wB,IAAP,CAAY,mBAAZ,CAA5D;;QACA,IAAI8wB,GAAJ,EAAS;UACLA,GAAG,GAAGA,GAAG,CAAC/zB,KAAJ,CAAU,GAAV,CAAN;;UACA,IAAI+zB,GAAG,CAACj6B,MAAJ,IAAc,CAAlB,EAAoB;YAChBuL,KAAK,CAAC8P,QAAN,GAAiB,IAAjB;YACA9P,KAAK,CAACguB,cAAN,GAAuB,IAAvB;YAEAhuB,KAAK,CAACukB,UAAN,GAAmB;cAACE,OAAO,EAAElqB,UAAU,CAACm0B,GAAG,CAAC,CAAD,CAAJ,CAApB;cACf/J,MAAM,EAAEpqB,UAAU,CAACm0B,GAAG,CAAC,CAAD,CAAJ,CADH;cAEf9J,QAAQ,EAAErqB,UAAU,CAACm0B,GAAG,CAAC,CAAD,CAAJ,CAFL;cAGflK,SAAS,EAAEjqB,UAAU,CAACm0B,GAAG,CAAC,CAAD,CAAJ;YAHN,CAAnB;YAKA1uB,KAAK,CAAC8f,WAAN,GAAoB9f,KAAK,CAACukB,UAAN,CAAiBK,QAAjB,GAA4B5kB,KAAK,CAACukB,UAAN,CAAiBE,OAAjE;YACAzkB,KAAK,CAAC+qB,kBAAN,GAA2B/qB,KAAK,CAACukB,UAAN,CAAiBC,SAAjB,GAA6B,OAA7B,GAAuC,GAAlE;UAEH;QAEJ;;QAEDpvB,CAAC,CAACqV,IAAF,CAAOzK,KAAK,CAACqe,UAAN,CAAiBnO,OAAxB,EAAiC,UAASvb,CAAT,EAAWwpB,CAAX,EAAa;UAC1Cne,KAAK,CAACqe,UAAN,CAAiBnO,OAAjB,CAAyBvb,CAAzB,IAA8B4F,UAAU,CAAC4jB,CAAD,CAAxC;QACH,CAFD;QAIAne,KAAK,CAACoY,QAAN,GAAmBpY,KAAK,CAACtE,OAAN,CAAcwU,OAAd,CAAsBzb,MAAtB,IAA8B,CAA9B,IAAmCuL,KAAK,CAACtE,OAAN,CAAcwU,OAAlD,IAA+DlQ,KAAK,CAACqe,UAAN,CAAiBnO,OAAlG;QAEA9a,CAAC,CAACqV,IAAF,CAAOzK,KAAK,CAACoY,QAAb,EAAuB,UAASzjB,CAAT,EAAWwpB,CAAX,EAAa;UAChCne,KAAK,CAACoY,QAAN,CAAezjB,CAAf,IAAoB4F,UAAU,CAAC4jB,CAAD,CAA9B;QACH,CAFD;QAIAsQ,MAAM,CAAC7wB,IAAP,CAAY,qBAAZ,EAAkC,eAAlC;QACA6wB,MAAM,CAACE,UAAP,CAAkB,OAAlB;QACAF,MAAM,CAACE,UAAP,CAAkB,QAAlB,EAtDmB,CAwDnB;QACA;QACA;;QAEAn5B,KAAK,CAACo5B,aAAN;;QAEA5uB,KAAK,CAACof,WAAN,CAAkBlhB,MAAlB,CAAyBuwB,MAAzB,EA9DmB,CAiEnB;;;QACAj5B,KAAK,CAAC8wB,OAAN,CAActmB,KAAK,CAACtE,OAAN,CAAcjF,KAA5B,EAAmCuJ,KAAK,CAACtE,OAAN,CAAchF,MAAjD,EAAyDsJ,KAAK,CAACtE,OAAN,CAAc+X,UAAvE;;QAGA,IAAGzT,KAAK,CAACtE,OAAN,CAAcmT,UAAjB,EAA4B;UACxBrZ,KAAK,CAACq5B,aAAN,CAAoB,IAApB;QACH,CAvEkB,CA2EnB;;;QACAr5B,KAAK,CAAC6iB,UAAN,CAAiBrY,KAAK,CAACoY,QAAvB;;QACA5iB,KAAK,CAACuqB,aAAN,CAAoB/f,KAAK,CAACtE,OAAN,CAAc+X,UAAlC,EAA6C,IAA7C,EA7EmB,CA+EnB;;;QACAje,KAAK,CAACi4B,QAAN,GAhFmB,CAkFnB;QACA;;;QACA,IAAI5a,OAAO,GAAG7S,KAAK,CAACtE,OAAN,CAAcmX,OAAd,IAAyB7S,KAAK,CAACtE,OAAN,CAAcozB,KAAvC,IAAgD,EAA9D;;QACAt5B,KAAK,CAACu5B,UAAN,CAAiBlc,OAAjB;;QAEArd,KAAK,CAAC0B,SAAN,CAAgB8I,KAAK,CAACtE,OAAN,CAAc6X,MAA9B,EAAsC,IAAtC;;QAEA/d,KAAK,CAACgjB,OAAN,CAAcxY,KAAK,CAACtE,OAAN,CAAcgG,IAA5B;;QACAlM,KAAK,CAACitB,aAAN,GA1FmB,CA4FnB;QAGA;QACA;;;QACA,IAAIziB,KAAK,CAACtE,OAAN,CAAcszB,YAAlB,EACIhvB,KAAK,CAACtE,OAAN,CAAcgY,QAAd,CAAuBC,IAAvB,GAA8B3T,KAAK,CAACtE,OAAN,CAAcszB,YAA5C;;QACJx5B,KAAK,CAACy5B,WAAN,CAAkBjvB,KAAK,CAACtE,OAAN,CAAcgY,QAAhC,EAnGmB,CAqGnB;QACA;;;QACA,IAAI1T,KAAK,CAACtE,OAAN,CAAcmO,OAAlB,EACI7J,KAAK,CAACtE,OAAN,CAAcmY,QAAd,GAAyB7T,KAAK,CAACtE,OAAN,CAAcmO,OAAvC;;QACJrU,KAAK,CAAC05B,WAAN,CAAkBlvB,KAAK,CAACtE,OAAN,CAAcmY,QAAhC;;QAEA,IAAG7T,KAAK,CAACtE,OAAN,CAAcoX,MAAjB,EACItd,KAAK,CAAC25B,SAAN,CAAgBnvB,KAAK,CAACtE,OAAN,CAAcoX,MAA9B;QAGJ1d,CAAC,CAACU,QAAD,CAAD,CAAYs5B,KAAZ,CAAkB,YAAU;UACxB55B,KAAK,CAAC65B,OAAN;;UACA75B,KAAK,CAAC85B,cAAN;QAEH,CAJD;QAMA;;QAEA95B,KAAK,CAAC+I,gBAAN;;QAGA0vB,OAAO,CAAC1W,IAAR;QAGAla,UAAU,CAAC,YAAU;UACjB7H,KAAK,CAAC6pB,UAAN;;UACAhiB,UAAU,CAAC,YAAW;YAClB2C,KAAK,CAACiR,IAAN,CAAWnN,WAAX,CAAuB,gBAAvB;UACH,CAFS,EAER,GAFQ,CAAV;QAGH,CALS,EAKR,GALQ,CAAV,CA7HmB,CAoInB;;QACA,IAAIyrB,KAAK,GAAGC,MAAM,CAAC,2BAAD,CAAN,CAAoCC,IAApC,CAAyC17B,MAAM,CAACiP,QAAP,CAAgB7H,MAAzD,CAAZ,EAA6E;UACzE,IAAIgT,MAAM,GAAGuhB,kBAAkB,CAACH,KAAK,CAAC,CAAD,CAAL,CAAS92B,OAAT,CAAiB,KAAjB,EAAwB,GAAxB,CAAD,CAA/B;;UACAjD,KAAK,CAACyM,YAAN,CAAmBkM,MAAnB;QACH;;QAID,IAAGnO,KAAK,CAACtE,OAAN,CAAcwX,SAAjB,EAA2B;UACvBlT,KAAK,CAACtE,OAAN,CAAcwX,SAAd,CAAwB1U,IAAxB,CAA6BhJ,KAA7B;QACH;MAER,CAjJD,EAzIuB,CA0RpB;;MAEH,OAAOA,KAAP;IAEH,CA9zGL,kBAJ4B,CAo0GzB;;IAEH,IAAIA,KAAK,GAAG,KAAK4gB,OAAjB;EAIH,CA10GD,CAp8BW,CA8wIR;;EAGH;;;EACAhhB,CAAC,CAAC0kB,EAAF,CAAKvgB,MAAL,GAAc,UAAUqV,IAAV,EAAiB;IAE3B,IAAI1N,EAAE,GAAG9L,CAAC,CAAC,IAAD,CAAD,CAAQwI,IAAR,CAAa,IAAb,CAAT;;IAEA,IAAG,QAAOgR,IAAP,KAAe,QAAf,IAA2BkD,SAAS,CAAC5Q,EAAD,CAAT,KAAkB9G,SAAhD,EAA0D;MACtD0X,SAAS,CAAC5Q,EAAD,CAAT,GAAgB,IAAIgG,MAAJ,CAAW,IAAX,EAAiB0H,IAAjB,CAAhB;MACA,OAAOkD,SAAS,CAAC5Q,EAAD,CAAT,CAAckV,OAAd,CAAsB3Y,IAAtB,CAA2BmR,IAA3B,EAAiC,IAAjC,CAAP;IACH,CAHD,MAGM,IAAGkD,SAAS,CAAC5Q,EAAD,CAAZ,EAAiB;MACnB,OAAO4Q,SAAS,CAAC5Q,EAAD,CAAT,CAAckV,OAArB;IACH,CAFK,MAED;MACD,OAAOtE,SAAP;IACH;EAIJ,CAfD,CAlxIW,CAiyIR;;AAEN,CAnyID,EAmyIIzY,MAnyIJ,GAsyIA;AACA;AACA;AACA;;;AAEA,CAAC,UAAS/E,IAAT,EAAe;EAEZ,IAAIq7B,QAAQ,GAAG,MAAf;EAAA,IACIC,SAAS,GAAG,MADhB;EAAA,IAEIC,WAAW,GAAG,CAFlB;EAAA,IAGIC,SAAS,GAAGx7B,IAAI,CAACgZ,KAHrB;EAAA,IAIIyiB,OAAO,GAAGz7B,IAAI,CAAC6Y,GAJnB;EAAA,IAKI6iB,OAAO,GAAG17B,IAAI,CAACsgB,GALnB;EAAA,IAMIqb,UAAU,GAAG37B,IAAI,CAAC4R,MANtB;;EAQA,SAAS6H,SAAT,CAAoBxR,KAApB,EAA2BqS,IAA3B,EAAiC;IAE7BrS,KAAK,GAAIA,KAAD,GAAUA,KAAV,GAAkB,EAA1B;IACAqS,IAAI,GAAGA,IAAI,IAAI,EAAf,CAH6B,CAK7B;;IACA,IAAIrS,KAAK,YAAYwR,SAArB,EAAgC;MAC5B,OAAOxR,KAAP;IACH,CAR4B,CAS7B;;;IACA,IAAI,EAAE,gBAAgBwR,SAAlB,CAAJ,EAAkC;MAC9B,OAAO,IAAIA,SAAJ,CAAcxR,KAAd,EAAqBqS,IAArB,CAAP;IACH;;IAED,IAAIf,GAAG,GAAGqiB,UAAU,CAAC3zB,KAAD,CAApB;IACA,KAAK4zB,cAAL,GAAsB5zB,KAAtB,EACI,KAAK6zB,EAAL,GAAUviB,GAAG,CAACR,CADlB,EAEI,KAAKgjB,EAAL,GAAUxiB,GAAG,CAACJ,CAFlB,EAGI,KAAK6iB,EAAL,GAAUziB,GAAG,CAACH,CAHlB,EAII,KAAK6iB,EAAL,GAAU1iB,GAAG,CAACF,CAJlB,EAKI,KAAK6iB,OAAL,GAAeV,SAAS,CAAC,MAAI,KAAKS,EAAV,CAAT,GAAyB,GAL5C,EAMI,KAAKE,OAAL,GAAe7hB,IAAI,CAAC8hB,MAAL,IAAe7iB,GAAG,CAAC6iB,MANtC;IAOA,KAAKC,aAAL,GAAqB/hB,IAAI,CAACgiB,YAA1B,CAtB6B,CAwB7B;IACA;IACA;IACA;;IACA,IAAI,KAAKR,EAAL,GAAU,CAAd,EAAiB;MAAE,KAAKA,EAAL,GAAUN,SAAS,CAAC,KAAKM,EAAN,CAAnB;IAA+B;;IAClD,IAAI,KAAKC,EAAL,GAAU,CAAd,EAAiB;MAAE,KAAKA,EAAL,GAAUP,SAAS,CAAC,KAAKO,EAAN,CAAnB;IAA+B;;IAClD,IAAI,KAAKC,EAAL,GAAU,CAAd,EAAiB;MAAE,KAAKA,EAAL,GAAUR,SAAS,CAAC,KAAKQ,EAAN,CAAnB;IAA+B;;IAElD,KAAKO,GAAL,GAAWhjB,GAAG,CAACijB,EAAf;IACA,KAAKC,MAAL,GAAclB,WAAW,EAAzB;EACH;;EAED9hB,SAAS,CAAC7Z,SAAV,GAAsB;IAClB88B,MAAM,EAAE,kBAAW;MACf,OAAO,KAAKC,aAAL,KAAuB,GAA9B;IACH,CAHiB;IAIlBC,OAAO,EAAE,mBAAW;MAChB,OAAO,CAAC,KAAKF,MAAL,EAAR;IACH,CANiB;IAOlBG,OAAO,EAAE,mBAAW;MAChB,OAAO,KAAKN,GAAZ;IACH,CATiB;IAUlBO,gBAAgB,EAAE,4BAAW;MACzB,OAAO,KAAKjB,cAAZ;IACH,CAZiB;IAalBkB,SAAS,EAAE,qBAAW;MAClB,OAAO,KAAKZ,OAAZ;IACH,CAfiB;IAgBlBa,QAAQ,EAAE,oBAAW;MACjB,OAAO,KAAKf,EAAZ;IACH,CAlBiB;IAmBlBU,aAAa,EAAE,yBAAW;MACtB;MACA,IAAIpjB,GAAG,GAAG,KAAKkU,KAAL,EAAV;MACA,OAAO,CAAClU,GAAG,CAACR,CAAJ,GAAQ,GAAR,GAAcQ,GAAG,CAACJ,CAAJ,GAAQ,GAAtB,GAA4BI,GAAG,CAACH,CAAJ,GAAQ,GAArC,IAA4C,IAAnD;IACH,CAvBiB;IAwBlB6jB,YAAY,EAAE,wBAAW;MACrB;MACA,IAAI1jB,GAAG,GAAG,KAAKkU,KAAL,EAAV;MACA,IAAIyP,KAAJ,EAAWC,KAAX,EAAkBC,KAAlB,EAAyBC,CAAzB,EAA4BC,CAA5B,EAA+BC,CAA/B;MACAL,KAAK,GAAG3jB,GAAG,CAACR,CAAJ,GAAM,GAAd;MACAokB,KAAK,GAAG5jB,GAAG,CAACJ,CAAJ,GAAM,GAAd;MACAikB,KAAK,GAAG7jB,GAAG,CAACH,CAAJ,GAAM,GAAd;;MAEA,IAAI8jB,KAAK,IAAI,OAAb,EAAsB;QAACG,CAAC,GAAGH,KAAK,GAAG,KAAZ;MAAmB,CAA1C,MAAgD;QAACG,CAAC,GAAGr9B,IAAI,CAACw9B,GAAL,CAAU,CAACN,KAAK,GAAG,KAAT,IAAkB,KAA5B,EAAoC,GAApC,CAAJ;MAA8C;;MAC/F,IAAIC,KAAK,IAAI,OAAb,EAAsB;QAACG,CAAC,GAAGH,KAAK,GAAG,KAAZ;MAAmB,CAA1C,MAAgD;QAACG,CAAC,GAAGt9B,IAAI,CAACw9B,GAAL,CAAU,CAACL,KAAK,GAAG,KAAT,IAAkB,KAA5B,EAAoC,GAApC,CAAJ;MAA8C;;MAC/F,IAAIC,KAAK,IAAI,OAAb,EAAsB;QAACG,CAAC,GAAGH,KAAK,GAAG,KAAZ;MAAmB,CAA1C,MAAgD;QAACG,CAAC,GAAGv9B,IAAI,CAACw9B,GAAL,CAAU,CAACJ,KAAK,GAAG,KAAT,IAAkB,KAA5B,EAAoC,GAApC,CAAJ;MAA8C;;MAC/F,OAAQ,SAASC,CAAV,GAAgB,SAASC,CAAzB,GAA+B,SAASC,CAA/C;IACH,CApCiB;IAqClBE,QAAQ,EAAE,kBAASlb,KAAT,EAAgB;MACtB,KAAK0Z,EAAL,GAAUyB,UAAU,CAACnb,KAAD,CAApB;MACA,KAAK2Z,OAAL,GAAeV,SAAS,CAAC,MAAI,KAAKS,EAAV,CAAT,GAAyB,GAAxC;MACA,OAAO,IAAP;IACH,CAzCiB;IA0ClB0B,KAAK,EAAE,iBAAW;MACd,IAAIC,GAAG,GAAGC,QAAQ,CAAC,KAAK/B,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,CAAlB;MACA,OAAO;QAAEpnB,CAAC,EAAEgpB,GAAG,CAAChpB,CAAJ,GAAQ,GAAb;QAAkB5N,CAAC,EAAE42B,GAAG,CAAC52B,CAAzB;QAA4B6iB,CAAC,EAAE+T,GAAG,CAAC/T,CAAnC;QAAsCxQ,CAAC,EAAE,KAAK4iB;MAA9C,CAAP;IACH,CA7CiB;IA8ClB6B,WAAW,EAAE,uBAAW;MACpB,IAAIF,GAAG,GAAGC,QAAQ,CAAC,KAAK/B,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,CAAlB;MACA,IAAIpnB,CAAC,GAAG4mB,SAAS,CAACoC,GAAG,CAAChpB,CAAJ,GAAQ,GAAT,CAAjB;MAAA,IAAgC5N,CAAC,GAAGw0B,SAAS,CAACoC,GAAG,CAAC52B,CAAJ,GAAQ,GAAT,CAA7C;MAAA,IAA4D6iB,CAAC,GAAG2R,SAAS,CAACoC,GAAG,CAAC/T,CAAJ,GAAQ,GAAT,CAAzE;MACA,OAAQ,KAAKoS,EAAL,IAAW,CAAZ,GACP,SAAUrnB,CAAV,GAAc,IAAd,GAAqB5N,CAArB,GAAyB,KAAzB,GAAiC6iB,CAAjC,GAAqC,IAD9B,GAEP,UAAUjV,CAAV,GAAc,IAAd,GAAqB5N,CAArB,GAAyB,KAAzB,GAAiC6iB,CAAjC,GAAqC,KAArC,GAA4C,KAAKqS,OAAjD,GAA2D,GAF3D;IAGH,CApDiB;IAqDlB6B,KAAK,EAAE,iBAAW;MACd,IAAIC,GAAG,GAAGC,QAAQ,CAAC,KAAKnC,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,CAAlB;MACA,OAAO;QAAEpnB,CAAC,EAAEopB,GAAG,CAACppB,CAAJ,GAAQ,GAAb;QAAkB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAAzB;QAA4Bk3B,CAAC,EAAEF,GAAG,CAACE,CAAnC;QAAsC7kB,CAAC,EAAE,KAAK4iB;MAA9C,CAAP;IACH,CAxDiB;IAyDlBkC,WAAW,EAAE,uBAAW;MACpB,IAAIH,GAAG,GAAGC,QAAQ,CAAC,KAAKnC,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,CAAlB;MACA,IAAIpnB,CAAC,GAAG4mB,SAAS,CAACwC,GAAG,CAACppB,CAAJ,GAAQ,GAAT,CAAjB;MAAA,IAAgC5N,CAAC,GAAGw0B,SAAS,CAACwC,GAAG,CAACh3B,CAAJ,GAAQ,GAAT,CAA7C;MAAA,IAA4Dk3B,CAAC,GAAG1C,SAAS,CAACwC,GAAG,CAACE,CAAJ,GAAQ,GAAT,CAAzE;MACA,OAAQ,KAAKjC,EAAL,IAAW,CAAZ,GACP,SAAUrnB,CAAV,GAAc,IAAd,GAAqB5N,CAArB,GAAyB,KAAzB,GAAiCk3B,CAAjC,GAAqC,IAD9B,GAEP,UAAUtpB,CAAV,GAAc,IAAd,GAAqB5N,CAArB,GAAyB,KAAzB,GAAiCk3B,CAAjC,GAAqC,KAArC,GAA4C,KAAKhC,OAAjD,GAA2D,GAF3D;IAGH,CA/DiB;IAgElBkC,KAAK,EAAE,eAASC,UAAT,EAAqB;MACxB,OAAOC,QAAQ,CAAC,KAAKxC,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,EAA4BqC,UAA5B,CAAf;IACH,CAlEiB;IAmElBE,WAAW,EAAE,qBAASF,UAAT,EAAqB;MAC9B,OAAO,MAAM,KAAKD,KAAL,CAAWC,UAAX,CAAb;IACH,CArEiB;IAsElBG,MAAM,EAAE,kBAAW;MACf,OAAOC,SAAS,CAAC,KAAK3C,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,EAA4B,KAAKC,EAAjC,CAAhB;IACH,CAxEiB;IAyElByC,YAAY,EAAE,wBAAW;MACrB,OAAO,MAAM,KAAKF,MAAL,EAAb;IACH,CA3EiB;IA4ElB/Q,KAAK,EAAE,iBAAW;MACd,OAAO;QAAE1U,CAAC,EAAEyiB,SAAS,CAAC,KAAKM,EAAN,CAAd;QAAyB3iB,CAAC,EAAEqiB,SAAS,CAAC,KAAKO,EAAN,CAArC;QAAgD3iB,CAAC,EAAEoiB,SAAS,CAAC,KAAKQ,EAAN,CAA5D;QAAuE3iB,CAAC,EAAE,KAAK4iB;MAA/E,CAAP;IACH,CA9EiB;IA+ElBtiB,WAAW,EAAE,uBAAW;MACpB,OAAQ,KAAKsiB,EAAL,IAAW,CAAZ,GACP,SAAUT,SAAS,CAAC,KAAKM,EAAN,CAAnB,GAA+B,IAA/B,GAAsCN,SAAS,CAAC,KAAKO,EAAN,CAA/C,GAA2D,IAA3D,GAAkEP,SAAS,CAAC,KAAKQ,EAAN,CAA3E,GAAuF,GADhF,GAEP,UAAUR,SAAS,CAAC,KAAKM,EAAN,CAAnB,GAA+B,IAA/B,GAAsCN,SAAS,CAAC,KAAKO,EAAN,CAA/C,GAA2D,IAA3D,GAAkEP,SAAS,CAAC,KAAKQ,EAAN,CAA3E,GAAuF,IAAvF,GAA8F,KAAKE,OAAnG,GAA6G,GAF7G;IAGH,CAnFiB;IAoFlByC,eAAe,EAAE,2BAAW;MACxB,OAAO;QAAE5lB,CAAC,EAAEyiB,SAAS,CAACoD,OAAO,CAAC,KAAK9C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAAT,GAAyC,GAA9C;QAAmD3iB,CAAC,EAAEqiB,SAAS,CAACoD,OAAO,CAAC,KAAK7C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAAT,GAAyC,GAA/F;QAAoG3iB,CAAC,EAAEoiB,SAAS,CAACoD,OAAO,CAAC,KAAK5C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAAT,GAAyC,GAAhJ;QAAqJ3iB,CAAC,EAAE,KAAK4iB;MAA7J,CAAP;IACH,CAtFiB;IAuFlB4C,qBAAqB,EAAE,iCAAW;MAC9B,OAAQ,KAAK5C,EAAL,IAAW,CAAZ,GACP,SAAUT,SAAS,CAACoD,OAAO,CAAC,KAAK9C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAAnB,GAAmD,KAAnD,GAA2DN,SAAS,CAACoD,OAAO,CAAC,KAAK7C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAApE,GAAoG,KAApG,GAA4GP,SAAS,CAACoD,OAAO,CAAC,KAAK5C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAArH,GAAqJ,IAD9I,GAEP,UAAUR,SAAS,CAACoD,OAAO,CAAC,KAAK9C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAAnB,GAAmD,KAAnD,GAA2DN,SAAS,CAACoD,OAAO,CAAC,KAAK7C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAApE,GAAoG,KAApG,GAA4GP,SAAS,CAACoD,OAAO,CAAC,KAAK5C,EAAN,EAAU,GAAV,CAAP,GAAwB,GAAzB,CAArH,GAAqJ,KAArJ,GAA6J,KAAKE,OAAlK,GAA4K,GAF5K;IAGH,CA3FiB;IA4FlB4C,MAAM,EAAE,kBAAW;MACf,IAAI,KAAK7C,EAAL,KAAY,CAAhB,EAAmB;QACf,OAAO,aAAP;MACH;;MAED,IAAI,KAAKA,EAAL,GAAU,CAAd,EAAiB;QACb,OAAO,KAAP;MACH;;MAED,OAAO8C,QAAQ,CAACT,QAAQ,CAAC,KAAKxC,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,EAA4B,IAA5B,CAAT,CAAR,IAAuD,KAA9D;IACH,CAtGiB;IAuGlBgD,QAAQ,EAAE,kBAASC,WAAT,EAAsB;MAC5B,IAAIC,UAAU,GAAG,MAAMT,SAAS,CAAC,KAAK3C,EAAN,EAAU,KAAKC,EAAf,EAAmB,KAAKC,EAAxB,EAA4B,KAAKC,EAAjC,CAAhC;MACA,IAAIkD,gBAAgB,GAAGD,UAAvB;MACA,IAAI5C,YAAY,GAAG,KAAKD,aAAL,GAAqB,oBAArB,GAA4C,EAA/D;;MAEA,IAAI4C,WAAJ,EAAiB;QACb,IAAIj4B,CAAC,GAAGyS,SAAS,CAACwlB,WAAD,CAAjB;QACAE,gBAAgB,GAAGn4B,CAAC,CAAC03B,YAAF,EAAnB;MACH;;MAED,OAAO,gDAA8CpC,YAA9C,GAA2D,gBAA3D,GAA4E4C,UAA5E,GAAuF,eAAvF,GAAuGC,gBAAvG,GAAwH,GAA/H;IACH,CAlHiB;IAmHlBp4B,QAAQ,EAAE,kBAASq1B,MAAT,EAAiB;MACvB,IAAIgD,SAAS,GAAG,CAAC,CAAChD,MAAlB;MACAA,MAAM,GAAGA,MAAM,IAAI,KAAKD,OAAxB;MAEA,IAAIkD,eAAe,GAAG,KAAtB;MACA,IAAIC,QAAQ,GAAG,KAAKrD,EAAL,GAAU,CAAV,IAAe,KAAKA,EAAL,IAAW,CAAzC;MACA,IAAIsD,gBAAgB,GAAG,CAACH,SAAD,IAAcE,QAAd,KAA2BlD,MAAM,KAAK,KAAX,IAAoBA,MAAM,KAAK,MAA/B,IAAyCA,MAAM,KAAK,MAApD,IAA8DA,MAAM,KAAK,MAApG,CAAvB;;MAEA,IAAImD,gBAAJ,EAAsB;QAClB;QACA;QACA,IAAInD,MAAM,KAAK,MAAX,IAAqB,KAAKH,EAAL,KAAY,CAArC,EAAwC;UACpC,OAAO,KAAK6C,MAAL,EAAP;QACH;;QACD,OAAO,KAAKnlB,WAAL,EAAP;MACH;;MACD,IAAIyiB,MAAM,KAAK,KAAf,EAAsB;QAClBiD,eAAe,GAAG,KAAK1lB,WAAL,EAAlB;MACH;;MACD,IAAIyiB,MAAM,KAAK,MAAf,EAAuB;QACnBiD,eAAe,GAAG,KAAKR,qBAAL,EAAlB;MACH;;MACD,IAAIzC,MAAM,KAAK,KAAX,IAAoBA,MAAM,KAAK,MAAnC,EAA2C;QACvCiD,eAAe,GAAG,KAAKd,WAAL,EAAlB;MACH;;MACD,IAAInC,MAAM,KAAK,MAAf,EAAuB;QACnBiD,eAAe,GAAG,KAAKd,WAAL,CAAiB,IAAjB,CAAlB;MACH;;MACD,IAAInC,MAAM,KAAK,MAAf,EAAuB;QACnBiD,eAAe,GAAG,KAAKX,YAAL,EAAlB;MACH;;MACD,IAAItC,MAAM,KAAK,MAAf,EAAuB;QACnBiD,eAAe,GAAG,KAAKP,MAAL,EAAlB;MACH;;MACD,IAAI1C,MAAM,KAAK,KAAf,EAAsB;QAClBiD,eAAe,GAAG,KAAKlB,WAAL,EAAlB;MACH;;MACD,IAAI/B,MAAM,KAAK,KAAf,EAAsB;QAClBiD,eAAe,GAAG,KAAKvB,WAAL,EAAlB;MACH;;MAED,OAAOuB,eAAe,IAAI,KAAKd,WAAL,EAA1B;IACH,CA7JiB;IA8JlB3mB,KAAK,EAAE,iBAAW;MACd,OAAO6B,SAAS,CAAC,KAAK1S,QAAL,EAAD,CAAhB;IACH,CAhKiB;IAkKlBy4B,kBAAkB,EAAE,4BAASha,EAAT,EAAaia,IAAb,EAAmB;MACnC,IAAIx3B,KAAK,GAAGud,EAAE,CAACmI,KAAH,CAAS,IAAT,EAAe,CAAC,IAAD,EAAO+R,MAAP,CAAc,GAAG95B,KAAH,CAASsE,IAAT,CAAcu1B,IAAd,CAAd,CAAf,CAAZ;MACA,KAAK3D,EAAL,GAAU7zB,KAAK,CAAC6zB,EAAhB;MACA,KAAKC,EAAL,GAAU9zB,KAAK,CAAC8zB,EAAhB;MACA,KAAKC,EAAL,GAAU/zB,KAAK,CAAC+zB,EAAhB;MACA,KAAKyB,QAAL,CAAcx1B,KAAK,CAACg0B,EAApB;MACA,OAAO,IAAP;IACH,CAzKiB;IA0KlBviB,OAAO,EAAE,mBAAW;MAChB,OAAO,KAAK8lB,kBAAL,CAAwB9lB,QAAxB,EAAiCtZ,SAAjC,CAAP;IACH,CA5KiB;IA6KlBu/B,QAAQ,EAAE,oBAAW;MACjB,OAAO,KAAKH,kBAAL,CAAwBG,SAAxB,EAAkCv/B,SAAlC,CAAP;IACH,CA/KiB;IAgLlBw/B,MAAM,EAAE,kBAAW;MACf,OAAO,KAAKJ,kBAAL,CAAwBI,OAAxB,EAAgCx/B,SAAhC,CAAP;IACH,CAlLiB;IAmLlBy/B,UAAU,EAAE,sBAAW;MACnB,OAAO,KAAKL,kBAAL,CAAwBK,WAAxB,EAAoCz/B,SAApC,CAAP;IACH,CArLiB;IAsLlB0/B,QAAQ,EAAE,oBAAW;MACjB,OAAO,KAAKN,kBAAL,CAAwBM,SAAxB,EAAkC1/B,SAAlC,CAAP;IACH,CAxLiB;IAyLlB2/B,SAAS,EAAE,qBAAW;MAClB,OAAO,KAAKP,kBAAL,CAAwBO,UAAxB,EAAmC3/B,SAAnC,CAAP;IACH,CA3LiB;IA4LlB4/B,IAAI,EAAE,gBAAW;MACb,OAAO,KAAKR,kBAAL,CAAwBQ,KAAxB,EAA8B5/B,SAA9B,CAAP;IACH,CA9LiB;IAgMlB6/B,iBAAiB,EAAE,2BAASza,EAAT,EAAaia,IAAb,EAAmB;MAClC,OAAOja,EAAE,CAACmI,KAAH,CAAS,IAAT,EAAe,CAAC,IAAD,EAAO+R,MAAP,CAAc,GAAG95B,KAAH,CAASsE,IAAT,CAAcu1B,IAAd,CAAd,CAAf,CAAP;IACH,CAlMiB;IAmMlBS,SAAS,EAAE,qBAAW;MAClB,OAAO,KAAKD,iBAAL,CAAuBC,UAAvB,EAAkC9/B,SAAlC,CAAP;IACH,CArMiB;IAsMlB+/B,UAAU,EAAE,sBAAW;MACnB,OAAO,KAAKF,iBAAL,CAAuBE,WAAvB,EAAmC//B,SAAnC,CAAP;IACH,CAxMiB;IAyMlBggC,aAAa,EAAE,yBAAW;MACtB,OAAO,KAAKH,iBAAL,CAAuBG,cAAvB,EAAsChgC,SAAtC,CAAP;IACH,CA3MiB;IA4MlBigC,eAAe,EAAE,2BAAW;MACxB,OAAO,KAAKJ,iBAAL,CAAuBI,gBAAvB,EAAwCjgC,SAAxC,CAAP;IACH,CA9MiB;IA+MlBkgC,KAAK,EAAE,iBAAW;MACd,OAAO,KAAKL,iBAAL,CAAuBK,MAAvB,EAA8BlgC,SAA9B,CAAP;IACH,CAjNiB;IAkNlBmgC,MAAM,EAAE,kBAAW;MACf,OAAO,KAAKN,iBAAL,CAAuBM,OAAvB,EAA+BngC,SAA/B,CAAP;IACH;EApNiB,CAAtB,CA9CY,CAqQhB;EACA;;EACIqZ,SAAS,CAAC+mB,SAAV,GAAsB,UAASv4B,KAAT,EAAgBqS,IAAhB,EAAsB;IACxC,IAAI,QAAOrS,KAAP,KAAgB,QAApB,EAA8B;MAC1B,IAAIw4B,QAAQ,GAAG,EAAf;;MACA,KAAK,IAAIpgC,CAAT,IAAc4H,KAAd,EAAqB;QACjB,IAAIA,KAAK,CAACtB,cAAN,CAAqBtG,CAArB,CAAJ,EAA6B;UACzB,IAAIA,CAAC,KAAK,GAAV,EAAe;YACXogC,QAAQ,CAACpgC,CAAD,CAAR,GAAc4H,KAAK,CAAC5H,CAAD,CAAnB;UACH,CAFD,MAGK;YACDogC,QAAQ,CAACpgC,CAAD,CAAR,GAAcqgC,mBAAmB,CAACz4B,KAAK,CAAC5H,CAAD,CAAN,CAAjC;UACH;QACJ;MACJ;;MACD4H,KAAK,GAAGw4B,QAAR;IACH;;IAED,OAAOhnB,SAAS,CAACxR,KAAD,EAAQqS,IAAR,CAAhB;EACH,CAjBD,CAvQY,CA0RhB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACI,SAASshB,UAAT,CAAoB3zB,KAApB,EAA2B;IAEvB,IAAIsR,GAAG,GAAG;MAAER,CAAC,EAAE,CAAL;MAAQI,CAAC,EAAE,CAAX;MAAcC,CAAC,EAAE;IAAjB,CAAV;IACA,IAAIC,CAAC,GAAG,CAAR;IACA,IAAImjB,EAAE,GAAG,KAAT;IACA,IAAIJ,MAAM,GAAG,KAAb;;IAEA,IAAI,OAAOn0B,KAAP,IAAgB,QAApB,EAA8B;MAC1BA,KAAK,GAAG04B,mBAAmB,CAAC14B,KAAD,CAA3B;IACH;;IAED,IAAI,QAAOA,KAAP,KAAgB,QAApB,EAA8B;MAC1B,IAAI24B,cAAc,CAAC34B,KAAK,CAAC8Q,CAAP,CAAd,IAA2B6nB,cAAc,CAAC34B,KAAK,CAACkR,CAAP,CAAzC,IAAsDynB,cAAc,CAAC34B,KAAK,CAACmR,CAAP,CAAxE,EAAmF;QAC/EG,GAAG,GAAGsnB,QAAQ,CAAC54B,KAAK,CAAC8Q,CAAP,EAAU9Q,KAAK,CAACkR,CAAhB,EAAmBlR,KAAK,CAACmR,CAAzB,CAAd;QACAojB,EAAE,GAAG,IAAL;QACAJ,MAAM,GAAGn4B,MAAM,CAACgE,KAAK,CAAC8Q,CAAP,CAAN,CAAgBpD,MAAhB,CAAuB,CAAC,CAAxB,MAA+B,GAA/B,GAAqC,MAArC,GAA8C,KAAvD;MACH,CAJD,MAKK,IAAIirB,cAAc,CAAC34B,KAAK,CAAC2M,CAAP,CAAd,IAA2BgsB,cAAc,CAAC34B,KAAK,CAACjB,CAAP,CAAzC,IAAsD45B,cAAc,CAAC34B,KAAK,CAAC4hB,CAAP,CAAxE,EAAmF;QACpF5hB,KAAK,CAACjB,CAAN,GAAU05B,mBAAmB,CAACz4B,KAAK,CAACjB,CAAP,CAA7B;QACAiB,KAAK,CAAC4hB,CAAN,GAAU6W,mBAAmB,CAACz4B,KAAK,CAAC4hB,CAAP,CAA7B;QACAtQ,GAAG,GAAGunB,QAAQ,CAAC74B,KAAK,CAAC2M,CAAP,EAAU3M,KAAK,CAACjB,CAAhB,EAAmBiB,KAAK,CAAC4hB,CAAzB,CAAd;QACA2S,EAAE,GAAG,IAAL;QACAJ,MAAM,GAAG,KAAT;MACH,CANI,MAOA,IAAIwE,cAAc,CAAC34B,KAAK,CAAC2M,CAAP,CAAd,IAA2BgsB,cAAc,CAAC34B,KAAK,CAACjB,CAAP,CAAzC,IAAsD45B,cAAc,CAAC34B,KAAK,CAACi2B,CAAP,CAAxE,EAAmF;QACpFj2B,KAAK,CAACjB,CAAN,GAAU05B,mBAAmB,CAACz4B,KAAK,CAACjB,CAAP,CAA7B;QACAiB,KAAK,CAACi2B,CAAN,GAAUwC,mBAAmB,CAACz4B,KAAK,CAACi2B,CAAP,CAA7B;QACA3kB,GAAG,GAAGwnB,QAAQ,CAAC94B,KAAK,CAAC2M,CAAP,EAAU3M,KAAK,CAACjB,CAAhB,EAAmBiB,KAAK,CAACi2B,CAAzB,CAAd;QACA1B,EAAE,GAAG,IAAL;QACAJ,MAAM,GAAG,KAAT;MACH;;MAED,IAAIn0B,KAAK,CAACtB,cAAN,CAAqB,GAArB,CAAJ,EAA+B;QAC3B0S,CAAC,GAAGpR,KAAK,CAACoR,CAAV;MACH;IACJ;;IAEDA,CAAC,GAAGqkB,UAAU,CAACrkB,CAAD,CAAd;IAEA,OAAO;MACHmjB,EAAE,EAAEA,EADD;MAEHJ,MAAM,EAAEn0B,KAAK,CAACm0B,MAAN,IAAgBA,MAFrB;MAGHrjB,CAAC,EAAE0iB,OAAO,CAAC,GAAD,EAAMC,OAAO,CAACniB,GAAG,CAACR,CAAL,EAAQ,CAAR,CAAb,CAHP;MAIHI,CAAC,EAAEsiB,OAAO,CAAC,GAAD,EAAMC,OAAO,CAACniB,GAAG,CAACJ,CAAL,EAAQ,CAAR,CAAb,CAJP;MAKHC,CAAC,EAAEqiB,OAAO,CAAC,GAAD,EAAMC,OAAO,CAACniB,GAAG,CAACH,CAAL,EAAQ,CAAR,CAAb,CALP;MAMHC,CAAC,EAAEA;IANA,CAAP;EAQH,CAxVW,CA2VhB;EACA;EAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;;EACI,SAASwnB,QAAT,CAAkB9nB,CAAlB,EAAqBI,CAArB,EAAwBC,CAAxB,EAA0B;IACtB,OAAO;MACHL,CAAC,EAAE6lB,OAAO,CAAC7lB,CAAD,EAAI,GAAJ,CAAP,GAAkB,GADlB;MAEHI,CAAC,EAAEylB,OAAO,CAACzlB,CAAD,EAAI,GAAJ,CAAP,GAAkB,GAFlB;MAGHC,CAAC,EAAEwlB,OAAO,CAACxlB,CAAD,EAAI,GAAJ,CAAP,GAAkB;IAHlB,CAAP;EAKH,CA5WW,CA8WhB;EACA;EACA;EACA;;;EACI,SAAS6kB,QAAT,CAAkBllB,CAAlB,EAAqBI,CAArB,EAAwBC,CAAxB,EAA2B;IAEvBL,CAAC,GAAG6lB,OAAO,CAAC7lB,CAAD,EAAI,GAAJ,CAAX;IACAI,CAAC,GAAGylB,OAAO,CAACzlB,CAAD,EAAI,GAAJ,CAAX;IACAC,CAAC,GAAGwlB,OAAO,CAACxlB,CAAD,EAAI,GAAJ,CAAX;IAEA,IAAIkH,GAAG,GAAGob,OAAO,CAAC3iB,CAAD,EAAII,CAAJ,EAAOC,CAAP,CAAjB;IAAA,IAA4BP,GAAG,GAAG4iB,OAAO,CAAC1iB,CAAD,EAAII,CAAJ,EAAOC,CAAP,CAAzC;IACA,IAAIxE,CAAJ;IAAA,IAAO5N,CAAP;IAAA,IAAUk3B,CAAC,GAAG,CAAC5d,GAAG,GAAGzH,GAAP,IAAc,CAA5B;;IAEA,IAAGyH,GAAG,IAAIzH,GAAV,EAAe;MACXjE,CAAC,GAAG5N,CAAC,GAAG,CAAR,CADW,CACA;IACd,CAFD,MAGK;MACD,IAAIojB,CAAC,GAAG9J,GAAG,GAAGzH,GAAd;MACA7R,CAAC,GAAGk3B,CAAC,GAAG,GAAJ,GAAU9T,CAAC,IAAI,IAAI9J,GAAJ,GAAUzH,GAAd,CAAX,GAAgCuR,CAAC,IAAI9J,GAAG,GAAGzH,GAAV,CAArC;;MACA,QAAOyH,GAAP;QACI,KAAKvH,CAAL;UAAQnE,CAAC,GAAG,CAACuE,CAAC,GAAGC,CAAL,IAAUgR,CAAV,IAAejR,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAY,CAA3B,CAAJ;UAAmC;;QAC3C,KAAKD,CAAL;UAAQvE,CAAC,GAAG,CAACwE,CAAC,GAAGL,CAAL,IAAUqR,CAAV,GAAc,CAAlB;UAAqB;;QAC7B,KAAKhR,CAAL;UAAQxE,CAAC,GAAG,CAACmE,CAAC,GAAGI,CAAL,IAAUiR,CAAV,GAAc,CAAlB;UAAqB;MAHjC;;MAMAxV,CAAC,IAAI,CAAL;IACH;;IAED,OAAO;MAAEA,CAAC,EAAEA,CAAL;MAAQ5N,CAAC,EAAEA,CAAX;MAAck3B,CAAC,EAAEA;IAAjB,CAAP;EACH,CA3YW,CA6YhB;EACA;EACA;EACA;;;EACI,SAAS6C,QAAT,CAAkBnsB,CAAlB,EAAqB5N,CAArB,EAAwBk3B,CAAxB,EAA2B;IACvB,IAAInlB,CAAJ,EAAOI,CAAP,EAAUC,CAAV;IAEAxE,CAAC,GAAGgqB,OAAO,CAAChqB,CAAD,EAAI,GAAJ,CAAX;IACA5N,CAAC,GAAG43B,OAAO,CAAC53B,CAAD,EAAI,GAAJ,CAAX;IACAk3B,CAAC,GAAGU,OAAO,CAACV,CAAD,EAAI,GAAJ,CAAX;;IAEA,SAAS8C,OAAT,CAAiBvW,CAAjB,EAAoBwW,CAApB,EAAuBt2B,CAAvB,EAA0B;MACtB,IAAGA,CAAC,GAAG,CAAP,EAAUA,CAAC,IAAI,CAAL;MACV,IAAGA,CAAC,GAAG,CAAP,EAAUA,CAAC,IAAI,CAAL;MACV,IAAGA,CAAC,GAAG,IAAE,CAAT,EAAY,OAAO8f,CAAC,GAAG,CAACwW,CAAC,GAAGxW,CAAL,IAAU,CAAV,GAAc9f,CAAzB;MACZ,IAAGA,CAAC,GAAG,IAAE,CAAT,EAAY,OAAOs2B,CAAP;MACZ,IAAGt2B,CAAC,GAAG,IAAE,CAAT,EAAY,OAAO8f,CAAC,GAAG,CAACwW,CAAC,GAAGxW,CAAL,KAAW,IAAE,CAAF,GAAM9f,CAAjB,IAAsB,CAAjC;MACZ,OAAO8f,CAAP;IACH;;IAED,IAAGzjB,CAAC,KAAK,CAAT,EAAY;MACR+R,CAAC,GAAGI,CAAC,GAAGC,CAAC,GAAG8kB,CAAZ,CADQ,CACO;IAClB,CAFD,MAGK;MACD,IAAI+C,CAAC,GAAG/C,CAAC,GAAG,GAAJ,GAAUA,CAAC,IAAI,IAAIl3B,CAAR,CAAX,GAAwBk3B,CAAC,GAAGl3B,CAAJ,GAAQk3B,CAAC,GAAGl3B,CAA5C;MACA,IAAIyjB,CAAC,GAAG,IAAIyT,CAAJ,GAAQ+C,CAAhB;MACAloB,CAAC,GAAGioB,OAAO,CAACvW,CAAD,EAAIwW,CAAJ,EAAOrsB,CAAC,GAAG,IAAE,CAAb,CAAX;MACAuE,CAAC,GAAG6nB,OAAO,CAACvW,CAAD,EAAIwW,CAAJ,EAAOrsB,CAAP,CAAX;MACAwE,CAAC,GAAG4nB,OAAO,CAACvW,CAAD,EAAIwW,CAAJ,EAAOrsB,CAAC,GAAG,IAAE,CAAb,CAAX;IACH;;IAED,OAAO;MAAEmE,CAAC,EAAEA,CAAC,GAAG,GAAT;MAAcI,CAAC,EAAEA,CAAC,GAAG,GAArB;MAA0BC,CAAC,EAAEA,CAAC,GAAG;IAAjC,CAAP;EACH,CA7aW,CA+ahB;EACA;EACA;EACA;;;EACI,SAASykB,QAAT,CAAkB9kB,CAAlB,EAAqBI,CAArB,EAAwBC,CAAxB,EAA2B;IAEvBL,CAAC,GAAG6lB,OAAO,CAAC7lB,CAAD,EAAI,GAAJ,CAAX;IACAI,CAAC,GAAGylB,OAAO,CAACzlB,CAAD,EAAI,GAAJ,CAAX;IACAC,CAAC,GAAGwlB,OAAO,CAACxlB,CAAD,EAAI,GAAJ,CAAX;IAEA,IAAIkH,GAAG,GAAGob,OAAO,CAAC3iB,CAAD,EAAII,CAAJ,EAAOC,CAAP,CAAjB;IAAA,IAA4BP,GAAG,GAAG4iB,OAAO,CAAC1iB,CAAD,EAAII,CAAJ,EAAOC,CAAP,CAAzC;IACA,IAAIxE,CAAJ;IAAA,IAAO5N,CAAP;IAAA,IAAU6iB,CAAC,GAAGvJ,GAAd;IAEA,IAAI8J,CAAC,GAAG9J,GAAG,GAAGzH,GAAd;IACA7R,CAAC,GAAGsZ,GAAG,KAAK,CAAR,GAAY,CAAZ,GAAgB8J,CAAC,GAAG9J,GAAxB;;IAEA,IAAGA,GAAG,IAAIzH,GAAV,EAAe;MACXjE,CAAC,GAAG,CAAJ,CADW,CACJ;IACV,CAFD,MAGK;MACD,QAAO0L,GAAP;QACI,KAAKvH,CAAL;UAAQnE,CAAC,GAAG,CAACuE,CAAC,GAAGC,CAAL,IAAUgR,CAAV,IAAejR,CAAC,GAAGC,CAAJ,GAAQ,CAAR,GAAY,CAA3B,CAAJ;UAAmC;;QAC3C,KAAKD,CAAL;UAAQvE,CAAC,GAAG,CAACwE,CAAC,GAAGL,CAAL,IAAUqR,CAAV,GAAc,CAAlB;UAAqB;;QAC7B,KAAKhR,CAAL;UAAQxE,CAAC,GAAG,CAACmE,CAAC,GAAGI,CAAL,IAAUiR,CAAV,GAAc,CAAlB;UAAqB;MAHjC;;MAKAxV,CAAC,IAAI,CAAL;IACH;;IACD,OAAO;MAAEA,CAAC,EAAEA,CAAL;MAAQ5N,CAAC,EAAEA,CAAX;MAAc6iB,CAAC,EAAEA;IAAjB,CAAP;EACH,CA3cW,CA6chB;EACA;EACA;EACA;;;EACI,SAASiX,QAAT,CAAkBlsB,CAAlB,EAAqB5N,CAArB,EAAwB6iB,CAAxB,EAA2B;IAEvBjV,CAAC,GAAGgqB,OAAO,CAAChqB,CAAD,EAAI,GAAJ,CAAP,GAAkB,CAAtB;IACA5N,CAAC,GAAG43B,OAAO,CAAC53B,CAAD,EAAI,GAAJ,CAAX;IACA6iB,CAAC,GAAG+U,OAAO,CAAC/U,CAAD,EAAI,GAAJ,CAAX;IAEA,IAAIxpB,CAAC,GAAGL,IAAI,CAAC6jB,KAAL,CAAWjP,CAAX,CAAR;IAAA,IACI8O,CAAC,GAAG9O,CAAC,GAAGvU,CADZ;IAAA,IAEIoqB,CAAC,GAAGZ,CAAC,IAAI,IAAI7iB,CAAR,CAFT;IAAA,IAGIi6B,CAAC,GAAGpX,CAAC,IAAI,IAAInG,CAAC,GAAG1c,CAAZ,CAHT;IAAA,IAII2D,CAAC,GAAGkf,CAAC,IAAI,IAAI,CAAC,IAAInG,CAAL,IAAU1c,CAAlB,CAJT;IAAA,IAKIk6B,GAAG,GAAG7gC,CAAC,GAAG,CALd;IAAA,IAMI0Y,CAAC,GAAG,CAAC8Q,CAAD,EAAIoX,CAAJ,EAAOxW,CAAP,EAAUA,CAAV,EAAa9f,CAAb,EAAgBkf,CAAhB,EAAmBqX,GAAnB,CANR;IAAA,IAOI/nB,CAAC,GAAG,CAACxO,CAAD,EAAIkf,CAAJ,EAAOA,CAAP,EAAUoX,CAAV,EAAaxW,CAAb,EAAgBA,CAAhB,EAAmByW,GAAnB,CAPR;IAAA,IAQI9nB,CAAC,GAAG,CAACqR,CAAD,EAAIA,CAAJ,EAAO9f,CAAP,EAAUkf,CAAV,EAAaA,CAAb,EAAgBoX,CAAhB,EAAmBC,GAAnB,CARR;IAUA,OAAO;MAAEnoB,CAAC,EAAEA,CAAC,GAAG,GAAT;MAAcI,CAAC,EAAEA,CAAC,GAAG,GAArB;MAA0BC,CAAC,EAAEA,CAAC,GAAG;IAAjC,CAAP;EACH,CAleW,CAoehB;EACA;EACA;EACA;;;EACI,SAASklB,QAAT,CAAkBvlB,CAAlB,EAAqBI,CAArB,EAAwBC,CAAxB,EAA2BilB,UAA3B,EAAuC;IAEnC,IAAI8C,GAAG,GAAG,CACNC,IAAI,CAAC5F,SAAS,CAACziB,CAAD,CAAT,CAAahS,QAAb,CAAsB,EAAtB,CAAD,CADE,EAENq6B,IAAI,CAAC5F,SAAS,CAACriB,CAAD,CAAT,CAAapS,QAAb,CAAsB,EAAtB,CAAD,CAFE,EAGNq6B,IAAI,CAAC5F,SAAS,CAACpiB,CAAD,CAAT,CAAarS,QAAb,CAAsB,EAAtB,CAAD,CAHE,CAAV,CAFmC,CAQnC;;IACA,IAAIs3B,UAAU,IAAI8C,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,KAAoBy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,CAAlC,IAAsDy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,KAAoBy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,CAA1E,IAA8Fy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,KAAoBy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,CAAtH,EAAwI;MACpI,OAAOy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,IAAmBy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,CAAnB,GAAsCy7B,GAAG,CAAC,CAAD,CAAH,CAAOz7B,MAAP,CAAc,CAAd,CAA7C;IACH;;IAED,OAAOy7B,GAAG,CAAC16B,IAAJ,CAAS,EAAT,CAAP;EACH,CAtfW,CAwfhB;EACA;EACA;EACA;;;EACI,SAASg4B,SAAT,CAAmB1lB,CAAnB,EAAsBI,CAAtB,EAAyBC,CAAzB,EAA4BC,CAA5B,EAA+B;IAE3B,IAAI8nB,GAAG,GAAG,CACNC,IAAI,CAACC,mBAAmB,CAAChoB,CAAD,CAApB,CADE,EAEN+nB,IAAI,CAAC5F,SAAS,CAACziB,CAAD,CAAT,CAAahS,QAAb,CAAsB,EAAtB,CAAD,CAFE,EAGNq6B,IAAI,CAAC5F,SAAS,CAACriB,CAAD,CAAT,CAAapS,QAAb,CAAsB,EAAtB,CAAD,CAHE,EAINq6B,IAAI,CAAC5F,SAAS,CAACpiB,CAAD,CAAT,CAAarS,QAAb,CAAsB,EAAtB,CAAD,CAJE,CAAV;IAOA,OAAOo6B,GAAG,CAAC16B,IAAJ,CAAS,EAAT,CAAP;EACH,CAtgBW,CAwgBhB;EACA;;;EACIgT,SAAS,CAAC6nB,MAAV,GAAmB,UAAUC,MAAV,EAAkBC,MAAlB,EAA0B;IACzC,IAAI,CAACD,MAAD,IAAW,CAACC,MAAhB,EAAwB;MAAE,OAAO,KAAP;IAAe;;IACzC,OAAO/nB,SAAS,CAAC8nB,MAAD,CAAT,CAAkB5nB,WAAlB,MAAmCF,SAAS,CAAC+nB,MAAD,CAAT,CAAkB7nB,WAAlB,EAA1C;EACH,CAHD;;EAKAF,SAAS,CAAC7H,MAAV,GAAmB,YAAW;IAC1B,OAAO6H,SAAS,CAAC+mB,SAAV,CAAoB;MACvBznB,CAAC,EAAE4iB,UAAU,EADU;MAEvBxiB,CAAC,EAAEwiB,UAAU,EAFU;MAGvBviB,CAAC,EAAEuiB,UAAU;IAHU,CAApB,CAAP;EAKH,CAND,CA/gBY,CAwhBhB;EACA;EACA;EACA;;;EAEI,SAASkE,WAAT,CAAoB53B,KAApB,EAA2Bw5B,MAA3B,EAAmC;IAC/BA,MAAM,GAAIA,MAAM,KAAK,CAAZ,GAAiB,CAAjB,GAAsBA,MAAM,IAAI,EAAzC;IACA,IAAIzD,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACAC,GAAG,CAACh3B,CAAJ,IAASy6B,MAAM,GAAG,GAAlB;IACAzD,GAAG,CAACh3B,CAAJ,GAAQ06B,OAAO,CAAC1D,GAAG,CAACh3B,CAAL,CAAf;IACA,OAAOyS,SAAS,CAACukB,GAAD,CAAhB;EACH;;EAED,SAAS8B,SAAT,CAAkB73B,KAAlB,EAAyBw5B,MAAzB,EAAiC;IAC7BA,MAAM,GAAIA,MAAM,KAAK,CAAZ,GAAiB,CAAjB,GAAsBA,MAAM,IAAI,EAAzC;IACA,IAAIzD,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACAC,GAAG,CAACh3B,CAAJ,IAASy6B,MAAM,GAAG,GAAlB;IACAzD,GAAG,CAACh3B,CAAJ,GAAQ06B,OAAO,CAAC1D,GAAG,CAACh3B,CAAL,CAAf;IACA,OAAOyS,SAAS,CAACukB,GAAD,CAAhB;EACH;;EAED,SAAS+B,UAAT,CAAmB93B,KAAnB,EAA0B;IACtB,OAAOwR,SAAS,CAACxR,KAAD,CAAT,CAAiB43B,UAAjB,CAA4B,GAA5B,CAAP;EACH;;EAED,SAASnmB,QAAT,CAAkBzR,KAAlB,EAAyBw5B,MAAzB,EAAiC;IAC7BA,MAAM,GAAIA,MAAM,KAAK,CAAZ,GAAiB,CAAjB,GAAsBA,MAAM,IAAI,EAAzC;IACA,IAAIzD,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACAC,GAAG,CAACE,CAAJ,IAASuD,MAAM,GAAG,GAAlB;IACAzD,GAAG,CAACE,CAAJ,GAAQwD,OAAO,CAAC1D,GAAG,CAACE,CAAL,CAAf;IACA,OAAOzkB,SAAS,CAACukB,GAAD,CAAhB;EACH;;EAED,SAAS2B,SAAT,CAAkB13B,KAAlB,EAAyBw5B,MAAzB,EAAiC;IAC7BA,MAAM,GAAIA,MAAM,KAAK,CAAZ,GAAiB,CAAjB,GAAsBA,MAAM,IAAI,EAAzC;IACA,IAAIloB,GAAG,GAAGE,SAAS,CAACxR,KAAD,CAAT,CAAiBwlB,KAAjB,EAAV;IACAlU,GAAG,CAACR,CAAJ,GAAQ2iB,OAAO,CAAC,CAAD,EAAID,OAAO,CAAC,GAAD,EAAMliB,GAAG,CAACR,CAAJ,GAAQyiB,SAAS,CAAC,MAAM,EAAGiG,MAAM,GAAG,GAAZ,CAAP,CAAvB,CAAX,CAAf;IACAloB,GAAG,CAACJ,CAAJ,GAAQuiB,OAAO,CAAC,CAAD,EAAID,OAAO,CAAC,GAAD,EAAMliB,GAAG,CAACJ,CAAJ,GAAQqiB,SAAS,CAAC,MAAM,EAAGiG,MAAM,GAAG,GAAZ,CAAP,CAAvB,CAAX,CAAf;IACAloB,GAAG,CAACH,CAAJ,GAAQsiB,OAAO,CAAC,CAAD,EAAID,OAAO,CAAC,GAAD,EAAMliB,GAAG,CAACH,CAAJ,GAAQoiB,SAAS,CAAC,MAAM,EAAGiG,MAAM,GAAG,GAAZ,CAAP,CAAvB,CAAX,CAAf;IACA,OAAOhoB,SAAS,CAACF,GAAD,CAAhB;EACH;;EAED,SAASqmB,OAAT,CAAiB33B,KAAjB,EAAwBw5B,MAAxB,EAAgC;IAC5BA,MAAM,GAAIA,MAAM,KAAK,CAAZ,GAAiB,CAAjB,GAAsBA,MAAM,IAAI,EAAzC;IACA,IAAIzD,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACAC,GAAG,CAACE,CAAJ,IAASuD,MAAM,GAAG,GAAlB;IACAzD,GAAG,CAACE,CAAJ,GAAQwD,OAAO,CAAC1D,GAAG,CAACE,CAAL,CAAf;IACA,OAAOzkB,SAAS,CAACukB,GAAD,CAAhB;EACH,CAxkBW,CA0kBhB;EACA;;;EACI,SAASgC,KAAT,CAAc/3B,KAAd,EAAqBw5B,MAArB,EAA6B;IACzB,IAAIzD,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACA,IAAI4D,GAAG,GAAG,CAAC3D,GAAG,CAACppB,CAAJ,GAAQ6sB,MAAT,IAAmB,GAA7B;IACAzD,GAAG,CAACppB,CAAJ,GAAQ+sB,GAAG,GAAG,CAAN,GAAU,MAAMA,GAAhB,GAAsBA,GAA9B;IACA,OAAOloB,SAAS,CAACukB,GAAD,CAAhB;EACH,CAjlBW,CAmlBhB;EACA;EACA;EACA;;;EAEI,SAASmC,WAAT,CAAoBl4B,KAApB,EAA2B;IACvB,IAAI+1B,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACAC,GAAG,CAACppB,CAAJ,GAAQ,CAACopB,GAAG,CAACppB,CAAJ,GAAQ,GAAT,IAAgB,GAAxB;IACA,OAAO6E,SAAS,CAACukB,GAAD,CAAhB;EACH;;EAED,SAASsC,MAAT,CAAer4B,KAAf,EAAsB;IAClB,IAAI+1B,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACA,IAAInpB,CAAC,GAAGopB,GAAG,CAACppB,CAAZ;IACA,OAAO,CACH6E,SAAS,CAACxR,KAAD,CADN,EAEHwR,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,GAAL,IAAY,GAAjB;MAAsB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA7B;MAAgCk3B,CAAC,EAAEF,GAAG,CAACE;IAAvC,CAAD,CAFN,EAGHzkB,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,GAAL,IAAY,GAAjB;MAAsB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA7B;MAAgCk3B,CAAC,EAAEF,GAAG,CAACE;IAAvC,CAAD,CAHN,CAAP;EAKH;;EAED,SAASqC,OAAT,CAAgBt4B,KAAhB,EAAuB;IACnB,IAAI+1B,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACA,IAAInpB,CAAC,GAAGopB,GAAG,CAACppB,CAAZ;IACA,OAAO,CACH6E,SAAS,CAACxR,KAAD,CADN,EAEHwR,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,EAAL,IAAW,GAAhB;MAAqB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA5B;MAA+Bk3B,CAAC,EAAEF,GAAG,CAACE;IAAtC,CAAD,CAFN,EAGHzkB,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,GAAL,IAAY,GAAjB;MAAsB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA7B;MAAgCk3B,CAAC,EAAEF,GAAG,CAACE;IAAvC,CAAD,CAHN,EAIHzkB,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,GAAL,IAAY,GAAjB;MAAsB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA7B;MAAgCk3B,CAAC,EAAEF,GAAG,CAACE;IAAvC,CAAD,CAJN,CAAP;EAMH;;EAED,SAASmC,gBAAT,CAAyBp4B,KAAzB,EAAgC;IAC5B,IAAI+1B,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACA,IAAInpB,CAAC,GAAGopB,GAAG,CAACppB,CAAZ;IACA,OAAO,CACH6E,SAAS,CAACxR,KAAD,CADN,EAEHwR,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,EAAL,IAAW,GAAhB;MAAqB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA5B;MAA+Bk3B,CAAC,EAAEF,GAAG,CAACE;IAAtC,CAAD,CAFN,EAGHzkB,SAAS,CAAC;MAAE7E,CAAC,EAAE,CAACA,CAAC,GAAG,GAAL,IAAY,GAAjB;MAAsB5N,CAAC,EAAEg3B,GAAG,CAACh3B,CAA7B;MAAgCk3B,CAAC,EAAEF,GAAG,CAACE;IAAvC,CAAD,CAHN,CAAP;EAKH;;EAED,SAASgC,UAAT,CAAmBj4B,KAAnB,EAA0BwvB,OAA1B,EAAmCmK,MAAnC,EAA2C;IACvCnK,OAAO,GAAGA,OAAO,IAAI,CAArB;IACAmK,MAAM,GAAGA,MAAM,IAAI,EAAnB;IAEA,IAAI5D,GAAG,GAAGvkB,SAAS,CAACxR,KAAD,CAAT,CAAiB81B,KAAjB,EAAV;IACA,IAAI8D,IAAI,GAAG,MAAMD,MAAjB;IACA,IAAIE,GAAG,GAAG,CAACroB,SAAS,CAACxR,KAAD,CAAV,CAAV;;IAEA,KAAK+1B,GAAG,CAACppB,CAAJ,GAAQ,CAAEopB,GAAG,CAACppB,CAAJ,IAASitB,IAAI,GAAGpK,OAAP,IAAkB,CAA3B,CAAD,GAAkC,GAAnC,IAA0C,GAAvD,EAA4D,EAAEA,OAA9D,GAAyE;MACrEuG,GAAG,CAACppB,CAAJ,GAAQ,CAACopB,GAAG,CAACppB,CAAJ,GAAQitB,IAAT,IAAiB,GAAzB;MACAC,GAAG,CAACh7B,IAAJ,CAAS2S,SAAS,CAACukB,GAAD,CAAlB;IACH;;IACD,OAAO8D,GAAP;EACH;;EAED,SAAS1B,cAAT,CAAuBn4B,KAAvB,EAA8BwvB,OAA9B,EAAuC;IACnCA,OAAO,GAAGA,OAAO,IAAI,CAArB;IACA,IAAImG,GAAG,GAAGnkB,SAAS,CAACxR,KAAD,CAAT,CAAiB01B,KAAjB,EAAV;IACA,IAAI/oB,CAAC,GAAGgpB,GAAG,CAAChpB,CAAZ;IAAA,IAAe5N,CAAC,GAAG42B,GAAG,CAAC52B,CAAvB;IAAA,IAA0B6iB,CAAC,GAAG+T,GAAG,CAAC/T,CAAlC;IACA,IAAIiY,GAAG,GAAG,EAAV;IACA,IAAIC,YAAY,GAAG,IAAItK,OAAvB;;IAEA,OAAOA,OAAO,EAAd,EAAkB;MACdqK,GAAG,CAACh7B,IAAJ,CAAS2S,SAAS,CAAC;QAAE7E,CAAC,EAAEA,CAAL;QAAQ5N,CAAC,EAAEA,CAAX;QAAc6iB,CAAC,EAAEA;MAAjB,CAAD,CAAlB;MACAA,CAAC,GAAG,CAACA,CAAC,GAAGkY,YAAL,IAAqB,CAAzB;IACH;;IAED,OAAOD,GAAP;EACH,CAzpBW,CA2pBhB;EACA;;;EAEIroB,SAAS,CAACuoB,GAAV,GAAgB,UAAST,MAAT,EAAiBC,MAAjB,EAAyBC,MAAzB,EAAiC;IAC7CA,MAAM,GAAIA,MAAM,KAAK,CAAZ,GAAiB,CAAjB,GAAsBA,MAAM,IAAI,EAAzC;IAEA,IAAIQ,IAAI,GAAGxoB,SAAS,CAAC8nB,MAAD,CAAT,CAAkB9T,KAAlB,EAAX;IACA,IAAIyU,IAAI,GAAGzoB,SAAS,CAAC+nB,MAAD,CAAT,CAAkB/T,KAAlB,EAAX;IAEA,IAAIhD,CAAC,GAAGgX,MAAM,GAAG,GAAjB;IACA,IAAI9sB,CAAC,GAAG8V,CAAC,GAAG,CAAJ,GAAQ,CAAhB;IACA,IAAIpR,CAAC,GAAG6oB,IAAI,CAAC7oB,CAAL,GAAS4oB,IAAI,CAAC5oB,CAAtB;IAEA,IAAI8oB,EAAJ;;IAEA,IAAIxtB,CAAC,GAAG0E,CAAJ,IAAS,CAAC,CAAd,EAAiB;MACb8oB,EAAE,GAAGxtB,CAAL;IACH,CAFD,MAEO;MACHwtB,EAAE,GAAG,CAACxtB,CAAC,GAAG0E,CAAL,KAAW,IAAI1E,CAAC,GAAG0E,CAAnB,CAAL;IACH;;IAED8oB,EAAE,GAAG,CAACA,EAAE,GAAG,CAAN,IAAW,CAAhB;IAEA,IAAIC,EAAE,GAAG,IAAID,EAAb;IAEA,IAAIE,IAAI,GAAG;MACPtpB,CAAC,EAAEmpB,IAAI,CAACnpB,CAAL,GAASopB,EAAT,GAAcF,IAAI,CAAClpB,CAAL,GAASqpB,EADnB;MAEPjpB,CAAC,EAAE+oB,IAAI,CAAC/oB,CAAL,GAASgpB,EAAT,GAAcF,IAAI,CAAC9oB,CAAL,GAASipB,EAFnB;MAGPhpB,CAAC,EAAE8oB,IAAI,CAAC9oB,CAAL,GAAS+oB,EAAT,GAAcF,IAAI,CAAC7oB,CAAL,GAASgpB,EAHnB;MAIP/oB,CAAC,EAAE6oB,IAAI,CAAC7oB,CAAL,GAASoR,CAAT,GAAcwX,IAAI,CAAC5oB,CAAL,IAAU,IAAIoR,CAAd;IAJV,CAAX;IAOA,OAAOhR,SAAS,CAAC4oB,IAAD,CAAhB;EACH,CA9BD,CA9pBY,CA+rBhB;EACA;EACA;EAEA;EACA;;;EACI5oB,SAAS,CAAC6oB,WAAV,GAAwB,UAASf,MAAT,EAAiBC,MAAjB,EAAyB;IAC7C,IAAIe,EAAE,GAAG9oB,SAAS,CAAC8nB,MAAD,CAAlB;IACA,IAAIiB,EAAE,GAAG/oB,SAAS,CAAC+nB,MAAD,CAAlB;IACA,OAAO,CAACxhC,IAAI,CAACsgB,GAAL,CAASiiB,EAAE,CAACtF,YAAH,EAAT,EAA2BuF,EAAE,CAACvF,YAAH,EAA3B,IAA8C,IAA/C,KAAwDj9B,IAAI,CAAC6Y,GAAL,CAAS0pB,EAAE,CAACtF,YAAH,EAAT,EAA2BuF,EAAE,CAACvF,YAAH,EAA3B,IAA8C,IAAtG,CAAP;EACH,CAJD,CArsBY,CA2sBhB;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;;EACIxjB,SAAS,CAACgpB,UAAV,GAAuB,UAASlB,MAAT,EAAiBC,MAAjB,EAAyBkB,KAAzB,EAAgC;IACnD,IAAIJ,WAAW,GAAG7oB,SAAS,CAAC6oB,WAAV,CAAsBf,MAAtB,EAA8BC,MAA9B,CAAlB;IACA,IAAImB,UAAJ,EAAgBC,GAAhB;IAEAA,GAAG,GAAG,KAAN;IAEAD,UAAU,GAAGE,kBAAkB,CAACH,KAAD,CAA/B;;IACA,QAAQC,UAAU,CAACtP,KAAX,GAAmBsP,UAAU,CAACngC,IAAtC;MACI,KAAK,SAAL;MACA,KAAK,UAAL;QACIogC,GAAG,GAAGN,WAAW,IAAI,GAArB;QACA;;MACJ,KAAK,SAAL;QACIM,GAAG,GAAGN,WAAW,IAAI,CAArB;QACA;;MACJ,KAAK,UAAL;QACIM,GAAG,GAAGN,WAAW,IAAI,CAArB;QACA;IAVR;;IAYA,OAAOM,GAAP;EAEH,CArBD,CArtBY,CA4uBhB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACInpB,SAAS,CAACqpB,YAAV,GAAyB,UAASC,SAAT,EAAoBC,SAApB,EAA+BvD,IAA/B,EAAqC;IAC1D,IAAIwD,SAAS,GAAG,IAAhB;IACA,IAAIC,SAAS,GAAG,CAAhB;IACA,IAAIZ,WAAJ;IACA,IAAIa,qBAAJ,EAA2B9P,KAA3B,EAAkC7wB,IAAlC;IACAi9B,IAAI,GAAGA,IAAI,IAAI,EAAf;IACA0D,qBAAqB,GAAG1D,IAAI,CAAC0D,qBAA7B;IACA9P,KAAK,GAAGoM,IAAI,CAACpM,KAAb;IACA7wB,IAAI,GAAGi9B,IAAI,CAACj9B,IAAZ;;IAEA,KAAK,IAAInC,CAAC,GAAE,CAAZ,EAAeA,CAAC,GAAG2iC,SAAS,CAAC7iC,MAA7B,EAAsCE,CAAC,EAAvC,EAA2C;MACvCiiC,WAAW,GAAG7oB,SAAS,CAAC6oB,WAAV,CAAsBS,SAAtB,EAAiCC,SAAS,CAAC3iC,CAAD,CAA1C,CAAd;;MACA,IAAIiiC,WAAW,GAAGY,SAAlB,EAA6B;QACzBA,SAAS,GAAGZ,WAAZ;QACAW,SAAS,GAAGxpB,SAAS,CAACupB,SAAS,CAAC3iC,CAAD,CAAV,CAArB;MACH;IACJ;;IAED,IAAIoZ,SAAS,CAACgpB,UAAV,CAAqBM,SAArB,EAAgCE,SAAhC,EAA2C;MAAC,SAAQ5P,KAAT;MAAe,QAAO7wB;IAAtB,CAA3C,KAA2E,CAAC2gC,qBAAhF,EAAuG;MACnG,OAAOF,SAAP;IACH,CAFD,MAGK;MACDxD,IAAI,CAAC0D,qBAAL,GAA2B,KAA3B;MACA,OAAO1pB,SAAS,CAACqpB,YAAV,CAAuBC,SAAvB,EAAiC,CAAC,MAAD,EAAS,MAAT,CAAjC,EAAkDtD,IAAlD,CAAP;IACH;EACJ,CAzBD,CArvBY,CAixBhB;EACA;EACA;;;EACI,IAAI2D,KAAK,GAAG3pB,SAAS,CAAC2pB,KAAV,GAAkB;IAC1BC,SAAS,EAAE,QADe;IAE1BC,YAAY,EAAE,QAFY;IAG1BC,IAAI,EAAE,KAHoB;IAI1BC,UAAU,EAAE,QAJc;IAK1BC,KAAK,EAAE,QALmB;IAM1BC,KAAK,EAAE,QANmB;IAO1BC,MAAM,EAAE,QAPkB;IAQ1BC,KAAK,EAAE,KARmB;IAS1BC,cAAc,EAAE,QATU;IAU1BC,IAAI,EAAE,KAVoB;IAW1BC,UAAU,EAAE,QAXc;IAY1BC,KAAK,EAAE,QAZmB;IAa1BC,SAAS,EAAE,QAbe;IAc1BC,WAAW,EAAE,QAda;IAe1BC,SAAS,EAAE,QAfe;IAgB1BC,UAAU,EAAE,QAhBc;IAiB1BC,SAAS,EAAE,QAjBe;IAkB1BC,KAAK,EAAE,QAlBmB;IAmB1BC,cAAc,EAAE,QAnBU;IAoB1BC,QAAQ,EAAE,QApBgB;IAqB1BC,OAAO,EAAE,QArBiB;IAsB1BC,IAAI,EAAE,KAtBoB;IAuB1BC,QAAQ,EAAE,QAvBgB;IAwB1BC,QAAQ,EAAE,QAxBgB;IAyB1BC,aAAa,EAAE,QAzBW;IA0B1BC,QAAQ,EAAE,QA1BgB;IA2B1BC,SAAS,EAAE,QA3Be;IA4B1BC,QAAQ,EAAE,QA5BgB;IA6B1BC,SAAS,EAAE,QA7Be;IA8B1BC,WAAW,EAAE,QA9Ba;IA+B1BC,cAAc,EAAE,QA/BU;IAgC1BC,UAAU,EAAE,QAhCc;IAiC1BC,UAAU,EAAE,QAjCc;IAkC1BC,OAAO,EAAE,QAlCiB;IAmC1BC,UAAU,EAAE,QAnCc;IAoC1BC,YAAY,EAAE,QApCY;IAqC1BC,aAAa,EAAE,QArCW;IAsC1BC,aAAa,EAAE,QAtCW;IAuC1BC,aAAa,EAAE,QAvCW;IAwC1BC,aAAa,EAAE,QAxCW;IAyC1BC,UAAU,EAAE,QAzCc;IA0C1BC,QAAQ,EAAE,QA1CgB;IA2C1BC,WAAW,EAAE,QA3Ca;IA4C1BC,OAAO,EAAE,QA5CiB;IA6C1BC,OAAO,EAAE,QA7CiB;IA8C1BC,UAAU,EAAE,QA9Cc;IA+C1BC,SAAS,EAAE,QA/Ce;IAgD1BC,WAAW,EAAE,QAhDa;IAiD1BC,WAAW,EAAE,QAjDa;IAkD1BC,OAAO,EAAE,KAlDiB;IAmD1BC,SAAS,EAAE,QAnDe;IAoD1BC,UAAU,EAAE,QApDc;IAqD1BC,IAAI,EAAE,QArDoB;IAsD1BC,SAAS,EAAE,QAtDe;IAuD1BC,IAAI,EAAE,QAvDoB;IAwD1BC,KAAK,EAAE,QAxDmB;IAyD1BC,WAAW,EAAE,QAzDa;IA0D1BC,IAAI,EAAE,QA1DoB;IA2D1BC,QAAQ,EAAE,QA3DgB;IA4D1BC,OAAO,EAAE,QA5DiB;IA6D1BC,SAAS,EAAE,QA7De;IA8D1BC,MAAM,EAAE,QA9DkB;IA+D1BC,KAAK,EAAE,QA/DmB;IAgE1BC,KAAK,EAAE,QAhEmB;IAiE1BC,QAAQ,EAAE,QAjEgB;IAkE1BC,aAAa,EAAE,QAlEW;IAmE1BC,SAAS,EAAE,QAnEe;IAoE1BC,YAAY,EAAE,QApEY;IAqE1BC,SAAS,EAAE,QArEe;IAsE1BC,UAAU,EAAE,QAtEc;IAuE1BC,SAAS,EAAE,QAvEe;IAwE1BC,oBAAoB,EAAE,QAxEI;IAyE1BC,SAAS,EAAE,QAzEe;IA0E1BC,UAAU,EAAE,QA1Ec;IA2E1BC,SAAS,EAAE,QA3Ee;IA4E1BC,SAAS,EAAE,QA5Ee;IA6E1BC,WAAW,EAAE,QA7Ea;IA8E1BC,aAAa,EAAE,QA9EW;IA+E1BC,YAAY,EAAE,QA/EY;IAgF1BC,cAAc,EAAE,KAhFU;IAiF1BC,cAAc,EAAE,KAjFU;IAkF1BC,cAAc,EAAE,QAlFU;IAmF1BC,WAAW,EAAE,QAnFa;IAoF1BC,IAAI,EAAE,KApFoB;IAqF1BC,SAAS,EAAE,QArFe;IAsF1BC,KAAK,EAAE,QAtFmB;IAuF1BC,OAAO,EAAE,KAvFiB;IAwF1BC,MAAM,EAAE,QAxFkB;IAyF1BC,gBAAgB,EAAE,QAzFQ;IA0F1BC,UAAU,EAAE,QA1Fc;IA2F1BC,YAAY,EAAE,QA3FY;IA4F1BC,YAAY,EAAE,QA5FY;IA6F1BC,cAAc,EAAE,QA7FU;IA8F1BC,eAAe,EAAE,QA9FS;IA+F1BC,iBAAiB,EAAE,QA/FO;IAgG1BC,eAAe,EAAE,QAhGS;IAiG1BC,eAAe,EAAE,QAjGS;IAkG1BC,YAAY,EAAE,QAlGY;IAmG1BC,SAAS,EAAE,QAnGe;IAoG1BC,SAAS,EAAE,QApGe;IAqG1BC,QAAQ,EAAE,QArGgB;IAsG1BC,WAAW,EAAE,QAtGa;IAuG1BC,IAAI,EAAE,QAvGoB;IAwG1BC,OAAO,EAAE,QAxGiB;IAyG1BC,KAAK,EAAE,QAzGmB;IA0G1BC,SAAS,EAAE,QA1Ge;IA2G1BC,MAAM,EAAE,QA3GkB;IA4G1BC,SAAS,EAAE,QA5Ge;IA6G1BC,MAAM,EAAE,QA7GkB;IA8G1BC,aAAa,EAAE,QA9GW;IA+G1BC,SAAS,EAAE,QA/Ge;IAgH1BC,aAAa,EAAE,QAhHW;IAiH1BC,aAAa,EAAE,QAjHW;IAkH1BC,UAAU,EAAE,QAlHc;IAmH1BC,SAAS,EAAE,QAnHe;IAoH1BC,IAAI,EAAE,QApHoB;IAqH1BC,IAAI,EAAE,QArHoB;IAsH1BC,IAAI,EAAE,QAtHoB;IAuH1BC,UAAU,EAAE,QAvHc;IAwH1BC,MAAM,EAAE,QAxHkB;IAyH1BC,aAAa,EAAE,QAzHW;IA0H1BC,GAAG,EAAE,KA1HqB;IA2H1BC,SAAS,EAAE,QA3He;IA4H1BC,SAAS,EAAE,QA5He;IA6H1BC,WAAW,EAAE,QA7Ha;IA8H1BC,MAAM,EAAE,QA9HkB;IA+H1BC,UAAU,EAAE,QA/Hc;IAgI1BC,QAAQ,EAAE,QAhIgB;IAiI1BC,QAAQ,EAAE,QAjIgB;IAkI1BC,MAAM,EAAE,QAlIkB;IAmI1BC,MAAM,EAAE,QAnIkB;IAoI1BC,OAAO,EAAE,QApIiB;IAqI1BC,SAAS,EAAE,QArIe;IAsI1BC,SAAS,EAAE,QAtIe;IAuI1BC,SAAS,EAAE,QAvIe;IAwI1BC,IAAI,EAAE,QAxIoB;IAyI1BC,WAAW,EAAE,QAzIa;IA0I1BC,SAAS,EAAE,QA1Ie;IA2I1BC,GAAG,EAAE,QA3IqB;IA4I1BC,IAAI,EAAE,QA5IoB;IA6I1BC,OAAO,EAAE,QA7IiB;IA8I1BC,MAAM,EAAE,QA9IkB;IA+I1BC,SAAS,EAAE,QA/Ie;IAgJ1BC,MAAM,EAAE,QAhJkB;IAiJ1BC,KAAK,EAAE,QAjJmB;IAkJ1BC,KAAK,EAAE,KAlJmB;IAmJ1BC,UAAU,EAAE,QAnJc;IAoJ1BC,MAAM,EAAE,KApJkB;IAqJ1BC,WAAW,EAAE;EArJa,CAA9B,CApxBY,CA46BhB;;EACI,IAAI1N,QAAQ,GAAGtlB,SAAS,CAACslB,QAAV,GAAqB2N,IAAI,CAACtJ,KAAD,CAAxC,CA76BY,CAg7BhB;EACA;EAEA;;EACI,SAASsJ,IAAT,CAAcx0B,CAAd,EAAiB;IACb,IAAIy0B,OAAO,GAAG,EAAd;;IACA,KAAK,IAAItsC,CAAT,IAAc6X,CAAd,EAAiB;MACb,IAAIA,CAAC,CAACvR,cAAF,CAAiBtG,CAAjB,CAAJ,EAAyB;QACrBssC,OAAO,CAACz0B,CAAC,CAAC7X,CAAD,CAAF,CAAP,GAAgBA,CAAhB;MACH;IACJ;;IACD,OAAOssC,OAAP;EACH,CA57BW,CA87BhB;;;EACI,SAASjP,UAAT,CAAoBrkB,CAApB,EAAuB;IACnBA,CAAC,GAAGpT,UAAU,CAACoT,CAAD,CAAd;;IAEA,IAAI/X,KAAK,CAAC+X,CAAD,CAAL,IAAYA,CAAC,GAAG,CAAhB,IAAqBA,CAAC,GAAG,CAA7B,EAAgC;MAC5BA,CAAC,GAAG,CAAJ;IACH;;IAED,OAAOA,CAAP;EACH,CAv8BW,CAy8BhB;;;EACI,SAASulB,OAAT,CAAiB54B,CAAjB,EAAoBsa,GAApB,EAAyB;IACrB,IAAIssB,cAAc,CAAC5mC,CAAD,CAAlB,EAAuB;MAAEA,CAAC,GAAG,MAAJ;IAAa;;IAEtC,IAAI6mC,cAAc,GAAGC,YAAY,CAAC9mC,CAAD,CAAjC;IACAA,CAAC,GAAGy1B,OAAO,CAACnb,GAAD,EAAMob,OAAO,CAAC,CAAD,EAAIz1B,UAAU,CAACD,CAAD,CAAd,CAAb,CAAX,CAJqB,CAMrB;;IACA,IAAI6mC,cAAJ,EAAoB;MAChB7mC,CAAC,GAAG5E,QAAQ,CAAC4E,CAAC,GAAGsa,GAAL,EAAU,EAAV,CAAR,GAAwB,GAA5B;IACH,CAToB,CAWrB;;;IACA,IAAKtgB,IAAI,CAAC+0B,GAAL,CAAS/uB,CAAC,GAAGsa,GAAb,IAAoB,QAAzB,EAAoC;MAChC,OAAO,CAAP;IACH,CAdoB,CAgBrB;;;IACA,OAAQta,CAAC,GAAGsa,GAAL,GAAYra,UAAU,CAACqa,GAAD,CAA7B;EACH,CA59BW,CA89BhB;;;EACI,SAASohB,OAAT,CAAiB/1B,GAAjB,EAAsB;IAClB,OAAO8vB,OAAO,CAAC,CAAD,EAAIC,OAAO,CAAC,CAAD,EAAI/vB,GAAJ,CAAX,CAAd;EACH,CAj+BW,CAm+BhB;;;EACI,SAASohC,eAAT,CAAyBphC,GAAzB,EAA8B;IAC1B,OAAOvK,QAAQ,CAACuK,GAAD,EAAM,EAAN,CAAf;EACH,CAt+BW,CAw+BhB;EACA;;;EACI,SAASihC,cAAT,CAAwB5mC,CAAxB,EAA2B;IACvB,OAAO,OAAOA,CAAP,IAAY,QAAZ,IAAwBA,CAAC,CAACxC,OAAF,CAAU,GAAV,KAAkB,CAAC,CAA3C,IAAgDyC,UAAU,CAACD,CAAD,CAAV,KAAkB,CAAzE;EACH,CA5+BW,CA8+BhB;;;EACI,SAAS8mC,YAAT,CAAsB9mC,CAAtB,EAAyB;IACrB,OAAO,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAC,CAACxC,OAAF,CAAU,GAAV,KAAkB,CAAC,CAAnD;EACH,CAj/BW,CAm/BhB;;;EACI,SAAS49B,IAAT,CAActsB,CAAd,EAAiB;IACb,OAAOA,CAAC,CAAC3U,MAAF,IAAY,CAAZ,GAAgB,MAAM2U,CAAtB,GAA0B,KAAKA,CAAtC;EACH,CAt/BW,CAw/BhB;;;EACI,SAAS4rB,mBAAT,CAA6B16B,CAA7B,EAAgC;IAC5B,IAAIA,CAAC,IAAI,CAAT,EAAY;MACRA,CAAC,GAAIA,CAAC,GAAG,GAAL,GAAY,GAAhB;IACH;;IAED,OAAOA,CAAP;EACH,CA//BW,CAigChB;;;EACI,SAASq7B,mBAAT,CAA6BjX,CAA7B,EAAgC;IAC5B,OAAOpqB,IAAI,CAACgZ,KAAL,CAAW/S,UAAU,CAACmkB,CAAD,CAAV,GAAgB,GAA3B,EAAgCrjB,QAAhC,CAAyC,EAAzC,CAAP;EACH,CApgCW,CAqgChB;;;EACI,SAASimC,mBAAT,CAA6Bp4B,CAA7B,EAAgC;IAC5B,OAAQm4B,eAAe,CAACn4B,CAAD,CAAf,GAAqB,GAA7B;EACH;;EAED,IAAIq4B,QAAQ,GAAI,YAAW;IAEvB;IACA,IAAIC,WAAW,GAAG,eAAlB,CAHuB,CAKvB;;IACA,IAAIC,UAAU,GAAG,sBAAjB,CANuB,CAQvB;;IACA,IAAIC,QAAQ,GAAG,QAAQD,UAAR,GAAqB,OAArB,GAA+BD,WAA/B,GAA6C,GAA5D,CATuB,CAWvB;IACA;IACA;;IACA,IAAIG,iBAAiB,GAAG,gBAAgBD,QAAhB,GAA2B,YAA3B,GAA0CA,QAA1C,GAAqD,YAArD,GAAoEA,QAApE,GAA+E,WAAvG;IACA,IAAIE,iBAAiB,GAAG,gBAAgBF,QAAhB,GAA2B,YAA3B,GAA0CA,QAA1C,GAAqD,YAArD,GAAoEA,QAApE,GAA+E,YAA/E,GAA8FA,QAA9F,GAAyG,WAAjI;IAEA,OAAO;MACHA,QAAQ,EAAE,IAAIlS,MAAJ,CAAWkS,QAAX,CADP;MAEH7zB,GAAG,EAAE,IAAI2hB,MAAJ,CAAW,QAAQmS,iBAAnB,CAFF;MAGHhL,IAAI,EAAE,IAAInH,MAAJ,CAAW,SAASoS,iBAApB,CAHH;MAIHtP,GAAG,EAAE,IAAI9C,MAAJ,CAAW,QAAQmS,iBAAnB,CAJF;MAKHE,IAAI,EAAE,IAAIrS,MAAJ,CAAW,SAASoS,iBAApB,CALH;MAMH1P,GAAG,EAAE,IAAI1C,MAAJ,CAAW,QAAQmS,iBAAnB,CANF;MAOHG,IAAI,EAAE,IAAItS,MAAJ,CAAW,SAASoS,iBAApB,CAPH;MAQHG,IAAI,EAAE,sDARH;MASHC,IAAI,EAAE,sDATH;MAUHC,IAAI,EAAE;IAVH,CAAP;EAYH,CA7Bc,EAAf,CA1gCY,CAyiChB;EACA;EACA;;;EACI,SAAS/M,cAAT,CAAwB34B,KAAxB,EAA+B;IAC3B,OAAO,CAAC,CAACglC,QAAQ,CAACG,QAAT,CAAkBjS,IAAlB,CAAuBlzB,KAAvB,CAAT;EACH,CA9iCW,CAgjChB;EACA;EACA;;;EACI,SAAS04B,mBAAT,CAA6B14B,KAA7B,EAAoC;IAEhCA,KAAK,GAAGA,KAAK,CAAC9D,OAAN,CAAck3B,QAAd,EAAuB,EAAvB,EAA2Bl3B,OAA3B,CAAmCm3B,SAAnC,EAA8C,EAA9C,EAAkDh4B,WAAlD,EAAR;IACA,IAAIsqC,KAAK,GAAG,KAAZ;;IACA,IAAIxK,KAAK,CAACn7B,KAAD,CAAT,EAAkB;MACdA,KAAK,GAAGm7B,KAAK,CAACn7B,KAAD,CAAb;MACA2lC,KAAK,GAAG,IAAR;IACH,CAHD,MAIK,IAAI3lC,KAAK,IAAI,aAAb,EAA4B;MAC7B,OAAO;QAAE8Q,CAAC,EAAE,CAAL;QAAQI,CAAC,EAAE,CAAX;QAAcC,CAAC,EAAE,CAAjB;QAAoBC,CAAC,EAAE,CAAvB;QAA0B+iB,MAAM,EAAE;MAAlC,CAAP;IACH,CAV+B,CAYhC;IACA;IACA;IACA;;;IACA,IAAInB,KAAJ;;IACA,IAAKA,KAAK,GAAGgS,QAAQ,CAAC1zB,GAAT,CAAa4hB,IAAb,CAAkBlzB,KAAlB,CAAb,EAAwC;MACpC,OAAO;QAAE8Q,CAAC,EAAEkiB,KAAK,CAAC,CAAD,CAAV;QAAe9hB,CAAC,EAAE8hB,KAAK,CAAC,CAAD,CAAvB;QAA4B7hB,CAAC,EAAE6hB,KAAK,CAAC,CAAD;MAApC,CAAP;IACH;;IACD,IAAKA,KAAK,GAAGgS,QAAQ,CAAC5K,IAAT,CAAclH,IAAd,CAAmBlzB,KAAnB,CAAb,EAAyC;MACrC,OAAO;QAAE8Q,CAAC,EAAEkiB,KAAK,CAAC,CAAD,CAAV;QAAe9hB,CAAC,EAAE8hB,KAAK,CAAC,CAAD,CAAvB;QAA4B7hB,CAAC,EAAE6hB,KAAK,CAAC,CAAD,CAApC;QAAyC5hB,CAAC,EAAE4hB,KAAK,CAAC,CAAD;MAAjD,CAAP;IACH;;IACD,IAAKA,KAAK,GAAGgS,QAAQ,CAACjP,GAAT,CAAa7C,IAAb,CAAkBlzB,KAAlB,CAAb,EAAwC;MACpC,OAAO;QAAE2M,CAAC,EAAEqmB,KAAK,CAAC,CAAD,CAAV;QAAej0B,CAAC,EAAEi0B,KAAK,CAAC,CAAD,CAAvB;QAA4BiD,CAAC,EAAEjD,KAAK,CAAC,CAAD;MAApC,CAAP;IACH;;IACD,IAAKA,KAAK,GAAGgS,QAAQ,CAACM,IAAT,CAAcpS,IAAd,CAAmBlzB,KAAnB,CAAb,EAAyC;MACrC,OAAO;QAAE2M,CAAC,EAAEqmB,KAAK,CAAC,CAAD,CAAV;QAAej0B,CAAC,EAAEi0B,KAAK,CAAC,CAAD,CAAvB;QAA4BiD,CAAC,EAAEjD,KAAK,CAAC,CAAD,CAApC;QAAyC5hB,CAAC,EAAE4hB,KAAK,CAAC,CAAD;MAAjD,CAAP;IACH;;IACD,IAAKA,KAAK,GAAGgS,QAAQ,CAACrP,GAAT,CAAazC,IAAb,CAAkBlzB,KAAlB,CAAb,EAAwC;MACpC,OAAO;QAAE2M,CAAC,EAAEqmB,KAAK,CAAC,CAAD,CAAV;QAAej0B,CAAC,EAAEi0B,KAAK,CAAC,CAAD,CAAvB;QAA4BpR,CAAC,EAAEoR,KAAK,CAAC,CAAD;MAApC,CAAP;IACH;;IACD,IAAKA,KAAK,GAAGgS,QAAQ,CAACO,IAAT,CAAcrS,IAAd,CAAmBlzB,KAAnB,CAAb,EAAyC;MACrC,OAAO;QAAE2M,CAAC,EAAEqmB,KAAK,CAAC,CAAD,CAAV;QAAej0B,CAAC,EAAEi0B,KAAK,CAAC,CAAD,CAAvB;QAA4BpR,CAAC,EAAEoR,KAAK,CAAC,CAAD,CAApC;QAAyC5hB,CAAC,EAAE4hB,KAAK,CAAC,CAAD;MAAjD,CAAP;IACH;;IACD,IAAKA,KAAK,GAAGgS,QAAQ,CAACU,IAAT,CAAcxS,IAAd,CAAmBlzB,KAAnB,CAAb,EAAyC;MACrC,OAAO;QACHoR,CAAC,EAAE2zB,mBAAmB,CAAC/R,KAAK,CAAC,CAAD,CAAN,CADnB;QAEHliB,CAAC,EAAEg0B,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAN,CAFf;QAGH9hB,CAAC,EAAE4zB,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAN,CAHf;QAIH7hB,CAAC,EAAE2zB,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAN,CAJf;QAKHmB,MAAM,EAAEwR,KAAK,GAAG,MAAH,GAAY;MALtB,CAAP;IAOH;;IACD,IAAK3S,KAAK,GAAGgS,QAAQ,CAACS,IAAT,CAAcvS,IAAd,CAAmBlzB,KAAnB,CAAb,EAAyC;MACrC,OAAO;QACH8Q,CAAC,EAAEg0B,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAN,CADf;QAEH9hB,CAAC,EAAE4zB,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAN,CAFf;QAGH7hB,CAAC,EAAE2zB,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAN,CAHf;QAIHmB,MAAM,EAAEwR,KAAK,GAAG,MAAH,GAAY;MAJtB,CAAP;IAMH;;IACD,IAAK3S,KAAK,GAAGgS,QAAQ,CAACQ,IAAT,CAActS,IAAd,CAAmBlzB,KAAnB,CAAb,EAAyC;MACrC,OAAO;QACH8Q,CAAC,EAAEg0B,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAL,GAAW,EAAX,GAAgBA,KAAK,CAAC,CAAD,CAAtB,CADf;QAEH9hB,CAAC,EAAE4zB,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAL,GAAW,EAAX,GAAgBA,KAAK,CAAC,CAAD,CAAtB,CAFf;QAGH7hB,CAAC,EAAE2zB,eAAe,CAAC9R,KAAK,CAAC,CAAD,CAAL,GAAW,EAAX,GAAgBA,KAAK,CAAC,CAAD,CAAtB,CAHf;QAIHmB,MAAM,EAAEwR,KAAK,GAAG,MAAH,GAAY;MAJtB,CAAP;IAMH;;IAED,OAAO,KAAP;EACH;;EAED,SAAS/K,kBAAT,CAA4BgL,KAA5B,EAAmC;IAC/B;IACA;IACA,IAAIxa,KAAJ,EAAW7wB,IAAX;IACAqrC,KAAK,GAAGA,KAAK,IAAI;MAAC,SAAQ,IAAT;MAAe,QAAO;IAAtB,CAAjB;IACAxa,KAAK,GAAG,CAACwa,KAAK,CAACxa,KAAN,IAAe,IAAhB,EAAsB1tB,WAAtB,EAAR;IACAnD,IAAI,GAAG,CAACqrC,KAAK,CAACrrC,IAAN,IAAc,OAAf,EAAwBc,WAAxB,EAAP;;IACA,IAAI+vB,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAAhC,EAAuC;MACnCA,KAAK,GAAG,IAAR;IACH;;IACD,IAAI7wB,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,OAAjC,EAA0C;MACtCA,IAAI,GAAG,OAAP;IACH;;IACD,OAAO;MAAC,SAAQ6wB,KAAT;MAAgB,QAAO7wB;IAAvB,CAAP;EACH,CAjoCW,CAmoChB;;;EACI,IAAI,SAAiCsrC,MAAM,CAACC,OAA5C,EAAqD;IACjDD,MAAM,CAACC,OAAP,GAAiBt0B,SAAjB;EACH,CAFD,CAGJ;EAHI,KAIK,IAAI,IAAJ,EAAgD;IACjDu0B,mCAAO,YAAY;MAAC,OAAOv0B,SAAP;IAAkB,CAAhC;AAAA,kGAAN;EACH,CAFI,CAGT;EAHS,KAIA,EAEJ;AAEJ,CAhpCD,EAgpCGzZ,IAhpCH,EAgpCSR,MAhpCT","sources":["webpack:///./app/assets/third-party/mapsvg/js/mapsvg.js"],"sourcesContent":["/**\r\n * MapSVG 8.0.0 - Interactive Map Plugin\r\n *\r\n * Author: Roman S. Stepanov\r\n * http://codecanyon.net/user/RomanCode/portfolio?ref=RomanCode\r\n *\r\n * MapSVG @CodeCanyon: http://codecanyon.net/item/jquery-interactive-svg-map-plugin/1694201?ref=RomanCode\r\n * Licenses: http://codecanyon.net/licenses/regular_extended?ref=RomanCode\r\n */\r\nvar MapSVG = {};\r\nwindow.MapSVG = MapSVG;\r\nMapSVG.templatesLoaded = {};\r\n\r\n\r\n// Create Element.remove() function if not exists\r\nif (!('remove' in Element.prototype)) {\r\n Element.prototype.remove = function() {\r\n if (this.parentNode) {\r\n this.parentNode.removeChild(this);\r\n }\r\n };\r\n}\r\n\r\nMath.hypot = Math.hypot || function() {\r\n var y = 0;\r\n var length = arguments.length;\r\n\r\n for (var i = 0; i < length; i++) {\r\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\r\n return Infinity;\r\n }\r\n y += arguments[i] * arguments[i];\r\n }\r\n return Math.sqrt(y);\r\n };\r\nSVGElement.prototype.getTransformToElement = SVGElement.prototype.getTransformToElement || function(toElement) {\r\n return toElement.getScreenCTM().inverse().multiply(this.getScreenCTM());\r\n };\r\n\r\n\r\n(function($, window, MapSVG, Math){\r\n\r\n\r\n MapSVG.ResizeSensor = function(element, callback) {\r\n\r\n var _this = this;\r\n\r\n _this.element = element;\r\n _this.callback = callback;\r\n\r\n var zIndex = parseInt(getComputedStyle(element));\r\n if(isNaN(zIndex)) { zIndex = 0; };\r\n zIndex--;\r\n\r\n _this.expand = document.createElement('div');\r\n _this.expand.style.position = \"absolute\";\r\n _this.expand.style.left = \"0px\";\r\n _this.expand.style.top = \"0px\";\r\n _this.expand.style.right = \"0px\";\r\n _this.expand.style.bottom = \"0px\";\r\n _this.expand.style.overflow = \"hidden\";\r\n _this.expand.style.zIndex = zIndex;\r\n _this.expand.style.visibility = \"hidden\";\r\n\r\n var expandChild = document.createElement('div');\r\n expandChild.style.position = \"absolute\";\r\n expandChild.style.left = \"0px\";\r\n expandChild.style.top = \"0px\";\r\n expandChild.style.width = \"10000000px\";\r\n expandChild.style.height = \"10000000px\";\r\n _this.expand.appendChild(expandChild);\r\n\r\n _this.shrink = document.createElement('div');\r\n _this.shrink.style.position = \"absolute\";\r\n _this.shrink.style.left = \"0px\";\r\n _this.shrink.style.top = \"0px\";\r\n _this.shrink.style.right = \"0px\";\r\n _this.shrink.style.bottom = \"0px\";\r\n _this.shrink.style.overflow = \"hidden\";\r\n _this.shrink.style.zIndex = zIndex;\r\n _this.shrink.style.visibility = \"hidden\";\r\n\r\n var shrinkChild = document.createElement('div');\r\n shrinkChild.style.position = \"absolute\";\r\n shrinkChild.style.left = \"0px\";\r\n shrinkChild.style.top = \"0px\";\r\n shrinkChild.style.width = \"200%\";\r\n shrinkChild.style.height = \"200%\";\r\n _this.shrink.appendChild(shrinkChild);\r\n\r\n _this.element.appendChild(_this.expand);\r\n _this.element.appendChild(_this.shrink);\r\n\r\n var size = element.getBoundingClientRect();\r\n\r\n _this.currentWidth = size.width;\r\n _this.currentHeight = size.height;\r\n\r\n _this.setScroll();\r\n\r\n _this.expand.addEventListener('scroll', function(){_this.onScroll()});\r\n _this.shrink.addEventListener('scroll', function(){_this.onScroll()});\r\n };\r\n MapSVG.ResizeSensor.prototype.onScroll = function(){\r\n var _this = this;\r\n var size = _this.element.getBoundingClientRect();\r\n\r\n var newWidth = size.width;\r\n var newHeight = size.height;\r\n\r\n if(newWidth != _this.currentWidth || newHeight != _this.currentHeight) {\r\n _this.currentWidth = newWidth;\r\n _this.currentHeight = newHeight;\r\n _this.callback();\r\n }\r\n\r\n this.setScroll();\r\n };\r\n MapSVG.ResizeSensor.prototype.setScroll = function(){\r\n this.expand.scrollLeft = 10000000;\r\n this.expand.scrollTop = 10000000;\r\n this.shrink.scrollLeft = 10000000;\r\n this.shrink.scrollTop = 10000000;\r\n };\r\n MapSVG.ResizeSensor.prototype.destroy = function(){\r\n this.expand.remove();\r\n this.shrink.remove();\r\n };\r\n\r\n MapSVG.userAgent = navigator.userAgent.toLowerCase();\r\n\r\n // Check for iPad/Iphone/Android\r\n MapSVG.touchDevice =\r\n (MapSVG.userAgent.indexOf(\"ipad\") > -1) ||\r\n (MapSVG.userAgent.indexOf(\"iphone\") > -1) ||\r\n (MapSVG.userAgent.indexOf(\"ipod\") > -1) ||\r\n (MapSVG.userAgent.indexOf(\"android\") > -1);\r\n\r\n MapSVG.ios =\r\n (MapSVG.userAgent.indexOf(\"ipad\") > -1) ||\r\n (MapSVG.userAgent.indexOf(\"iphone\") > -1) ||\r\n (MapSVG.userAgent.indexOf(\"ipod\") > -1);\r\n\r\n MapSVG.android = MapSVG.userAgent.indexOf(\"android\");\r\n\r\n // MapSVG.isPhone = window.matchMedia(\"only screen and (min-device-width: 320px) and (max-device-width: 812px)\").matches;\r\n MapSVG.isPhone = window.matchMedia(\"only screen and (max-width: 812px)\").matches;\r\n\r\n MapSVG.browser = {};\r\n MapSVG.browser.ie = MapSVG.userAgent.indexOf(\"msie\") > -1 || MapSVG.userAgent.indexOf(\"trident\") > -1 || MapSVG.userAgent.indexOf(\"edge\") > -1 ? {} : false;\r\n MapSVG.browser.firefox = MapSVG.userAgent.indexOf(\"firefox\") > -1;\r\n\r\n if (!String.prototype.trim) {\r\n String.prototype.trim=function(){return this.replace(/^\\s+|\\s+$/g, '');};\r\n }\r\n\r\n // Create function for retrieving mouse coordinates\r\n MapSVG.mouseCoords = function(e){\r\n if(e.clientX){\r\n return {'x':e.clientX + $(document).scrollLeft(), 'y':e.clientY + $(document).scrollTop()};\r\n }if(e.pageX){\r\n return {'x':e.pageX, 'y':e.pageY};\r\n }else if(MapSVG.touchDevice){\r\n e = e.originalEvent || e;\r\n return e.touches && e.touches[0] ?\r\n {'x':e.touches[0].pageX, 'y':e.touches[0].pageY} :\r\n {'x':e.changedTouches[0].pageX, 'y':e.changedTouches[0].pageY};\r\n }\r\n };\r\n\r\n\r\n MapSVG.get = function(index){\r\n return jQuery('.mapsvg').eq(index).mapSvg();\r\n };\r\n\r\n\r\n MapSVG.extend = function(sub, base) {\r\n sub.prototype = Object.create(base.prototype);\r\n sub.prototype.constructor = sub;\r\n };\r\n\r\n MapSVG.ucfirst = function(string){\r\n return string.charAt(0).toUpperCase()+string.slice(1);\r\n };\r\n MapSVG.parseBoolean = function (string) {\r\n switch (String(string).toLowerCase()) {\r\n case \"on\":\r\n case \"true\":\r\n case \"1\":\r\n case \"yes\":\r\n case \"y\":\r\n return true;\r\n case \"off\":\r\n case \"false\":\r\n case \"0\":\r\n case \"no\":\r\n case \"n\":\r\n return false;\r\n default:\r\n return undefined;\r\n }\r\n };\r\n MapSVG.isNumber = function(n) {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n };\r\n\r\n MapSVG.safeURL = function(url){\r\n if(url.indexOf('http://') == 0 || url.indexOf('https://') == 0)\r\n url = \"//\"+url.split(\"://\").pop();\r\n return url.replace(/^.*\\/\\/[^\\/]+/, '');\r\n };\r\n\r\n MapSVG.convertToText = function(obj) {\r\n //create an array that will later be joined into a string.\r\n var string = [];\r\n\r\n //is object\r\n // Both arrays and objects seem to return \"object\"\r\n // when typeof(obj) is applied to them. So instead\r\n // I am checking to see if they have the property\r\n // join, which normal objects don't have but\r\n // arrays do.\r\n if (obj == undefined) {\r\n return String(obj);\r\n } else if (typeof(obj) == \"object\" && (obj.join == undefined)) {\r\n var prop;\r\n for (prop in obj) {\r\n if (obj.hasOwnProperty(prop)){\r\n var key = prop.search(/[^a-zA-Z]+/) === -1 ? prop : \"'\"+prop.replace(\"'\",\"\\\\'\")+\"'\";\r\n string.push(key + \": \" + MapSVG.convertToText(obj[prop]));\r\n }\r\n }\r\n return \"{\" + string.join(\",\") + \"}\";\r\n\r\n //is array\r\n } else if (typeof(obj) == \"object\" && !(obj.join == undefined)) {\r\n var prop;\r\n for(prop in obj) {\r\n string.push(MapSVG.convertToText(obj[prop]));\r\n }\r\n return \"[\" + string.join(\",\") + \"]\";\r\n\r\n //is function\r\n } else if (typeof(obj) == \"function\") {\r\n string.push(obj.toString().replace('function anonymous','function'));\r\n\r\n //all other values can be done with JSON.stringify\r\n } else {\r\n var s = JSON.stringify(obj);\r\n string.push(s);\r\n }\r\n\r\n return string.join(\",\");\r\n };\r\n\r\n\r\n /*\r\n * CONTROLLER\r\n */\r\n MapSVG.Controller = function(options){\r\n this.container = options.container;\r\n this.mapsvg = options.mapsvg;\r\n this.template = options.template;\r\n this.scrollable = options.scrollable === undefined ? true : options.scrollable;\r\n this.withToolbar = options.withToolbar === undefined ? true : options.withToolbar;\r\n this.autoresize = MapSVG.parseBoolean(options.autoresize);\r\n this.templates = {\r\n toolbar: this.getToolbarTemplate(),\r\n main: this.getMainTemplate()\r\n };\r\n this.data = options.data;\r\n this.width = options.width;\r\n this.color = options.color;\r\n this.events = {};\r\n if(options.events){\r\n for(var i in options.events) {\r\n if(typeof options.events[i] == 'function'){\r\n this.events[i] = options.events[i];\r\n }\r\n }\r\n }\r\n this._init();\r\n };\r\n MapSVG.Controller.prototype.viewDidLoad = function(){\r\n var _this = this;\r\n _this.updateScroll();\r\n if(this.autoresize){\r\n _this.adjustHeight();\r\n this.resizeSensor.setScroll();\r\n }\r\n };\r\n MapSVG.Controller.prototype.viewDidAppear = function(){};\r\n MapSVG.Controller.prototype.viewDidDisappear = function(){};\r\n MapSVG.Controller.prototype._viewDidLoad = function(){\r\n if(this.scrollable)\r\n this.updateScroll();\r\n };\r\n MapSVG.Controller.prototype.updateScroll = function(){\r\n var _this = this;\r\n this.contentWrap.nanoScroller({preventPageScrolling: true, iOSNativeScrolling: true});\r\n setTimeout(function(){\r\n _this.contentWrap.nanoScroller({preventPageScrolling: true, iOSNativeScrolling: true});\r\n },300);\r\n };\r\n\r\n MapSVG.Controller.prototype.adjustHeight = function() {\r\n var _this = this;\r\n _this.container.height(_this.container.find('.mapsvg-auto-height').outerHeight()+_this.toolbarView.outerHeight());\r\n };\r\n\r\n MapSVG.Controller.prototype.init = function(){};\r\n\r\n MapSVG.Controller.prototype._init = function(){\r\n var _this = this;\r\n _this.render();\r\n _this.init();\r\n };\r\n MapSVG.Controller.prototype.getToolbarTemplate = function(){\r\n return '';\r\n };\r\n MapSVG.Controller.prototype.getMainTemplate = function(){\r\n return this.template;\r\n };\r\n\r\n MapSVG.Controller.prototype.render = function(){\r\n\r\n var _this = this;\r\n this.view = $('
').attr('id','mapsvg-controller-'+this.name).addClass('mapsvg-controller-view');\r\n\r\n // Wrap cointainer, includes scrollable container\r\n this.contentWrap = $('
').addClass('mapsvg-controller-view-wrap');\r\n this.contentWrap2 = $('
');\r\n\r\n // Scrollable container\r\n this.contentSizer = $('
').addClass('mapsvg-auto-height');\r\n this.contentView = $('
').addClass('mapsvg-controller-view-content');\r\n this.contentSizer.append(this.contentView);\r\n\r\n if(this.scrollable){\r\n this.contentWrap.addClass('nano');\r\n this.contentWrap2.addClass('nano-content');\r\n }\r\n this.contentWrap.append(this.contentWrap2);\r\n this.contentWrap2.append(this.contentSizer);\r\n\r\n // Add toolbar if it exists in template file\r\n if(this.templates.toolbar){\r\n this.toolbarView = $('
').addClass('mapsvg-controller-view-toolbar');\r\n this.view.append(this.toolbarView);\r\n }\r\n\r\n this.view.append(this.contentWrap);\r\n\r\n // Add view into container\r\n this.container.append(this.view);\r\n this.container.data('controller', this);\r\n\r\n if(this.width)\r\n this.view.css({width: this.width});\r\n if(this.color)\r\n this.view.css({'background-color': this.color});\r\n\r\n _this.viewReadyToFill();\r\n this.redraw();\r\n\r\n setTimeout(function(){\r\n _this._viewDidLoad();\r\n _this.viewDidLoad();\r\n _this.setEventHandlersCommon();\r\n _this.setEventHandlers();\r\n },1);\r\n };\r\n\r\n MapSVG.Controller.prototype.viewReadyToFill = function(){\r\n var _this = this;\r\n if(_this.autoresize){\r\n _this.resizeSensor = new MapSVG.ResizeSensor(this.contentSizer[0], function(){\r\n _this.adjustHeight();\r\n _this.updateScroll();\r\n _this.events['resize'] && _this.events['resize'].call(_this, _this.mapsvg);\r\n });\r\n }\r\n };\r\n\r\n MapSVG.Controller.prototype.redraw = function(){\r\n\r\n this.contentView.html( this.templates.main );\r\n\r\n if(this.templates.toolbar)\r\n this.toolbarView.html( this.templates.toolbar );\r\n\r\n this.updateTopShift();\r\n\r\n if(this.noPadding)\r\n this.contentView.css({padding: 0});\r\n\r\n if(this.scrollable)\r\n this.updateScroll();\r\n };\r\n MapSVG.Controller.prototype.updateTopShift = function(){\r\n var _this = this;\r\n _this.contentWrap.css({'top': _this.toolbarView.outerHeight(true)+'px'});\r\n\r\n setTimeout(function(){\r\n _this.contentWrap.css({'top': _this.toolbarView.outerHeight(true)+'px'});\r\n },500);\r\n };\r\n\r\n MapSVG.Controller.prototype.setEventHandlersCommon = function(){\r\n\r\n };\r\n MapSVG.Controller.prototype.setEventHandlers = function(){\r\n };\r\n MapSVG.Controller.prototype.destroy = function(){\r\n this.view.empty().remove();\r\n if(this.resizeSensor){\r\n this.resizeSensor.destroy();\r\n }\r\n };\r\n\r\n\r\n /*\r\n * Directory Controller\r\n */\r\n MapSVG.DirectoryController = function(options){\r\n this.database = options.database;\r\n this.noPadding = true;\r\n this.position = options.position;\r\n this.search = options.search;\r\n this.filters = options.filters;\r\n MapSVG.Controller.call(this, options);\r\n };\r\n MapSVG.extend(MapSVG.DirectoryController, MapSVG.Controller);\r\n\r\n MapSVG.DirectoryController.prototype.getToolbarTemplate = function(){\r\n var _this = this;\r\n\r\n var t = '
';\r\n // t += '';\r\n\r\n if(this.search){\r\n t += '
';\r\n t += '';\r\n t += '
';\r\n }\r\n\r\n t += '
';\r\n t += '
';\r\n t += '
';\r\n\r\n return t;\r\n };\r\n\r\n MapSVG.DirectoryController.prototype.viewDidLoad = function() {\r\n\r\n var _this = this;\r\n this.menuBtn = $('
' + this.mapsvg.getData().options.mobileView.labelList + '
');\r\n this.mapBtn = $('
' + this.mapsvg.getData().options.mobileView.labelMap + '
');\r\n\r\n // Make directory hidden by default on mobiles\r\n this.mapBtn.addClass('active');\r\n this.container.addClass('closed');\r\n\r\n this.mobileButtons = $('
');\r\n this.mobileButtons.append(this.menuBtn, this.mapBtn);\r\n\r\n if(this.mapsvg.getData().options.menu.on !== false)\r\n this.mobileButtons.insertAfter(this.mapsvg.getData().$wrap);\r\n\r\n this.events && this.events['shown'] && this.events['shown'].call(this.view);\r\n\r\n if(this.mapsvg.getData().options.filters && this.mapsvg.getData().options.filters.on){\r\n _this.setFilters();\r\n }\r\n\r\n if(this.mapsvg.getData().options.colors.directorySearch){\r\n this.toolbarView.css({'background-color':this.mapsvg.getData().options.colors.directorySearch});\r\n }\r\n };\r\n\r\n MapSVG.DirectoryController.prototype.setEventHandlers = function(){\r\n\r\n var _this = this;\r\n var _data = _this.mapsvg.getData();\r\n\r\n $(window).on('resize',function(){\r\n _this.updateTopShift();\r\n });\r\n\r\n this.view.on('keyup.menu.mapsvg', '.mapsvg-directory-search',function () {\r\n var data = {search: $(this).val()};\r\n if(_this.mapsvg.getData().options.menu.searchFallback)\r\n data.searchFallback = true;\r\n _this.database.getAll(data);\r\n });\r\n\r\n this.menuBtn.on('click', function(){\r\n _this.toggle(true);\r\n // if(!$(this).hasClass('active')){\r\n // _this.toggle();\r\n // $(this).parent().find('div').removeClass('active');\r\n // $(this).addClass('active');\r\n // }\r\n });\r\n this.mapBtn.on('click', function(){\r\n _this.toggle(false);\r\n // if(!$(this).hasClass('active')){\r\n // _this.toggle();\r\n // $(this).parent().find('div').removeClass('active');\r\n // $(this).addClass('active');\r\n // }\r\n });\r\n\r\n this.view.on('click.menu.mapsvg', '.mapsvg-directory-item', function (e) {\r\n\r\n e.preventDefault();\r\n var objID = $(this).data('object-id');\r\n\r\n var regions;\r\n var marker;\r\n var detailsViewObject;\r\n var eventObject;\r\n\r\n _this.deselectItems();\r\n _this.selectItems(objID);\r\n\r\n\r\n if(_this.mapsvg.getData().options.menu.source == 'regions'){\r\n regions = [_this.mapsvg.getRegion(objID)];\r\n eventObject = regions[0];\r\n detailsViewObject = regions[0];\r\n } else {\r\n detailsViewObject = _this.database.getLoadedObject(objID);\r\n eventObject = detailsViewObject;\r\n if(detailsViewObject.regions){\r\n regions = detailsViewObject.regions.map(function(region){\r\n return _this.mapsvg.getRegion(region.id);\r\n });\r\n }\r\n }\r\n\r\n if(detailsViewObject.marker && detailsViewObject.marker.id)\r\n marker = _this.mapsvg.getMarker(detailsViewObject.marker.id);\r\n\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.showDetails){\r\n _this.mapsvg.loadDetailsView(detailsViewObject);\r\n _this.toggle(false);\r\n }\r\n var skipPopover;\r\n\r\n if(regions && regions.length > 0) {\r\n\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.zoom){\r\n _this.mapsvg.zoomTo(regions, _this.mapsvg.getData().options.actions.directoryItem.click.zoomToLevel);\r\n }\r\n\r\n if(regions.length > 1){\r\n _this.mapsvg.setMultiSelect(true);\r\n }\r\n regions.forEach(function(region){\r\n\r\n var center = region.getCenter();\r\n e.clientX = center[0];\r\n e.clientY = center[1];\r\n\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.selectRegion){\r\n //region.setSelected(true);\r\n _this.mapsvg.selectRegion(region, true);\r\n }\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.showRegionPopover){\r\n _this.toggle(false);\r\n _this.mapsvg.showPopover(region);\r\n }\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.fireRegionOnClick){\r\n var events = _this.mapsvg.getData().events;\r\n if(events && events['click.region'])\r\n events && events['click.region'].call(region, e, _this.mapsvg);\r\n }\r\n });\r\n if(regions.length > 1){\r\n _this.mapsvg.setMultiSelect(false, false);\r\n }\r\n\r\n }\r\n if(marker){\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.showMarkerPopover){\r\n _this.mapsvg.showPopover(detailsViewObject);\r\n _this.toggle(false);\r\n }\r\n if(_this.mapsvg.getData().options.actions.directoryItem.click.fireMarkerOnClick){\r\n var events = _this.mapsvg.getData().events;\r\n if(events && events['click.marker'])\r\n events && events['click.marker'].call(marker, e, _this.mapsvg);\r\n }\r\n }\r\n\r\n _this.events['click'] && _this.events['click'].call($(this), e, eventObject, _this.mapsvg);\r\n\r\n var actions = _this.mapsvg.getData().options.actions;\r\n\r\n\r\n if(actions.directoryItem.click.goToLink){\r\n var linkParts = actions.directoryItem.click.linkField.split('.');\r\n var url;\r\n if(linkParts.length > 1){\r\n var obj = linkParts.shift();\r\n var attr = '.'+linkParts.join('.');\r\n if(obj == 'Region'){\r\n if(regions[0] && regions[0].data)\r\n url = eval('regions[0].data'+attr);\r\n }else{\r\n if(detailsViewObject)\r\n url = eval('detailsViewObject'+attr);\r\n }\r\n\r\n if(url){\r\n if(actions.directoryItem.click.newTab){\r\n var win = window.open(url, '_blank');\r\n win.focus();\r\n }else{\r\n window.location.href = url;\r\n }\r\n }\r\n }\r\n }\r\n }).on('mouseover.menu.mapsvg', '.mapsvg-directory-item', function (e) {\r\n\r\n var objID = $(this).data('object-id');\r\n var regions;\r\n\r\n if(_this.mapsvg.getData().options.menu.source == 'regions'){\r\n regions = [_this.mapsvg.getRegion(objID)];\r\n } else {\r\n var detailsViewObject = _this.database.getLoadedObject(objID);\r\n if(detailsViewObject.regions){\r\n regions = detailsViewObject.regions.map(function(region){\r\n return _this.mapsvg.getRegion(region.id);\r\n });\r\n }\r\n }\r\n\r\n if(regions && regions.length){\r\n _this.mapsvg.highlightRegions(regions);\r\n\r\n regions.forEach(function(region){\r\n if(region && !region.disabled){\r\n _this.mapsvg.getData().options.mouseOver && _this.mapsvg.getData().options.mouseOver.call(region, e, _this);\r\n }\r\n });\r\n }\r\n _this.events['mouseover'] && _this.events['mouseover'].call($(this), e, eventObject, _this.mapsvg);\r\n }).on('mouseout.menu.mapsvg', '.mapsvg-directory-item', function (e) {\r\n\r\n var objID = $(this).data('object-id');\r\n var regions;\r\n\r\n if(_this.mapsvg.getData().options.menu.source == 'regions'){\r\n regions = [_this.mapsvg.getRegion(objID)];\r\n } else {\r\n var detailsViewObject = _this.database.getLoadedObject(objID);\r\n if(detailsViewObject.regions){\r\n regions = detailsViewObject.regions.map(function(region){\r\n return _this.mapsvg.getRegion(region.id);\r\n });\r\n }\r\n }\r\n\r\n if(regions && regions.length){\r\n _this.mapsvg.unhighlightRegions(regions);\r\n regions.forEach(function(region){\r\n if(region && !region.disabled){\r\n _this.mapsvg.getData().options.mouseOut && _this.mapsvg.getData().options.mouseOut.call(region, e, _this);\r\n }\r\n });\r\n }\r\n\r\n _this.events['mouseout'] && _this.events['mouseout'].call($(this), e, eventObject, _this.mapsvg);\r\n\r\n }).on('click.menu.mapsvg','.mapsvg-filter-delete',function(e){\r\n var filterField = $(this).data('filter');\r\n _this.database.query.filters[filterField] = null;\r\n delete _this.database.query.filters[filterField];\r\n _this.mapsvg.deselectAllRegions();\r\n _this.mapsvg.loadDataObjects();\r\n });\r\n\r\n };\r\n\r\n\r\n MapSVG.DirectoryController.prototype.highlightItems = function(ids){\r\n var _this = this;\r\n if(typeof ids != 'object')\r\n ids = [ids];\r\n ids.forEach(function(id){\r\n _this.view.find('#mapsvg-directory-item-'+id).addClass('hover');\r\n });\r\n };\r\n MapSVG.DirectoryController.prototype.unhighlightItems = function(){\r\n this.view.find('.mapsvg-directory-item').removeClass('hover');\r\n };\r\n MapSVG.DirectoryController.prototype.selectItems = function(ids){\r\n var _this = this;\r\n if(typeof ids != 'object')\r\n ids = [ids];\r\n ids.forEach(function(id){\r\n _this.view.find('#mapsvg-directory-item-'+id).addClass('selected');\r\n });\r\n };\r\n MapSVG.DirectoryController.prototype.deselectItems = function(){\r\n this.view.find('.mapsvg-directory-item').removeClass('selected');\r\n };\r\n\r\n MapSVG.DirectoryController.prototype.addFilter = function(field){\r\n var schema = this.database.getSchema();\r\n };\r\n MapSVG.DirectoryController.prototype.loadItemsToDirectory = function(){\r\n var items;\r\n var _this = this;\r\n\r\n // if(this.mapsvg.getData().options.menu.source == 'regions'){\r\n // var _items = [];\r\n // items = this.mapsvg.getData().regions;\r\n // items.forEach(function(item){\r\n // if(!item.disabled)\r\n // _items.push(item.forTemplate());\r\n // });\r\n // items = _items;\r\n // }else{\r\n items = this.database.getLoaded();\r\n\r\n if(this.database.table == 'regions'){\r\n items = items.filter(function(item){\r\n var status = _this.mapsvg.getData().options.regionStatuses;\r\n if(status[item.status]){\r\n return !status[item.status].disabled;\r\n }else{\r\n return true;\r\n }\r\n });\r\n }\r\n // }\r\n this.contentView.html( this.templates.main({'items': items}) );\r\n if(items.length == 0){\r\n this.contentView.html('
'+this.mapsvg.getData().options.menu.noResultsText+'
');\r\n }\r\n this.setFilters();\r\n if(this.scrollable)\r\n this.updateScroll();\r\n };\r\n MapSVG.DirectoryController.prototype.getRegion = function(id){\r\n var _this = this;\r\n var region;\r\n if(_this.mapsvg.getData().options.menu.source == 'regions'){\r\n region = _this.mapsvg.getRegion(id);\r\n }else{\r\n var obj = _this.database.getLoadedObject(id);\r\n if(obj.region_id)\r\n region = _this.mapsvg.getRegion(obj.region_id);\r\n }\r\n return region;\r\n };\r\n MapSVG.DirectoryController.prototype.setFilters = function(){\r\n var _this = this;\r\n var filters = this.toolbarView.find('.mapsvg-directory-filter-wrap');\r\n this.toolbarView.find('.mapsvg-filter-tag').remove();\r\n\r\n if(!_this.formBuilder && _this.mapsvg.getData().options.filters && _this.mapsvg.getData().options.filters.on){\r\n _this.formBuilder = new MapSVG.FormBuilder({\r\n container: _this.view.find('.mapsvg-directory-filter-wrap'),\r\n filtersMode: true,\r\n schema: _this.mapsvg.filtersSchema.getSchema(),\r\n editMode: false,\r\n mapsvg: _this.mapsvg,\r\n // mediaUploader: mediaUploader,\r\n // data: _dataRecord,\r\n admin: _this.admin,\r\n events: {\r\n // save: function(data){_this.saveDataObject(data); },\r\n // update: function(data){ _this.updateDataObject(data); },\r\n // close: function(){ _this.closeFormHandler(); },\r\n // load: function(){_this.updateScroll(); }\r\n }\r\n });\r\n _this.formBuilder.view.on('change','select,input[type=\"radio\"]',function(){\r\n var filter = {};\r\n var field = $(this).data('parameter-name');\r\n\r\n // if($(this).data('type')){\r\n // filter[field] = {type: $(this).data('type'), value: $(this).val()};\r\n // }else{\r\n filter[field] = $(this).val();\r\n // }\r\n\r\n\r\n _this.database.query.setFilters(filter);\r\n\r\n // _this.formBuilder.view.find('select,input[type=\"radio\"]').each(function(index){\r\n // var field = $(this).data('parameter-name');\r\n // var val = $(this).val();\r\n // filters[field] = val;\r\n // });\r\n _this.database.getAll(filter);\r\n });\r\n setTimeout(\r\n function(){\r\n _this.updateTopShift();\r\n if(this.scrollable)\r\n _this.updateScroll();\r\n\r\n }, 200);\r\n }\r\n\r\n if(_this.mapsvg.getData().options.filters && _this.mapsvg.getData().options.filters.on || ( _this.database.query.filters && Object.keys(_this.database.query.filters).length > 0)){\r\n\r\n for(var field_name in _this.database.query.filters){\r\n var field_value = _this.database.query.filters[field_name];\r\n var _field_name = field_name;\r\n var filterField = _this.mapsvg.filtersSchema.getField(_field_name);\r\n\r\n if(_this.mapsvg.getData().options.filters.on && filterField){\r\n filters.find('[data-parameter-name=\"'+_field_name+'\"]').val(field_value);\r\n }else{\r\n if(field_name == 'regions'){\r\n // check if there is such filter. If there is then change its value\r\n // if there isn't then add a tag with close button\r\n _field_name = 'region';\r\n field_value = _this.mapsvg.getRegion(field_value).title || field_value;\r\n }\r\n filters.append('
'+_field_name+': '+field_value+' ×
');\r\n }\r\n }\r\n this.view.addClass('mapsvg-with-filter');\r\n\r\n }else{\r\n this.view.removeClass('mapsvg-with-filter');\r\n }\r\n this.updateTopShift();\r\n };\r\n\r\n MapSVG.DirectoryController.prototype.toggle = function(on){\r\n var _this = this;\r\n if(on){\r\n this.container.removeClass('closed');\r\n this.menuBtn.addClass('active');\r\n this.mapBtn.removeClass('active');\r\n }else{\r\n this.container.toggleClass('closed');\r\n if(this.container.hasClass('closed')){\r\n if(MapSVG.isPhone){\r\n _this.mapsvg.getData().$wrap.css('height','auto');\r\n _this.updateScroll();\r\n }\r\n }else{\r\n if(MapSVG.isPhone && this.container.height() < 400){\r\n _this.mapsvg.getData().$wrap.css('height','400px');\r\n _this.updateScroll();\r\n }\r\n }\r\n this.menuBtn.removeClass('active');\r\n this.mapBtn.addClass('active');\r\n }\r\n\r\n this.updateTopShift();\r\n };\r\n\r\n MapSVG.DirectoryController.prototype.addPagination = function(pager){\r\n this.contentView.append('
');\r\n this.contentView.find('.mapsvg-pagination-container').html(pager);\r\n };\r\n\r\n /*\r\n * Details View Controller\r\n */\r\n MapSVG.DetailsController = function(options){\r\n MapSVG.Controller.call(this, options);\r\n };\r\n MapSVG.extend(MapSVG.DetailsController, MapSVG.Controller);\r\n\r\n MapSVG.DetailsController.prototype.getToolbarTemplate = function(){\r\n if(this.withToolbar)\r\n return '
';\r\n else\r\n return '';\r\n };\r\n\r\n MapSVG.DetailsController.prototype.init = function(){\r\n };\r\n\r\n MapSVG.DetailsController.prototype.viewDidLoad = function(){\r\n var _this = this;\r\n this.events && this.events['shown'] && this.events['shown'].call(_this, _this.mapsvg);\r\n };\r\n\r\n MapSVG.DetailsController.prototype.setEventHandlers = function(){\r\n var _this = this;\r\n this.view.on('click touchend','.mapsvg-popover-close',function(){\r\n _this.destroy();\r\n _this.events && _this.events['closed'] && _this.events['closed'].call(_this, _this.mapsvg);\r\n });\r\n };\r\n\r\n /*\r\n * Popover View Controller\r\n */\r\n MapSVG.PopoverController = function(options){\r\n options.autoresize = true;\r\n MapSVG.Controller.call(this, options);\r\n this.point = options.point;\r\n this.yShift = options.yShift;\r\n this.mapObject = options.mapObject;\r\n this.id = this.mapObject.id+'_'+Math.random();\r\n this.container.data('popover-id', this.id);\r\n var _this = this;\r\n };\r\n MapSVG.extend(MapSVG.PopoverController, MapSVG.Controller);\r\n\r\n\r\n MapSVG.PopoverController.prototype.setPoint = function(point){\r\n this.point = point;\r\n };\r\n\r\n MapSVG.PopoverController.prototype.getToolbarTemplate = function(){\r\n if(this.withToolbar)\r\n return '
';\r\n else\r\n return '';\r\n };\r\n\r\n MapSVG.PopoverController.prototype.init = function(){\r\n };\r\n\r\n MapSVG.PopoverController.prototype.viewDidLoad = function(){\r\n MapSVG.Controller.prototype.viewDidLoad.call(this);\r\n var _this = this;\r\n this.adjustPosition();\r\n this.container.toggleClass('mapsvg-popover-animate', true);\r\n this.container.toggleClass('mapsvg-popover-visible', true);\r\n _this.adjustHeight();\r\n _this.updateScroll();\r\n this.resizeSensor.setScroll();\r\n this.events && this.events['shown'] && this.events['shown'].call(_this, _this.mapsvg);\r\n };\r\n MapSVG.PopoverController.prototype.adjustHeight = function() {\r\n var _this = this;\r\n _this.container.height(_this.container.find('.mapsvg-auto-height').outerHeight()+_this.toolbarView.outerHeight());\r\n };\r\n MapSVG.PopoverController.prototype.adjustPosition = function() {\r\n var _this = this;\r\n var pos = _this.mapsvg.convertSVGToPixel([_this.point.x, _this.point.y]);\r\n pos[1] -= _this.yShift;\r\n _this.container.css({\r\n 'transform': 'translateX(-50%) translate(' + pos[0] + 'px,' + pos[1]+ 'px)'\r\n });\r\n };\r\n\r\n\r\n MapSVG.PopoverController.prototype.setEventHandlers = function(){\r\n var _this = this;\r\n $('body').off('.popover.mapsvg');\r\n\r\n this.view.on('click touchend','.mapsvg-popover-close',function(){\r\n _this.close();\r\n });\r\n\r\n $('body').one('mouseup.popover.mapsvg touchend.popover.mapsvg ', function(e){\r\n setTimeout(function(){\r\n if(_this.mapsvg.getData().isScrolling || $(e.target).closest('.mapsvg-popover').length || $(e.target).hasClass('mapsvg-btn-zoom'))\r\n return;\r\n _this.close();\r\n },50);\r\n });\r\n };\r\n MapSVG.PopoverController.prototype.close = function(){\r\n var _this = this;\r\n if((this.container.data('popover-id')!= this.id) || !_this.container.is(':visible'))\r\n return;\r\n _this.destroy();\r\n if(_this.mapObject instanceof MapSVG.Region){\r\n _this.mapsvg.deselectRegion(_this.mapObject);\r\n }\r\n\r\n _this.events && _this.events['closed'] && _this.events['closed'].call(_this, _this.mapsvg);\r\n };\r\n MapSVG.PopoverController.prototype.destroy = function() {\r\n var _this = this;\r\n _this.container.toggleClass('mapsvg-popover-animate', false);\r\n _this.container.toggleClass('mapsvg-popover-visible', false);\r\n MapSVG.Controller.prototype.destroy.call(this);\r\n\r\n };\r\n MapSVG.PopoverController.prototype.show = function(){\r\n var _this = this;\r\n // _this.container.toggleClass('mapsvg-popover-animate', true);\r\n _this.container.toggleClass('mapsvg-popover-visible', true);\r\n };\r\n\r\n\r\n})(jQuery, window, MapSVG, Math);\r\n\r\n\r\n\r\n(function( $ ) {\r\n\r\n var mapSVG = {};\r\n\r\n\r\n\r\n //\r\n // REGION\r\n //\r\n function MapObject(jQueryObject, mapsvg){\r\n this.id = \"\";\r\n this.objects = [];\r\n this.data = {};\r\n this.node = jQueryObject;\r\n this.mapsvg = mapsvg;\r\n this.nodeType = jQueryObject[0].tagName;\r\n }\r\n\r\n MapObject.prototype.isMarker = function(){\r\n return this.mapsvg_type == 'marker';\r\n };\r\n MapObject.prototype.isRegion = function(){\r\n return this.mapsvg_type == 'region';\r\n };\r\n MapObject.prototype.setData = function(data){\r\n var _this = this;\r\n for(var name in data){\r\n _this.data[name] = data[name];\r\n }\r\n };\r\n MapObject.prototype.getBBox = function(){\r\n var _data = this.mapsvg.getData();\r\n // var xoffset = _data.$map.offset().left;\r\n // var yoffset = _data.$map.offset().top;\r\n //\r\n //\r\n // var x = (this.node[0].getBoundingClientRect().left - xoffset + jQuery('body').scrollLeft())/_data.scale + _data.viewBox[0];\r\n // var y = (this.node[0].getBoundingClientRect().top - yoffset + jQuery('body').scrollTop())/_data.scale + _data.viewBox[1];\r\n // var w = this.node[0].getBoundingClientRect().width/_data.scale;\r\n // var h = this.node[0].getBoundingClientRect().height/_data.scale;\r\n var bbox = this instanceof Marker ? {x: this.x, y: this.y, width: this.default.width/_data.scale, height: this.default.height/_data.scale} : this.node[0].getBBox();\r\n bbox = $.extend(true, {}, bbox);\r\n // var globalToLocal = this.node[0].getTransformToElement(this.mapsvg.getData().$svg[0]).inverse();\r\n // var inObjectSpace = globalPoint.matrixTransform( globalToLocal );\r\n\r\n\r\n if(!(this instanceof Marker)){\r\n var matrix = this.node[0].getTransformToElement(this.mapsvg.getData().$svg[0]);\r\n var x2 = bbox.x+bbox.width;\r\n var y2 = bbox.y+bbox.height;\r\n\r\n\r\n // transform a point using the transformed matrix\r\n var position = this.mapsvg.getData().$svg[0].createSVGPoint();\r\n position.x = bbox.x;\r\n position.y = bbox.y;\r\n position = position.matrixTransform(matrix);\r\n bbox.x = position.x;\r\n bbox.y = position.y;\r\n // var position = this.mapsvg.getData().$svg[0].createSVGPoint();\r\n position.x = x2;\r\n position.y = y2;\r\n position = position.matrixTransform(matrix);\r\n bbox.width = position.x - bbox.x;\r\n bbox.height = position.y - bbox.y;\r\n\r\n }\r\n\r\n // if(!(this instanceof Marker)){\r\n // var scale = this.mapsvg.getScale();\r\n // var r = this.node[0].getBoundingClientRect();\r\n // bbox = {x: r.x*scale, y: r.y*scale, width: r.width*scale, height: r.height*scale};\r\n // }else{\r\n // bbox = {x: this.x, y: this.y, width: this.default.width, height: this.default.height}\r\n // }\r\n\r\n return [bbox.x,bbox.y,bbox.width,bbox.height];\r\n };\r\n MapObject.prototype.getGeoBounds = function(){\r\n // var _data = this.mapsvg.getData();\r\n // var xoffset = _data.$map.offset().left;\r\n // var yoffset = _data.$map.offset().top;\r\n //\r\n //\r\n // var x = (this.node[0].getBoundingClientRect().left - xoffset + jQuery('body').scrollLeft())/_data.scale + _data.viewBox[0];\r\n // var y = (this.node[0].getBoundingClientRect().top - yoffset + jQuery('body').scrollTop())/_data.scale + _data.viewBox[1];\r\n // var w = this.node[0].getBoundingClientRect().width/_data.scale;\r\n // var h = this.node[0].getBoundingClientRect().height/_data.scale;\r\n // var bbox = this.node[0].getBBox();\r\n var bbox = this.getBBox();\r\n var sw = this.mapsvg.convertSVGToGeo(bbox[0], (bbox[1] + bbox[3]));\r\n var ne = this.mapsvg.convertSVGToGeo((bbox[0] + bbox[2]), bbox[1]);\r\n\r\n return {sw: sw,ne: ne};\r\n };\r\n MapObject.prototype.getComputedStyle = function(prop, node){\r\n node = node || this.node[0];\r\n var _p1,_p2;\r\n if(_p1 = node.getAttribute(prop)){\r\n return _p1;\r\n }else if(_p2 = node.getAttribute('style')){\r\n var s = _p2.split(';');\r\n var z = s.filter(function(e){\r\n var e = e.trim();\r\n var attr = e.split(':');\r\n if (attr[0]==prop)\r\n return true;\r\n });\r\n if(z.length){\r\n return z[0].split(':').pop().trim();\r\n }\r\n }\r\n\r\n\r\n var parent = $(node).parent();\r\n var nodeType = parent.length ? parent[0].tagName : null;\r\n\r\n if (nodeType && nodeType!='svg')\r\n return this.getComputedStyle(prop,parent[0]);\r\n else\r\n return undefined;\r\n };\r\n MapObject.prototype.getStyle = function(prop){\r\n var _p1, _p2;\r\n if(_p1 = this.attr(prop)){\r\n return _p1;\r\n\r\n }else if(_p2 = this.attr('style')){\r\n var s = _p2.split(';');\r\n var z = s.filter(function(e){\r\n var e = e.trim();\r\n if (e.indexOf(prop)===0)\r\n return e;\r\n });\r\n\r\n return z.length ? z[0].split(':').pop().trim() : undefined;\r\n }\r\n return \"\";\r\n };\r\n MapObject.prototype.getCenter = function(){\r\n\r\n // var c = this.getBBox();\r\n\r\n var x = this.node[0].getBoundingClientRect().left;\r\n var y = this.node[0].getBoundingClientRect().top;\r\n var w = this.node[0].getBoundingClientRect().width;\r\n var h = this.node[0].getBoundingClientRect().height;\r\n return [x+w/2,y+h/2];\r\n };\r\n MapObject.prototype.getCenterSVG = function(){\r\n var _this = this;\r\n var c = _this.getBBox();\r\n return {x: c[0]+c[2]/2, y: c[1]+c[3]/2};\r\n };\r\n MapObject.prototype.getCenterLatLng = function(yShift){\r\n yShift = yShift ? yShift : 0;\r\n var bbox = this.getBBox();\r\n var x = bbox.x + bbox.width/2;\r\n var y = bbox.y + bbox.height/2 - yShift;\r\n var latlng = this.mapsvg.convertSVGToGeo(x,y);\r\n return {lat: latlng[0], lng: latlng[1]};\r\n };\r\n MapObject.prototype.setTooltip = function(text){\r\n this.tooltip = text ? text : undefined;\r\n };\r\n MapObject.prototype.setPopover = function(text){\r\n this.popover = text ? text : undefined;\r\n };\r\n MapObject.prototype.setHref = function(url){\r\n if (this.href && this.node.parent('a').length)\r\n this.node.unwrap();\r\n this.href = url ? url : undefined;\r\n // if (this.href){\r\n // var xlinkNS=\"http://www.w3.org/1999/xlink\", svgNS=\"http://www.w3.org/2000/svg\";\r\n // var a = document.createElementNS(svgNS, \"a\");\r\n // a.setAttributeNS(xlinkNS,\"href\",this.href);\r\n // if(this.target)\r\n // a.setAttribute(\"target\",this.target);\r\n // this.node.wrap($(a));\r\n // }\r\n };\r\n MapObject.prototype.setTarget = function(target){\r\n this.target = target ? target : undefined;\r\n };\r\n MapObject.prototype.setData = function(data){\r\n\r\n if(data){\r\n if(typeof data == 'string'){\r\n if(data.substr(0,1)=='[' || data.substr(0,1)=='{'){\r\n try{\r\n var tmp;\r\n eval('tmp = '+data);\r\n this.data = tmp;\r\n }catch(err){\r\n var error = \"MapSVG: Error in Data object for \"+this.mapsvg_type+\" '\"+this.id+\"'. Data object was set to empty object {}.\";\r\n this.data = {};\r\n return {_error: error};\r\n }\r\n }else{\r\n this.data = data;\r\n }\r\n }else{\r\n this.data = data;\r\n }\r\n return this.data;\r\n }else{\r\n this.data = undefined;\r\n }\r\n };\r\n MapObject.prototype.attr = function(v1,v2){\r\n var svgDom = this.node[0];\r\n\r\n if(typeof v1 == \"object\"){\r\n $.each(v1,function(key,item){\r\n if (typeof item == \"string\" || typeof item == \"number\"){\r\n svgDom.setAttribute(key,item);\r\n }\r\n });\r\n }\r\n else if(typeof v1 == \"string\" && (typeof v2 == \"string\" || typeof v2 == \"number\")){\r\n svgDom.setAttribute(v1,v2);\r\n }\r\n else if(v2 == undefined) {\r\n return svgDom.getAttribute(v1);\r\n }\r\n };\r\n MapObject.prototype.setId = function(id){\r\n if(!id) return false;\r\n this.id = id;\r\n this.node[0].setAttribute('id',id);\r\n if(this.isMarker()){\r\n this.mapsvg.updateMarkersDict();\r\n }\r\n };\r\n\r\n\r\n\r\n //\r\n // REGION\r\n //\r\n function Region(jQueryObject, globalOptions, regionID, mapsvg){\r\n MapObject.call(this, jQueryObject);\r\n\r\n this.globalOptions = globalOptions;\r\n this.mapsvg = mapsvg;\r\n\r\n\r\n this.id = this.node.attr('id');\r\n\r\n if(!this.id){\r\n this.setId(this.nodeType+'_'+regionID.id++);\r\n this.autoID = true;\r\n }\r\n\r\n this.id_no_spaces = this.id.replace(' ','_');\r\n\r\n this.title = this.node.attr('title');\r\n\r\n this.node[0].setAttribute('class',(this.node.attr('class')||'')+' mapsvg-region');\r\n this.style = {fill: this.getComputedStyle('fill')};\r\n\r\n this.style.stroke = this.getComputedStyle('stroke') || '';\r\n // Make stroke-width always the same:\r\n // if(!MapSVG.browser.ie)// && !MapSVG.browser.firefox)\r\n // this.node.css({'vector-effect' : 'non-scaling-stroke'});\r\n // else{\r\n var w;\r\n if(this.node.data('stroke-width')){\r\n w = this.node.data('stroke-width');\r\n }else{\r\n w = this.getComputedStyle('stroke-width');\r\n w = w ? w.replace('px','') : '1';\r\n w = w == \"1\" ? 1.2 : parseFloat(w);\r\n }\r\n this.style['stroke-width'] = w;\r\n this.node.data('stroke-width', w);\r\n // }\r\n\r\n var regionOptions = globalOptions.regions && globalOptions.regions[this.id] ? globalOptions.regions[this.id] : null;\r\n\r\n this.disabled = this.getDisabledState();\r\n this.disabled && this.attr('class',this.attr('class')+' mapsvg-disabled');\r\n\r\n this.default_attr = {};\r\n this.selected_attr = {};\r\n this.hover_attr = {};\r\n this.mapsvg_type = 'region';\r\n var selected = false;\r\n if(regionOptions && regionOptions.selected){\r\n selected = true;\r\n delete regionOptions.selected;\r\n }\r\n regionOptions && this.update(regionOptions);\r\n this.setFill();\r\n if(selected)\r\n this.setSelected(true);\r\n this.saveState();\r\n }\r\n MapSVG.extend(Region, MapObject);\r\n\r\n Region.prototype.saveState = function(){\r\n this.initialState = JSON.stringify(this.getOptions());\r\n };\r\n Region.prototype.changed = function(){\r\n return JSON.stringify(this.getOptions()) != this.initialState;\r\n };\r\n Region.prototype.edit = function(id){\r\n this.nodeOriginal = this.node.clone();\r\n };\r\n Region.prototype.editCommit = function(){\r\n this.nodeOriginal = null;\r\n };\r\n Region.prototype.editCancel = function(){\r\n // this.node[0].setAttribute('d', )\r\n this.nodeOriginal.appendTo(_this.mapsvg.getData().$svg);\r\n this.node = this.nodeOriginal;\r\n this.nodeOriginal = null;\r\n };\r\n\r\n Region.prototype.getOptions = function(forTemplate){\r\n var globals = this.globalOptions.regions[this.id];\r\n var o = {\r\n id: this.id,\r\n id_no_spaces: this.id_no_spaces,\r\n title: this.title,\r\n disabled: this.disabled === this.getDisabledState(true) ? undefined : this.disabled,\r\n fill: this.globalOptions.regions[this.id] && this.globalOptions.regions[this.id].fill,\r\n tooltip: this.tooltip,\r\n popover: this.popover,\r\n href: this.href,\r\n target: this.target,\r\n data: this.data,\r\n gaugeValue: this.gaugeValue\r\n };\r\n if(forTemplate){\r\n o.disabled = this.disabled;\r\n o.dataCounter = (this.data && this.data.length) || 0;\r\n }\r\n $.each(o,function(key,val){\r\n if(val == undefined){\r\n delete o[key];\r\n }\r\n });\r\n if(this.customAttrs){\r\n var that = this;\r\n this.customAttrs.forEach(function(attr){\r\n o[attr] = that[attr];\r\n });\r\n }\r\n return o;\r\n };\r\n Region.prototype.forTemplate = function(){\r\n var data = {\r\n id: this.id,\r\n title: this.title,\r\n objects: this.objects,\r\n data: this.data\r\n };\r\n for(var key in this.data){\r\n if(key!='title' && key!='id')\r\n data[key] = this.data[key];\r\n }\r\n\r\n return data;\r\n };\r\n\r\n Region.prototype.update = function(options){\r\n for(var key in options){\r\n // check if there's a setter for a property\r\n var setter = 'set'+MapSVG.ucfirst(key);\r\n if (setter in this)\r\n this[setter](options[key]);\r\n else{\r\n this[key] = options[key];\r\n this.customAttrs = this.customAttrs || [];\r\n this.customAttrs.push(key);\r\n }\r\n }\r\n };\r\n Region.prototype.setId = function(id){\r\n this.id = id;\r\n this.node.prop('id', id);\r\n };\r\n Region.prototype.setTitle = function(title){\r\n this.title = title;\r\n };\r\n Region.prototype.setStyle = function(style){\r\n $.extend(true, this.style, style);\r\n this.setFill();\r\n };\r\n Region.prototype.getChoroplethColor = function(){\r\n var o = this.globalOptions.gauge;\r\n var w = (parseFloat(this.data[this.globalOptions.regionChoroplethField]) - o.min) / o.maxAdjusted;\r\n\r\n return {\r\n r: Math.round(o.colors.diffRGB.r * w + o.colors.lowRGB.r),\r\n g: Math.round(o.colors.diffRGB.g * w + o.colors.lowRGB.g),\r\n b: Math.round(o.colors.diffRGB.b * w + o.colors.lowRGB.b),\r\n a: Math.round(o.colors.diffRGB.a * w + o.colors.lowRGB.a)\r\n };\r\n };\r\n\r\n Region.prototype.setFill = function(fill){\r\n\r\n var _this = this;\r\n\r\n\r\n if(this.globalOptions.colorsIgnore){\r\n this.node.css(this.style);\r\n return;\r\n }\r\n\r\n if(fill){\r\n var regions = {};\r\n regions[this.id] = {fill: fill};\r\n $.extend(true, this.globalOptions, {regions: regions});\r\n }else if(!fill && fill!==undefined && this.globalOptions.regions && this.globalOptions.regions[this.id] && this.globalOptions.regions[this.id].fill){\r\n delete this.globalOptions.regions[this.id].fill;\r\n }\r\n\r\n\r\n // Priority: gauge > options.fill > disabled > base > svg\r\n if(this.globalOptions.gauge.on && this.gaugeValue){\r\n var o = this.globalOptions.gauge;\r\n var w = (this.gaugeValue - o.min) / o.maxAdjusted;\r\n\r\n var rgb = {\r\n r: Math.round(o.colors.diffRGB.r * w + o.colors.lowRGB.r),\r\n g: Math.round(o.colors.diffRGB.g * w + o.colors.lowRGB.g),\r\n b: Math.round(o.colors.diffRGB.b * w + o.colors.lowRGB.b),\r\n a: Math.round(o.colors.diffRGB.a * w + o.colors.lowRGB.a)\r\n };\r\n this.default_attr['fill'] = 'rgba(' + rgb.r + ',' + rgb.g + ',' + rgb.b + ',' + rgb.a+')';\r\n }else if(this.globalOptions.regions[this.id] && this.globalOptions.regions[this.id].fill) {\r\n this.default_attr['fill'] = this.globalOptions.regions[this.id].fill;\r\n }else if(this.disabled && this.globalOptions.colors.disabled){\r\n this.default_attr['fill'] = this.globalOptions.colors.disabled;\r\n }else if(this.globalOptions.colors.base){\r\n this.default_attr['fill'] = this.globalOptions.colors.base;\r\n\r\n }else if(this.style.fill!='none'){\r\n this.default_attr['fill'] = this.style.fill ? this.style.fill : this.globalOptions.colors.baseDefault;\r\n\r\n }else{\r\n this.default_attr['fill'] = 'none';\r\n }\r\n\r\n\r\n if(MapSVG.isNumber(this.globalOptions.colors.selected))\r\n this.selected_attr['fill'] = MapSVG.tinycolor(this.default_attr.fill).lighten(parseFloat(this.globalOptions.colors.selected)).toRgbString();\r\n else\r\n this.selected_attr['fill'] = this.globalOptions.colors.selected;\r\n\r\n if(MapSVG.isNumber(this.globalOptions.colors.hover))\r\n this.hover_attr['fill'] = MapSVG.tinycolor(this.default_attr.fill).lighten(parseFloat(this.globalOptions.colors.hover)).toRgbString();\r\n else\r\n this.hover_attr['fill'] = this.globalOptions.colors.hover;\r\n\r\n\r\n this.node.css('fill',this.default_attr['fill']);\r\n this.fill = this.default_attr['fill'];\r\n\r\n if(this.style.stroke!='none' && this.globalOptions.colors.stroke != undefined){\r\n this.node.css('stroke',this.globalOptions.colors.stroke);\r\n }else{\r\n var s = this.style.stroke == undefined ? '' : this.style.stroke;\r\n this.node.css('stroke', s);\r\n }\r\n\r\n if(this.selected)\r\n this.select();\r\n\r\n };\r\n Region.prototype.setDisabled = function(on, skipSetFill){\r\n on = on !== undefined ? MapSVG.parseBoolean(on) : this.getDisabledState(); // get default disabled state if undefined\r\n var prevDisabled = this.disabled;\r\n this.disabled = on;\r\n on ? this.attr('class',this.attr('class')+' mapsvg-disabled') : this.attr('class',this.attr('class').replace(' mapsvg-disabled',''));\r\n if(this.disabled != prevDisabled)\r\n this.mapsvg.deselectRegion(this);\r\n !skipSetFill && this.setFill();\r\n };\r\n Region.prototype.setStatus = function(status){\r\n var statusOptions;\r\n if(statusOptions = this.globalOptions.regionStatuses && this.globalOptions.regionStatuses[status]){\r\n this.status = status;\r\n this.data.status = status;\r\n this.setDisabled(statusOptions.disabled, true);\r\n }else{\r\n this.status = undefined;\r\n this.data.status = undefined;\r\n this.setDisabled(false, true);\r\n }\r\n this.setFill();\r\n };\r\n Region.prototype.setSelected = function(on){\r\n //this.selected = MapSVG.parseBoolean(on);\r\n this.mapsvg.selectRegion(this);\r\n };\r\n Region.prototype.setGaugeValue = function(val){\r\n this.gaugeValue = $.isNumeric(val) ? parseFloat(val) : undefined;\r\n };\r\n Region.prototype.getDisabledState = function(asDefault){\r\n var opts = this.globalOptions.regions[this.id];\r\n if(!asDefault && opts && opts.disabled !== undefined){\r\n return opts.disabled;\r\n }else if(\r\n this.globalOptions.disableAll || this.style.fill == 'none' || this.id == 'labels' || this.id == 'Labels'\r\n ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n };\r\n Region.prototype.highlight = function(){\r\n this.node.css({'fill' : this.hover_attr.fill});\r\n };\r\n Region.prototype.unhighlight = function(){\r\n this.node.css({'fill' : this.default_attr.fill});\r\n };\r\n Region.prototype.select = function(){\r\n this.node.css({'fill' : this.selected_attr.fill});\r\n this.selected = true;\r\n };\r\n Region.prototype.deselect = function(){\r\n this.node.css({'fill' : this.default_attr.fill});\r\n this.selected = false;\r\n };\r\n\r\n //\r\n // MARKER\r\n //\r\n function Marker(options, scale, mapsvg){\r\n\r\n if(!options.id || !options.src) return false;\r\n\r\n var img = $('').css({\r\n width: options.width+'px',\r\n height: options.height+'px'\r\n // ,\r\n // left: -options.width/2+'px',\r\n // 'margin-top': -options.height+'px'\r\n }).addClass('mapsvg-marker');\r\n\r\n MapObject.call(this, img);\r\n\r\n this.mapsvg = mapsvg;\r\n\r\n this.src = options.src;\r\n this.setId(options.id);\r\n this.mapsvg_type = 'marker';\r\n this.x = parseFloat(options.x);\r\n this.y = parseFloat( options.y);\r\n this.xy = [this.x,this.y];\r\n this.width = parseFloat( options.width);\r\n this.height = parseFloat( options.height);\r\n this.tooltip = options.tooltip;\r\n this.popover = options.popover;\r\n this.href = options.href;\r\n this.target = options.target;\r\n this.default = {x: this.x, y:this.y, width:this.width, height: this.height};\r\n this.geoCoords = options.geoCoords;\r\n this.attached = options.attached == undefined ? true : MapSVG.parseBoolean(options.attached);\r\n this.isLink = options.isLink == undefined ? false : MapSVG.parseBoolean(options.isLink);\r\n this.urlField = options.urlField;\r\n this.dataId = options.dataId == undefined ? null : parseInt(options.dataId);\r\n this.data = typeof options.data === 'undefined' ? {} : options.data;\r\n\r\n this.adjustPosition();\r\n\r\n // this.data = options.data;\r\n }\r\n MapSVG.extend(Marker, MapObject);\r\n\r\n Marker.prototype.getOptions = function(){\r\n var o = {\r\n id: this.id,\r\n attached: this.attached,\r\n isLink: this.isLink,\r\n urlField: this.urlField,\r\n dataId: this.dataId,\r\n tooltip: this.tooltip,\r\n popover: this.popover,\r\n href: this.href,\r\n target: this.target,\r\n data: this.data,\r\n src: this.src,\r\n width: this.default.width,\r\n height: this.default.height,\r\n x: this.x,\r\n y: this.y,\r\n geoCoords: this.geoCoords\r\n };\r\n $.each(o,function(key,val){\r\n if(val == undefined){\r\n delete o[key];\r\n }\r\n });\r\n return o;\r\n };\r\n\r\n Marker.prototype.update = function(data, mapScale){\r\n for(var key in data){\r\n // check if there's a setter for a property\r\n var setter = 'set'+MapSVG.ucfirst(key);\r\n if (setter in this)\r\n this[setter](data[key],mapScale);\r\n }\r\n };\r\n\r\n Marker.prototype.setSrc = function(src, mapScale){\r\n if(!src)\r\n return false;\r\n src = MapSVG.safeURL(src);\r\n mapScale = mapScale || this.mapScale;\r\n var img = new Image();\r\n var marker = this;\r\n this.src = src;\r\n img.onload = function(){\r\n marker.default.width = this.width;\r\n marker.default.height = this.height;\r\n marker.attr({x: marker.x, y: marker.y, width: this.width, height: this.height});\r\n marker.width = this.width;\r\n marker.height = this.height;\r\n marker.node[0].setAttribute('src', src);\r\n marker.adjustPosition(mapScale);\r\n };\r\n img.src = src;\r\n };\r\n\r\n Marker.prototype.setXy = function(xy){\r\n this.x = xy[0];\r\n this.y = xy[1];\r\n this.xy = [this.x, this.y];\r\n // this.node[0].setAttribute('x', this.x);\r\n // this.node[0].setAttribute('y', this.y);\r\n // this.adjustPosition(this.mapScale);\r\n // this.node.css({\r\n // left:xy[0],\r\n // bottom: xy[1]\r\n // });\r\n if(this.mapsvg.getData().mapIsGeo)\r\n this.geoCoords = this.mapsvg.convertSVGToGeo(xy[0], xy[1]);\r\n\r\n this.adjustPosition();\r\n if(this.onChange)\r\n this.onChange.call(this);\r\n };\r\n Marker.prototype.moveToClick = function(xy){\r\n\r\n var _data = this.mapsvg.getData();\r\n var markerOptions = {};\r\n\r\n xy[0] = xy[0] + _data.viewBox[0];\r\n xy[1] = xy[1] + _data.viewBox[1];\r\n\r\n\r\n if(_data.mapIsGeo)\r\n this.geoCoords = this.mapsvg.convertSVGToGeo(xy[0], xy[1]);\r\n\r\n markerOptions.xy = xy;\r\n this.update(markerOptions);\r\n };\r\n\r\n Marker.prototype.adjustPosition = function(mapScale){\r\n // var w = this.default.cx !== undefined ? this.default.cx : this.default.width/2;\r\n // var h = this.default.cy !== undefined ? this.default.cy : this.default.height;\r\n // var dx = w - w/mapScale;\r\n // var dy = h - h/mapScale;\r\n // this.attr('width',this.default.width/(mapScale));\r\n // this.attr('height',this.default.height/(mapScale));\r\n // this.attr('transform','translate('+dx+','+dy+')');\r\n // this.mapScale = mapScale;\r\n var _this = this;\r\n var pos = _this.mapsvg.convertSVGToPixel([this.x, this.y]);\r\n\r\n // pos[0] = pos[0] - (_data.layers.popovers.offset().left - _data.$map.offset().left);\r\n // pos[1] = pos[1] - (_data.layers.popovers.offset().top - _data.$map.offset().top);\r\n\r\n this.node.css({\r\n 'transform': 'translate(-50%,-100%) translate('+pos[0]+'px,'+pos[1]+'px)'\r\n });\r\n\r\n };\r\n Marker.prototype.setGeoCoords = function(coords){\r\n if(typeof coords == \"string\"){\r\n coords = coords.trim().split(',');\r\n coords = [parseFloat(coords[0]),parseFloat(coords[1])];\r\n }\r\n if(typeof coords == 'object' && coords.length==2){\r\n if($.isNumeric(coords[0]) && $.isNumeric(coords[1])){\r\n var xy = this.mapsvg.convertGeoToSVG(coords);\r\n this.setXy(xy);\r\n }\r\n }\r\n };\r\n // GET MARKER COORDINATES TRANSLATED TO 1:1 SCALE (used when saving new added markers)\r\n Marker.getDefaultCoords = function(markerX, markerY, markerWidth, markerHeight, mapScale){\r\n markerX = parseFloat(markerX);\r\n markerY = parseFloat(markerY);\r\n markerWidth = parseFloat(markerWidth);\r\n markerHeight = parseFloat(markerHeight);\r\n // markerX = markerX + markerWidth/(2*mapScale) - markerWidth/2;\r\n // markerY = markerY + markerHeight/mapScale - markerHeight;\r\n\r\n\r\n return [markerX, markerY];\r\n };\r\n Marker.prototype.drag = function(startCoords, scale, endCallback, clickCallback){\r\n var _this = this;\r\n this.ox = this.x;\r\n this.oy = this.y;\r\n\r\n $('body').on('mousemove.drag.mapsvg',function(e){\r\n e.preventDefault();\r\n _this.mapsvg.getData().$map.addClass('no-transitions');\r\n //$('body').css('cursor','move');\r\n var mouseNew = MapSVG.mouseCoords(e);\r\n var dx = mouseNew.x - startCoords.x;\r\n var dy = mouseNew.y - startCoords.y;\r\n _this.setXy([_this.ox + dx/scale, _this.oy + dy/scale])\r\n // _this.x = ;\r\n // _this.y = ;\r\n\r\n // _this.attr({x:_this.x, y:_this.y});\r\n //_this.attr('transform','translate('+dx/scale+','+dy/scale+')');\r\n });\r\n $('body').on('mouseup.drag.mapsvg',function(e){\r\n e.preventDefault();\r\n _this.undrag();\r\n var mouseNew = MapSVG.mouseCoords(e);\r\n var dx = mouseNew.x - startCoords.x;\r\n var dy = mouseNew.y - startCoords.y;\r\n _this.setXy([_this.ox + dx/scale, _this.oy + dy/scale])\r\n\r\n // _this.x = _this.ox + dx/scale;\r\n // _this.y = _this.oy + dy/scale;\r\n // _this.attr({x:_this.x, y:_this.y});\r\n endCallback.call(_this);\r\n if(_this.ox == _this.x && _this.oy == _this.y)\r\n clickCallback.call(_this);\r\n });\r\n };\r\n Marker.prototype.undrag = function(){\r\n //this.node.closest('svg').css('pointer-events','auto');\r\n //$('body').css('cursor','default');\r\n $('body').off('.drag.mapsvg');\r\n this.mapsvg.getData().$map.removeClass('no-transitions');\r\n };\r\n Marker.prototype.delete = function(){\r\n if(this.href)\r\n this.node.parent('a').empty().remove();\r\n this.mapsvg.getData().$map.find('#'+this.id).empty().remove();\r\n };\r\n Marker.prototype.setObject = function(obj){\r\n this.object = obj;\r\n this.databaseObject = obj;\r\n this.objects = [obj];\r\n };\r\n\r\n MapSVG.MapObject = MapObject;\r\n MapSVG.Region = Region;\r\n MapSVG.Marker = Marker;\r\n\r\n // Get plugin's path\r\n var scripts = document.getElementsByTagName('script');\r\n var myScript = scripts[scripts.length - 1].src.split('/');\r\n myScript.pop();\r\n var pluginJSURL = myScript.join('/')+'/';\r\n myScript.pop();\r\n var pluginRootURL = myScript.join('/')+'/';\r\n\r\n\r\n\r\n\r\n var instances = {};\r\n var globalID = 0;\r\n\r\n // Default options\r\n var defaults = {\r\n markerLastID : 0,\r\n googleMaps : {on: false},\r\n events : {},\r\n regionLastID : 0,\r\n dataLastID : 1,\r\n disableAll : false,\r\n width : null,\r\n height : null,\r\n lockAspectRatio : true,\r\n padding : {top: 0, left: 0, right: 0, bottom: 0},\r\n maxWidth : null,\r\n maxHeight : null,\r\n minWidth : null,\r\n minHeight : null,\r\n loadingText : 'Loading map...',\r\n //colors : {base: \"#E1F1F1\", background: \"#eeeeee\", hover: \"#548eac\", selected: \"#065A85\", stroke: \"#7eadc0\"},\r\n colorsIgnore : false,\r\n colors : {baseDefault: \"#000000\",\r\n background: \"#eeeeee\",\r\n selected: 40,\r\n hover: 20,\r\n directory: '#fafafa',\r\n status: {}},\r\n regions : {},\r\n markers : [],\r\n //markerGroups : {}, // {group_id: [marker_id, marker_id2], group_id2: [...]}\r\n //regionGroups : {},\r\n viewBox : [],\r\n cursor : 'default',\r\n onClick : null,\r\n mouseOver : null,\r\n mouseOut : null,\r\n menuOnClick : null,\r\n beforeLoad : null,\r\n afterLoad : null,\r\n zoom : {on: false, limit: [0,10], delta: 2, buttons: {on: true, location: 'right'}, mousewheel: true},\r\n scroll : {on: false, limit: false, background: false, spacebar: false},\r\n responsive : true,\r\n tooltips : {mode: 'off', on: false, priority: 'local', position: 'bottom-right'},\r\n popovers : {mode: \"off\", on: false, priority: 'local', position: 'top', centerOn: true, width: 300, maxWidth: 50, maxHeight: 50, resetViewboxOnClose: true, mobileFullscreen: true},\r\n multiSelect : false,\r\n regionStatuses : {\r\n '1': {\"label\": \"Enabled\", \"value\": '1', \"color\": \"\", \"disabled\": false},\r\n '0': {\"label\": \"Disabled\", \"value\": '0', \"color\": \"\", \"disabled\": true}\r\n },\r\n events : {\r\n 'afterLoad' : null,\r\n 'beforeLoad' : null,\r\n 'databaseLoaded' : null,\r\n 'click.region' : null,\r\n 'mouseover.region' : null,\r\n 'mouseout.region' : null,\r\n 'click.marker' : null,\r\n 'mouseover.marker' : null,\r\n 'mouseout.marker' : null,\r\n 'click.directoryItem' : null,\r\n 'mouseover.directoryItem' : null,\r\n 'mouseout.directoryItem' : null,\r\n 'shown.popover' : null,\r\n 'shown.detailsView' : null,\r\n 'closed.popover' : null,\r\n 'closed.detailsView' : null\r\n },\r\n templates : {\r\n popoverRegion: '',\r\n popoverMarker: '',\r\n tooltipRegion: '',\r\n tooltipMarker: '',\r\n directoryItem: '',\r\n detailsView: '',\r\n detailsViewRegion: ''\r\n\r\n },\r\n gauge : {on: false, labels: {low: \"low\", high: \"high\"}, colors: {lowRGB: null, highRGB: null, low: \"#550000\", high: \"#ee0000\"}, min: 0, max: 0},\r\n filters: {on: false},\r\n menu : {\r\n on: false,\r\n search: false,\r\n customContainer: false,\r\n containerId: '',\r\n searchPlaceholder: \"Search...\",\r\n searchFallback: false,\r\n source: 'database',\r\n width: '200px',\r\n position: 'left',\r\n sortBy: 'id',\r\n sortDirection: 'desc',\r\n clickActions: {\r\n region: 'default',\r\n marker: 'default',\r\n directoryItem: {\r\n triggerClick: true,\r\n showPopover: false,\r\n showDetails: true\r\n }\r\n },\r\n detailsViewLocation: 'overDirectory',\r\n noResultsText: 'No results found'\r\n },\r\n database: {\r\n pagination: {\r\n on: true,\r\n perpage: 30,\r\n next: \"Next\",\r\n prev: \"Prev.\"\r\n },\r\n table: ''\r\n },\r\n actions: {\r\n region: {\r\n click: {\r\n showDetails: false,\r\n showDetailsFor: 'region',\r\n filterDirectory: false,\r\n loadObjects: false,\r\n showPopover: false,\r\n showPopoverFor: 'region',\r\n goToLink: false\r\n }\r\n },\r\n marker: {\r\n click: {\r\n showDetails: false,\r\n showPopover: false,\r\n goToLink: false\r\n }\r\n },\r\n directoryItem: {\r\n click: {\r\n showDetails: true,\r\n showPopover: false,\r\n goToLink: false,\r\n selectRegion: true,\r\n fireRegionOnClick: true\r\n }\r\n }\r\n },\r\n detailsView : {\r\n location: 'top', // top || slide || custom\r\n containerId: '',\r\n width: '100%'\r\n },\r\n mobileView: {\r\n labelMap: 'Map',\r\n labelList: 'List'\r\n },\r\n googleMaps: {\r\n on: false,\r\n apiKey: '',\r\n loaded: false,\r\n center: 'auto', // or {lat: 12, lon: 13}\r\n type: 'roadmap',\r\n minZoom: 1\r\n },\r\n groups: [],\r\n floors: [],\r\n layersControl: {\r\n on: false,\r\n position: 'top-left',\r\n label: 'Show on map',\r\n expanded: true,\r\n maxHeight: '100%'\r\n },\r\n floorsControl: {\r\n on: false,\r\n position: 'top-left',\r\n label: 'Floors',\r\n expanded: false,\r\n maxHeight: '100%'\r\n },\r\n svgFileVersion: 1,\r\n menu : {on: false, containerId: \"mapsvg-menu-regions\", template: function(region){\r\n return '
  • ' + (region.title||region.id) + '
  • '\r\n}},\r\n menuMarkers : {on: false, containerId: \"mapsvg-menu-markers\", template: function(marker){\r\n return '
  • ' + marker.id + '
  • '\r\n }}\r\n };\r\n\r\n // Default marker style\r\n var markerOptions = {'src': pluginRootURL+'markers/pin1_red.png'};\r\n\r\n\r\n /** Main Class **/\r\n mapSVG = function(elem, options){\r\n\r\n var _data;\r\n\r\n this.methods = {\r\n prototypes : {'MapObject': MapObject, 'Region': Region, 'Marker': Marker},\r\n setMarkersClickAsLink: function(){\r\n this.database.loadSchema().done(function(schema){\r\n if(schema){\r\n schema.forEach(function(field){\r\n if(field.type == 'marker'){\r\n _data.markerIsLink = MapSVG.parseBoolean(field.isLink);\r\n _data.markerUrlField = field.urlField;\r\n }\r\n });\r\n }\r\n });\r\n },\r\n setGroups: function(){\r\n _data.groups = _data.options.groups;\r\n _data.groups.forEach(function(g){\r\n g.objects.forEach(function(obj){\r\n _data.$svg.find('#'+obj.value).toggle(g.visible);\r\n });\r\n });\r\n },\r\n setLayersControl : function(options){\r\n if(options)\r\n $.extend(true, _data.options.layersControl, options);\r\n if(_data.options.layersControl.on){\r\n if(!_data.$layersControl){\r\n _data.$layersControl = $('
    ');\r\n _data.$layersControlLabel = $('
    ').appendTo(_data.$layersControl);\r\n _data.$layersControlListWrap = $('
    ').appendTo(_data.$layersControl);\r\n _data.$layersControlListNano = $('
    ').appendTo(_data.$layersControlListWrap);\r\n _data.$layersControlList = $('
    ').appendTo(_data.$layersControlListNano);\r\n _data.$layersControl.appendTo(_data.$wrap);\r\n }\r\n _data.$layersControlLabel.html(_data.options.layersControl.label);\r\n _data.$layersControlList.empty();\r\n _data.$layersControl.removeClass('mapsvg-top-left mapsvg-top-right mapsvg-bottom-left mapsvg-bottom-right');\r\n _data.$layersControl.addClass('mapsvg-'+_data.options.layersControl.position);\r\n // if(!_data.options.layersControl.expanded && !_data.$layersControl.hasClass('closed')){\r\n // _data.$layersControl.addClass('closed')\r\n // }\r\n _data.$layersControl.css({'max-height': _data.options.layersControl.maxHeight});\r\n\r\n _data.options.groups.forEach(function(g){\r\n var item = $('
    ' +\r\n '' +\r\n ' ' +\r\n '
    ').appendTo(_data.$layersControlList);\r\n });\r\n _data.$layersControlListNano.nanoScroller({preventPageScrolling: true});\r\n _data.$layersControl.off();\r\n _data.$layersControl.on('click','.mapsvg-layers-item', function() {\r\n var id = $(this).data('group-id');\r\n var input = $(this).find('input');\r\n input.prop('checked', !input.prop('checked'));\r\n _data.options.groups.forEach(function(g){\r\n if(g.id == id) g.visible = !g.visible;\r\n });\r\n _this.setGroups();\r\n });\r\n _data.$layersControlLabel.on('click',function(){\r\n _data.$layersControl.toggleClass('closed');\r\n });\r\n\r\n _data.$layersControl.toggleClass('closed',!_data.options.layersControl.expanded);\r\n\r\n }else{\r\n _data.$layersControl && _data.$layersControl.hide();\r\n }\r\n\r\n },\r\n setFloorsControl : function(options){\r\n if(options)\r\n $.extend(true, _data.options.floorsControl, options);\r\n if(_data.options.floorsControl.on){\r\n if(!_data.$floorsControl){\r\n _data.$floorsControl = $('
    ');\r\n _data.$floorsControlLabel = $('
    ').appendTo(_data.$floorsControl);\r\n _data.$floorsControlListWrap = $('
    ').appendTo(_data.$floorsControl);\r\n _data.$floorsControlListNano = $('
    ').appendTo(_data.$floorsControlListWrap);\r\n _data.$floorsControlList = $('
    ').appendTo(_data.$floorsControlListNano);\r\n _data.$floorsControl.appendTo(_data.$map);\r\n }\r\n _data.$floorsControlLabel.html(_data.options.floorsControl.label);\r\n _data.$floorsControlList.empty();\r\n _data.$floorsControl.removeClass('mapsvg-top-left mapsvg-top-right mapsvg-bottom-left mapsvg-bottom-right')\r\n _data.$floorsControl.addClass('mapsvg-'+_data.options.floorsControl.position);\r\n // if(!_data.options.floorsControl.expanded && !_data.$floorsControl.hasClass('closed')){\r\n // _data.$floorsControl.addClass('closed')\r\n // }\r\n _data.$floorsControl.css({'max-height': _data.options.floorsControl.maxHeight});\r\n\r\n _data.options.floors.forEach(function(f){\r\n var item = $('
    ' +\r\n ' ' +\r\n '
    ').appendTo(_data.$floorsControlList);\r\n });\r\n _data.$floorsControlListNano.nanoScroller({preventPageScrolling: true});\r\n _data.$floorsControl.off();\r\n _data.$floorsControl.on('click','.mapsvg-floors-item', function() {\r\n var id = $(this).data('floor-id');\r\n _this.setFloor(id);\r\n });\r\n _data.$floorsControlLabel.on('click',function(){\r\n _data.$floorsControl.toggleClass('closed');\r\n });\r\n\r\n _data.$floorsControl.toggleClass('closed',!_data.options.floorsControl.expanded);\r\n\r\n }else{\r\n _data.$floorsControl && _data.$floorsControl.hide();\r\n }\r\n\r\n },\r\n setFloor: function(id){\r\n _data.$floorsControl.find('.mapsvg-floors-item').toggleClass('active',false);\r\n _data.$floorsControl.find('[data-floor-id=\"'+id+'\"]').toggleClass('active',true);\r\n _data.options.floors.forEach(function(floor){\r\n _data.$svg.find('#'+floor.object_id).hide();\r\n });\r\n var floor = _data.$svg.find('#'+id);\r\n floor.show();\r\n floor = new MapObject(floor, _this);\r\n var bbox = floor.getBBox();\r\n _data._viewBox = bbox;\r\n _this.setViewBox(_data._viewBox);\r\n _data.zoomLevels = null;\r\n _data.zoomLevel = 1;\r\n _this.setZoom();\r\n floor = null;\r\n },\r\n getGroupSelectOptions: function(){\r\n var id;\r\n var optionGroups = [];\r\n var options = [];\r\n var options2 = [];\r\n\r\n _data.$svg.find('g').each(function(index){\r\n if(id = $(this)[0].getAttribute('id')){\r\n // _data.groups.push(id);\r\n options.push({label: id, value: id});\r\n }\r\n });\r\n optionGroups.push({title: \"SVG Layers / Groups\", options: options});\r\n\r\n _data.$svg.find('path,ellipse,circle,polyline,polygon,rectangle,img,text').each(function(index){\r\n if(id = $(this)[0].getAttribute('id')){\r\n // _data.groups.push(id);\r\n options2.push({label: id, value: id});\r\n }\r\n });\r\n optionGroups.push({title: \"Other SVG objects\", options: options2});\r\n\r\n\r\n return optionGroups;\r\n },\r\n loadDataObjects: function(params){\r\n var _this = this;\r\n return _this.database.getAll(params);\r\n },\r\n loadDirectory: function(){\r\n var _this = this;\r\n if(!_data.editMode){\r\n if(_data.options.menu.on){\r\n _data.controllers.directory.loadItemsToDirectory();\r\n // _data.controllers.directory.toggle(true);\r\n }\r\n if( _data.options.database.pagination.on){\r\n var pager = _this.getPagination();\r\n if(_data.options.menu.on){\r\n _data.controllers.directory.addPagination(pager);\r\n }else{\r\n _data.$map.append(pager);\r\n }\r\n }\r\n }\r\n },\r\n getPagination : function(callback){\r\n\r\n _data.pager && (_data.pager.empty().remove());\r\n _data.pager = $('');\r\n\r\n if(_this.database.onFirstPage() && _this.database.onLastPage()){\r\n _data.pager.hide();\r\n }else{\r\n _data.pager.find('.mapsvg-prev').removeClass('disabled');\r\n _data.pager.find('.mapsvg-first').removeClass('disabled');\r\n _data.pager.find('.mapsvg-last').removeClass('disabled');\r\n _data.pager.find('.mapsvg-next').removeClass('disabled');\r\n\r\n _this.database.onLastPage() &&\r\n (_data.pager.find('.mapsvg-next').addClass('disabled') && _data.pager.find('.mapsvg-last').addClass('disabled'));\r\n\r\n _this.database.onFirstPage() &&\r\n (_data.pager.find('.mapsvg-prev').addClass('disabled') && _data.pager.find('.mapsvg-first').addClass('disabled'));\r\n }\r\n\r\n _data.pager.on('click','.mapsvg-next:not(.disabled)',function(e){\r\n e.preventDefault();\r\n if(_this.database.onLastPage())\r\n return;\r\n _this.database.getAll({page: _this.database.page+1}).done(function(){\r\n callback && callback();\r\n });\r\n }).on('click','.mapsvg-prev:not(.disabled)',function(e){\r\n e.preventDefault();\r\n if(_this.database.onFirstPage())\r\n return;\r\n _this.database.getAll({page: _this.database.page-1}).done(function(){\r\n callback && callback();\r\n });\r\n }).on('click','.mapsvg-first:not(.disabled)',function(e){\r\n e.preventDefault();\r\n if(_this.database.onFirstPage())\r\n return;\r\n _this.database.getAll({page: 1}).done(function(){\r\n callback && callback();\r\n });\r\n }).on('click','.mapsvg-last:not(.disabled)',function(e){\r\n e.preventDefault();\r\n if(_this.database.onLastPage())\r\n return;\r\n _this.database.getAll({lastpage: true}).done(function(){\r\n callback && callback();\r\n });\r\n });\r\n\r\n return _data.pager;\r\n },\r\n deleteMarkers: function(){\r\n while(_data.markers.length){\r\n _this.markerDelete(_data.markers[0]);\r\n }\r\n },\r\n addDataObjectsAsMarkers: function(){\r\n\r\n var data = this.database.getLoaded();\r\n var _this = this;\r\n\r\n _this.deleteMarkers();\r\n\r\n data && data.forEach(function(obj){\r\n if(obj.marker && !(obj instanceof Marker)){\r\n obj.marker.id = 'marker_'+obj.id;\r\n obj.marker.attached = true;\r\n var marker = _this.markerAdd(obj.marker);\r\n marker && marker.setObject(obj);\r\n }\r\n });\r\n\r\n },\r\n getCssUrl: function(){\r\n return MapSVG.urls.root+'css/mapsvg.css';\r\n },\r\n isGeo: function(){\r\n return _data.mapIsGeo;\r\n },\r\n functionFromString: function(string){\r\n var func;\r\n var error = false;\r\n var fn = string.trim();\r\n if(fn.indexOf(\"{\")==-1 || fn.indexOf(\"function\")!==0 || fn.indexOf(\"(\")==-1){\r\n return {error: \"MapSVG user function error: no function body.\"};\r\n }\r\n var fnBody = fn.substring(fn.indexOf(\"{\") + 1, fn.lastIndexOf(\"}\"));\r\n var params = fn.substring(fn.indexOf(\"(\") + 1, fn.indexOf(\")\"));\r\n try{\r\n func = new Function(params,fnBody);\r\n }catch(err){\r\n error = err;\r\n }\r\n\r\n if (!error)\r\n return func;\r\n else\r\n return error;//{error: {line: error.line, text: \"MapSVG user function error: (line \"+error.line+\"): \"+error.message}};\r\n },\r\n getOptions: function(forTemplate, forWeb, optionsDelta){\r\n optionsDelta = optionsDelta || {};\r\n var options = $.extend(true, {}, _data.options);\r\n // for(var key in optionsDelta){\r\n // options[key] = optionsDelta[key];\r\n // }\r\n $.extend(true, options, optionsDelta);\r\n\r\n options.viewBox = _data._viewBox;\r\n\r\n delete options.markers;\r\n //var region = {id: \"\", title: \"\", disabled: false, selected: false,\r\n if (forTemplate){\r\n options.regions = [];\r\n _data.regions.forEach(function(r){\r\n options.regions.push(r.getOptions(forTemplate));\r\n });\r\n options.markers = _data.options.markers;\r\n }else{\r\n _data.regions.forEach(function(r){\r\n r.changed() && (options.regions[r.id] = r.getOptions());\r\n });\r\n if(_data.markers.length > 0)\r\n options.markers = [];\r\n _data.markers.forEach(function(m){\r\n options.markers.push(m.getOptions());\r\n });\r\n }\r\n\r\n\r\n if(forWeb)\r\n $.each(options,function(key,val){\r\n if(JSON.stringify(val)==JSON.stringify(defaults[key]))\r\n delete options[key];\r\n });\r\n return options;\r\n },\r\n // SETTERS\r\n on : function(event, callback) {\r\n this.lastChangeTime = Date.now();\r\n if (!_data.events[event])\r\n _data.events[event] = [];\r\n _data.events[event].push(callback);\r\n },\r\n off : function(event, callback) {\r\n _data.events[event] = [];\r\n },\r\n // trigger : function(event){\r\n // var _this = this;\r\n // if(_data.events[event] && _data.events[event].length)\r\n // _data.events[event].forEach(function(callback){\r\n // callback && callback.call(_this);\r\n // });\r\n // },\r\n trigger: function(event){\r\n _data.eventHandlers && _data.eventHandlers[event] && _data.eventHandlers[event]();\r\n },\r\n\r\n setEvents: function(functions){\r\n _data.events = _data.events || {};\r\n\r\n for (var i in functions) {\r\n if (typeof functions[i] === 'string') {\r\n var func = functions[i] != \"\" ? this.functionFromString(functions[i]) : null;\r\n\r\n if (func && !func.error && !(func instanceof TypeError || func instanceof SyntaxError) )\r\n _data.events[i] = func;\r\n else\r\n _data.events[i] = null;\r\n } else if(typeof functions[i] === 'function') {\r\n _data.events[i] = functions[i];\r\n }\r\n }\r\n\r\n $.extend(true, _data.options.events, functions);\r\n },\r\n setActions : function(options){\r\n $.extend(true, _data.options.actions, options);\r\n },\r\n setDetailsView: function(options){\r\n $.extend(true, _data.options.detailsView, options);\r\n },\r\n setMobileView: function(options){\r\n $.extend(true, _data.options.mobileView, options);\r\n },\r\n deleteDataField: function(name){\r\n _data.options.data.forEach(function(obj){\r\n delete obj[name];\r\n });\r\n },\r\n addZeroDataField: function(name){\r\n _data.options.data.forEach(function(obj){\r\n obj[name] = '';\r\n });\r\n },\r\n attachDataToRegions: function(){\r\n _data.regions.forEach(function(region){\r\n region.objects = [];\r\n });\r\n _this.database.getLoaded().forEach(function(obj, index){\r\n if(obj.regions && obj.regions.length){\r\n if(typeof obj.regions == 'object'){\r\n obj.regions.forEach(function(region){\r\n var r = _this.getRegion(region.id);\r\n if(r)\r\n r.objects.push(obj);\r\n });\r\n }\r\n }\r\n });\r\n },\r\n setTemplates: function(templates){\r\n var _this = this;\r\n _data.templates = _data.templates || {};\r\n for (var name in templates){\r\n if(name != undefined){\r\n _data.options.templates[name] = templates[name];\r\n var t = _data.options.templates[name];\r\n if(name == 'directoryItem'){\r\n t = '{{#each items}}
    '+t+'
    {{/each}}';\r\n name = 'directory';\r\n }\r\n\r\n _data.templates[name] = Handlebars.compile(t);\r\n }\r\n }\r\n },\r\n setRegionStatus : function(region, status){\r\n var status = _this.regionsDatabase.getSchemaField('status').optionsDict[status];\r\n if(status.disabled)\r\n region.setDisabled(true);\r\n else\r\n region.setDisabled(false);\r\n\r\n if(status.color)\r\n region.setFill(status.color);\r\n else\r\n region.setFill();\r\n\r\n },\r\n update : function(options){\r\n for (var key in options){\r\n if (key == \"regions\"){\r\n $.each(options.regions,function(id,regionOptions){\r\n var region = _this.getRegion(id);\r\n region && region.update(regionOptions);\r\n if(regionOptions.gaugeValue!=undefined){\r\n _this.updateGaugeMinMax();\r\n _this.regionsRedrawColors();\r\n }\r\n if(regionOptions.disabled!=undefined){\r\n _this.deselectRegion(region);\r\n _data.options.regions[id] = _data.options.regions[id] || {};\r\n _data.options.regions[id].disabled = region.disabled;\r\n }\r\n });\r\n }else if (key == \"markers\"){\r\n $.each(options.markers,function(id,markerOptions){\r\n var marker = _this.getMarker(id);\r\n marker && marker.update(markerOptions);\r\n });\r\n }else{\r\n var setter = 'set'+MapSVG.ucfirst(key);\r\n if (_this.hasOwnProperty(setter))\r\n this[setter](options[key]);\r\n else{\r\n _data.options[key] = options[key];\r\n }\r\n }\r\n }\r\n },\r\n setTitle: function(title){\r\n title && (_data.options.title = title);\r\n },\r\n setExtension: function(extension){\r\n if(extension){\r\n _data.options.extension = extension;\r\n }else{\r\n delete _data.options.extension;\r\n }\r\n },\r\n setDisableLinks: function(on){\r\n on = MapSVG.parseBoolean(on);\r\n if(on){\r\n _data.$map.on('click.a.mapsvg','a',function(e){\r\n e.preventDefault();\r\n });\r\n }else{\r\n _data.$map.off('click.a.mapsvg');\r\n }\r\n _data.disableLinks = on;\r\n },\r\n setLoadingText: function(val){_data.options.loadingText = val},\r\n setLockAspectRatio: function(val){ _data.options.lockAspectRatio = MapSVG.parseBoolean(val);},\r\n setOnClick: function(h){_data.options.onClick = h || undefined;},\r\n setMouseOver: function(h){_data.options.mouseOver = h || undefined;},\r\n setMouseOut: function(h){_data.options.mouseOut = h || undefined;},\r\n setBeforeLoad: function(h){_data.options.beforeLoad = h || undefined;},\r\n setAfterLoad: function(h){_data.options.afterLoad = h || undefined;},\r\n setPopoverShown: function(h){_data.options.popoverShown = h || undefined;},\r\n on: function(event, handler){\r\n _data.eventHandlers = _data.eventHandlers || {};\r\n _data.eventHandlers[event] = handler;\r\n },\r\n setMarkerEditHandler : function(handler){\r\n _data.markerEditHandler = handler;\r\n },\r\n setRegionChoroplethField : function(field){\r\n _data.options.regionChoroplethField = field;\r\n _this.redrawGauge();\r\n },\r\n setRegionEditHandler : function(handler){\r\n _data.regionEditHandler = handler;\r\n },\r\n setDisableAll: function(on){\r\n on = MapSVG.parseBoolean(on);\r\n $.extend(true, _data.options, {disableAll:on});\r\n _data.regions.forEach(function(r){\r\n r.setDisabled();\r\n });\r\n },\r\n setRegionStatuses : function(_statuses){\r\n _data.options.regionStatuses = _statuses;\r\n var colors = {};\r\n for(var status in _data.options.regionStatuses){\r\n colors[status] = _data.options.regionStatuses[status].color.length ? _data.options.regionStatuses[status].color : undefined;\r\n }\r\n _this.setColors({status: colors});\r\n },\r\n setColorsIgnore : function(val){\r\n _data.options.colorsIgnore = MapSVG.parseBoolean(val);\r\n _this.regionsRedrawColors();\r\n },\r\n setColors : function(colors){\r\n $.extend(true, _data.options, {colors:colors});\r\n\r\n if(colors.status)\r\n _data.options.colors.status = colors.status;\r\n\r\n //_data.$map.css({'background': _data.options.colors.background});\r\n //if(colors.stroke)\r\n // _data.regions.forEach(function(r){\r\n // //if (r.default_attr['stroke'] == _data.options.colors.stroke)\r\n // // r.default_attr['stroke'] = color;\r\n // r.node.css('stroke',colors.stroke);\r\n // });\r\n $.each(_data.options.colors,function(key, color){\r\n if(color === null || color == \"\")\r\n delete _data.options.colors[key];\r\n });\r\n if(colors.background)\r\n _data.$map.css({'background': _data.options.colors.background});\r\n if(colors.hover)\r\n _data.options.colors.hover = (colors.hover == \"\"+parseInt(colors.hover)) ? parseInt(colors.hover) : colors.hover;\r\n if(colors.selected)\r\n _data.options.colors.selected = (colors.selected == \"\"+parseInt(colors.selected)) ? parseInt(colors.selected) : colors.selected;\r\n _this.regionsRedrawColors();\r\n },\r\n setTooltips : function (options) {\r\n\r\n if(options.on !== undefined)\r\n options.on = MapSVG.parseBoolean(options.on);\r\n\r\n $.extend(true, _data.options, {tooltips: options});\r\n\r\n _data.tooltip = _data.tooltip || {posOriginal: {}, posShifted: {}, posShiftedPrev: {}, mirror: {}};\r\n _data.tooltip.posOriginal = {};\r\n _data.tooltip.posShifted = {};\r\n _data.tooltip.posShiftedPrev = {};\r\n _data.tooltip.mirror = {};\r\n\r\n\r\n if(_data.tooltip.container){\r\n _data.tooltip.container[0].className = _data.tooltip.container[0].className.replace(/(^|\\s)mapsvg-tt-\\S+/g, '');\r\n }else{\r\n _data.tooltip.container = $('
    ').addClass('mapsvg-tooltip');\r\n _data.$map.append(_data.tooltip.container);\r\n }\r\n\r\n\r\n var ex = _data.options.tooltips.position.split('-');\r\n if(ex[0].indexOf('top')!=-1 || ex[0].indexOf('bottom')!=-1){\r\n _data.tooltip.posOriginal.topbottom = ex[0];\r\n }\r\n if(ex[0].indexOf('left')!=-1 || ex[0].indexOf('right')!=-1){\r\n _data.tooltip.posOriginal.leftright = ex[0];\r\n }\r\n if(ex[1]){\r\n _data.tooltip.posOriginal.leftright = ex[1];\r\n }\r\n\r\n var event = 'mousemove.tooltip.mapsvg-'+_data.$map.attr('id');\r\n _data.tooltip.container.addClass('mapsvg-tt-'+_data.options.tooltips.position);\r\n\r\n $('body').off(event).on(event, function(e) {\r\n\r\n MapSVG.mouse = MapSVG.mouseCoords(e);\r\n\r\n _data.tooltip.container[0].style.left = (e.clientX + $(window).scrollLeft() - _data.$map.offset().left) +'px';\r\n _data.tooltip.container[0].style.top = (e.clientY + $(window).scrollTop() - _data.$map.offset().top) +'px';\r\n\r\n var m = {x: e.clientX + $(window).scrollLeft(), y: e.clientY + $(window).scrollTop()};\r\n\r\n var tbbox = _data.tooltip.container[0].getBoundingClientRect();\r\n var mbbox = _data.$wrap[0].getBoundingClientRect();\r\n tbbox = {\r\n top: tbbox.top + $(window).scrollTop(),\r\n bottom: tbbox.bottom + $(window).scrollTop(),\r\n left: tbbox.left + $(window).scrollLeft(),\r\n right: tbbox.right + $(window).scrollLeft(),\r\n width: tbbox.width,\r\n height: tbbox.height\r\n };\r\n mbbox = {\r\n top: mbbox.top + $(window).scrollTop(),\r\n bottom: mbbox.bottom + $(window).scrollTop(),\r\n left: mbbox.left + $(window).scrollLeft(),\r\n right: mbbox.right + $(window).scrollLeft(),\r\n width: mbbox.width,\r\n height: mbbox.height\r\n };\r\n\r\n if(m.x > mbbox.right || m.y > mbbox.bottom || m.x < mbbox.left || m.y < mbbox.top){\r\n return;\r\n }\r\n\r\n if(_data.tooltip.mirror.top || _data.tooltip.mirror.bottom){\r\n // may be cancel mirroring\r\n if(_data.tooltip.mirror.top && m.y > _data.tooltip.mirror.top){\r\n _data.tooltip.mirror.top = false;\r\n delete _data.tooltip.posShifted.topbottom;\r\n }else if(_data.tooltip.mirror.bottom && m.y < _data.tooltip.mirror.bottom){\r\n _data.tooltip.mirror.bottom = false;\r\n delete _data.tooltip.posShifted.topbottom;\r\n }\r\n }else{\r\n // may be need mirroring\r\n\r\n if(tbbox.bottom < mbbox.top + tbbox.height){\r\n _data.tooltip.posShifted.topbottom = 'bottom';\r\n _data.tooltip.mirror.top = m.y;\r\n }else if(tbbox.top > mbbox.bottom - tbbox.height){\r\n _data.tooltip.posShifted.topbottom = 'top';\r\n _data.tooltip.mirror.bottom = m.y;\r\n }\r\n }\r\n\r\n if(_data.tooltip.mirror.right || _data.tooltip.mirror.left){\r\n // may be cancel mirroring\r\n\r\n if(_data.tooltip.mirror.left && m.x > _data.tooltip.mirror.left){\r\n _data.tooltip.mirror.left = false;\r\n delete _data.tooltip.posShifted.leftright;\r\n }else if(_data.tooltip.mirror.right && m.x < _data.tooltip.mirror.right){\r\n _data.tooltip.mirror.right = false;\r\n delete _data.tooltip.posShifted.leftright;\r\n }\r\n }else{\r\n // may be need mirroring\r\n if(tbbox.right < mbbox.left + tbbox.width){\r\n _data.tooltip.posShifted.leftright = 'right';\r\n _data.tooltip.mirror.left = m.x;\r\n }else if(tbbox.left > mbbox.right - tbbox.width){\r\n _data.tooltip.posShifted.leftright = 'left';\r\n _data.tooltip.mirror.right = m.x;\r\n }\r\n }\r\n\r\n var pos = $.extend({}, _data.tooltip.posOriginal, _data.tooltip.posShifted);\r\n var _pos = [];\r\n pos.topbottom && _pos.push(pos.topbottom);\r\n pos.leftright && _pos.push(pos.leftright);\r\n pos = _pos.join('-');\r\n\r\n if(_data.tooltip.posShifted.topbottom!=_data.tooltip.posOriginal.topbottom || _data.tooltip.posShifted.leftright!=_data.tooltip.posOriginal.leftright){\r\n _data.tooltip.container[0].className = _data.tooltip.container[0].className.replace(/(^|\\s)mapsvg-tt-\\S+/g, '');\r\n _data.tooltip.container.addClass('mapsvg-tt-'+pos);\r\n _data.tooltip.posShiftedPrev = pos;\r\n }\r\n });\r\n },\r\n setPopovers : function (options){\r\n if (typeof options.mode == \"string\" && options.mode.indexOf(\"function\") == 0){\r\n options.mode = _this.functionFromString(options.mode);\r\n }\r\n\r\n $.extend(true, _data.options, {popovers: options});\r\n _data.options.popovers.on = _data.options.popovers.mode!='off';\r\n _data.options.popovers.centerOn = MapSVG.parseBoolean(_data.options.popovers.centerOn);\r\n\r\n if(!_data.$popover) {\r\n _data.$popover = $('
    ').addClass('mapsvg-popover');\r\n // _data.$popover.closeButton = $('
    ');\r\n // _data.$popover.contentDiv = $('
    ');\r\n // _data.$popover.append(_data.$popover.contentDiv);\r\n // _data.$popover.append(_data.$popover.closeButton);\r\n _data.layers.popovers.append(_data.$popover);\r\n }\r\n _data.$popover.css({\r\n width: _data.options.popovers.width + (_data.options.popovers.width == 'auto' ? '' : 'px'),\r\n 'max-width': _data.options.popovers.maxWidth + '%',\r\n 'max-height': _data.options.popovers.maxHeight*_data.$wrap.outerHeight()/100+'px'\r\n });\r\n\r\n\r\n // if(_data.options.popovers.centerOn && !_data.popoverResizeSensor){\r\n // _data.popoverResizeSensor = new MapSVG.ResizeSensor(_data.$popover[0], function(){\r\n // if(_data.options.popovers.centerOn){\r\n // _this.centerOn();\r\n // }\r\n // });\r\n // }\r\n\r\n if(_data.options.popovers.mobileFullscreen && MapSVG.isPhone){\r\n $('body').toggleClass('mapsvg-fullscreen-popovers', true);\r\n _data.$popover.appendTo('body');\r\n }\r\n // _data.$popover.closeButton.off();\r\n // _data.$popover.closeButton.on('click touchend', function(e){\r\n // _this.hidePopover();\r\n // _this.deselectRegion();\r\n // if(_data.events['closed.popover']){\r\n // _data.events['closed.popover'].call(_data.$popover, _this);\r\n // }\r\n // });\r\n },\r\n setRegionPrefix : function(prefix){\r\n _data.options.regionPrefix = prefix;\r\n },\r\n setInitialViewBox : function(v){\r\n if(typeof v == 'string')\r\n v = v.trim().split(' ');\r\n _data._viewBox = [parseFloat(v[0]), parseFloat(v[1]), parseFloat(v[2]), parseFloat(v[3])];\r\n _data.zoomLevel = 0;\r\n },\r\n setViewBoxOnStart : function(){\r\n _data.viewBoxFull = _data.svgDefault.viewBox;\r\n _data.viewBoxFake = _data.viewBox;\r\n _data.whRatioFull = _data.viewBoxFull[2] / _data.viewBox[2];\r\n _data.$svg[0].setAttribute('viewBox',_data.viewBoxFull.join(' '));\r\n _data.vbstart = 1;\r\n },\r\n setViewBox : function(v,skipAdjustments){\r\n\r\n if(typeof v == 'string'){\r\n v = v.trim().split(' ');\r\n }\r\n var d = (v && v.length==4) ? v : _data.svgDefault.viewBox;\r\n var isZooming = parseFloat(d[2]) != _data.viewBox[2] || parseFloat(d[3]) != _data.viewBox[3];\r\n _data.viewBox = [parseFloat(d[0]), parseFloat(d[1]), parseFloat(d[2]), parseFloat(d[3])];\r\n _data.whRatio = _data.viewBox[2] / _data.viewBox[3];\r\n\r\n !_data.vbstart && _this.setViewBoxOnStart();\r\n\r\n if(!v){\r\n _data._viewBox = _data.viewBox;\r\n _data._scale = 1;\r\n }\r\n\r\n var p = _data.options.padding;\r\n\r\n if(p.top){\r\n _data.viewBox[1] -= p.top;\r\n _data.viewBox[3] += p.top;\r\n }\r\n if(p.right){\r\n _data.viewBox[2] += p.right;\r\n }\r\n if(p.bottom){\r\n _data.viewBox[3] += p.bottom;\r\n }\r\n if(p.left){\r\n _data.viewBox[0] -= p.left;\r\n _data.viewBox[2] += p.left;\r\n }\r\n\r\n _data.scale = _this.getScale();\r\n _data.superScale = _data.whRatioFull*_data.svgDefault.viewBox[2]/_data.viewBox[2];\r\n\r\n _data.scroll = _data.scroll || {};\r\n _data.scroll.tx = (_data.svgDefault.viewBox[0]-_data.viewBox[0])*_data.scale;\r\n _data.scroll.ty = (_data.svgDefault.viewBox[1]-_data.viewBox[1])*_data.scale;\r\n\r\n\r\n _data.$scrollpane.css({\r\n 'transform': 'translate('+_data.scroll.tx+'px,'+_data.scroll.ty+'px)'\r\n });\r\n _data.$svg.css({\r\n 'transform': 'scale('+_data.superScale+')'\r\n });\r\n if(isZooming && !skipAdjustments){\r\n _this.updateSize();\r\n }\r\n\r\n isZooming && _this.trigger('zoom');\r\n\r\n return true;\r\n },\r\n setViewBoxReal : function(bbox){\r\n _data.viewBoxFull = bbox;\r\n _data.viewBoxFake = bbox;\r\n _data.whRatioFull = _data.viewBoxFull[2] / _data.viewBox[2];\r\n\r\n _data.viewBox = bbox;\r\n _data.svgDefault.viewBox = _data.viewBox;\r\n _data.viewBoxFull = bbox;\r\n _data.viewBoxFake = _data.viewBox;\r\n _data.whRatioFull = _data.viewBoxFull[2] / _data.viewBox[2];\r\n _data.$svg[0].setAttribute('viewBox',_data.viewBoxFull.join(' '));\r\n\r\n _data.scale = _this.getScale();\r\n\r\n var tx = (-bbox[0])*_data.scale;\r\n var ty = (-bbox[1])*_data.scale;\r\n _data.$layers.css({\r\n 'transform': 'translate('+tx+'px,'+ty+'px)'\r\n });\r\n _data.zoomLevel = 0;\r\n _this.setViewBox(bbox);\r\n },\r\n setViewBoxByGoogleMapBounds : function(){\r\n\r\n var googleMapBounds = _data.googleMaps.map.getBounds();\r\n\r\n var ne = [googleMapBounds.getNorthEast().lat(), googleMapBounds.getNorthEast().lng()];\r\n var sw = [googleMapBounds.getSouthWest().lat(), googleMapBounds.getSouthWest().lng()];\r\n var xyNE = _this.convertGeoToSVG(ne);\r\n var xySW = _this.convertGeoToSVG(sw);\r\n\r\n // check if map on border between 180/-180 longitude\r\n if(xyNE[0] < xySW[0]){\r\n var mapPointsWidth = (_data.svgDefault.viewBox[2] / _data.mapLonDelta) * 360;\r\n xySW[0] = -(mapPointsWidth - xySW[0]);\r\n }\r\n\r\n var width = xyNE[0] - xySW[0];\r\n var height = xySW[1] - xyNE[1];\r\n _this.setViewBox([xySW[0], xyNE[1], width, height]);\r\n\r\n\r\n },\r\n redraw: function(){\r\n _data.$wrap.css({\r\n width: _data.$wrap.width(),\r\n height: _data.$wrap.width() / _data.whRatio\r\n });\r\n if(!MapSVG.browser.ie) {\r\n _data.$wrap.css({\r\n width: 'auto',\r\n height: 'auto'\r\n });\r\n }else{\r\n _data.$wrap.css({\r\n width: 'auto'\r\n });\r\n }\r\n _this.updateSize();\r\n },\r\n setPadding: function(options){\r\n options = options || _data.options.padding;\r\n for(var i in options){\r\n options[i] = options[i] ? parseInt(options[i]) : 0;\r\n }\r\n $.extend(_data.options.padding, options);\r\n\r\n\r\n // var p = _data.options.padding;\r\n //\r\n // var v = $.extend([],_data._viewBox);\r\n //\r\n // if(p.top){\r\n // v[1] -= p.top;\r\n // v[3] += p.top;\r\n // }\r\n // if(p.right){\r\n // v[2] += p.right;\r\n // }\r\n // if(p.bottom){\r\n // v[3] += p.bottom;\r\n // }\r\n // if(p.left){\r\n // v[0] -= p.left;\r\n // v[2] += p.left;\r\n // }\r\n _this.setViewBox();\r\n _this.trigger('sizeChange');\r\n },\r\n // trigger: function(event){\r\n // _data.eventHandlers && _data.eventHandlers[event] && _data.eventHandlers[event]();\r\n // },\r\n setSize : function( width, height, responsive ){\r\n\r\n // Convert strings to numbers\r\n _data.options.width = parseFloat(width);\r\n _data.options.height = parseFloat(height);\r\n _data.options.responsive = responsive!=null && responsive!=undefined ? MapSVG.parseBoolean(responsive) : _data.options.responsive;\r\n\r\n // Calculate width and height\r\n if ((!_data.options.width && !_data.options.height)){\r\n _data.options.width\t = _data.svgDefault.width;\r\n _data.options.height = _data.svgDefault.height;\r\n }else if (!_data.options.width && _data.options.height){\r\n _data.options.width\t = parseInt(_data.options.height * _data.svgDefault.width / _data.svgDefault.height);\r\n }else if (_data.options.width && !_data.options.height){\r\n _data.options.height = parseInt(_data.options.width * _data.svgDefault.height/_data.svgDefault.width);\r\n }\r\n\r\n //if(_data.options.responsive){\r\n // var maxWidth = _data.options.width;\r\n // var maxHeight = _data.options.height;\r\n // _data.options.width\t = _data.svgDefault.width;\r\n // _data.options.height = _data.svgDefault.height;\r\n //}\r\n\r\n _data.whRatio = _data.options.width / _data.options.height;\r\n _data.scale = _this.getScale();\r\n\r\n _this.setResponsive(responsive);\r\n\r\n if(_data.markers)\r\n _this.markersAdjustPosition();\r\n\r\n\r\n return [_data.options.width, _data.options.height];\r\n },\r\n setResponsive : function(on,force){\r\n\r\n on = on!=undefined ? MapSVG.parseBoolean(on) : _data.options.responsive;\r\n $(window).off('resize.mapsvg');\r\n\r\n _data.$map.css({\r\n 'width': '100%',\r\n // 'height': 'auto'\r\n 'height': '0',\r\n 'padding-bottom': (_data.viewBox[3]*100/_data.viewBox[2])+'%'\r\n });\r\n if(MapSVG.browser.ie){\r\n _data.whRatio2 = _data.svgDefault.viewBox[2] / _data.svgDefault.viewBox[3];\r\n _data.$svg.height(_data.$map.outerWidth() / _data.whRatio2);\r\n }\r\n if(!_data.resizeSensor){\r\n _data.resizeSensor = new MapSVG.ResizeSensor(_data.$map[0], function(){\r\n\r\n if(MapSVG.browser.ie){\r\n _data.whRatio2 = _data.svgDefault.viewBox[2] / _data.svgDefault.viewBox[3];\r\n _data.$svg.height(_data.$map.outerWidth() / _data.whRatio2);\r\n }\r\n\r\n if(_data.options.googleMaps.on && _data.googleMaps.map){\r\n var center = _data.googleMaps.map.getCenter();\r\n google.maps.event.trigger(_data.googleMaps.map, 'resize');\r\n _data.googleMaps.map.setCenter(center);\r\n _this.setViewBoxByGoogleMapBounds();\r\n }else{\r\n _this.setViewBox(_data.viewBox);\r\n }\r\n _data.$popover && _data.$popover.css({\r\n 'max-height': _data.options.popovers.maxHeight*_data.$wrap.outerHeight()/100+'px'\r\n });\r\n _this.updateSize();\r\n });\r\n }\r\n\r\n if(on){\r\n\r\n _data.$wrap.css({\r\n 'width': '100%',\r\n 'height': 'auto'\r\n });\r\n\r\n\r\n }else{\r\n _data.$wrap.css({\r\n 'width': _data.options.width+'px',\r\n 'height': _data.options.height+'px'\r\n });\r\n }\r\n $.extend(true, _data.options, {responsive: on});\r\n _this.setViewBox(_data.viewBox);\r\n _this.updateSize();\r\n\r\n },\r\n setScroll : function(options, skipEvents){\r\n options.on != undefined && (options.on = MapSVG.parseBoolean(options.on));\r\n options.limit != undefined && (options.limit = MapSVG.parseBoolean(options.limit));\r\n $.extend(true, _data.options, {scroll: options});\r\n !skipEvents && _this.setEventHandlers();\r\n },\r\n setZoom : function (options){\r\n options = options || {};\r\n options.on != undefined && (options.on = MapSVG.parseBoolean(options.on));\r\n options.mousewheel != undefined && (options.mousewheel = MapSVG.parseBoolean(options.mousewheel));\r\n\r\n // delta = 1.2 changed to delta = 2 since introducing Google Maps + smooth zoom\r\n options.delta = 2;\r\n\r\n // options.delta && (options.delta = parseFloat(options.delta));\r\n\r\n if(options.limit){\r\n if(typeof options.limit == 'string')\r\n options.limit = options.limit.split(';');\r\n options.limit = [parseInt(options.limit[0]),parseInt(options.limit[1])];\r\n }\r\n if(!_data.zoomLevels){\r\n _data.zoomLevels = {};\r\n\r\n var _scale = 1;\r\n for(var i = 0; i <= 20; i++){\r\n _data.zoomLevels[i+''] = {\r\n _scale: _scale,\r\n viewBox: [0,0,_data._viewBox[2] /_scale, _data._viewBox[3] /_scale]\r\n };\r\n _scale = _scale * _data.options.zoom.delta;\r\n\r\n }\r\n _scale = 1;\r\n for(var i = 0; i >= -20; i--){\r\n _data.zoomLevels[i+''] = {\r\n _scale: _scale,\r\n viewBox: [0,0,_data._viewBox[2] /_scale, _data._viewBox[3] /_scale]\r\n };\r\n _scale = _scale / _data.options.zoom.delta;\r\n\r\n }\r\n }\r\n\r\n $.extend(true, _data.options, {zoom: options});\r\n //(options.buttons && options.buttons.on) && (options.buttons.on = MapSVG.parseBoolean(options.buttons.on));\r\n _data.$map.off('mousewheel.mapsvg');\r\n\r\n\r\n if(_data.options.zoom.on && _data.options.zoom.mousewheel){\r\n // var lastZoomTime = 0;\r\n // var zoomTimeDelta = 0;\r\n\r\n\r\n if(MapSVG.browser.firefox){\r\n _data.firefoxScroll = { insideIframe: false };\r\n\r\n _data.$map.on('mouseenter', function() {\r\n _data.firefoxScroll.insideIframe = true;\r\n _data.firefoxScroll.scrollX = window.scrollX;\r\n _data.firefoxScroll.scrollY = window.scrollY;\r\n }).on('mouseleave', function() {\r\n _data.firefoxScroll.insideIframe = false;\r\n });\r\n\r\n $(document).scroll(function() {\r\n if (_data.firefoxScroll.insideIframe)\r\n window.scrollTo(_data.firefoxScroll.scrollX, _data.firefoxScroll.scrollY);\r\n });\r\n }\r\n\r\n _data.$map.on('mousewheel.mapsvg',function(event, delta, deltaX, deltaY) {\r\n if($(event.target).hasClass('mapsvg-popover') || $(event.target).closest('.mapsvg-popover').length)\r\n return;\r\n // zoomTimeDelta = Date.now() - lastZoomTime;\r\n // lastZoomTime = Date.now();\r\n event.preventDefault();\r\n var d = delta > 0 ? 1 : -1;\r\n var m = MapSVG.mouseCoords(event);\r\n m.x = m.x - _data.$svg.offset().left;\r\n m.y = m.y - _data.$svg.offset().top;\r\n\r\n var center = _this.convertPixelToSVG([m.x, m.y]);\r\n d > 0 ? _this.zoomIn(center) : _this.zoomOut(center);\r\n // _this.zoom(d);\r\n return false;\r\n });\r\n }\r\n _this.setZoomButtons();\r\n _data.canZoom = true;\r\n },\r\n setZoomButtons : function(){\r\n var loc = _data.options.zoom.buttons.location || 'hide';\r\n if(! _data.zoomButtons){\r\n\r\n var buttons = $('
    ').addClass('mapsvg-buttons');\r\n\r\n buttons.zoomIn = $('
    ').addClass('mapsvg-btn-zoom in');\r\n var event = MapSVG.touchDevice? 'touchend' : 'click';\r\n buttons.zoomIn.on(event,function(e){\r\n e.stopPropagation();\r\n _this.zoomIn();\r\n });\r\n\r\n buttons.zoomOut = $('
    ').addClass('mapsvg-btn-zoom out');\r\n buttons.zoomOut.on(event,function(e){\r\n e.stopPropagation();\r\n _this.zoomOut();\r\n });\r\n buttons.append(buttons.zoomIn).append(buttons.zoomOut);\r\n _data.zoomButtons = buttons;\r\n _data.$map.append(_data.zoomButtons);\r\n }\r\n _data.zoomButtons.removeClass('left');\r\n _data.zoomButtons.removeClass('right');\r\n loc == 'right' && _data.zoomButtons.addClass('right')\r\n ||\r\n loc == 'left' && _data.zoomButtons.addClass('left');\r\n\r\n (_data.options.zoom.on && loc!='hide') ? _data.zoomButtons.show() : _data.zoomButtons.hide();\r\n },\r\n setCursor : function(type){\r\n type = type == 'pointer' ? 'pointer' : 'default';\r\n _data.options.cursor = type;\r\n if(type == 'pointer')\r\n _data.$map.addClass('mapsvg-cursor-pointer');\r\n else\r\n _data.$map.removeClass('mapsvg-cursor-pointer');\r\n },\r\n setPreloaderText : function(text){\r\n _data.options.loadingText = text;\r\n },\r\n setMultiSelect : function (on, deselect){\r\n _data.options.multiSelect = MapSVG.parseBoolean(on);\r\n if(deselect !== false)\r\n _this.deselectAllRegions();\r\n },\r\n setGauge : function (options){\r\n\r\n options = options || _data.options.gauge;\r\n options.on != undefined && (options.on = MapSVG.parseBoolean(options.on));\r\n $.extend(true, _data.options, {gauge: options});\r\n\r\n var needsRedraw = false;\r\n\r\n if(!_data.$gauge){\r\n _data.$gauge = {};\r\n _data.$gauge.gradient = $(' ').addClass('mapsvg-gauge-gradient');\r\n _this.setGaugeGradientCSS();\r\n _data.$gauge.container = $('
    ').addClass('mapsvg-gauge').hide();\r\n _data.$gauge.table = $('');\r\n var tr = $('');\r\n _data.$gauge.labelLow = $('');\r\n _data.$gauge.labelHigh = $('');\r\n tr.append(_data.$gauge.labelLow);\r\n tr.append(_data.$gauge.gradient);\r\n tr.append(_data.$gauge.labelHigh);\r\n _data.$gauge.table.append(tr);\r\n _data.$gauge.container.append(_data.$gauge.table);\r\n _data.$map.append(_data.$gauge.container);\r\n }\r\n\r\n if (!_data.options.gauge.on && _data.$gauge.container.is(\":visible\")){\r\n _data.$gauge.container.hide();\r\n needsRedraw = true;\r\n }else if(_data.options.gauge.on && !_data.$gauge.container.is(\":visible\")){\r\n _data.$gauge.container.show();\r\n needsRedraw = true;\r\n }\r\n\r\n if(options.colors){\r\n _data.options.gauge.colors.lowRGB = MapSVG.tinycolor(_data.options.gauge.colors.low).toRgb();\r\n _data.options.gauge.colors.highRGB = MapSVG.tinycolor(_data.options.gauge.colors.high).toRgb();\r\n _data.options.gauge.colors.diffRGB = {\r\n r: _data.options.gauge.colors.highRGB.r - _data.options.gauge.colors.lowRGB.r,\r\n g: _data.options.gauge.colors.highRGB.g - _data.options.gauge.colors.lowRGB.g,\r\n b: _data.options.gauge.colors.highRGB.b - _data.options.gauge.colors.lowRGB.b,\r\n a: _data.options.gauge.colors.highRGB.a - _data.options.gauge.colors.lowRGB.a\r\n };\r\n needsRedraw = true;\r\n _data.$gauge && _this.setGaugeGradientCSS();\r\n }\r\n\r\n if(options.labels){\r\n _data.$gauge.labelLow.html(_data.options.gauge.labels.low);\r\n _data.$gauge.labelHigh.html(_data.options.gauge.labels.high);\r\n }\r\n\r\n needsRedraw && _this.redrawGauge();\r\n },\r\n redrawGauge : function(){\r\n _this.updateGaugeMinMax();\r\n _this.regionsRedrawColors();\r\n },\r\n updateGaugeMinMax : function(){\r\n _data.options.gauge.min = 0;\r\n _data.options.gauge.max = false;\r\n var values = [];\r\n _data.regions.forEach(function(r){\r\n if(r.gaugeValue!=null && r.gaugeValue!=undefined) values.push(r.gaugeValue);\r\n });\r\n if(values.length>0){\r\n _data.options.gauge.min = values.length == 1 ? 0 : Math.min.apply(null,values);\r\n _data.options.gauge.max = Math.max.apply(null,values);\r\n _data.options.gauge.maxAdjusted = _data.options.gauge.max - _data.options.gauge.min;\r\n }\r\n },\r\n setGaugeGradientCSS: function(){\r\n _data.$gauge.gradient.css({\r\n background: _data.options.gauge.colors.low,\r\n background: '-moz-linear-gradient(left, ' + _data.options.gauge.colors.low + ' 1%,' + _data.options.gauge.colors.high + ' 100%)',\r\n background: '-webkit-gradient(linear, left top, right top, color-stop(1%,' + _data.options.gauge.colors.low + '), color-stop(100%,' + _data.options.gauge.colors.high + '))',\r\n background: '-webkit-linear-gradient(left, ' + _data.options.gauge.colors.low + ' 1%,' + _data.options.gauge.colors.high + ' 100%)',\r\n background: '-o-linear-gradient(left, ' + _data.options.gauge.colors.low + ' 1%,' + _data.options.gauge.colors.high + ' 100% 100%)',\r\n background: '-ms-linear-gradient(left, ' + _data.options.gauge.colors.low + ' 1%,' + _data.options.gauge.colors.high + ' 100% 100%)',\r\n background: 'linear-gradient(to right,' + _data.options.gauge.colors.low + ' 1%,' + _data.options.gauge.colors.high + ' 100%)',\r\n 'filter': 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\"' + _data.options.gauge.colors.low + '\", endColorstr=\"' + _data.options.gauge.colors.high + '\",GradientType=1 )'\r\n });\r\n },\r\n setCss : function(css){\r\n _data.options.css = css;\r\n },\r\n setMenu : function(options){\r\n options = options || _data.options.menu;\r\n options.on != undefined && (options.on = MapSVG.parseBoolean(options.on));\r\n $.extend(true, _data.options, {menu: options});\r\n\r\n _data.$menu && _data.$menu.off('click.menu.mapsvg');\r\n\r\n\r\n if(_data.options.menu.on){\r\n var menuContainer = $('#'+_data.options.menu.containerId);\r\n\r\n if(menuContainer.length){\r\n\r\n if(!_data.$menu){\r\n if(!menuContainer.is('ul')){\r\n _data.$menu = $('
      ').appendTo(menuContainer);\r\n }else{\r\n _data.$menu = menuContainer;\r\n }\r\n\r\n if(!_data.$menu.hasClass('mapsvg-menu'))\r\n _data.$menu.addClass('mapsvg-menu');\r\n }\r\n\r\n if(_data.$menu.children().length===0)\r\n // Add links into navigation container\r\n _data.regions.forEach(function (region, i) {\r\n if(!region.disabled)\r\n _data.$menu.append(_data.options.menu.template(region));\r\n });\r\n\r\n _data.$menu.on('click.menu.mapsvg','a',function(e){\r\n e.preventDefault();\r\n var regionID = $(this).attr('href').replace('#','');\r\n var region = _this.getRegion(regionID);\r\n var center = region.getCenter();\r\n //e = {clientX: center[0], clientY: center[1]};\r\n e.clientX = center[0];\r\n e.clientY = center[1];\r\n\r\n _this.regionClickHandler(e,region);\r\n }).on('mouseover.menu.mapsvg','a',function(e){\r\n var regionID = $(this).attr('href').replace('#','');\r\n var region = _this.getRegion(regionID);\r\n if (!region.selected)\r\n region.highlight();\r\n }).on('mouseout.menu.mapsvg','a',function(e){\r\n var regionID = $(this).attr('href').replace('#','');\r\n var region = _this.getRegion(regionID);\r\n if (!region.selected)\r\n region.unhighlight();\r\n });\r\n\r\n }\r\n }\r\n },\r\n setGoogleMaps : function(options){\r\n var _this = this;\r\n\r\n options = options || _data.options.googleMaps;\r\n options.on != undefined && (options.on = MapSVG.parseBoolean(options.on));\r\n\r\n if(!_data.googleMaps){\r\n _data.googleMaps = {loaded: false, initialized: false, map: null};\r\n }\r\n\r\n $.extend(true, _data.options, {googleMaps: options});\r\n\r\n if(_data.options.googleMaps.on){\r\n _data.$map.toggleClass('mapsvg-with-google-map', true);\r\n // _this.setResponsive(false);\r\n // if(!_data.googleMaps.loaded){\r\n if(!MapSVG.googleMapsApiLoaded){\r\n _this.loadGoogleMapsAPI(\r\n function(){\r\n _this.setGoogleMaps();\r\n },\r\n function(){\r\n _this.setGoogleMaps({on:false});\r\n }\r\n );\r\n } else {\r\n if(!_data.googleMaps.map){\r\n _data.$googleMaps = $('
      ').prependTo(_data.$map);\r\n _data.$googleMaps.css({\r\n position: 'absolute',\r\n top:0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n 'z-index': '0'\r\n });\r\n _data.googleMaps.map = new google.maps.Map(_data.$googleMaps[0], {\r\n mapTypeId: options.type,\r\n fullscreenControl: false,\r\n keyboardShortcuts: false,\r\n mapTypeControl: false,\r\n scaleControl: false,\r\n scrollwheel: false,\r\n streetViewControl: false,\r\n zoomControl: false\r\n\r\n });\r\n var overlay;\r\n USGSOverlay.prototype = new google.maps.OverlayView();\r\n\r\n\r\n /** @constructor */\r\n function USGSOverlay(bounds, map) {\r\n // Initialize all properties.\r\n this.bounds_ = bounds;\r\n this.map_ = map;\r\n this.setMap(map);\r\n }\r\n USGSOverlay.prototype.onAdd = function() {\r\n\r\n // var div = document.createElement('div');\r\n // div.style.borderStyle = 'none';\r\n // div.style.borderWidth = '0px';\r\n // div.style.position = 'absolute';\r\n // div.style.background = 'rgba(255,0,0,.5)';\r\n //\r\n // this.div_ = div;\r\n // Add the element to the \"overlayLayer\" pane.\r\n // var panes = this.getPanes();\r\n // panes.overlayLayer.appendChild(div);\r\n };\r\n\r\n USGSOverlay.prototype.draw = function() {\r\n var overlayProjection = this.getProjection();\r\n var sw = overlayProjection.fromLatLngToDivPixel(this.bounds_.getSouthWest());\r\n var ne = overlayProjection.fromLatLngToDivPixel(this.bounds_.getNorthEast());\r\n var sw2 = overlayProjection.fromLatLngToContainerPixel(this.bounds_.getSouthWest());\r\n var ne2 = overlayProjection.fromLatLngToContainerPixel(this.bounds_.getNorthEast());\r\n var scale = (ne2.x - sw2.x)/_data.svgDefault.viewBox[2];\r\n var vb = [\r\n _data.svgDefault.viewBox[0] - sw2.x/scale,\r\n _data.svgDefault.viewBox[1] - ne2.y/scale,\r\n _data.$map.width()/scale,\r\n _data.$map.outerHeight()/scale\r\n ];\r\n _this.setViewBox(vb);\r\n // var div = this.div_;\r\n // div.style.left = sw.x + 'px';\r\n // div.style.top = ne.y + 'px';\r\n // div.style.width = (ne.x - sw.x) + 'px';\r\n // div.style.height = (sw.y - ne.y) + 'px';\r\n };\r\n\r\n var southWest = new google.maps.LatLng(_data.geoViewBox.bottomLat, _data.geoViewBox.leftLon);\r\n var northEast = new google.maps.LatLng(_data.geoViewBox.topLat, _data.geoViewBox.rightLon);\r\n var bounds = new google.maps.LatLngBounds(southWest,northEast);\r\n\r\n _data.googleMaps.overlay = new USGSOverlay(bounds, _data.googleMaps.map);\r\n\r\n if(!_data.options.googleMaps.center || !_data.options.googleMaps.zoom){\r\n var southWest = new google.maps.LatLng(_data.geoViewBox.bottomLat, _data.geoViewBox.leftLon);\r\n var northEast = new google.maps.LatLng(_data.geoViewBox.topLat, _data.geoViewBox.rightLon);\r\n var bounds = new google.maps.LatLngBounds(southWest,northEast);\r\n _data.googleMaps.map.fitBounds(bounds);\r\n }else{\r\n _data.googleMaps.map.setZoom(_data.options.googleMaps.zoom);\r\n _data.googleMaps.map.setCenter(_data.options.googleMaps.center);\r\n }\r\n _data.options.googleMaps.initialized = true;\r\n _data.googleMaps.map.addListener('idle',function(){\r\n _data.isZooming = false;\r\n });\r\n google.maps.event.addListenerOnce(_data.googleMaps.map, 'idle', function(){\r\n setTimeout(function() {\r\n _data.$map.addClass('mapsvg-fade-in');\r\n setTimeout(function() {\r\n _data.$map.removeClass('mapsvg-google-map-loading');\r\n _data.$map.removeClass('mapsvg-fade-in');\r\n // _data.googleMaps.overlay.draw();\r\n if(!_data.options.googleMaps.center || !_data.options.googleMaps.zoom) {\r\n _data.options.googleMaps.center = _data.googleMaps.map.getCenter().toJSON();\r\n _data.options.googleMaps.zoom = _data.googleMaps.map.getZoom();\r\n }\r\n }, 300);\r\n }, 1);\r\n });\r\n setTimeout(function(){\r\n // _data.googleMaps.map.addListener('bounds_changed',function(){\r\n // console.log('changed');\r\n // // _data.googleMaps.overlay.draw();\r\n // if (!_data.isScrolling)\r\n // setTimeout(function(){\r\n // if (!_data.isScrolling) {\r\n // null;\r\n // }\r\n // // _data.googleMaps.overlay.draw();\r\n // // _this.setViewBoxByGoogleMapBounds();\r\n // },2);\r\n // });\r\n // _data.googleMaps.map.addListener('zoom_changed',function(){\r\n // setTimeout(function(){\r\n // _this.trigger('zoom');\r\n // },200);\r\n // });\r\n\r\n _this.setViewBoxByGoogleMapBounds();\r\n },200);\r\n\r\n }else{\r\n _data.$map.toggleClass('mapsvg-with-google-map', true);\r\n _data.$googleMaps && _data.$googleMaps.show();\r\n if(options.type){\r\n _data.googleMaps.map.setMapTypeId(options.type);\r\n }\r\n }\r\n }\r\n }else{\r\n // TODO: destroy google maps\r\n _data.$map.toggleClass('mapsvg-with-google-map', false);\r\n _data.$googleMaps && _data.$googleMaps.hide();\r\n _data.googleMaps.initialized = false;\r\n\r\n }\r\n\r\n },\r\n loadGoogleMapsAPI : function(callback, fail){\r\n window.gm_authFailure = function() {\r\n if(MapSVG.GoogleMapBadApiKey){\r\n MapSVG.GoogleMapBadApiKey();\r\n }else{\r\n alert(\"Google maps API key is incorrect.\");\r\n }\r\n };\r\n _data.googleMapsScript = document.createElement('script');\r\n _data.googleMapsScript.onload = function(){\r\n MapSVG.googleMapsApiLoaded = true;\r\n if(typeof callback == 'function')\r\n callback();\r\n };\r\n _data.googleMapsScript.src = '//maps.googleapis.com/maps/api/js?key='+_data.options.googleMaps.apiKey;//+'&callback=initMap';\r\n\r\n document.head.appendChild(_data.googleMapsScript);\r\n },\r\n\r\n loadDetailsView : function(obj){\r\n // var slide = true;\r\n var _this = this;\r\n _this.popover && _this.popover.close();\r\n if(_this.detailsController)\r\n _this.detailsController.destroy();\r\n\r\n _this.detailsController = new MapSVG.DetailsController({\r\n color: _data.options.colors.detailsView,\r\n autoresize: MapSVG.isPhone ? false : _data.options.detailsView.autoresize,\r\n container: _data.$details,\r\n template: obj instanceof Region ? _data.templates.detailsViewRegion : _data.templates.detailsView,\r\n mapsvg: _this,\r\n data: obj instanceof Region ? obj.forTemplate() : obj,\r\n scrollable: _data.options.detailsView.location != 'custom',\r\n withToolbar: _data.options.detailsView.location != 'custom',\r\n width: _data.options.detailsView.width,\r\n events: {\r\n 'shown': function(mapsvg){\r\n if(_data.events['shown.detailsView']) {\r\n _data.events['shown.detailsView'].call(this, _this);\r\n }\r\n _this.trigger('detailsShown');\r\n },\r\n 'closed' : function(mapsvg){\r\n _this.deselectAllRegions();\r\n // _this.controlles.\r\n _data.controllers && _data.controllers.directory && _data.controllers.directory.deselectItems();\r\n if(_data.events['closed.detailsView']){\r\n _data.events['closed.detailsView'].call(this, _this);\r\n }\r\n _this.trigger('detailsClosed');\r\n }\r\n }\r\n });\r\n },\r\n setMenuMarkers : function(options){\r\n options = options || _data.options.menuMarkers;\r\n options.on != undefined && (options.on = MapSVG.parseBoolean(options.on));\r\n $.extend(true, _data.options, {menuMarkers: options});\r\n\r\n _data.$menuMarkers && _data.$menuMarkers.off('click.menuMarkers.mapsvg');\r\n\r\n\r\n if(_data.options.menuMarkers.on){\r\n var menuContainer = $('#'+_data.options.menuMarkers.containerId);\r\n if(menuContainer.length){\r\n if(!_data.$menuMarkers){\r\n if(!menuContainer.is('ul')){\r\n _data.$menuMarkers = $('
        ').appendTo(menuContainer);\r\n }else{\r\n _data.$menuMarkers = menuContainer;\r\n }\r\n\r\n if(!_data.$menuMarkers.hasClass('mapsvg-menu-markers'))\r\n _data.$menuMarkers.addClass('mapsvg-menu-markers');\r\n }\r\n\r\n if(_data.$menuMarkers.children().length===0)\r\n // Add links into navigation container\r\n _data.markers.sort(function(a,b){\r\n return a.id == b.id ? 0 : +(a.id > b.id) || -1;\r\n });\r\n\r\n _data.markers.forEach(function (marker, i) {\r\n _data.$menuMarkers.append(_data.options.menuMarkers.template(marker));\r\n });\r\n\r\n _data.$menuMarkers.on('click.menuMarkers.mapsvg','a',function(e){\r\n e.preventDefault();\r\n var markerID = $(this).attr('href').replace('#','');\r\n var marker = _this.getMarker(markerID);\r\n var center = marker.getCenter();\r\n e = {clientX: center[0], clientY: center[1]};\r\n _this.regionClickHandler(e,marker);\r\n }).on('mouseover.menuMarkers.mapsvg','a',function(e){\r\n e.preventDefault();\r\n var markerID = $(this).attr('href').replace('#','');\r\n var marker = _this.getMarker(markerID);\r\n _data.options.mouseOver && _data.options.mouseOver.call(marker, e, _this);\r\n }).on('mouseout.menuMarkers.mapsvg','a',function(e){\r\n e.preventDefault();\r\n var markerID = $(this).attr('href').replace('#','');\r\n var marker = _this.getMarker(markerID);\r\n _data.options.mouseOut && _data.options.mouseOut.call(marker, e, _this);\r\n });\r\n }\r\n }\r\n },\r\n /*\r\n *\r\n * END SETTERS\r\n *\r\n * */\r\n getRegion : function(id){\r\n return _data.regions[_data.regionsDict[id]];\r\n },\r\n getMarker : function(id){\r\n return _data.markers[_data.markersDict[id]];\r\n },\r\n checkId : function(id){\r\n if(_this.getRegion(id))\r\n return {error: \"This ID is already being used by a Region\"};\r\n else if(_this.getMarker(id))\r\n return {error: \"This ID is already being used by another Marker\"};\r\n else\r\n return true;\r\n\r\n },\r\n regionsRedrawColors: function(){\r\n _data.regions.forEach(function(region){\r\n region.setFill();\r\n });\r\n },\r\n // destroy\r\n destroy : function(){\r\n if(_data.controllers && _data.controllers.directory){\r\n _data.controllers.directory.mobileButtons.remove();\r\n }\r\n _data.$map.empty().insertBefore(_data.$wrap).attr('style','').removeClass('mapsvg mapsvg-responsive');\r\n _data.$wrap.remove();\r\n instances[_data.$map.attr('id')] = undefined;\r\n return _this;\r\n },\r\n getData : function(){\r\n return _data;\r\n },\r\n fitBounds : function(){\r\n\r\n },\r\n // GET SCALE VALUE\r\n getScale: function(){\r\n\r\n // var ratio_def = _data.svgDefault.width / _data.svgDefault.height;\r\n // var ratio_new = _data.options.width / _data.options.height;\r\n // var scale1, scale2;\r\n\r\n // var size = [_data.$map.width(), _data.$map.outerHeight()];\r\n\r\n // scale2 = size[0] / _data.viewBox[2];\r\n var scale2 = _data.$map.width() / _data.viewBox[2];\r\n\r\n // if scale = 0 it means that map width = 0 which means that map is hidden.\r\n // so we set scale = 1 to avoid problems with marker positioning.\r\n // proper scale will be set after map show up\r\n return scale2 || 1;\r\n },\r\n updateSize : function(){\r\n _data.scale = _this.getScale();\r\n _this.popover && _this.popover.adjustPosition();\r\n _this.markersAdjustPosition();\r\n _this.mapAdjustStrokes();\r\n if(_data.directoryWrap)\r\n _data.directoryWrap.height(_data.$wrap.outerHeight());\r\n },\r\n // GET VIEBOX [x,y,width,height]\r\n getViewBox : function(){\r\n return _data.viewBox;\r\n },\r\n // SET VIEWBOX BY SIZE\r\n viewBoxSetBySize : function(width,height){\r\n\r\n width = parseFloat(width);\r\n height = parseFloat(height);\r\n _this.setSize(width,height);\r\n _data._viewBox = _this.viewBoxGetBySize(width,height);\r\n // _data.options.width = parseFloat(width);\r\n // _data.options.height = parseFloat(height);\r\n\r\n _this.setViewBox(_data._viewBox);\r\n $(window).trigger('resize');\r\n _this.setSize(width,height);\r\n\r\n // _data.whRatio = _data.viewBox[2] / _data.viewBox[3];\r\n // if(!_data.options.responsive)\r\n // _this.setResponsive();\r\n\r\n return _data.viewBox;\r\n },\r\n viewBoxGetBySize : function(width, height){\r\n\r\n\r\n var new_ratio = width / height;\r\n var old_ratio = _data.svgDefault.viewBox[2] / _data.svgDefault.viewBox[3];\r\n\r\n var vb = $.extend([],_data.svgDefault.viewBox);\r\n\r\n if (new_ratio != old_ratio){\r\n //vb[2] = width*_data.svgDefault.viewBox[2] / _data.svgDefault.width;\r\n //vb[3] = height*_data.svgDefault.viewBox[3] / _data.svgDefault.height;\r\n if (new_ratio > old_ratio){\r\n vb[2] = _data.svgDefault.viewBox[3] * new_ratio;\r\n vb[0] = _data.svgDefault.viewBox[0] - ((vb[2] - _data.svgDefault.viewBox[2])/2);\r\n }else{\r\n vb[3] = _data.svgDefault.viewBox[2] / new_ratio;\r\n vb[1] = _data.svgDefault.viewBox[1] - ((vb[3] - _data.svgDefault.viewBox[3])/2);\r\n }\r\n\r\n }\r\n\r\n return vb;\r\n },\r\n viewBoxReset : function(toInitial){\r\n if(_data.options.googleMaps.on){\r\n if(!_data.options.googleMaps.center || !_data.options.googleMaps.zoom){\r\n var southWest = new google.maps.LatLng(_data.geoViewBox.bottomLat, _data.geoViewBox.leftLon);\r\n var northEast = new google.maps.LatLng(_data.geoViewBox.topLat, _data.geoViewBox.rightLon);\r\n var bounds = new google.maps.LatLngBounds(southWest,northEast);\r\n _data.googleMaps.map.fitBounds(bounds);\r\n _data.options.googleMaps.center = _data.googleMaps.map.getCenter().toJSON();\r\n _data.options.googleMaps.zoom = _data.googleMaps.map.getZoom();\r\n }else{\r\n _data.googleMaps.map.setZoom(_data.options.googleMaps.zoom);\r\n _data.googleMaps.map.setCenter(_data.options.googleMaps.center);\r\n }\r\n }else{\r\n if(toInitial){\r\n var v = _data._viewBox || _data.svgDefault.viewBox;\r\n _data.zoomLevel = 0;\r\n _data._scale = 1;\r\n _this.setViewBox(v);\r\n }else{\r\n _this.setViewBox();\r\n }\r\n }\r\n },\r\n getGeoViewBox : function(){\r\n var v = _data.viewBox;\r\n var leftLon = _this.convertSVGToGeo(v[0],v[1])[1];\r\n var rightLon = _this.convertSVGToGeo(v[0]+v[2],v[1])[1];\r\n var topLat = _this.convertSVGToGeo(v[0],v[1])[0];\r\n var bottomLat = _this.convertSVGToGeo(v[0],v[1]+v[3])[0];\r\n return [leftLon, topLat, rightLon, bottomLat];\r\n },\r\n mapAdjustStrokes : function(){\r\n var _this = this;\r\n _data.$svg.find('path, polygon, circle, ellipse, rect').each(function(index){\r\n if($(this).data('stroke-width')) {\r\n $(this).css('stroke-width', $(this).data('stroke-width') / _data.scale);\r\n }\r\n });\r\n },\r\n // ZOOM\r\n zoomIn: function(center){\r\n if(_data.googleMaps.map){\r\n if(!_data.isZooming){\r\n _data.isZooming = true;\r\n var zoom = _data.googleMaps.map.getZoom()+1;\r\n zoom = zoom > 20 ? 20 : zoom;\r\n _data.googleMaps.map.setZoom(zoom);\r\n }\r\n }else if(_data.canZoom){\r\n _data.canZoom = false;\r\n setTimeout(function(){\r\n _data.canZoom = true;\r\n }, 700);\r\n _this.zoom(1, center);\r\n }\r\n },\r\n zoomOut: function(center){\r\n if(_data.googleMaps.map){\r\n if(!_data.isZooming && _data.googleMaps.map.getZoom()-1 >= _data.options.googleMaps.minZoom) {\r\n _data.isZooming = true;\r\n var zoom = _data.googleMaps.map.getZoom() - 1;\r\n zoom = zoom < 1 ? 1 : zoom;\r\n _data.googleMaps.map.setZoom(zoom);\r\n }\r\n }else if(_data.canZoom){\r\n _data.canZoom = false;\r\n setTimeout(function(){\r\n _data.canZoom = true;\r\n }, 700);\r\n _this.zoom(-1, center);\r\n }\r\n },\r\n touchZoomStart : function (touchScale){\r\n\r\n var touchZoomStart = _data._scale;\r\n _data.scale = _data.scale * zoom_k;\r\n var zoom = _data._scale;\r\n _data._scale = _data._scale * zoom_k;\r\n\r\n\r\n var vWidth = _data.viewBox[2];\r\n var vHeight = _data.viewBox[3];\r\n var newViewBox = [];\r\n\r\n newViewBox[2] = _data._viewBox[2] / _data._scale;\r\n newViewBox[3] = _data._viewBox[3] / _data._scale;\r\n\r\n newViewBox[0] = _data.viewBox[0] + (vWidth - newViewBox[2]) / 2;\r\n newViewBox[1] = viewBox[1] + (vHeight - newViewBox[3]) / 2;\r\n\r\n _this.setViewBox(newViewBox);\r\n\r\n },\r\n touchZoomMove : function(){\r\n\r\n },\r\n touchZoomEnd : function(){\r\n\r\n },\r\n zoomTo : function (region, zoomToLevel){\r\n\r\n zoomToLevel = zoomToLevel!=undefined ? parseInt(zoomToLevel) : false;\r\n\r\n if(typeof region == 'string') {\r\n region = _this.getRegion(region);\r\n }\r\n\r\n if(_data.googleMaps.map) {\r\n if(region instanceof Marker){\r\n var latlng = _this.convertSVGToGeo(region.x, region.y);\r\n _data.googleMaps.map.setZoom(zoomToLevel || 1);\r\n _data.googleMaps.map.setCenter({lat: latlng[0],lng: latlng[1]});\r\n }else{\r\n var bounds = region.getGeoBounds();\r\n console.log(bounds);\r\n var southWest = new google.maps.LatLng(bounds.sw[0], bounds.sw[1]);\r\n var northEast = new google.maps.LatLng(bounds.ne[0], bounds.ne[1]);\r\n var bounds = new google.maps.LatLngBounds(southWest,northEast);\r\n _data.googleMaps.map.fitBounds(bounds);\r\n }\r\n return;\r\n }\r\n\r\n // if(_regionOrCenter.length && _regionOrCenter.length==2){\r\n // zoomLevel = zoomLevel || 0;\r\n // center = _regionOrCenter;\r\n // xy = _this.convertGeoToPixel(center);\r\n // var z = _data.zoomLevels[zoomLevel];\r\n // _this.setViewBox([xy[0]- z.viewBox[2]/2,xy[1]- z.viewBox[3]/2, z.viewBox[2], z.viewBox[3]]);\r\n // _this.updateSize();\r\n // _data._scale = z._scale;\r\n // _data.zoomLevel = zoomLevel;\r\n // }else{\r\n\r\n var bbox = [], viewBox, viewBoxPrev = [];\r\n\r\n if(typeof region == 'object' && region.length !== undefined){\r\n // multiple objects\r\n var _bbox;\r\n bbox = region[0].getBBox();\r\n var xmin = [bbox[0]];\r\n var ymin = [bbox[1]];\r\n\r\n var w = (bbox[0]+bbox[2]);\r\n var xmax = [w];\r\n var h = (bbox[1]+bbox[3]);\r\n var ymax = [h];\r\n if (region.length > 1){\r\n for (var i = 1; i < region.length; i++){\r\n _bbox = region[i].getBBox();\r\n xmin.push(_bbox[0]);\r\n ymin.push(_bbox[1]);\r\n var _w = _bbox[0]+_bbox[2];\r\n var _h = _bbox[1]+_bbox[3];\r\n xmax.push(_w);\r\n ymax.push(_h);\r\n }\r\n }\r\n xmin = Math.min.apply(Math, xmin);\r\n ymin = Math.min.apply(Math, ymin);\r\n\r\n var w = Math.max.apply(Math, xmax) - xmin;\r\n var h = Math.max.apply(Math, ymax) - ymin;\r\n bbox = [xmin, ymin, w, h];\r\n\r\n }else{\r\n // single object\r\n bbox = region.getBBox();\r\n }\r\n\r\n if(region instanceof Marker){\r\n _data.zoomLevel = zoomToLevel || 1;\r\n var vb = _data.zoomLevels[_data.zoomLevel].viewBox;\r\n\r\n _this.setViewBox([\r\n region.x-vb[2]/2,\r\n region.y-vb[3]/2,\r\n vb[2],\r\n vb[3]\r\n ]);\r\n _data._scale = _data.zoomLevels[_data.zoomLevel]._scale;\r\n return;\r\n }\r\n\r\n var viewBoxPrev = [];\r\n $.each(_data.zoomLevels, function(key, level){\r\n if(viewBoxPrev.length){\r\n if(bbox[2]>bbox[3] && ((viewBoxPrev[2] > bbox[2]) && (bbox[2] > level.viewBox[2]))){\r\n _data.zoomLevel = zoomToLevel ? zoomToLevel : parseInt(key)-1;\r\n var vb = _data.zoomLevels[_data.zoomLevel].viewBox;\r\n\r\n _this.setViewBox([bbox[0]-vb[2]/2+bbox[2]/2,\r\n bbox[1]-vb[3]/2+bbox[3]/2,\r\n vb[2],\r\n vb[3]]);\r\n // _this.updateSize();\r\n _data._scale = _data.zoomLevels[_data.zoomLevel]._scale;\r\n }else if (bbox[2] bbox[3]) && (bbox[3] > level.viewBox[3]))){\r\n _data.zoomLevel = zoomToLevel ? zoomToLevel : parseInt(key)-1;\r\n var vb = _data.zoomLevels[_data.zoomLevel].viewBox;\r\n _this.setViewBox([bbox[0]-vb[2]/2+bbox[2]/2,\r\n bbox[1]-vb[3]/2+bbox[3]/2,\r\n vb[2],\r\n vb[3]]);\r\n // _this.updateSize();\r\n _data._scale = _data.zoomLevels[_data.zoomLevel]._scale;\r\n }\r\n }\r\n viewBoxPrev = level.viewBox;\r\n });\r\n\r\n },\r\n centerOn : function(region, yShift){\r\n\r\n\r\n if(_data.options.googleMaps.on){\r\n yShift = yShift ? (yShift+12)/_this.getScale() : 0;\r\n _data.$map.addClass('scrolling');\r\n var latLng = region.getCenterLatLng(yShift);\r\n _data.googleMaps.map.setCenter(latLng);\r\n setTimeout(function(){\r\n _data.$map.removeClass('scrolling');\r\n },100);\r\n }else{\r\n yShift = yShift ? (yShift+12)/_this.getScale() : 0;\r\n var bbox = region.getBBox();\r\n var vb = _data.viewBox;\r\n _this.setViewBox(\r\n [bbox[0]-vb[2]/2+bbox[2]/2,\r\n bbox[1]-vb[3]/2+bbox[3]/2 - yShift,\r\n vb[2],\r\n vb[3]]);\r\n // _this.updateSize();\r\n // _data._scale = _data.zoomLevels[_data.zoomLevel]._scale;\r\n }\r\n\r\n },\r\n zoom : function (delta, center, exact){\r\n\r\n var vWidth = _data.viewBox[2];\r\n var vHeight = _data.viewBox[3];\r\n var newViewBox = [];\r\n\r\n var isInZoomRange = _data.zoomLevel >= _data.options.zoom.limit[0] && _data.zoomLevel <= _data.options.zoom.limit[1];\r\n\r\n if(!exact){\r\n // check for zoom limit\r\n var d = delta > 0 ? 1 : -1;\r\n\r\n if(!_data.zoomLevels[_data.zoomLevel+d])\r\n return;\r\n\r\n _data._zoomLevel = _data.zoomLevel;\r\n _data._zoomLevel += d;\r\n\r\n if(isInZoomRange && (_data._zoomLevel > _data.options.zoom.limit[1] || _data._zoomLevel < _data.options.zoom.limit[0]))\r\n return false;\r\n\r\n _data.zoomLevel = _data._zoomLevel;\r\n //\r\n //var zoom_k = d * _data.options.zoom.delta;\r\n //if (zoom_k < 1) zoom_k = -1/zoom_k;\r\n //\r\n //_data._scale = _data._scale * zoom_k;\r\n //newViewBox[2] = _data._viewBox[2] / _data._scale;\r\n //newViewBox[3] = _data._viewBox[3] / _data._scale;\r\n\r\n var z = _data.zoomLevels[_data.zoomLevel];\r\n _data._scale = z._scale;\r\n newViewBox = z.viewBox;\r\n }else{\r\n // var foundZoomLevel = false, i = 1, prevScale, newScale;\r\n // prevScale = _data.zoomLevels[0]._scale;\r\n // while(!foundZoomLevel){\r\n // if(exact >= prevScale && exact <= _data.zoomLevels[i]._scale){\r\n // foundZoomLevel = _data.zoomLevels[i];\r\n // }\r\n // i++;\r\n // }\r\n // if(isInZoomRange && (foundZoomLevel > _data.options.zoom.limit[1] || foundZoomLevel < _data.options.zoom.limit[0]))\r\n // return false;\r\n\r\n // _data._scale = exact;\r\n // _data.zoomLevel = foundZoomLevel;\r\n\r\n\r\n newViewBox[2] = _data._viewBox[2] / exact;\r\n newViewBox[3] = _data._viewBox[3] / exact;\r\n }\r\n\r\n var shift = [];\r\n if(center){\r\n var koef = d > 0 ? 0.5 : -1; // 1/2 * (d=1) || 2 * (d=-1)\r\n shift = [((center[0] - _data.viewBox[0]) * koef), ((center[1] - _data.viewBox[1]) * koef)];\r\n newViewBox[0] = _data.viewBox[0] + shift[0];\r\n newViewBox[1] = _data.viewBox[1] + shift[1];\r\n }else{\r\n shift = [(vWidth - newViewBox[2]) / 2, (vHeight - newViewBox[3]) / 2];\r\n newViewBox[0] = _data.viewBox[0] + shift[0];\r\n newViewBox[1] = _data.viewBox[1] + shift[1];\r\n }\r\n // Limit scroll to map's boundaries\r\n if(_data.options.scroll.limit)\r\n {\r\n if(newViewBox[0] < _data.svgDefault.viewBox[0])\r\n newViewBox[0] = _data.svgDefault.viewBox[0];\r\n else if(newViewBox[0] + newViewBox[2] > _data.svgDefault.viewBox[0] + _data.svgDefault.viewBox[2])\r\n newViewBox[0] = _data.svgDefault.viewBox[0]+_data.svgDefault.viewBox[2]-newViewBox[2];\r\n\r\n if(newViewBox[1] < _data.svgDefault.viewBox[1])\r\n newViewBox[1] = _data.svgDefault.viewBox[1];\r\n else if(newViewBox[1] + newViewBox[3] > _data.svgDefault.viewBox[1] +_data.svgDefault.viewBox[3])\r\n newViewBox[1] = _data.svgDefault.viewBox[1]+_data.svgDefault.viewBox[3]-newViewBox[3];\r\n }\r\n\r\n _this.setViewBox(newViewBox);\r\n // _this.trigger('zoom');\r\n\r\n },\r\n // MARK : DELETE\r\n markerDelete: function(marker){\r\n\r\n var id = marker.id;\r\n if (!(marker instanceof Marker)){\r\n marker = _this.getMarker(marker.id);\r\n }\r\n\r\n if(_data.editingMarker && _data.editingMarker.id == marker.id){\r\n _data.editingMarker = null;\r\n delete _data.editingMarker;\r\n }\r\n\r\n marker.delete();\r\n _data.markers.splice(_data.markersDict[id],1);\r\n\r\n _this.updateMarkersDict();\r\n\r\n if (_data.markers.length == 0)\r\n _data.options.markerLastID = 0;\r\n },\r\n // MARK : ADD\r\n markerAdd : function(opts, create) {\r\n\r\n // Join default marker options with user-defined options\r\n var options = $.extend(true, {}, markerOptions, opts);\r\n\r\n if(!options.src)\r\n return false;\r\n\r\n options.src = MapSVG.safeURL(options.src);\r\n\r\n if (options.width && options.height){\r\n if(options.geoCoords) {\r\n // Add marker by lat-lon coordinates\r\n var xy = _this.convertGeoToSVG(options.geoCoords);\r\n }else if (options.xy || (MapSVG.isNumber(options.x) && MapSVG.isNumber(options.y))){\r\n // Add marker by SVG x-y coordinates\r\n var xy = options.xy || [options.x, options.y];\r\n }else{\r\n return false;\r\n }\r\n\r\n options.x = xy[0];\r\n options.y = xy[1];\r\n options.xy = xy;\r\n options.id = options.id || _this.markerId();\r\n if(!options.geoCoords && _data.mapIsGeo){\r\n options.geoCoords = _this.convertSVGToGeo(options.x, options.y);\r\n }\r\n\r\n var marker = new Marker(options, _data.scale, _this);\r\n\r\n\r\n // TODO add dataobjectsasmarekrs\r\n _data.layers.markers.append(marker.node);\r\n marker.href && marker.setHref(marker.href);\r\n _data.markers.push(marker);\r\n _data.markersDict[marker.id] = _data.markers.length - 1;\r\n\r\n if(create){\r\n if(typeof create == 'function'){\r\n create(marker);\r\n }else{\r\n _data.markerEditHandler && _data.markerEditHandler.call(marker);\r\n }\r\n }\r\n\r\n\r\n return marker;\r\n }else{\r\n var img = new Image();\r\n img.onload = function(){\r\n options.width = this.width;\r\n options.height = this.height;\r\n return _this.markerAdd(options, create);\r\n };\r\n img.src = options.src;\r\n }\r\n },\r\n markerId: function(){\r\n _data.options.markerLastID = _data.options.markerLastID + 1;\r\n var id = 'marker_'+(_data.options.markerLastID);\r\n if(_data.markersDict[id] != undefined)\r\n return _this.markerId();\r\n else\r\n return id;\r\n },\r\n markersAdjustPosition : function(){\r\n // We want a marker \"tip\" to be on bottom side (like a pin)\r\n // But Raphael starts to draw an image from left top corner.\r\n // At the same time we don't want a marker to be scaled in size when map scales;\r\n // Mark always should stay the same size.\r\n // In this case coordinates of bottom point of image will vary with map scaling.\r\n // So we have to calculate the offset.\r\n var dx, dy;\r\n _data.markers.forEach(function(marker){\r\n marker.adjustPosition(_data.scale);\r\n });\r\n },\r\n // MARK MOVE & EDIT HANDLERS\r\n markerMoveStart : function(){\r\n // storing original coordinates\r\n this.data('ox', parseFloat(this.attr('x')));\r\n this.data('oy', parseFloat(this.attr('y')));\r\n },\r\n markerMove : function (dx, dy) {\r\n dx = dx/_data.scale;\r\n dy = dy/_data.scale;\r\n this.attr({x: this.data('ox') + dx, y: this.data('oy') + dy});\r\n },\r\n markerMoveEnd : function () {\r\n // if coordinates are same then it was a \"click\" and we should start editing\r\n if(this.data('ox') == this.attr('x') && this.data('oy') == this.attr('y')){\r\n options.markerEditHandler.call(this);\r\n }\r\n },\r\n setEditingMarker : function (marker_id) {\r\n _data.editingMarker = _this.getMarker(marker_id);\r\n },\r\n unsetEditingMarker : function(){\r\n _data.editingMarker = null;\r\n },\r\n getEditingMarker : function(){\r\n return _data.editingMarker;\r\n },\r\n scrollStart : function (e,mapsvg){\r\n\r\n if($(e.target).hasClass('mapsvg-btn-zoom') || $(e.target).closest('.mapsvg-gauge').length)\r\n return false;\r\n\r\n if(_data.editMarkers.on && $(e.target).hasClass('class')=='mapsvg-marker')\r\n return false;\r\n\r\n _data.isScrolling = true;\r\n\r\n // _data.$map.css('pointer-events','none');\r\n _data.$map.addClass('scrolling');\r\n\r\n e.preventDefault();\r\n if(MapSVG.touchDevice){\r\n var ce = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0] ? e.originalEvent.touches[0] : e;\r\n }else{\r\n var ce = e;\r\n }\r\n\r\n _data.scroll = _data.scroll || {};\r\n\r\n // initial viewbox when scrollning started\r\n _data.scroll.vxi = _data.viewBox[0];\r\n _data.scroll.vyi = _data.viewBox[1];\r\n // mouse coordinates when scrolling started\r\n _data.scroll.x = ce.clientX;\r\n _data.scroll.y = ce.clientY;\r\n // mouse delta\r\n _data.scroll.dx = 0;\r\n _data.scroll.dy = 0;\r\n // new viewbox x/y\r\n _data.scroll.vx = 0;\r\n _data.scroll.vy = 0;\r\n\r\n // for google maps scroll\r\n _data.scroll.gx = ce.clientX;\r\n _data.scroll.gy = ce.clientY;\r\n\r\n _data.scroll.tx = _data.scroll.tx || 0;\r\n _data.scroll.ty = _data.scroll.ty || 0;\r\n\r\n // var max = _this.convertSVGToPixel(_this.convertGeoToSVG([-85,180]));\r\n // var min = _this.convertSVGToPixel(_this.convertGeoToSVG([85,-180]));\r\n // _data.scroll.limit = {\r\n // maxX: max[0]+_data.$map.width(),\r\n // maxY: max[1]+_data.$map.outerHeight(),\r\n // minX: min[0],\r\n // minY: min[1]\r\n // };\r\n\r\n if(e.type.indexOf('mouse') === 0 ){\r\n $(document).on('mousemove.scroll.mapsvg', _this.scrollMove);\r\n if(_data.options.scroll.spacebar){\r\n $(document).on('keyup.scroll.mapsvg', function (e) {\r\n if (e.keyCode == 32) {\r\n _this.scrollEnd(e, mapsvg);\r\n }\r\n });\r\n }else{\r\n $(document).on('mouseup.scroll.mapsvg', function(e){\r\n _this.scrollEnd(e,mapsvg);\r\n });\r\n }\r\n }\r\n //else\r\n // $('body').on('touchmove.scroll.mapsvg', _this.scrollMove).on('touchmove.scroll.mapsvg', function(e){_this.scrollEnd(e,mapsvg);});\r\n },\r\n scrollMove : function (e){\r\n\r\n e.preventDefault();\r\n\r\n\r\n // $('body').css({'cursor': 'hand'});\r\n\r\n var ce = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0] ? e.originalEvent.touches[0] : e;\r\n\r\n\r\n // TODO: на каждый зум лев считать допустимые translate xy при данном scale\r\n if(_this.panBy((_data.scroll.gx - ce.clientX),(_data.scroll.gy - ce.clientY))){\r\n if(_data.googleMaps.map){\r\n // var coords = _this.getCenter();\r\n // _data.googleMaps.map.setCenter(coords);\r\n // _data.googleMaps.map.panBy((_data.scroll.gx - ce.clientX),(_data.scroll.gy - ce.clientY));\r\n var point = _data.googleMaps.map.getCenter();\r\n\r\n // var overlay = new google.maps.OverlayView();\r\n // overlay.draw = function() {};\r\n // overlay.setMap(_data.googleMaps.map);\r\n\r\n var projection = _data.googleMaps.overlay.getProjection();\r\n\r\n var pixelpoint = projection.fromLatLngToDivPixel(point);\r\n pixelpoint.x += _data.scroll.gx - ce.clientX;\r\n pixelpoint.y += _data.scroll.gy - ce.clientY;\r\n\r\n point = projection.fromDivPixelToLatLng(pixelpoint);\r\n\r\n _data.googleMaps.map.setCenter(point);\r\n }\r\n }\r\n\r\n _data.scroll.gx = ce.clientX;\r\n _data.scroll.gy = ce.clientY;\r\n\r\n // delta x/y\r\n _data.scroll.dx = (_data.scroll.x - ce.clientX);\r\n _data.scroll.dy = (_data.scroll.y - ce.clientY);\r\n\r\n // new viewBox x/y\r\n var vx = parseInt(_data.scroll.vxi + _data.scroll.dx /_data.scale);\r\n var vy = parseInt(_data.scroll.vyi + _data.scroll.dy /_data.scale);\r\n\r\n // Limit scroll to map boundaries\r\n if(_data.options.scroll.limit){\r\n\r\n if(vx < _data.svgDefault.viewBox[0])\r\n vx = _data.svgDefault.viewBox[0];\r\n else if(_data.viewBox[2] + vx > _data.svgDefault.viewBox[0] + _data.svgDefault.viewBox[2])\r\n vx = (_data.svgDefault.viewBox[0]+_data.svgDefault.viewBox[2]-_data.viewBox[2]);\r\n\r\n if(vy < _data.svgDefault.viewBox[1])\r\n vy = _data.svgDefault.viewBox[1];\r\n else if(_data.viewBox[3] + vy > _data.svgDefault.viewBox[1] + _data.svgDefault.viewBox[3])\r\n vy = (_data.svgDefault.viewBox[1]+_data.svgDefault.viewBox[3]-_data.viewBox[3]);\r\n\r\n }\r\n\r\n\r\n _data.scroll.vx = vx;\r\n _data.scroll.vy = vy;\r\n\r\n\r\n // set new viewBox\r\n // _this.setViewBox([_data.scroll.vx, _data.scroll.vy, _data.viewBox[2], _data.viewBox[3]]);\r\n\r\n },\r\n scrollEnd : function (e,mapsvg, noClick){\r\n\r\n // _data.scroll.tx = (_data.scroll.tx - _data.scroll.dx);\r\n // _data.scroll.ty = (_data.scroll.ty - _data.scroll.dy);\r\n\r\n _data.isScrolling = false;\r\n _data.$map.removeClass('scrolling');\r\n $(document).off('keyup.scroll.mapsvg');\r\n $(document).off('mousemove.scroll.mapsvg');\r\n $(document).off('mouseup.scroll.mapsvg');\r\n\r\n\r\n // call regionClickHandler if mouse did not move more than 5 pixels\r\n if (noClick !== true && Math.abs(_data.scroll.dx)<5 && Math.abs(_data.scroll.dy)<5){\r\n // _this.popoverOffHandler(e);\r\n if(_data.editMarkers.on)\r\n _data.clickAddsMarker && _this.markerAddClickHandler(e);\r\n else if (_data.region_clicked)\r\n _this.regionClickHandler(e, _data.region_clicked);\r\n }\r\n\r\n\r\n _data.viewBox[0] = _data.scroll.vx || _data.viewBox[0];\r\n _data.viewBox[1] = _data.scroll.vy || _data.viewBox[1] ;\r\n\r\n\r\n // _data.$map.css('pointer-events','auto');\r\n // $('body').css({'cursor': 'default'});\r\n\r\n // if(_data.googleMaps.map) {\r\n // fix shift\r\n // _this.setViewBoxByGoogleMapBounds();\r\n // }\r\n\r\n\r\n },\r\n panBy : function(x, y){\r\n\r\n // _data.scroll.tx -= x;\r\n // _data.scroll.ty -= y;\r\n var tx = _data.scroll.tx - x;\r\n var ty = _data.scroll.ty - y;\r\n\r\n if(!_data.options.googleMaps.on && _data.options.scroll.limit){\r\n var svg = _data.$svg[0].getBoundingClientRect();\r\n var bounds = _data.$map[0].getBoundingClientRect();\r\n if(svg.left-x > bounds.left || svg.right-x < bounds.right){\r\n tx = _data.scroll.tx;\r\n }\r\n if(svg.top-y > bounds.top || svg.bottom-y < bounds.bottom){\r\n ty = _data.scroll.ty;\r\n }\r\n }\r\n\r\n _data.$scrollpane.css({\r\n 'transform': 'translate('+tx+'px,'+ty+'px)'\r\n });\r\n\r\n _data.scroll.tx = tx;\r\n _data.scroll.ty = ty;\r\n return true;\r\n\r\n },\r\n panTo : function(x,y){\r\n\r\n },\r\n // REMEMBER WHICH REGION WAS CLICKED BEFORE START PANNING\r\n scrollRegionClickHandler : function (e, region) {\r\n _data.region_clicked = region;\r\n },\r\n touchStart : function (_e,mapsvg){\r\n // if($(_e.target).hasClass('mapsvg-popover') || $(_e.target).closest('.mapsvg-popover').length ){\r\n // return true;\r\n // }\r\n _e.preventDefault();\r\n // _e.stopPropagation();\r\n\r\n // stop scroll and cancel click event\r\n if(_data.isScrolling){\r\n _this.scrollEnd(_e, mapsvg, true);\r\n }\r\n var e = _e.originalEvent;\r\n\r\n if(_data.options.zoom.on && e.touches && e.touches.length == 2){\r\n _data.touchZoomStartViewBox = _data.viewBox;\r\n _data.touchZoomStartScale = _data.scale;\r\n _data.touchZoomEnd = 1;\r\n _data.scaleDistStart = Math.hypot(\r\n e.touches[0].pageX - e.touches[1].pageX,\r\n e.touches[0].pageY - e.touches[1].pageY);\r\n }else if(e.touches && e.touches.length == 1){\r\n _this.scrollStart(_e,mapsvg);\r\n }\r\n\r\n $(document).on('touchmove.scroll.mapsvg', function(e){\r\n e.preventDefault(); _this.touchMove(e,_this);\r\n }).on('touchend.scroll.mapsvg', function(e){\r\n e.preventDefault(); _this.touchEnd(e,_this);\r\n });\r\n\r\n\r\n },\r\n touchMove : function (_e, mapsvg){\r\n // if($(_e.target).hasClass('mapsvg-popover') || $(_e.target).closest('.mapsvg-popover').length ){\r\n // return true;\r\n // }\r\n _e.preventDefault();\r\n var e = _e.originalEvent;\r\n\r\n if(_data.options.zoom.on && e.touches && e.touches.length == 2){\r\n if(!MapSVG.ios){\r\n e.scale = Math.hypot(\r\n e.touches[0].pageX - e.touches[1].pageX,\r\n e.touches[0].pageY - e.touches[1].pageY)/_data.scaleDistStart;\r\n }\r\n\r\n if(e.scale!=1 && _data.canZoom) {\r\n var d = e.scale > 1 ? 1 : -1;\r\n\r\n var cx = e.touches[0].pageX >= e.touches[1].pageX ? e.touches[0].pageX - (e.touches[0].pageX - e.touches[1].pageX)/2 - _data.$svg.offset().left : e.touches[1].pageX - (e.touches[1].pageX - e.touches[0].pageX)/2 - _data.$svg.offset().left;\r\n var cy = e.touches[0].pageY >= e.touches[1].pageY ? e.touches[0].pageY - (e.touches[0].pageY - e.touches[1].pageY) - _data.$svg.offset().top : e.touches[1].pageY - (e.touches[1].pageY - e.touches[0].pageY) - _data.$svg.offset().top;\r\n var center = _this.convertPixelToSVG([cx, cy]);\r\n\r\n if (d > 0)\r\n _this.zoomIn(center);\r\n else\r\n _this.zoomOut(center);\r\n }\r\n }else if(_data.isScrolling){\r\n _this.scrollMove(_e);\r\n }\r\n },\r\n touchEnd : function (_e, mapsvg){\r\n // if($(_e.target).hasClass('mapsvg-popover') || $(_e.target).closest('.mapsvg-popover').length ){\r\n // return true;\r\n // }\r\n _e.preventDefault();\r\n var e = _e.originalEvent;\r\n if(_data.touchZoomStart){\r\n _data.touchZoomStart = false;\r\n _data.touchZoomEnd = false;\r\n }else if(_data.isScrolling){\r\n _this.scrollEnd(_e, mapsvg);\r\n }\r\n\r\n $(document).off('touchmove.scroll.mapsvg');\r\n $(document).off('touchend.scroll.mapsvg');\r\n },\r\n markersGroupHide : function(group){\r\n for(var i in _data.markers[group]){\r\n _data.markers[group][i].hide();\r\n }\r\n },\r\n markersGroupShow : function(group){\r\n for(var i in _data.markers[group]){\r\n _data.markers[group][i].show();\r\n }\r\n },\r\n regionsGroupSelect : function(group){\r\n for(var i in _data.markers[group]){\r\n _data.markers[group][i].hide();\r\n }\r\n },\r\n regionsGroupUnselect : function(group){\r\n for(var i in _data.markers[group]){\r\n _data.markers[group][i].show();\r\n }\r\n },\r\n // GET ALL MARKERS\r\n markersGet : function(){\r\n return _data.markers;\r\n },\r\n // GET SELECTED REGION OR ARRAY OF SELECTED REGIONS\r\n getSelected : function(){\r\n return _data.selected_id;\r\n },\r\n // SELECT REGION\r\n selectRegion : function(id, skipDirectorySelection){\r\n // _this.hidePopover();\r\n if(typeof id == \"string\"){\r\n var region = _this.getRegion(id);\r\n }else{\r\n var region = id;\r\n }\r\n if(!region) return false;\r\n if(_data.options.multiSelect && !_data.editRegions.on){\r\n if(region.selected){\r\n _this.deselectRegion(region);\r\n return;\r\n }\r\n }else if(_data.selected_id.length>0){\r\n _this.deselectAllRegions();\r\n }\r\n _data.selected_id.push(region.id);\r\n region.select();\r\n },\r\n deselectAllRegions : function(){\r\n $.each(_data.selected_id, function(index,id){\r\n _this.deselectRegion(_this.getRegion(id));\r\n });\r\n },\r\n deselectRegion : function (region){\r\n if(!region)\r\n region = _this.getRegion(_data.selected_id[0]);\r\n if(region){\r\n region.deselect();\r\n var i = $.inArray(region.id, _data.selected_id);\r\n _data.selected_id.splice(i,1);\r\n // if(MapSVG.browser.ie)//|| MapSVG.browser.firefox)\r\n // _this.mapAdjustStrokes();\r\n }\r\n },\r\n highlightRegions : function(regions){\r\n regions.forEach(function(region){\r\n if(!region.selected && !region.disabled){\r\n _data.highlightedRegions.push(region);\r\n region.highlight();\r\n }\r\n })\r\n },\r\n unhighlightRegions : function(){\r\n _data.highlightedRegions.forEach(function(region){\r\n if(!region.selected && !region.disabled)\r\n region.unhighlight();\r\n });\r\n _data.highlightedRegions = [];\r\n },\r\n convertMouseToSVG : function(e){\r\n var mc = MapSVG.mouseCoords(e);\r\n var x = mc.x - _data.$svg.offset().left;\r\n var y = mc.y - _data.$svg.offset().top;\r\n return _this.convertPixelToSVG([x,y]);\r\n },\r\n convertSVGToPixel : function(xy){\r\n var scale = _this.getScale();\r\n return [(xy[0]-_data.svgDefault.viewBox[0])*scale, (xy[1]-_data.svgDefault.viewBox[1])*scale];\r\n },\r\n convertPixelToSVG : function(xy){\r\n var scale = _this.getScale();\r\n return [(xy[0])/scale+_data.svgDefault.viewBox[0], (xy[1])/scale+_data.svgDefault.viewBox[1]];\r\n },\r\n convertGeoToSVG: function (coords){\r\n\r\n var lat = parseFloat(coords[0]);\r\n var lon = parseFloat(coords[1]);\r\n var x = (lon - _data.geoViewBox.leftLon) * (_data.svgDefault.viewBox[2] / _data.mapLonDelta);\r\n\r\n var lat = lat * 3.14159 / 180;\r\n // var worldMapWidth = ((_data.svgDefault.width / _data.mapLonDelta) * 360) / (2 * 3.14159);\r\n var worldMapWidth = ((_data.svgDefault.viewBox[2] / _data.mapLonDelta) * 360) / (2 * 3.14159);\r\n var mapOffsetY = (worldMapWidth / 2 * Math.log((1 + Math.sin(_data.mapLatBottomDegree)) / (1 - Math.sin(_data.mapLatBottomDegree))));\r\n var y = _data.svgDefault.viewBox[3] - ((worldMapWidth / 2 * Math.log((1 + Math.sin(lat)) / (1 - Math.sin(lat)))) - mapOffsetY);\r\n\r\n x += _data.svgDefault.viewBox[0];\r\n y += _data.svgDefault.viewBox[1];\r\n\r\n return [x, y];\r\n },\r\n convertSVGToGeo: function (tx, ty){\r\n tx -= _data.svgDefault.viewBox[0];\r\n ty -= _data.svgDefault.viewBox[1];\r\n /* called worldMapWidth in Raphael's Code, but I think that's the radius since it's the map width or circumference divided by 2*PI */\r\n var worldMapRadius = _data.svgDefault.viewBox[2] / _data.mapLonDelta * 360/(2 * Math.PI);\r\n var mapOffsetY = ( worldMapRadius / 2 * Math.log( (1 + Math.sin(_data.mapLatBottomDegree) ) / (1 - Math.sin(_data.mapLatBottomDegree)) ));\r\n var equatorY = _data.svgDefault.viewBox[3] + mapOffsetY;\r\n var a = (equatorY-ty)/worldMapRadius;\r\n var lat = 180/Math.PI * (2 * Math.atan(Math.exp(a)) - Math.PI/2);\r\n var lon = _data.geoViewBox.leftLon+tx/_data.svgDefault.viewBox[2]*_data.mapLonDelta;\r\n lat = parseFloat(lat.toFixed(6));\r\n lon = parseFloat(lon.toFixed(6));\r\n return [lat,lon];\r\n },\r\n convertGeoBoundsToViewBox: function (sw, ne){\r\n\r\n var lat = parseFloat(coords[0]);\r\n var lon = parseFloat(coords[1]);\r\n var x = (lon - _data.geoViewBox.leftLon) * (_data.svgDefault.viewBox[2] / _data.mapLonDelta);\r\n\r\n var lat = lat * 3.14159 / 180;\r\n // var worldMapWidth = ((_data.svgDefault.width / _data.mapLonDelta) * 360) / (2 * 3.14159);\r\n var worldMapWidth = ((_data.svgDefault.viewBox[2] / _data.mapLonDelta) * 360) / (2 * 3.14159);\r\n var mapOffsetY = (worldMapWidth / 2 * Math.log((1 + Math.sin(_data.mapLatBottomDegree)) / (1 - Math.sin(_data.mapLatBottomDegree))));\r\n var y = _data.svgDefault.viewBox[3] - ((worldMapWidth / 2 * Math.log((1 + Math.sin(lat)) / (1 - Math.sin(lat)))) - mapOffsetY);\r\n\r\n x += _data.svgDefault.viewBox[0];\r\n y += _data.svgDefault.viewBox[1];\r\n\r\n return [x, y];\r\n },\r\n // PICK COLOR FROM GRADIENT\r\n pickGaugeColor: function(gaugeValue) {\r\n var w = (gaugeValue - _data.options.gauge.min) / _data.options.gauge.maxAdjusted;\r\n var rgb = [\r\n Math.round(_data.options.gauge.colors.diffRGB.r * w + _data.options.gauge.colors.lowRGB.r),\r\n Math.round(_data.options.gauge.colors.diffRGB.g * w + _data.options.gauge.colors.lowRGB.g),\r\n Math.round(_data.options.gauge.colors.diffRGB.b * w + _data.options.gauge.colors.lowRGB.b),\r\n Math.round(_data.options.gauge.colors.diffRGB.a * w + _data.options.gauge.colors.lowRGB.a)\r\n ];\r\n return rgb;\r\n },\r\n // CHECK IF REGION IS DISABLED\r\n isRegionDisabled : function (id, svgfill){\r\n\r\n if(_data.options.regions[id] && (_data.options.regions[id].disabled || svgfill == 'none') ){\r\n return true;\r\n }else if(\r\n (_data.options.regions[id] == undefined || MapSVG.parseBoolean(_data.options.regions[id].disabled)) &&\r\n (_data.options.disableAll || svgfill == 'none' || id == 'labels' || id == 'Labels')\r\n\r\n ){\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n },\r\n regionClickHandler : function(e, region, skipPopover){\r\n\r\n _data.region_clicked = null;\r\n var actions = _data.options.actions;\r\n\r\n if(region.mapsvg_type=='region')\r\n _this.selectRegion(region.id);\r\n if(_data.editRegions.on){\r\n _data.regionEditHandler.call(region);\r\n return;\r\n }\r\n // _this.hidePopover();\r\n\r\n\r\n _this.showPopover(region);\r\n\r\n if(_data.options.onClick)\r\n _data.options.onClick.call(region, e, _this);\r\n\r\n if(region.href && !_data.disableLinks){\r\n if(region.target=='blank'){\r\n var win = window.open(region.href, '_blank');\r\n win.focus();\r\n }else{\r\n window.location.href = region.href;\r\n }\r\n }\r\n\r\n },\r\n fileExists : function(url){\r\n if(url.substr(0,4)==\"data\")\r\n return true;\r\n var http = new XMLHttpRequest();\r\n http.open('HEAD', url, false);\r\n http.send();\r\n return http.status!=404;\r\n },\r\n getStyle : function(elem,prop){\r\n if (elem.currentStyle) {\r\n var res= elem.currentStyle.margin;\r\n } else if (window.getComputedStyle) {\r\n if (window.getComputedStyle.getPropertyValue){\r\n var res= window.getComputedStyle(elem, null).getPropertyValue(prop)}\r\n else{var res =window.getComputedStyle(elem)[prop] };\r\n }\r\n return res;\r\n },\r\n search: function(str){\r\n var results = [];\r\n str = str.toLowerCase();\r\n _data.regions.forEach(function(r){\r\n if(r.id.toLowerCase().indexOf(str) === 0 || r.id.toLowerCase().indexOf('-'+str) !== -1 || (r.title && r.title.toLowerCase().indexOf(str) === 0))\r\n results.push({id: r.id, id_no_spaces: r.id_no_spaces});\r\n });\r\n return results;\r\n },\r\n searchMarkers: function(str){\r\n var results = [];\r\n str = str.toLowerCase();\r\n _data.markers.forEach(function(m){\r\n if(m.id.toLowerCase().indexOf(str) === 0)\r\n results.push(m.id);\r\n });\r\n return results;\r\n },\r\n searchData: function(field, str){\r\n var results = [];\r\n str = str.toLowerCase();\r\n _data.options.data.forEach(function(params){\r\n for(var i in params){\r\n if((''+params[i]).toLowerCase().indexOf(str) === 0 && results.indexOf(params.id)==-1)\r\n results.push(params.id);\r\n }\r\n });\r\n return results;\r\n },\r\n hideMarkersExceptOne: function(id){\r\n _data.markers.forEach(function(m){\r\n if(m.id!=id)\r\n m.node.addClass('mapsvg-marker-hidden');\r\n });\r\n },\r\n showMarkers: function(){\r\n _data.markers.forEach(function(m){\r\n m.node.removeClass('mapsvg-marker-hidden');\r\n });\r\n },\r\n markerAddClickHandler : function(e){\r\n\r\n // Don't add marker if marker was clicked\r\n if($(e.target).hasClass('mapsvg-marker')) return false;\r\n\r\n var mc = MapSVG.mouseCoords(e);\r\n var x = mc.x - _data.$svg.offset().left;\r\n var y = mc.y - _data.$svg.offset().top;\r\n var xy = _this.convertPixelToSVG([x,y]);\r\n\r\n if(!$.isNumeric(x) || !$.isNumeric(y))\r\n return false;\r\n\r\n var data = {xy: xy};\r\n\r\n // When Form Builder is opened in MapSVG Builder, there could be created marker\r\n // already so we want to move the marker to a new position on map click\r\n // instead of creating a new marker\r\n if(_data.editingMarker){\r\n // _data.editingMarker.moveToClick([x,y]);\r\n _data.editingMarker.setXy(xy);\r\n return;\r\n }\r\n\r\n if(window.defaultMarkerImage)\r\n data.src = window.defaultMarkerImage;\r\n\r\n _this.markerAdd(data, true);\r\n },\r\n setMarkersEditMode : function(on, clickAddsMarker){\r\n _data.clickAddsMarker = true;\r\n _data.editMarkers.on = MapSVG.parseBoolean(on);\r\n _this.deselectAllRegions();\r\n _this.setEventHandlers();\r\n },\r\n setRegionsEditMode : function(on){\r\n _data.editRegions.on = MapSVG.parseBoolean(on);\r\n _this.deselectAllRegions();\r\n _this.setEventHandlers();\r\n },\r\n setEditMode: function(on){\r\n _data.editMode = on;\r\n },\r\n setDataEditMode : function(on){\r\n _data.editData.on = MapSVG.parseBoolean(on);\r\n _this.deselectAllRegions();\r\n _this.setEventHandlers();\r\n },\r\n // Adding markers\r\n setMarkers : function (markers){\r\n $.each(markers, function(i, marker){\r\n _this.markerAdd(marker);\r\n });\r\n _data.markers.sort(function(a,b){\r\n return a.id == b.id ? 0 : +(a.id > b.id) || -1;\r\n });\r\n _data.markers.forEach(function(marker, index){\r\n _data.markersDict[marker.id] = index;\r\n });\r\n\r\n\r\n },\r\n setEventHandler : function(){\r\n\r\n },\r\n textBr: function(text){\r\n var htmls = [];\r\n var lines = text.split(/\\n/);\r\n var tmpDiv = jQuery(document.createElement('div'));\r\n for (var i = 0 ; i < lines.length ; i++) {\r\n htmls.push(tmpDiv.text(lines[i]).html());\r\n }\r\n return htmls.join(\"
        \");\r\n },\r\n runUserFunction : function(func){\r\n try{\r\n func();\r\n }catch(error){\r\n console.log(\"MapSVG user-defined function error: (line \"+error.line+\"): \"+error.message);\r\n }\r\n },\r\n download: function(){\r\n\r\n if(!_data.downloadForm) {\r\n _data.downloadForm = $('
        ');\r\n _data.downloadForm.appendTo('body');\r\n }\r\n _data.downloadForm.find('input[name=\"svg_file\"]').val(_data.$svg.prop('outerHTML'));\r\n _data.downloadForm.find('input[name=\"svg_title\"]').val(_data.options.title);\r\n setTimeout(function() {\r\n jQuery('#mdownload').submit();\r\n }, 500);\r\n },\r\n showTooltip : function(region){\r\n if(region.disabled)\r\n return false;\r\n\r\n var tip;\r\n if (_data.options.tooltips.priority == \"global\"){\r\n tip =\r\n (typeof _data.options.tooltips.mode == \"function\") && _data.options.tooltips.mode.call(region,_data.tooltip.container, region, _this)\r\n ||\r\n _data.options.tooltips.mode!='off' && region[_data.options.tooltips.mode]\r\n ||\r\n region.tooltip\r\n }else{\r\n tip =\r\n region.tooltip\r\n ||\r\n (typeof _data.options.tooltips.mode == \"function\") && _data.options.tooltips.mode.call(region,_data.tooltip.container, region, _this)\r\n ||\r\n _data.options.tooltips.mode!='off' && region[_data.options.tooltips.mode];\r\n }\r\n if (tip && tip.length){\r\n _data.tooltip.container.html(tip);\r\n _data.tooltip.container.addClass('mapsvg-tooltip-visible');\r\n }\r\n },\r\n getPopoverBody: function(region){\r\n var popover;\r\n if(_data.options.popovers.priority == 'global'){\r\n popover = typeof _data.options.popovers.mode == 'function' ? _data.options.popovers.mode.call(region, _data.mapPopover, region, _this) : region.popover;\r\n }else{\r\n popover = region.popover || (typeof _data.options.popovers.mode == 'function' ? _data.options.popovers.mode.call(region, _data.mapPopover, region, _this) : null);\r\n }\r\n\r\n return popover;\r\n },\r\n popoverAdjustPosition: function(){\r\n if(!_data.$popover || !_data.$popover.data('point')) return;\r\n\r\n var pos = _this.convertSVGToPixel(_data.$popover.data('point'));\r\n\r\n // pos[0] = pos[0] - (_data.layers.popovers.offset().left - _data.$map.offset().left);\r\n // pos[1] = pos[1] - (_data.layers.popovers.offset().top - _data.$map.offset().top);\r\n\r\n _data.$popover.css({\r\n 'transform': 'translateX(-50%) translate('+pos[0]+'px,'+pos[1]+'px)'\r\n });\r\n },\r\n showPopover : function (mapObject){\r\n\r\n // TODO check why need this:\r\n // var popoverShown = false;\r\n\r\n // var mapObject = object instanceof Region ? object : (object.marker&&object.marker.id ? _this.getMarker(object.marker.id) : null);\r\n if(!mapObject)\r\n return;\r\n\r\n var _this = this;\r\n\r\n var template = _this.getPopoverBody(mapObject);\r\n if(!template)\r\n return;\r\n\r\n var point;\r\n if(mapObject instanceof Marker){\r\n point = {x: mapObject.x, y: mapObject.y};\r\n }else{\r\n point = mapObject.getCenterSVG();\r\n }\r\n _this.popover && _this.popover.destroy();\r\n _this.popover = new MapSVG.PopoverController({\r\n container: _data.$popover,\r\n point: point,\r\n yShift: mapObject instanceof Marker ? mapObject.height : 0,\r\n template: template,\r\n mapsvg: _this,\r\n data: template,//object instanceof Region ? object.forTemplate() : object,\r\n mapObject: mapObject,\r\n scrollable: true,\r\n withToolbar: true,\r\n events: {\r\n 'shown': function(){\r\n if(_data.options.popovers.centerOn){\r\n var shift = this.container.height()/2;\r\n if(_data.options.popovers.centerOn && !(MapSVG.isPhone && _data.options.popovers.mobileFullscreen)){\r\n _this.centerOn(mapObject, shift);\r\n }\r\n }\r\n // _data.events['shown.popover'] && _data.events['shown.popover'].call(this);\r\n // _this.trigger('popoverShown');\r\n },\r\n 'closed': function(){\r\n _data.options.popovers.centerOn && _data.options.popovers.resetViewboxOnClose && _this.viewBoxReset(true);\r\n // _data.events['closed.popover'] && _data.events['closed.popover'].call(this);\r\n // _this.trigger('popoverClosed');\r\n },\r\n 'resize': function(){\r\n if(_data.options.popovers.centerOn){\r\n var shift = this.container.height()/2;\r\n if(_data.options.popovers.centerOn && !(MapSVG.isPhone && _data.options.popovers.mobileFullscreen)){\r\n _this.centerOn(mapObject, shift);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n // var center = mapObject.getCenterSVG();\r\n // _data.$popover.data('point', [center.x,center.y]);\r\n // _this.popoverAdjustPosition();\r\n\r\n // _data.$popover.addClass('mapsvg-popover-visible');\r\n // _data.$popover.addClass('mapsvg-popover-animate');\r\n //\r\n // popoverShown = true;\r\n\r\n // $('body').toggleClass('mapsvg-popover-open', popoverShown);\r\n },\r\n hidePopover : function(){\r\n _this.popover && _this.popover.close();\r\n // $('body').toggleClass('mapsvg-popover-open', false);\r\n },\r\n hideTip : function (){\r\n _data.tooltip.container.removeClass('mapsvg-tooltip-visible');\r\n //_data.tooltip.container.html('');\r\n },\r\n popoverOffHandler : function(e){\r\n\r\n if(_data.isScrolling || $(e.target).closest('.mapsvg-popover').length || $(e.target).hasClass('mapsvg-btn-zoom'))\r\n return;\r\n this.popover && this.popover.close();\r\n },\r\n mouseOverHandler : function(e){\r\n //if (this.disabled)\r\n // return false;\r\n if(this instanceof Region) {\r\n if (!this.selected)\r\n this.highlight();\r\n }\r\n _this.showTooltip(this);\r\n //// TODO как-то убрать\r\n //if(!_data.editRegions.on && !_data.editMarkers.on)\r\n return _data.options.mouseOver && _data.options.mouseOver.call(this, e, _this);\r\n },\r\n mouseOutHandler : function(e){\r\n //if (this.disabled)\r\n // return false;\r\n if(this instanceof Region) {\r\n if (!this.selected)\r\n this.unhighlight();\r\n }\r\n _this.hideTip();\r\n //// todo remove\r\n //if(!_data.editRegions.on && !_data.editMarkers.on)\r\n return _data.options.mouseOut && _data.options.mouseOut.call(this, e, _this);\r\n },\r\n updateOptions : function(options){\r\n $.extend(true,_data.options,options);\r\n },\r\n updateMarkersDict : function(){\r\n _data.markersDict = {};\r\n _data.markers.forEach(function(marker, i){\r\n _data.markersDict[marker.id] = i;\r\n });\r\n },\r\n eventsPrevent: function(event){\r\n _data.eventsPrevent[event] = true;\r\n },\r\n eventsRestore: function(event){\r\n if(event){\r\n _data.eventsPrevent[event] = false;\r\n } else {\r\n _data.eventsPrevent = {};\r\n }\r\n\r\n },\r\n setEventHandlers : function(){\r\n\r\n _data.$map.off('.common.mapsvg');\r\n _data.$scrollpane.off('.common.mapsvg');\r\n $(document).off('keydown.scroll.mapsvg');\r\n $(document).off('mousemove.scrollInit.mapsvg');\r\n $(document).off('mouseup.scrollInit.mapsvg');\r\n\r\n if(_data.editMarkers.on){\r\n\r\n // var event2 = MapSVG.touchDevice ? 'touchstart.common.mapsvg' : 'mousedown.common.mapsvg';\r\n _data.$map.on('touchstart.common.mapsvg mousedown.common.mapsvg', '.mapsvg-marker',function(e){\r\n e.originalEvent.preventDefault();\r\n var marker = _this.getMarker($(this).attr('id'));\r\n var startCoords = MapSVG.mouseCoords(e);\r\n marker.drag(startCoords, _data.scale, function() {\r\n if (_data.mapIsGeo){\r\n this.geoCoords = _this.convertSVGToGeo(this.x + this.width / 2, this.y + (this.height-1));\r\n }\r\n _data.markerEditHandler && _data.markerEditHandler.call(this,true);\r\n if(this.onChange)\r\n this.onChange.call(this);\r\n },function(){\r\n _data.markerEditHandler && _data.markerEditHandler.call(this);\r\n if(this.onChange)\r\n this.onChange.call(this);\r\n });\r\n });\r\n }\r\n\r\n // REGIONS\r\n // if (!MapSVG.touchDevice) {\r\n if(!_data.editMarkers.on) {\r\n _data.$map.on('mouseover.common.mapsvg', '.mapsvg-region', function (e) {\r\n var id = $(this).attr('id');\r\n _this.mouseOverHandler.call(_this.getRegion(id), e, _this, options);\r\n }).on('mouseleave.common.mapsvg', '.mapsvg-region', function (e) {\r\n var id = $(this).attr('id');\r\n _this.mouseOutHandler.call(_this.getRegion(id), e, _this, options);\r\n });\r\n }\r\n if(!_data.editRegions.on){\r\n _data.$map.on('mouseover.common.mapsvg', '.mapsvg-marker', function (e) {\r\n var id = $(this).attr('id');\r\n _this.mouseOverHandler.call(_this.getMarker(id), e, _this, options);\r\n }).on('mouseleave.common.mapsvg', '.mapsvg-marker', function (e) {\r\n var id = $(this).attr('id');\r\n _this.mouseOutHandler.call(_this.getMarker(id), e, _this, options);\r\n });\r\n }\r\n // }\r\n\r\n if(_data.options.scroll.spacebar){\r\n $(document).on('keydown.scroll.mapsvg', function(e) {\r\n if(!_data.isScrolling && e.keyCode == 32){\r\n e.preventDefault();\r\n _data.$map.addClass('mapsvg-scrollable');\r\n $(document).on('mousemove.scrollInit.mapsvg', function(e) {\r\n _data.isScrolling = true;\r\n $(document).off('mousemove.scrollInit.mapsvg');\r\n _this.scrollStart(e,_this);\r\n }).on('keyup.scroll.mapsvg', function (e) {\r\n if (e.keyCode == 32) {\r\n $(document).off('mousemove.scrollInit.mapsvg');\r\n _data.$map.removeClass('mapsvg-scrollable');\r\n }\r\n });\r\n }\r\n });\r\n }else if (!_data.options.scroll.on) {\r\n var event = MapSVG.touchDevice ? 'touchstart.common.mapsvg' : 'click.common.mapsvg';\r\n if(!_data.editMarkers.on) {\r\n // if(MapSVG.touchDevice){\r\n // _data.$map.on('touchstart.common.mapsvg', '.mapsvg-region', function (e) {\r\n // _data.touchScrollStart = $('body').scrollTop();\r\n // });\r\n // _data.$map.on('touchend.common.mapsvg', '.mapsvg-region', function (e) {\r\n // if(_data.touchScrollStart == $('body').scrollTop()){\r\n // _this.regionClickHandler.call(_this, e, _this.getRegion($(this).attr('id')));\r\n // }\r\n // });\r\n // _data.$map.on('touchstart.common.mapsvg', '.mapsvg-marker', function (e) {\r\n // _data.touchScrollStart = $('body').scrollTop();\r\n // });\r\n // _data.$map.on('touchend.common.mapsvg', '.mapsvg-marker', function (e) {\r\n // if(_data.touchScrollStart == $('body').scrollTop()){\r\n // _this.regionClickHandler.call(_this, e, _this.getMarker($(this).attr('id')));\r\n // }\r\n // });\r\n // }else{\r\n _data.$map.on('touchstart.common.mapsvg', '.mapsvg-region', function (e) {\r\n _data.touchScrollStart = $(window).scrollTop();\r\n });\r\n _data.$map.on('touchstart.common.mapsvg', '.mapsvg-marker', function (e) {\r\n _data.touchScrollStart = $(window).scrollTop();\r\n });\r\n\r\n _data.$map.on('touchend.common.mapsvg mouseup.common.mapsvg', '.mapsvg-region', function (e) {\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n if(_data.touchScrollStart === undefined || _data.touchScrollStart === $(window).scrollTop()){\r\n _this.regionClickHandler.call(_this, e, _this.getRegion($(this).attr('id')));\r\n }\r\n // _this.regionClickHandler.call(_this, e, _this.getRegion($(this).attr('id')));\r\n });\r\n _data.$map.on('touchend.common.mapsvg mouseup.common.mapsvg','.mapsvg-marker', function (e) {\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n if(_data.touchScrollStart === undefined || _data.touchScrollStart === $(window).scrollTop()) {\r\n _this.regionClickHandler.call(_this, e, _this.getMarker($(this).attr('id')));\r\n }\r\n });\r\n // }\r\n }else{\r\n if(_data.clickAddsMarker)\r\n _data.$map.on('touchend.common.mapsvg mouseup.common.mapsvg', function (e) {\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n _this.markerAddClickHandler(e);\r\n });\r\n }\r\n } else {\r\n\r\n _data.$map.on('touchstart.common.mapsvg mousedown.common.mapsvg', function(e){\r\n\r\n if($(e.target).hasClass('mapsvg-popover')||$(e.target).closest('.mapsvg-popover').length){\r\n return;\r\n }\r\n if(e.type=='touchstart'){\r\n e.preventDefault();\r\n }\r\n\r\n if(e.target && $(e.target).attr('class') && $(e.target).attr('class').indexOf('mapsvg-region')!=-1){\r\n var obj = _this.getRegion($(e.target).attr('id'));\r\n _this.scrollRegionClickHandler.call(_this, e, obj);\r\n }else if(e.target && $(e.target).attr('class') && $(e.target).attr('class').indexOf('mapsvg-marker')!=-1){\r\n if(_data.editMarkers.on){\r\n return;\r\n }\r\n var obj = _this.getMarker($(e.target).attr('id'));\r\n _this.scrollRegionClickHandler.call(_this, e, obj);\r\n }\r\n if(e.type=='mousedown'){\r\n _this.scrollStart(e,_this);\r\n }else{\r\n _this.touchStart(e,_this);\r\n }\r\n });\r\n\r\n }\r\n },\r\n addLayer: function(name){\r\n _data.layers[name] = $('
        ');\r\n _data.$layers.append(_data.layers[name]);\r\n },\r\n getDatabaseService: function(){\r\n return this.database;\r\n },\r\n regionAdd: function(svgObject){\r\n var region = new Region($(svgObject), _data.options, _data.regionID, _this);\r\n region.setStatus(1);\r\n _data.regions.push(region);\r\n _data.regions.sort(function(a,b){\r\n return a.id == b.id ? 0 : +(a.id > b.id) || -1;\r\n });\r\n _data.regions.forEach(function(region, index){\r\n _data.regionsDict[region.id] = index;\r\n });\r\n return region;\r\n },\r\n regionDelete: function(id){\r\n var index = _data.regionsDict[id];\r\n if(index !== undefined){\r\n var r = _this.getRegion(id);\r\n r.node && r.node.remove();\r\n _data.regions.splice(index,1);\r\n delete _data.regionsDict[id];\r\n }else{\r\n if($('#'+id).length){\r\n $('#'+id).remove();\r\n }\r\n }\r\n },\r\n reloadRegions : function(){\r\n var _this = this;\r\n _data.regions = [];\r\n _data.regionsDict = {};\r\n _data.$svg.find('.mapsvg-region').removeClass('mapsvg-region');\r\n _data.$svg.find('.mapsvg-region-disabled').removeClass('mapsvg-region-disabled');\r\n _data.$svg.find('path, polygon, circle, ellipse, rect').each(function(index){\r\n if($(this).closest('defs').length)\r\n return;\r\n if($(this)[0].getAttribute('id')) {\r\n var region = new Region($(this), _data.options, _data.regionID, _this);\r\n _data.regions.push(region);\r\n }\r\n // if($(this).css('stroke-width')){\r\n // $(this).data('stroke-width', $(this).css('stroke-width').replace('px',''));\r\n // }\r\n });\r\n _data.regions.sort(function(a,b){\r\n return a.id == b.id ? 0 : +(a.id > b.id) || -1;\r\n });\r\n _data.regions.forEach(function(region, index){\r\n _data.regionsDict[region.id] = index;\r\n });\r\n },\r\n reloadRegionsFull : function(){\r\n var statuses = _this.regionsDatabase.getSchemaFieldByType('status');\r\n _this.regionsDatabase.getLoaded().forEach(function(object){\r\n var region = _this.getRegion(object.id);\r\n if(region){\r\n region.data = object;\r\n if(statuses && object.status !== undefined && object.status!==null){\r\n region.setStatus(object.status);\r\n // _this.setRegionStatus(region, object.status);\r\n }\r\n }\r\n });\r\n _this.loadDirectory();\r\n _this.setGauge();\r\n _this.setLayersControl();\r\n _this.setGroups();\r\n },\r\n // INIT\r\n init: function(opts, elem) {\r\n\r\n if(!opts.source) {\r\n throw new Error('MapSVG: please provide SVG file source.');\r\n return false;\r\n }\r\n\r\n\r\n if(opts.beforeLoad)\r\n try{opts.beforeLoad.call(_this);}catch(err){}\r\n\r\n // cut domain to avoid cross-domain errors\r\n if(opts.source.indexOf('//')===0)\r\n opts.source = opts.source.replace(/^\\/\\/[^\\/]+/, '').replace('//','/');\r\n else\r\n opts.source = opts.source.replace(/^.*:\\/\\/[^\\/]+/, '').replace('//','/');\r\n\r\n /** Setting _data **/\r\n _data = {};\r\n\r\n _data.editMode = opts.editMode;\r\n delete opts.editMode;\r\n _data.options = $.extend(true, {}, defaults, opts);\r\n\r\n _this.id = _data.options.db_map_id;\r\n if(_this.id == 'new')\r\n _this.id = null;\r\n _data.highlightedRegions = [];\r\n _data.editRegions = {on:false};\r\n _data.editMarkers = {on:false};\r\n _data.editData = {on:false};\r\n _data.map = elem;\r\n _data.$map = $(elem);\r\n _data.$scrollpane = $('
        ').appendTo(_data.$map);\r\n _data.$layers = $('
        ').appendTo(_data.$scrollpane);\r\n\r\n _data.whRatio = 0;\r\n _data.isScrolling = false;\r\n _data.markerOptions = {};\r\n _data.svgDefault = {};\r\n _data.refLength = 0;\r\n _data.scale = 1; // absolute scale\r\n _data._scale = 1; // relative scale starting from current zoom level\r\n _data.selected_id = [];\r\n _data.mapData = {};\r\n _data.regions = [];\r\n _data.regionsDict = {};\r\n _data.regionID = {id: 0};\r\n _data.markers = [];\r\n _data.markersDict = {};\r\n _data._viewBox = []; // initial viewBox\r\n _data.viewBox = []; // current viewBox\r\n _data.viewBoxZoom = [];\r\n _data.viewBoxFind = undefined;\r\n _data.zoomLevel = 0;\r\n _data.scroll = {};\r\n _data.layers = {};\r\n _data.geoCoordinates = false;\r\n _data.geoViewBox = {leftLon:0, topLat:0, rightLon:0, bottomLat:0};\r\n _data.eventsPrevent = {};\r\n\r\n _data.geoCoordinates = false,\r\n _data.geoViewBox = {leftLon:0, topLat:0, rightLon:0, bottomLat:0},\r\n\r\n\r\n // Set background\r\n _data.$map.addClass('mapsvg').addClass('no-transitions').css('background',_data.options.colors.background);\r\n\r\n _data.$wrap = $('
        ');\r\n _data.$wrap.insertBefore(_data.$map);\r\n _data.$wrap.append(_data.$map);\r\n\r\n if(!_data.editMode){\r\n\r\n // if(_data.options.menu.on){\r\n //\r\n // }\r\n\r\n if(_data.options.detailsView.location != 'custom'){\r\n _data.$details = $('
        ');\r\n if(MapSVG.isPhone){\r\n $('body').append(_data.$details);\r\n }else{\r\n _data.$wrap.append(_data.$details);\r\n if(!_data.options.menu.customContainer){\r\n if(_data.options.menu.on && _data.options.detailsView.location == 'near'){\r\n _data.$details.css({left: _data.options.menu.width});\r\n _data.$details.addClass('near');\r\n }else if(!_data.options.menu.on || _data.options.detailsView.location == 'top'){\r\n _data.$details.addClass('top');\r\n }\r\n if(_data.options.detailsView.margin){\r\n _data.$details.css('margin',_data.options.detailsView.margin);\r\n }\r\n }\r\n }\r\n }else{\r\n _data.$details = $('#'+_data.options.detailsView.containerId);\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n // _data.$ratio = $('
        ');\r\n // _data.$ratio.insertBefore(_data.$map);\r\n // _data.$ratio.append(_data.$map);\r\n\r\n var loading = $('
        '+_data.options.loadingText+'
        ').addClass('mapsvg-loading');\r\n _data.$map.append(loading);\r\n\r\n // _data.$mapRatioSize = $('
        ').insertBefore(_data.$map);\r\n // _data.$map.appendTo(_data.$mapRatioSize);\r\n\r\n _this.addLayer('markers');\r\n _this.addLayer('popovers');\r\n\r\n loading.css({\r\n 'margin-left': function () {\r\n return -($(this).outerWidth(false) / 2)+'px';\r\n },\r\n 'margin-top': function () {\r\n return -($(this).outerHeight(false) / 2)+'px';\r\n }\r\n });\r\n if(_data.options.googleMaps.on){\r\n _data.$map.addClass('mapsvg-google-map-loading');\r\n }\r\n\r\n // Load extension (common things)\r\n if(_data.options.extension && $().mapSvg.extensions && $().mapSvg.extensions[_data.options.extension]){\r\n var ext = $().mapSvg.extensions[_data.options.extension];\r\n ext && ext.common(_this);\r\n }\r\n\r\n\r\n // GET the map by ajax request\r\n $.ajax({url: _data.options.source+'?v='+_data.options.svgFileVersion})\r\n .done(function(xmlData){\r\n\r\n // Default width/height/viewBox from SVG\r\n var svgTag = $(xmlData).find('svg');\r\n _data.$svg = svgTag;\r\n\r\n _data.svgDefault.width = svgTag.attr('width');\r\n _data.svgDefault.height = svgTag.attr('height');\r\n _data.svgDefault.viewBox = svgTag.attr('viewBox');\r\n\r\n if(_data.svgDefault.width && _data.svgDefault.height){\r\n _data.svgDefault.width = parseFloat(_data.svgDefault.width.replace(/px/g,''));\r\n _data.svgDefault.height = parseFloat(_data.svgDefault.height.replace(/px/g,''));\r\n _data.svgDefault.viewBox = _data.svgDefault.viewBox ? _data.svgDefault.viewBox.split(' ') : [0,0, _data.svgDefault.width, _data.svgDefault.height];\r\n }else if(_data.svgDefault.viewBox){\r\n _data.svgDefault.viewBox = _data.svgDefault.viewBox.split(' ');\r\n _data.svgDefault.width = parseFloat(_data.svgDefault.viewBox[2]);\r\n _data.svgDefault.height = parseFloat(_data.svgDefault.viewBox[3]);\r\n }else{\r\n alert('MapSVG needs width/height or viewBox parameter to be present in SVG file.')\r\n return false;\r\n }\r\n // Get geo-coordinates view box from SVG file\r\n var geo = svgTag.attr(\"mapsvg:geoViewBox\") || svgTag.attr(\"mapsvg:geoviewbox\");\r\n if (geo) {\r\n geo = geo.split(\" \");\r\n if (geo.length == 4){\r\n _data.mapIsGeo = true;\r\n _data.geoCoordinates = true;\r\n\r\n _data.geoViewBox = {leftLon: parseFloat(geo[0]),\r\n topLat: parseFloat(geo[1]),\r\n rightLon: parseFloat(geo[2]),\r\n bottomLat: parseFloat(geo[3])\r\n };\r\n _data.mapLonDelta = _data.geoViewBox.rightLon - _data.geoViewBox.leftLon;\r\n _data.mapLatBottomDegree = _data.geoViewBox.bottomLat * 3.14159 / 180;\r\n\r\n }\r\n\r\n }\r\n\r\n $.each(_data.svgDefault.viewBox, function(i,v){\r\n _data.svgDefault.viewBox[i] = parseFloat(v);\r\n });\r\n\r\n _data._viewBox = (_data.options.viewBox.length==4 && _data.options.viewBox ) || _data.svgDefault.viewBox;\r\n\r\n $.each(_data._viewBox, function(i,v){\r\n _data._viewBox[i] = parseFloat(v);\r\n });\r\n\r\n svgTag.attr('preserveAspectRatio','xMidYMid meet');\r\n svgTag.removeAttr('width');\r\n svgTag.removeAttr('height');\r\n\r\n //// Adding moving sticky draggable image on background\r\n //if(_data.options.scrollBackground)\r\n // _data.background = _data.R.rect(_data.svgDefault.viewBox[0],_data.svgDefault.viewBox[1],_data.svgDefault.viewBox[2],_data.svgDefault.viewBox[3]).attr({fill: _data.options.colors.background});\r\n\r\n _this.reloadRegions();\r\n\r\n _data.$scrollpane.append(svgTag);\r\n\r\n\r\n // Set size\r\n _this.setSize(_data.options.width, _data.options.height, _data.options.responsive);\r\n\r\n\r\n if(_data.options.disableAll){\r\n _this.setDisableAll(true);\r\n }\r\n\r\n\r\n\r\n // Set viewBox\r\n _this.setViewBox(_data._viewBox);\r\n _this.setResponsive(_data.options.responsive,true);\r\n\r\n // SET Gauge colors\r\n _this.setGauge();\r\n\r\n // return\r\n // If there are markers, put them to the map\r\n var markers = _data.options.markers || _data.options.marks || [];\r\n _this.setMarkers(markers);\r\n\r\n _this.setScroll(_data.options.scroll, true);\r\n\r\n _this.setZoom(_data.options.zoom);\r\n _this.setGoogleMaps();\r\n\r\n // _this.setViewBox([0,0,_data.svgDefault.viewBox[0]*2+_data.svgDefault.viewBox[2],_data.svgDefault.viewBox[1]*2+_data.svgDefault.viewBox[3]]);\r\n\r\n\r\n // Set tooltips\r\n // tooltipsMode is deprecated, need this for backward compatibility\r\n if (_data.options.tooltipsMode)\r\n _data.options.tooltips.mode = _data.options.tooltipsMode;\r\n _this.setTooltips(_data.options.tooltips);\r\n\r\n // Set popovers\r\n // popover is deprecated (now it's popoverS), need this for backward compatibility\r\n if (_data.options.popover)\r\n _data.options.popovers = _data.options.popover;\r\n _this.setPopovers(_data.options.popovers);\r\n\r\n if(_data.options.cursor)\r\n _this.setCursor(_data.options.cursor);\r\n\r\n\r\n $(document).ready(function(){\r\n _this.setMenu();\r\n _this.setMenuMarkers();\r\n\r\n });\r\n\r\n /* EVENTS */\r\n\r\n _this.setEventHandlers();\r\n\r\n\r\n loading.hide();\r\n\r\n\r\n setTimeout(function(){\r\n _this.updateSize();\r\n setTimeout(function() {\r\n _data.$map.removeClass('no-transitions');\r\n },200);\r\n },100);\r\n\r\n // Select region from URL\r\n if( match = RegExp('[?&]mapsvg_select=([^&]*)').exec(window.location.search)){\r\n var select = decodeURIComponent(match[1].replace(/\\+/g, ' '));\r\n _this.selectRegion(select);\r\n }\r\n\r\n\r\n\r\n if(_data.options.afterLoad){\r\n _data.options.afterLoad.call(_this);\r\n }\r\n\r\n });// end of AJAX\r\n\r\n return _this;\r\n\r\n } // end of init\r\n\r\n }; // end of methods\r\n\r\n var _this = this.methods;\r\n\r\n\r\n\r\n }; // end of mapSVG class\r\n\r\n\r\n /** $.FN **/\r\n $.fn.mapSvg = function( opts ) {\r\n\r\n var id = $(this).attr('id');\r\n\r\n if(typeof opts == 'object' && instances[id] === undefined){\r\n instances[id] = new mapSVG(this, opts);\r\n return instances[id].methods.init(opts, this);\r\n }else if(instances[id]){\r\n return instances[id].methods;\r\n }else{\r\n return instances;\r\n }\r\n\r\n\r\n\r\n }; // end of $.fn.mapSvg\r\n\r\n})( jQuery );\r\n\r\n\r\n// Tiny color\r\n// MapSVG.tinycolor v1.3.0\r\n// https://github.com/bgrins/TinyColor\r\n// Brian Grinstead, MIT License\r\n\r\n(function(Math) {\r\n\r\n var trimLeft = /^\\s+/,\r\n trimRight = /\\s+$/,\r\n tinyCounter = 0,\r\n mathRound = Math.round,\r\n mathMin = Math.min,\r\n mathMax = Math.max,\r\n mathRandom = Math.random;\r\n\r\n function tinycolor (color, opts) {\r\n\r\n color = (color) ? color : '';\r\n opts = opts || { };\r\n\r\n // If input is already a tinycolor, return itself\r\n if (color instanceof tinycolor) {\r\n return color;\r\n }\r\n // If we are called as a function, call using new instead\r\n if (!(this instanceof tinycolor)) {\r\n return new tinycolor(color, opts);\r\n }\r\n\r\n var rgb = inputToRGB(color);\r\n this._originalInput = color,\r\n this._r = rgb.r,\r\n this._g = rgb.g,\r\n this._b = rgb.b,\r\n this._a = rgb.a,\r\n this._roundA = mathRound(100*this._a) / 100,\r\n this._format = opts.format || rgb.format;\r\n this._gradientType = opts.gradientType;\r\n\r\n // Don't let the range of [0,255] come back in [0,1].\r\n // Potentially lose a little bit of precision here, but will fix issues where\r\n // .5 gets interpreted as half of the total, instead of half of 1\r\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\r\n if (this._r < 1) { this._r = mathRound(this._r); }\r\n if (this._g < 1) { this._g = mathRound(this._g); }\r\n if (this._b < 1) { this._b = mathRound(this._b); }\r\n\r\n this._ok = rgb.ok;\r\n this._tc_id = tinyCounter++;\r\n }\r\n\r\n tinycolor.prototype = {\r\n isDark: function() {\r\n return this.getBrightness() < 128;\r\n },\r\n isLight: function() {\r\n return !this.isDark();\r\n },\r\n isValid: function() {\r\n return this._ok;\r\n },\r\n getOriginalInput: function() {\r\n return this._originalInput;\r\n },\r\n getFormat: function() {\r\n return this._format;\r\n },\r\n getAlpha: function() {\r\n return this._a;\r\n },\r\n getBrightness: function() {\r\n //http://www.w3.org/TR/AERT#color-contrast\r\n var rgb = this.toRgb();\r\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\r\n },\r\n getLuminance: function() {\r\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\r\n var rgb = this.toRgb();\r\n var RsRGB, GsRGB, BsRGB, R, G, B;\r\n RsRGB = rgb.r/255;\r\n GsRGB = rgb.g/255;\r\n BsRGB = rgb.b/255;\r\n\r\n if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}\r\n if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}\r\n if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}\r\n return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);\r\n },\r\n setAlpha: function(value) {\r\n this._a = boundAlpha(value);\r\n this._roundA = mathRound(100*this._a) / 100;\r\n return this;\r\n },\r\n toHsv: function() {\r\n var hsv = rgbToHsv(this._r, this._g, this._b);\r\n return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };\r\n },\r\n toHsvString: function() {\r\n var hsv = rgbToHsv(this._r, this._g, this._b);\r\n var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);\r\n return (this._a == 1) ?\r\n \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" :\r\n \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \"+ this._roundA + \")\";\r\n },\r\n toHsl: function() {\r\n var hsl = rgbToHsl(this._r, this._g, this._b);\r\n return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };\r\n },\r\n toHslString: function() {\r\n var hsl = rgbToHsl(this._r, this._g, this._b);\r\n var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);\r\n return (this._a == 1) ?\r\n \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" :\r\n \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \"+ this._roundA + \")\";\r\n },\r\n toHex: function(allow3Char) {\r\n return rgbToHex(this._r, this._g, this._b, allow3Char);\r\n },\r\n toHexString: function(allow3Char) {\r\n return '#' + this.toHex(allow3Char);\r\n },\r\n toHex8: function() {\r\n return rgbaToHex(this._r, this._g, this._b, this._a);\r\n },\r\n toHex8String: function() {\r\n return '#' + this.toHex8();\r\n },\r\n toRgb: function() {\r\n return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };\r\n },\r\n toRgbString: function() {\r\n return (this._a == 1) ?\r\n \"rgb(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \")\" :\r\n \"rgba(\" + mathRound(this._r) + \", \" + mathRound(this._g) + \", \" + mathRound(this._b) + \", \" + this._roundA + \")\";\r\n },\r\n toPercentageRgb: function() {\r\n return { r: mathRound(bound01(this._r, 255) * 100) + \"%\", g: mathRound(bound01(this._g, 255) * 100) + \"%\", b: mathRound(bound01(this._b, 255) * 100) + \"%\", a: this._a };\r\n },\r\n toPercentageRgbString: function() {\r\n return (this._a == 1) ?\r\n \"rgb(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%)\" :\r\n \"rgba(\" + mathRound(bound01(this._r, 255) * 100) + \"%, \" + mathRound(bound01(this._g, 255) * 100) + \"%, \" + mathRound(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\r\n },\r\n toName: function() {\r\n if (this._a === 0) {\r\n return \"transparent\";\r\n }\r\n\r\n if (this._a < 1) {\r\n return false;\r\n }\r\n\r\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\r\n },\r\n toFilter: function(secondColor) {\r\n var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a);\r\n var secondHex8String = hex8String;\r\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\r\n\r\n if (secondColor) {\r\n var s = tinycolor(secondColor);\r\n secondHex8String = s.toHex8String();\r\n }\r\n\r\n return \"progid:DXImageTransform.Microsoft.gradient(\"+gradientType+\"startColorstr=\"+hex8String+\",endColorstr=\"+secondHex8String+\")\";\r\n },\r\n toString: function(format) {\r\n var formatSet = !!format;\r\n format = format || this._format;\r\n\r\n var formattedString = false;\r\n var hasAlpha = this._a < 1 && this._a >= 0;\r\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"name\");\r\n\r\n if (needsAlphaFormat) {\r\n // Special case for \"transparent\", all other non-alpha formats\r\n // will return rgba when there is transparency.\r\n if (format === \"name\" && this._a === 0) {\r\n return this.toName();\r\n }\r\n return this.toRgbString();\r\n }\r\n if (format === \"rgb\") {\r\n formattedString = this.toRgbString();\r\n }\r\n if (format === \"prgb\") {\r\n formattedString = this.toPercentageRgbString();\r\n }\r\n if (format === \"hex\" || format === \"hex6\") {\r\n formattedString = this.toHexString();\r\n }\r\n if (format === \"hex3\") {\r\n formattedString = this.toHexString(true);\r\n }\r\n if (format === \"hex8\") {\r\n formattedString = this.toHex8String();\r\n }\r\n if (format === \"name\") {\r\n formattedString = this.toName();\r\n }\r\n if (format === \"hsl\") {\r\n formattedString = this.toHslString();\r\n }\r\n if (format === \"hsv\") {\r\n formattedString = this.toHsvString();\r\n }\r\n\r\n return formattedString || this.toHexString();\r\n },\r\n clone: function() {\r\n return tinycolor(this.toString());\r\n },\r\n\r\n _applyModification: function(fn, args) {\r\n var color = fn.apply(null, [this].concat([].slice.call(args)));\r\n this._r = color._r;\r\n this._g = color._g;\r\n this._b = color._b;\r\n this.setAlpha(color._a);\r\n return this;\r\n },\r\n lighten: function() {\r\n return this._applyModification(lighten, arguments);\r\n },\r\n brighten: function() {\r\n return this._applyModification(brighten, arguments);\r\n },\r\n darken: function() {\r\n return this._applyModification(darken, arguments);\r\n },\r\n desaturate: function() {\r\n return this._applyModification(desaturate, arguments);\r\n },\r\n saturate: function() {\r\n return this._applyModification(saturate, arguments);\r\n },\r\n greyscale: function() {\r\n return this._applyModification(greyscale, arguments);\r\n },\r\n spin: function() {\r\n return this._applyModification(spin, arguments);\r\n },\r\n\r\n _applyCombination: function(fn, args) {\r\n return fn.apply(null, [this].concat([].slice.call(args)));\r\n },\r\n analogous: function() {\r\n return this._applyCombination(analogous, arguments);\r\n },\r\n complement: function() {\r\n return this._applyCombination(complement, arguments);\r\n },\r\n monochromatic: function() {\r\n return this._applyCombination(monochromatic, arguments);\r\n },\r\n splitcomplement: function() {\r\n return this._applyCombination(splitcomplement, arguments);\r\n },\r\n triad: function() {\r\n return this._applyCombination(triad, arguments);\r\n },\r\n tetrad: function() {\r\n return this._applyCombination(tetrad, arguments);\r\n }\r\n };\r\n\r\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\r\n// String input requires \"1.0\" as input, so 1 will be treated as 1\r\n tinycolor.fromRatio = function(color, opts) {\r\n if (typeof color == \"object\") {\r\n var newColor = {};\r\n for (var i in color) {\r\n if (color.hasOwnProperty(i)) {\r\n if (i === \"a\") {\r\n newColor[i] = color[i];\r\n }\r\n else {\r\n newColor[i] = convertToPercentage(color[i]);\r\n }\r\n }\r\n }\r\n color = newColor;\r\n }\r\n\r\n return tinycolor(color, opts);\r\n };\r\n\r\n// Given a string or object, convert that input to RGB\r\n// Possible string inputs:\r\n//\r\n// \"red\"\r\n// \"#f00\" or \"f00\"\r\n// \"#ff0000\" or \"ff0000\"\r\n// \"#ff000000\" or \"ff000000\"\r\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\r\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\r\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\r\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\r\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\r\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\r\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\r\n//\r\n function inputToRGB(color) {\r\n\r\n var rgb = { r: 0, g: 0, b: 0 };\r\n var a = 1;\r\n var ok = false;\r\n var format = false;\r\n\r\n if (typeof color == \"string\") {\r\n color = stringInputToObject(color);\r\n }\r\n\r\n if (typeof color == \"object\") {\r\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\r\n rgb = rgbToRgb(color.r, color.g, color.b);\r\n ok = true;\r\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\r\n }\r\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\r\n color.s = convertToPercentage(color.s);\r\n color.v = convertToPercentage(color.v);\r\n rgb = hsvToRgb(color.h, color.s, color.v);\r\n ok = true;\r\n format = \"hsv\";\r\n }\r\n else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\r\n color.s = convertToPercentage(color.s);\r\n color.l = convertToPercentage(color.l);\r\n rgb = hslToRgb(color.h, color.s, color.l);\r\n ok = true;\r\n format = \"hsl\";\r\n }\r\n\r\n if (color.hasOwnProperty(\"a\")) {\r\n a = color.a;\r\n }\r\n }\r\n\r\n a = boundAlpha(a);\r\n\r\n return {\r\n ok: ok,\r\n format: color.format || format,\r\n r: mathMin(255, mathMax(rgb.r, 0)),\r\n g: mathMin(255, mathMax(rgb.g, 0)),\r\n b: mathMin(255, mathMax(rgb.b, 0)),\r\n a: a\r\n };\r\n }\r\n\r\n\r\n// Conversion Functions\r\n// --------------------\r\n\r\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\r\n// \r\n\r\n// `rgbToRgb`\r\n// Handle bounds / percentage checking to conform to CSS color spec\r\n// \r\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\r\n// *Returns:* { r, g, b } in [0, 255]\r\n function rgbToRgb(r, g, b){\r\n return {\r\n r: bound01(r, 255) * 255,\r\n g: bound01(g, 255) * 255,\r\n b: bound01(b, 255) * 255\r\n };\r\n }\r\n\r\n// `rgbToHsl`\r\n// Converts an RGB color value to HSL.\r\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\r\n// *Returns:* { h, s, l } in [0,1]\r\n function rgbToHsl(r, g, b) {\r\n\r\n r = bound01(r, 255);\r\n g = bound01(g, 255);\r\n b = bound01(b, 255);\r\n\r\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\r\n var h, s, l = (max + min) / 2;\r\n\r\n if(max == min) {\r\n h = s = 0; // achromatic\r\n }\r\n else {\r\n var d = max - min;\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\r\n switch(max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n }\r\n\r\n h /= 6;\r\n }\r\n\r\n return { h: h, s: s, l: l };\r\n }\r\n\r\n// `hslToRgb`\r\n// Converts an HSL color value to RGB.\r\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\r\n// *Returns:* { r, g, b } in the set [0, 255]\r\n function hslToRgb(h, s, l) {\r\n var r, g, b;\r\n\r\n h = bound01(h, 360);\r\n s = bound01(s, 100);\r\n l = bound01(l, 100);\r\n\r\n function hue2rgb(p, q, t) {\r\n if(t < 0) t += 1;\r\n if(t > 1) t -= 1;\r\n if(t < 1/6) return p + (q - p) * 6 * t;\r\n if(t < 1/2) return q;\r\n if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;\r\n return p;\r\n }\r\n\r\n if(s === 0) {\r\n r = g = b = l; // achromatic\r\n }\r\n else {\r\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\r\n var p = 2 * l - q;\r\n r = hue2rgb(p, q, h + 1/3);\r\n g = hue2rgb(p, q, h);\r\n b = hue2rgb(p, q, h - 1/3);\r\n }\r\n\r\n return { r: r * 255, g: g * 255, b: b * 255 };\r\n }\r\n\r\n// `rgbToHsv`\r\n// Converts an RGB color value to HSV\r\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\r\n// *Returns:* { h, s, v } in [0,1]\r\n function rgbToHsv(r, g, b) {\r\n\r\n r = bound01(r, 255);\r\n g = bound01(g, 255);\r\n b = bound01(b, 255);\r\n\r\n var max = mathMax(r, g, b), min = mathMin(r, g, b);\r\n var h, s, v = max;\r\n\r\n var d = max - min;\r\n s = max === 0 ? 0 : d / max;\r\n\r\n if(max == min) {\r\n h = 0; // achromatic\r\n }\r\n else {\r\n switch(max) {\r\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\r\n case g: h = (b - r) / d + 2; break;\r\n case b: h = (r - g) / d + 4; break;\r\n }\r\n h /= 6;\r\n }\r\n return { h: h, s: s, v: v };\r\n }\r\n\r\n// `hsvToRgb`\r\n// Converts an HSV color value to RGB.\r\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\r\n// *Returns:* { r, g, b } in the set [0, 255]\r\n function hsvToRgb(h, s, v) {\r\n\r\n h = bound01(h, 360) * 6;\r\n s = bound01(s, 100);\r\n v = bound01(v, 100);\r\n\r\n var i = Math.floor(h),\r\n f = h - i,\r\n p = v * (1 - s),\r\n q = v * (1 - f * s),\r\n t = v * (1 - (1 - f) * s),\r\n mod = i % 6,\r\n r = [v, q, p, p, t, v][mod],\r\n g = [t, v, v, q, p, p][mod],\r\n b = [p, p, t, v, v, q][mod];\r\n\r\n return { r: r * 255, g: g * 255, b: b * 255 };\r\n }\r\n\r\n// `rgbToHex`\r\n// Converts an RGB color to hex\r\n// Assumes r, g, and b are contained in the set [0, 255]\r\n// Returns a 3 or 6 character hex\r\n function rgbToHex(r, g, b, allow3Char) {\r\n\r\n var hex = [\r\n pad2(mathRound(r).toString(16)),\r\n pad2(mathRound(g).toString(16)),\r\n pad2(mathRound(b).toString(16))\r\n ];\r\n\r\n // Return a 3 character hex if possible\r\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\r\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\r\n }\r\n\r\n return hex.join(\"\");\r\n }\r\n\r\n// `rgbaToHex`\r\n// Converts an RGBA color plus alpha transparency to hex\r\n// Assumes r, g, b and a are contained in the set [0, 255]\r\n// Returns an 8 character hex\r\n function rgbaToHex(r, g, b, a) {\r\n\r\n var hex = [\r\n pad2(convertDecimalToHex(a)),\r\n pad2(mathRound(r).toString(16)),\r\n pad2(mathRound(g).toString(16)),\r\n pad2(mathRound(b).toString(16))\r\n ];\r\n\r\n return hex.join(\"\");\r\n }\r\n\r\n// `equals`\r\n// Can be called with any tinycolor input\r\n tinycolor.equals = function (color1, color2) {\r\n if (!color1 || !color2) { return false; }\r\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\r\n };\r\n\r\n tinycolor.random = function() {\r\n return tinycolor.fromRatio({\r\n r: mathRandom(),\r\n g: mathRandom(),\r\n b: mathRandom()\r\n });\r\n };\r\n\r\n\r\n// Modification Functions\r\n// ----------------------\r\n// Thanks to less.js for some of the basics here\r\n// \r\n\r\n function desaturate(color, amount) {\r\n amount = (amount === 0) ? 0 : (amount || 10);\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.s -= amount / 100;\r\n hsl.s = clamp01(hsl.s);\r\n return tinycolor(hsl);\r\n }\r\n\r\n function saturate(color, amount) {\r\n amount = (amount === 0) ? 0 : (amount || 10);\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.s += amount / 100;\r\n hsl.s = clamp01(hsl.s);\r\n return tinycolor(hsl);\r\n }\r\n\r\n function greyscale(color) {\r\n return tinycolor(color).desaturate(100);\r\n }\r\n\r\n function lighten (color, amount) {\r\n amount = (amount === 0) ? 0 : (amount || 10);\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.l += amount / 100;\r\n hsl.l = clamp01(hsl.l);\r\n return tinycolor(hsl);\r\n }\r\n\r\n function brighten(color, amount) {\r\n amount = (amount === 0) ? 0 : (amount || 10);\r\n var rgb = tinycolor(color).toRgb();\r\n rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));\r\n rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));\r\n rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));\r\n return tinycolor(rgb);\r\n }\r\n\r\n function darken (color, amount) {\r\n amount = (amount === 0) ? 0 : (amount || 10);\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.l -= amount / 100;\r\n hsl.l = clamp01(hsl.l);\r\n return tinycolor(hsl);\r\n }\r\n\r\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\r\n// Values outside of this range will be wrapped into this range.\r\n function spin(color, amount) {\r\n var hsl = tinycolor(color).toHsl();\r\n var hue = (hsl.h + amount) % 360;\r\n hsl.h = hue < 0 ? 360 + hue : hue;\r\n return tinycolor(hsl);\r\n }\r\n\r\n// Combination Functions\r\n// ---------------------\r\n// Thanks to jQuery xColor for some of the ideas behind these\r\n// \r\n\r\n function complement(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n hsl.h = (hsl.h + 180) % 360;\r\n return tinycolor(hsl);\r\n }\r\n\r\n function triad(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n var h = hsl.h;\r\n return [\r\n tinycolor(color),\r\n tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })\r\n ];\r\n }\r\n\r\n function tetrad(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n var h = hsl.h;\r\n return [\r\n tinycolor(color),\r\n tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),\r\n tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })\r\n ];\r\n }\r\n\r\n function splitcomplement(color) {\r\n var hsl = tinycolor(color).toHsl();\r\n var h = hsl.h;\r\n return [\r\n tinycolor(color),\r\n tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),\r\n tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})\r\n ];\r\n }\r\n\r\n function analogous(color, results, slices) {\r\n results = results || 6;\r\n slices = slices || 30;\r\n\r\n var hsl = tinycolor(color).toHsl();\r\n var part = 360 / slices;\r\n var ret = [tinycolor(color)];\r\n\r\n for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {\r\n hsl.h = (hsl.h + part) % 360;\r\n ret.push(tinycolor(hsl));\r\n }\r\n return ret;\r\n }\r\n\r\n function monochromatic(color, results) {\r\n results = results || 6;\r\n var hsv = tinycolor(color).toHsv();\r\n var h = hsv.h, s = hsv.s, v = hsv.v;\r\n var ret = [];\r\n var modification = 1 / results;\r\n\r\n while (results--) {\r\n ret.push(tinycolor({ h: h, s: s, v: v}));\r\n v = (v + modification) % 1;\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n// Utility Functions\r\n// ---------------------\r\n\r\n tinycolor.mix = function(color1, color2, amount) {\r\n amount = (amount === 0) ? 0 : (amount || 50);\r\n\r\n var rgb1 = tinycolor(color1).toRgb();\r\n var rgb2 = tinycolor(color2).toRgb();\r\n\r\n var p = amount / 100;\r\n var w = p * 2 - 1;\r\n var a = rgb2.a - rgb1.a;\r\n\r\n var w1;\r\n\r\n if (w * a == -1) {\r\n w1 = w;\r\n } else {\r\n w1 = (w + a) / (1 + w * a);\r\n }\r\n\r\n w1 = (w1 + 1) / 2;\r\n\r\n var w2 = 1 - w1;\r\n\r\n var rgba = {\r\n r: rgb2.r * w1 + rgb1.r * w2,\r\n g: rgb2.g * w1 + rgb1.g * w2,\r\n b: rgb2.b * w1 + rgb1.b * w2,\r\n a: rgb2.a * p + rgb1.a * (1 - p)\r\n };\r\n\r\n return tinycolor(rgba);\r\n };\r\n\r\n\r\n// Readability Functions\r\n// ---------------------\r\n// false\r\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\r\n tinycolor.isReadable = function(color1, color2, wcag2) {\r\n var readability = tinycolor.readability(color1, color2);\r\n var wcag2Parms, out;\r\n\r\n out = false;\r\n\r\n wcag2Parms = validateWCAG2Parms(wcag2);\r\n switch (wcag2Parms.level + wcag2Parms.size) {\r\n case \"AAsmall\":\r\n case \"AAAlarge\":\r\n out = readability >= 4.5;\r\n break;\r\n case \"AAlarge\":\r\n out = readability >= 3;\r\n break;\r\n case \"AAAsmall\":\r\n out = readability >= 7;\r\n break;\r\n }\r\n return out;\r\n\r\n };\r\n\r\n// `mostReadable`\r\n// Given a base color and a list of possible foreground or background\r\n// colors for that base, returns the most readable color.\r\n// Optionally returns Black or White if the most readable color is unreadable.\r\n// *Example*\r\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\r\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\r\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\r\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\r\n tinycolor.mostReadable = function(baseColor, colorList, args) {\r\n var bestColor = null;\r\n var bestScore = 0;\r\n var readability;\r\n var includeFallbackColors, level, size ;\r\n args = args || {};\r\n includeFallbackColors = args.includeFallbackColors ;\r\n level = args.level;\r\n size = args.size;\r\n\r\n for (var i= 0; i < colorList.length ; i++) {\r\n readability = tinycolor.readability(baseColor, colorList[i]);\r\n if (readability > bestScore) {\r\n bestScore = readability;\r\n bestColor = tinycolor(colorList[i]);\r\n }\r\n }\r\n\r\n if (tinycolor.isReadable(baseColor, bestColor, {\"level\":level,\"size\":size}) || !includeFallbackColors) {\r\n return bestColor;\r\n }\r\n else {\r\n args.includeFallbackColors=false;\r\n return tinycolor.mostReadable(baseColor,[\"#fff\", \"#000\"],args);\r\n }\r\n };\r\n\r\n\r\n// Big List of Colors\r\n// ------------------\r\n// \r\n var names = tinycolor.names = {\r\n aliceblue: \"f0f8ff\",\r\n antiquewhite: \"faebd7\",\r\n aqua: \"0ff\",\r\n aquamarine: \"7fffd4\",\r\n azure: \"f0ffff\",\r\n beige: \"f5f5dc\",\r\n bisque: \"ffe4c4\",\r\n black: \"000\",\r\n blanchedalmond: \"ffebcd\",\r\n blue: \"00f\",\r\n blueviolet: \"8a2be2\",\r\n brown: \"a52a2a\",\r\n burlywood: \"deb887\",\r\n burntsienna: \"ea7e5d\",\r\n cadetblue: \"5f9ea0\",\r\n chartreuse: \"7fff00\",\r\n chocolate: \"d2691e\",\r\n coral: \"ff7f50\",\r\n cornflowerblue: \"6495ed\",\r\n cornsilk: \"fff8dc\",\r\n crimson: \"dc143c\",\r\n cyan: \"0ff\",\r\n darkblue: \"00008b\",\r\n darkcyan: \"008b8b\",\r\n darkgoldenrod: \"b8860b\",\r\n darkgray: \"a9a9a9\",\r\n darkgreen: \"006400\",\r\n darkgrey: \"a9a9a9\",\r\n darkkhaki: \"bdb76b\",\r\n darkmagenta: \"8b008b\",\r\n darkolivegreen: \"556b2f\",\r\n darkorange: \"ff8c00\",\r\n darkorchid: \"9932cc\",\r\n darkred: \"8b0000\",\r\n darksalmon: \"e9967a\",\r\n darkseagreen: \"8fbc8f\",\r\n darkslateblue: \"483d8b\",\r\n darkslategray: \"2f4f4f\",\r\n darkslategrey: \"2f4f4f\",\r\n darkturquoise: \"00ced1\",\r\n darkviolet: \"9400d3\",\r\n deeppink: \"ff1493\",\r\n deepskyblue: \"00bfff\",\r\n dimgray: \"696969\",\r\n dimgrey: \"696969\",\r\n dodgerblue: \"1e90ff\",\r\n firebrick: \"b22222\",\r\n floralwhite: \"fffaf0\",\r\n forestgreen: \"228b22\",\r\n fuchsia: \"f0f\",\r\n gainsboro: \"dcdcdc\",\r\n ghostwhite: \"f8f8ff\",\r\n gold: \"ffd700\",\r\n goldenrod: \"daa520\",\r\n gray: \"808080\",\r\n green: \"008000\",\r\n greenyellow: \"adff2f\",\r\n grey: \"808080\",\r\n honeydew: \"f0fff0\",\r\n hotpink: \"ff69b4\",\r\n indianred: \"cd5c5c\",\r\n indigo: \"4b0082\",\r\n ivory: \"fffff0\",\r\n khaki: \"f0e68c\",\r\n lavender: \"e6e6fa\",\r\n lavenderblush: \"fff0f5\",\r\n lawngreen: \"7cfc00\",\r\n lemonchiffon: \"fffacd\",\r\n lightblue: \"add8e6\",\r\n lightcoral: \"f08080\",\r\n lightcyan: \"e0ffff\",\r\n lightgoldenrodyellow: \"fafad2\",\r\n lightgray: \"d3d3d3\",\r\n lightgreen: \"90ee90\",\r\n lightgrey: \"d3d3d3\",\r\n lightpink: \"ffb6c1\",\r\n lightsalmon: \"ffa07a\",\r\n lightseagreen: \"20b2aa\",\r\n lightskyblue: \"87cefa\",\r\n lightslategray: \"789\",\r\n lightslategrey: \"789\",\r\n lightsteelblue: \"b0c4de\",\r\n lightyellow: \"ffffe0\",\r\n lime: \"0f0\",\r\n limegreen: \"32cd32\",\r\n linen: \"faf0e6\",\r\n magenta: \"f0f\",\r\n maroon: \"800000\",\r\n mediumaquamarine: \"66cdaa\",\r\n mediumblue: \"0000cd\",\r\n mediumorchid: \"ba55d3\",\r\n mediumpurple: \"9370db\",\r\n mediumseagreen: \"3cb371\",\r\n mediumslateblue: \"7b68ee\",\r\n mediumspringgreen: \"00fa9a\",\r\n mediumturquoise: \"48d1cc\",\r\n mediumvioletred: \"c71585\",\r\n midnightblue: \"191970\",\r\n mintcream: \"f5fffa\",\r\n mistyrose: \"ffe4e1\",\r\n moccasin: \"ffe4b5\",\r\n navajowhite: \"ffdead\",\r\n navy: \"000080\",\r\n oldlace: \"fdf5e6\",\r\n olive: \"808000\",\r\n olivedrab: \"6b8e23\",\r\n orange: \"ffa500\",\r\n orangered: \"ff4500\",\r\n orchid: \"da70d6\",\r\n palegoldenrod: \"eee8aa\",\r\n palegreen: \"98fb98\",\r\n paleturquoise: \"afeeee\",\r\n palevioletred: \"db7093\",\r\n papayawhip: \"ffefd5\",\r\n peachpuff: \"ffdab9\",\r\n peru: \"cd853f\",\r\n pink: \"ffc0cb\",\r\n plum: \"dda0dd\",\r\n powderblue: \"b0e0e6\",\r\n purple: \"800080\",\r\n rebeccapurple: \"663399\",\r\n red: \"f00\",\r\n rosybrown: \"bc8f8f\",\r\n royalblue: \"4169e1\",\r\n saddlebrown: \"8b4513\",\r\n salmon: \"fa8072\",\r\n sandybrown: \"f4a460\",\r\n seagreen: \"2e8b57\",\r\n seashell: \"fff5ee\",\r\n sienna: \"a0522d\",\r\n silver: \"c0c0c0\",\r\n skyblue: \"87ceeb\",\r\n slateblue: \"6a5acd\",\r\n slategray: \"708090\",\r\n slategrey: \"708090\",\r\n snow: \"fffafa\",\r\n springgreen: \"00ff7f\",\r\n steelblue: \"4682b4\",\r\n tan: \"d2b48c\",\r\n teal: \"008080\",\r\n thistle: \"d8bfd8\",\r\n tomato: \"ff6347\",\r\n turquoise: \"40e0d0\",\r\n violet: \"ee82ee\",\r\n wheat: \"f5deb3\",\r\n white: \"fff\",\r\n whitesmoke: \"f5f5f5\",\r\n yellow: \"ff0\",\r\n yellowgreen: \"9acd32\"\r\n };\r\n\r\n// Make it easy to access colors via `hexNames[hex]`\r\n var hexNames = tinycolor.hexNames = flip(names);\r\n\r\n\r\n// Utilities\r\n// ---------\r\n\r\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\r\n function flip(o) {\r\n var flipped = { };\r\n for (var i in o) {\r\n if (o.hasOwnProperty(i)) {\r\n flipped[o[i]] = i;\r\n }\r\n }\r\n return flipped;\r\n }\r\n\r\n// Return a valid alpha value [0,1] with all invalid values being set to 1\r\n function boundAlpha(a) {\r\n a = parseFloat(a);\r\n\r\n if (isNaN(a) || a < 0 || a > 1) {\r\n a = 1;\r\n }\r\n\r\n return a;\r\n }\r\n\r\n// Take input from [0, n] and return it as [0, 1]\r\n function bound01(n, max) {\r\n if (isOnePointZero(n)) { n = \"100%\"; }\r\n\r\n var processPercent = isPercentage(n);\r\n n = mathMin(max, mathMax(0, parseFloat(n)));\r\n\r\n // Automatically convert percentage into number\r\n if (processPercent) {\r\n n = parseInt(n * max, 10) / 100;\r\n }\r\n\r\n // Handle floating point rounding errors\r\n if ((Math.abs(n - max) < 0.000001)) {\r\n return 1;\r\n }\r\n\r\n // Convert into [0, 1] range if it isn't already\r\n return (n % max) / parseFloat(max);\r\n }\r\n\r\n// Force a number between 0 and 1\r\n function clamp01(val) {\r\n return mathMin(1, mathMax(0, val));\r\n }\r\n\r\n// Parse a base-16 hex value into a base-10 integer\r\n function parseIntFromHex(val) {\r\n return parseInt(val, 16);\r\n }\r\n\r\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\r\n// \r\n function isOnePointZero(n) {\r\n return typeof n == \"string\" && n.indexOf('.') != -1 && parseFloat(n) === 1;\r\n }\r\n\r\n// Check to see if string passed in is a percentage\r\n function isPercentage(n) {\r\n return typeof n === \"string\" && n.indexOf('%') != -1;\r\n }\r\n\r\n// Force a hex value to have 2 characters\r\n function pad2(c) {\r\n return c.length == 1 ? '0' + c : '' + c;\r\n }\r\n\r\n// Replace a decimal with it's percentage value\r\n function convertToPercentage(n) {\r\n if (n <= 1) {\r\n n = (n * 100) + \"%\";\r\n }\r\n\r\n return n;\r\n }\r\n\r\n// Converts a decimal to a hex value\r\n function convertDecimalToHex(d) {\r\n return Math.round(parseFloat(d) * 255).toString(16);\r\n }\r\n// Converts a hex value to a decimal\r\n function convertHexToDecimal(h) {\r\n return (parseIntFromHex(h) / 255);\r\n }\r\n\r\n var matchers = (function() {\r\n\r\n // \r\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\r\n\r\n // \r\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\r\n\r\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\r\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\r\n\r\n // Actual matching.\r\n // Parentheses and commas are optional, but not required.\r\n // Whitespace can take the place of commas or opening paren\r\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\r\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\r\n\r\n return {\r\n CSS_UNIT: new RegExp(CSS_UNIT),\r\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\r\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\r\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\r\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\r\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\r\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\r\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\r\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\r\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\r\n };\r\n })();\r\n\r\n// `isValidCSSUnit`\r\n// Take in a single string / number and check to see if it looks like a CSS unit\r\n// (see `matchers` above for definition).\r\n function isValidCSSUnit(color) {\r\n return !!matchers.CSS_UNIT.exec(color);\r\n }\r\n\r\n// `stringInputToObject`\r\n// Permissive string parsing. Take in a number of formats, and output an object\r\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\r\n function stringInputToObject(color) {\r\n\r\n color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();\r\n var named = false;\r\n if (names[color]) {\r\n color = names[color];\r\n named = true;\r\n }\r\n else if (color == 'transparent') {\r\n return { r: 0, g: 0, b: 0, a: 0, format: \"name\" };\r\n }\r\n\r\n // Try to match string input using regular expressions.\r\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\r\n // Just return an object and let the conversion functions handle that.\r\n // This way the result will be the same whether the tinycolor is initialized with string or object.\r\n var match;\r\n if ((match = matchers.rgb.exec(color))) {\r\n return { r: match[1], g: match[2], b: match[3] };\r\n }\r\n if ((match = matchers.rgba.exec(color))) {\r\n return { r: match[1], g: match[2], b: match[3], a: match[4] };\r\n }\r\n if ((match = matchers.hsl.exec(color))) {\r\n return { h: match[1], s: match[2], l: match[3] };\r\n }\r\n if ((match = matchers.hsla.exec(color))) {\r\n return { h: match[1], s: match[2], l: match[3], a: match[4] };\r\n }\r\n if ((match = matchers.hsv.exec(color))) {\r\n return { h: match[1], s: match[2], v: match[3] };\r\n }\r\n if ((match = matchers.hsva.exec(color))) {\r\n return { h: match[1], s: match[2], v: match[3], a: match[4] };\r\n }\r\n if ((match = matchers.hex8.exec(color))) {\r\n return {\r\n a: convertHexToDecimal(match[1]),\r\n r: parseIntFromHex(match[2]),\r\n g: parseIntFromHex(match[3]),\r\n b: parseIntFromHex(match[4]),\r\n format: named ? \"name\" : \"hex8\"\r\n };\r\n }\r\n if ((match = matchers.hex6.exec(color))) {\r\n return {\r\n r: parseIntFromHex(match[1]),\r\n g: parseIntFromHex(match[2]),\r\n b: parseIntFromHex(match[3]),\r\n format: named ? \"name\" : \"hex\"\r\n };\r\n }\r\n if ((match = matchers.hex3.exec(color))) {\r\n return {\r\n r: parseIntFromHex(match[1] + '' + match[1]),\r\n g: parseIntFromHex(match[2] + '' + match[2]),\r\n b: parseIntFromHex(match[3] + '' + match[3]),\r\n format: named ? \"name\" : \"hex\"\r\n };\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function validateWCAG2Parms(parms) {\r\n // return valid WCAG2 parms for isReadable.\r\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\r\n var level, size;\r\n parms = parms || {\"level\":\"AA\", \"size\":\"small\"};\r\n level = (parms.level || \"AA\").toUpperCase();\r\n size = (parms.size || \"small\").toLowerCase();\r\n if (level !== \"AA\" && level !== \"AAA\") {\r\n level = \"AA\";\r\n }\r\n if (size !== \"small\" && size !== \"large\") {\r\n size = \"small\";\r\n }\r\n return {\"level\":level, \"size\":size};\r\n }\r\n\r\n// Node: Export function\r\n if (typeof module !== \"undefined\" && module.exports) {\r\n module.exports = tinycolor;\r\n }\r\n// AMD/requirejs: Define the module\r\n else if (typeof define === 'function' && define.amd) {\r\n define(function () {return tinycolor;});\r\n }\r\n// Browser: Expose to window\r\n else {\r\n MapSVG.tinycolor = tinycolor;\r\n }\r\n\r\n})(Math, MapSVG);\r\n\r\n"],"names":["MapSVG","window","templatesLoaded","Element","prototype","remove","parentNode","removeChild","Math","hypot","y","length","arguments","i","Infinity","sqrt","SVGElement","getTransformToElement","toElement","getScreenCTM","inverse","multiply","$","ResizeSensor","element","callback","_this","zIndex","parseInt","getComputedStyle","isNaN","expand","document","createElement","style","position","left","top","right","bottom","overflow","visibility","expandChild","width","height","appendChild","shrink","shrinkChild","size","getBoundingClientRect","currentWidth","currentHeight","setScroll","addEventListener","onScroll","newWidth","newHeight","scrollLeft","scrollTop","destroy","userAgent","navigator","toLowerCase","touchDevice","indexOf","ios","android","isPhone","matchMedia","matches","browser","ie","firefox","String","trim","replace","mouseCoords","e","clientX","clientY","pageX","pageY","originalEvent","touches","changedTouches","get","index","jQuery","eq","mapSvg","extend","sub","base","Object","create","constructor","ucfirst","string","charAt","toUpperCase","slice","parseBoolean","undefined","isNumber","n","parseFloat","isFinite","safeURL","url","split","pop","convertToText","obj","join","prop","hasOwnProperty","key","search","push","toString","s","JSON","stringify","Controller","options","container","mapsvg","template","scrollable","withToolbar","autoresize","templates","toolbar","getToolbarTemplate","main","getMainTemplate","data","color","events","_init","viewDidLoad","updateScroll","adjustHeight","resizeSensor","viewDidAppear","viewDidDisappear","_viewDidLoad","contentWrap","nanoScroller","preventPageScrolling","iOSNativeScrolling","setTimeout","find","outerHeight","toolbarView","init","render","view","attr","name","addClass","contentWrap2","contentSizer","contentView","append","css","viewReadyToFill","redraw","setEventHandlersCommon","setEventHandlers","call","html","updateTopShift","noPadding","padding","empty","DirectoryController","database","filters","t","menuBtn","getData","mobileView","labelList","mapBtn","labelMap","mobileButtons","menu","on","insertAfter","$wrap","setFilters","colors","directorySearch","_data","val","searchFallback","getAll","toggle","preventDefault","objID","regions","marker","detailsViewObject","eventObject","deselectItems","selectItems","source","getRegion","getLoadedObject","map","region","id","getMarker","actions","directoryItem","click","showDetails","loadDetailsView","skipPopover","zoom","zoomTo","zoomToLevel","setMultiSelect","forEach","center","getCenter","selectRegion","showRegionPopover","showPopover","fireRegionOnClick","showMarkerPopover","fireMarkerOnClick","goToLink","linkParts","linkField","shift","eval","newTab","win","open","focus","location","href","highlightRegions","disabled","mouseOver","unhighlightRegions","mouseOut","filterField","query","deselectAllRegions","loadDataObjects","highlightItems","ids","unhighlightItems","removeClass","addFilter","field","schema","getSchema","loadItemsToDirectory","items","getLoaded","table","filter","item","status","regionStatuses","noResultsText","region_id","formBuilder","FormBuilder","filtersMode","filtersSchema","editMode","admin","keys","field_name","field_value","_field_name","getField","title","toggleClass","hasClass","addPagination","pager","DetailsController","PopoverController","point","yShift","mapObject","random","setPoint","adjustPosition","pos","convertSVGToPixel","x","off","close","one","isScrolling","target","closest","is","Region","deselectRegion","show","mapSVG","MapObject","jQueryObject","objects","node","nodeType","tagName","isMarker","mapsvg_type","isRegion","setData","getBBox","bbox","Marker","scale","matrix","$svg","x2","y2","createSVGPoint","matrixTransform","getGeoBounds","sw","convertSVGToGeo","ne","_p1","_p2","getAttribute","z","parent","getStyle","w","h","getCenterSVG","c","getCenterLatLng","latlng","lat","lng","setTooltip","text","tooltip","setPopover","popover","setHref","unwrap","setTarget","substr","tmp","err","error","_error","v1","v2","svgDom","each","setAttribute","setId","updateMarkersDict","globalOptions","regionID","autoID","id_no_spaces","fill","stroke","regionOptions","getDisabledState","default_attr","selected_attr","hover_attr","selected","update","setFill","setSelected","saveState","initialState","getOptions","changed","edit","nodeOriginal","clone","editCommit","editCancel","appendTo","forTemplate","globals","o","gaugeValue","dataCounter","customAttrs","that","setter","setTitle","setStyle","getChoroplethColor","gauge","regionChoroplethField","min","maxAdjusted","r","round","diffRGB","lowRGB","g","b","a","colorsIgnore","rgb","baseDefault","tinycolor","lighten","toRgbString","hover","select","setDisabled","skipSetFill","prevDisabled","setStatus","statusOptions","setGaugeValue","isNumeric","asDefault","opts","disableAll","highlight","unhighlight","deselect","src","img","xy","geoCoords","attached","isLink","urlField","dataId","mapScale","setSrc","Image","onload","setXy","mapIsGeo","onChange","moveToClick","markerOptions","viewBox","setGeoCoords","coords","convertGeoToSVG","getDefaultCoords","markerX","markerY","markerWidth","markerHeight","drag","startCoords","endCallback","clickCallback","ox","oy","$map","mouseNew","dx","dy","undrag","setObject","object","databaseObject","scripts","getElementsByTagName","myScript","pluginJSURL","pluginRootURL","instances","globalID","defaults","markerLastID","googleMaps","regionLastID","dataLastID","lockAspectRatio","maxWidth","maxHeight","minWidth","minHeight","loadingText","background","directory","markers","cursor","onClick","menuOnClick","beforeLoad","afterLoad","limit","delta","buttons","mousewheel","scroll","spacebar","responsive","tooltips","mode","priority","popovers","centerOn","resetViewboxOnClose","mobileFullscreen","multiSelect","popoverRegion","popoverMarker","tooltipRegion","tooltipMarker","detailsView","detailsViewRegion","labels","low","high","highRGB","max","customContainer","containerId","searchPlaceholder","sortBy","sortDirection","clickActions","triggerClick","detailsViewLocation","pagination","perpage","next","prev","showDetailsFor","filterDirectory","loadObjects","showPopoverFor","apiKey","loaded","type","minZoom","label","expanded","elem","methods","prototypes","setMarkersClickAsLink","loadSchema","done","markerIsLink","markerUrlField","setGroups","groups","value","visible","setLayersControl","layersControl","$layersControl","$layersControlLabel","$layersControlListWrap","$layersControlListNano","$layersControlList","input","hide","setFloorsControl","floorsControl","$floorsControl","$floorsControlLabel","$floorsControlListWrap","$floorsControlListNano","$floorsControlList","floors","f","object_id","setFloor","floor","_viewBox","setViewBox","zoomLevels","zoomLevel","setZoom","getGroupSelectOptions","optionGroups","options2","params","loadDirectory","controllers","getPagination","onFirstPage","onLastPage","page","lastpage","deleteMarkers","markerDelete","addDataObjectsAsMarkers","markerAdd","getCssUrl","urls","root","isGeo","functionFromString","func","fn","fnBody","substring","lastIndexOf","Function","forWeb","optionsDelta","m","event","lastChangeTime","Date","now","trigger","eventHandlers","setEvents","functions","TypeError","SyntaxError","setActions","setDetailsView","setMobileView","deleteDataField","addZeroDataField","attachDataToRegions","setTemplates","Handlebars","compile","setRegionStatus","regionsDatabase","getSchemaField","optionsDict","updateGaugeMinMax","regionsRedrawColors","setExtension","extension","setDisableLinks","disableLinks","setLoadingText","setLockAspectRatio","setOnClick","setMouseOver","setMouseOut","setBeforeLoad","setAfterLoad","setPopoverShown","popoverShown","handler","markerEditHandler","redrawGauge","regionEditHandler","_statuses","setColors","posOriginal","posShifted","posShiftedPrev","mirror","className","ex","topbottom","leftright","mouse","offset","tbbox","mbbox","_pos","$popover","layers","prefix","regionPrefix","v","viewBoxFull","svgDefault","viewBoxFake","whRatioFull","vbstart","skipAdjustments","d","isZooming","whRatio","setViewBoxOnStart","_scale","p","getScale","superScale","tx","ty","$scrollpane","updateSize","$layers","googleMapBounds","getBounds","getNorthEast","getSouthWest","xyNE","xySW","mapPointsWidth","mapLonDelta","setResponsive","markersAdjustPosition","force","whRatio2","outerWidth","google","maps","setCenter","setViewBoxByGoogleMapBounds","skipEvents","firefoxScroll","insideIframe","scrollX","scrollY","scrollTo","deltaX","deltaY","convertPixelToSVG","zoomIn","zoomOut","setZoomButtons","canZoom","loc","zoomButtons","stopPropagation","needsRedraw","$gauge","gradient","setGaugeGradientCSS","tr","labelLow","labelHigh","toRgb","values","apply","$menu","menuContainer","children","regionClickHandler","initialized","googleMapsApiLoaded","loadGoogleMapsAPI","setGoogleMaps","USGSOverlay","bounds","bounds_","map_","setMap","$googleMaps","prependTo","Map","mapTypeId","fullscreenControl","keyboardShortcuts","mapTypeControl","scaleControl","scrollwheel","streetViewControl","zoomControl","overlay","OverlayView","onAdd","draw","overlayProjection","getProjection","fromLatLngToDivPixel","sw2","fromLatLngToContainerPixel","ne2","vb","southWest","LatLng","geoViewBox","bottomLat","leftLon","northEast","topLat","rightLon","LatLngBounds","fitBounds","addListener","addListenerOnce","toJSON","getZoom","setMapTypeId","fail","gm_authFailure","GoogleMapBadApiKey","alert","googleMapsScript","head","detailsController","$details","menuMarkers","$menuMarkers","sort","markerID","regionsDict","markersDict","insertBefore","scale2","mapAdjustStrokes","directoryWrap","setSize","viewBoxGetBySize","new_ratio","old_ratio","toInitial","touchScale","touchZoomStart","zoom_k","vWidth","vHeight","newViewBox","console","log","viewBoxPrev","_bbox","xmin","ymin","xmax","ymax","_w","_h","level","latLng","exact","isInZoomRange","_zoomLevel","koef","editingMarker","splice","markerId","marker_id","editMarkers","ce","vxi","vyi","vx","vy","gx","gy","scrollMove","keyCode","scrollEnd","panBy","projection","pixelpoint","fromDivPixelToLatLng","noClick","abs","clickAddsMarker","markerAddClickHandler","region_clicked","svg","_e","touchZoomStartViewBox","touchZoomStartScale","touchZoomEnd","scaleDistStart","scrollStart","touchMove","touchEnd","cx","cy","group","selected_id","skipDirectorySelection","editRegions","inArray","highlightedRegions","mc","lon","worldMapWidth","mapOffsetY","sin","mapLatBottomDegree","worldMapRadius","PI","equatorY","atan","exp","toFixed","svgfill","http","XMLHttpRequest","send","currentStyle","res","margin","getPropertyValue","str","results","defaultMarkerImage","editData","htmls","lines","tmpDiv","line","message","downloadForm","submit","tip","mapPopover","getPopoverBody","viewBoxReset","showTooltip","hideTip","eventsPrevent","mouseOverHandler","mouseOutHandler","touchScrollStart","cancelable","scrollRegionClickHandler","touchStart","svgObject","statuses","getSchemaFieldByType","setGauge","Error","db_map_id","refLength","mapData","viewBoxZoom","viewBoxFind","geoCoordinates","loading","addLayer","extensions","ext","common","ajax","svgFileVersion","xmlData","svgTag","geo","removeAttr","reloadRegions","setDisableAll","marks","setMarkers","tooltipsMode","setTooltips","setPopovers","setCursor","ready","setMenu","setMenuMarkers","match","RegExp","exec","decodeURIComponent","trimLeft","trimRight","tinyCounter","mathRound","mathMin","mathMax","mathRandom","inputToRGB","_originalInput","_r","_g","_b","_a","_roundA","_format","format","_gradientType","gradientType","_ok","ok","_tc_id","isDark","getBrightness","isLight","isValid","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","R","G","B","pow","setAlpha","boundAlpha","toHsv","hsv","rgbToHsv","toHsvString","toHsl","hsl","rgbToHsl","l","toHslString","toHex","allow3Char","rgbToHex","toHexString","toHex8","rgbaToHex","toHex8String","toPercentageRgb","bound01","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","needsAlphaFormat","_applyModification","args","concat","brighten","darken","desaturate","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","convertToPercentage","stringInputToObject","isValidCSSUnit","rgbToRgb","hsvToRgb","hslToRgb","hue2rgb","q","mod","hex","pad2","convertDecimalToHex","equals","color1","color2","amount","clamp01","hue","slices","part","ret","modification","mix","rgb1","rgb2","w1","w2","rgba","readability","c1","c2","isReadable","wcag2","wcag2Parms","out","validateWCAG2Parms","mostReadable","baseColor","colorList","bestColor","bestScore","includeFallbackColors","names","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flip","flipped","isOnePointZero","processPercent","isPercentage","parseIntFromHex","convertHexToDecimal","matchers","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","hsla","hsva","hex3","hex6","hex8","named","parms","module","exports","define","amd"],"sourceRoot":""}
    '+_data.options.gauge.labels.low+''+_data.options.gauge.labels.high+'